🔒 Úvod
Apache HTTP Server (Apache2) je jedným z najrozšírenejších webových serverov na svete. Na serveroch s viacerými aplikáciami (napr. WordPress, Nextcloud, Roundcube) je Apache často základnou súčasťou. Predvolená konfigurácia však ponecháva procesy Apache s vysokými právami, čo zvyšuje riziko zneužitia v prípade zraniteľnosti.
V tomto článku si ukážeme, ako výrazne zlepšiť bezpečnosť Apache pomocou systemd
sandboxingu na Ubuntu 24.04 LTS.
🧪 Kontrola stavu – systemd-analyze security
Na zistenie úrovne zabezpečenia bežiacej služby použijeme nástroj:
1 2 |
bashKopírovaťUpraviť<code>systemd-analyze security apache2.service |
Výsledok pred hardeningom:
1 2 |
plaintextKopírovaťUpraviť<code>apache2.service - 9.2 UNSAFE 😨 |
🔧 Vytvorenie override konfigurácie pre Apache2
Systemd umožňuje pridať vlastné bezpečnostné nastavenia bez zásahu do pôvodného súboru služby.
- Vytvoríme adresár pre override súbor:
1 2 |
bashKopírovaťUpraviť<code>sudo mkdir -p /etc/systemd/system/apache2.service.d |
- Vytvoríme súbor
override.conf
:
1 2 |
bashKopírovaťUpraviť<code>sudo nano /etc/systemd/system/apache2.service.d/override.conf |
- Vložíme nasledujúcu konfiguráciu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
iniKopírovaťUpraviť<code>[Service] PrivateTmp=true ProtectSystem=strict ProtectHome=true ReadOnlyPaths=/etc/apache2 ReadWritePaths=/var/log/apache2 /var/www NoNewPrivileges=true CapabilityBoundingSet=CAP_CHOWN CAP_SETGID CAP_SETUID CAP_DAC_OVERRIDE CAP_NET_BIND_SERVICE RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true RestrictRealtime=true RestrictSUIDSGID=true LockPersonality=true MemoryDenyWriteExecute=true PrivateDevices=true |
🔄 Aplikovanie zmien
Po uložení je potrebné obnoviť a reštartovať službu:
1 2 3 |
bashKopírovaťUpraviť<code>sudo systemctl daemon-reload sudo systemctl restart apache2 |
Overíme stav služby:
1 2 |
bashKopírovaťUpraviť<code>systemctl status apache2 |
✅ Overenie výsledkov
Po aplikovaní bezpečnostných pravidiel znova spustíme audit:
1 2 |
bashKopírovaťUpraviť<code>systemd-analyze security apache2.service |
Výsledok po hardeningu:
1 2 |
plaintextKopírovaťUpraviť<code>apache2.service - 5.3 MEDIUM 😐 |
Z pôvodného stavu UNSAFE sme sa dostali na výrazne bezpečnejšiu úroveň. Apache teraz beží v izolovanom prostredí, bez prístupu do systému, s minimálnymi oprávneniami.
📝 Vysvetlenie vybraných nastavení
Parameter | Popis |
---|---|
PrivateTmp=true | Apache má vlastný /tmp, nemôže čítať cudzie dočasné súbory |
ProtectSystem=strict | Root systém len na čítanie (okrem povolených adresárov) |
ProtectHome=true | Zablokovaný prístup k /home |
NoNewPrivileges=true | Žiadne nové oprávnenia cez setuid/setcap |
CapabilityBoundingSet | Povolené len minimálne schopnosti potrebné na beh servera |
RestrictAddressFamilies | Povolí len IPv4, IPv6 a UNIX sockety |
MemoryDenyWriteExecute | Blokuje vykonateľné zápisy do pamäte – ochrana pred shellcode |
🛡 Záver
Hardening Apache2 cez systemd
je jednoduchý, no mimoriadne účinný spôsob, ako zvýšiť bezpečnosť na úrovni systému bez zásahu do samotnej konfigurácie Apache.
Táto metóda je ideálna na serveri s viacerými službami – a ešte dôležitejšia, ak je Apache dostupný z internetu.
🧭 Odporúčaný postup ďalej
- V článku č. 2 sa pozrieme na Fail2Ban, ktorý chráni server pred brute-force útokmi.
- V ďalších častiach sa pozrieme na:
- ClamAV, MariaDB, Docker, PHP-FPM, Postfix, Dovecot
- a ako ich všetky izolovať podobným spôsobom.
Ak máš otázky k tomuto hardeningu, alebo chceš zdieľať vlastné nastavenia, napíš do komentára alebo nás kontaktuj. 🔐✨