
Az online jelenlét alapja egy stabil és megbízható webszerver. Az Apache HTTP Server a világ egyik legnépszerűbb webszervere, amely millió weboldalt szolgál ki nap mint nap. Népszerűsége azonban a támadók célkeresztjébe is helyezi. Egy nem megfelelően konfigurált Apache szerver nyitott kapu lehet a rosszindulatú támadások, adatlopások és szolgáltatáskiesések előtt. 🛡️
Ebben a rendkívül részletes cikkben lépésről lépésre végigvesszük azokat a létfontosságú biztonsági beállításokat, amelyekkel drasztikusan megnövelheted Apache szervered és ezen keresztül a weboldalad védelmét. Nem elégszünk meg a felszínes tanácsokkal; mélyre ásunk, hogy a lehető legbiztonságosabb környezetet teremthesd meg.
Az első és legfontosabb védelmi vonal: mod_security
Képzelj el egy éber őrt a weboldalad kapujában, aki minden bejövő kérést megvizsgál, mielőtt az elérné a webalkalmazásodat. Pontosan ezt a szerepet tölti be a mod_security
, egy nyílt forráskódú webalkalmazási tűzfal (Web Application Firewall – WAF). Ez a modul az egyik leghatékonyabb eszköz a leggyakoribb támadások, mint például az SQL-injekció (SQLi), a keresztoldali szkriptelés (XSS), a távoli parancsfuttatás és sok más ellen.
A mod_security
egy szabályrendszer alapján működik. Bár írhatsz saját szabályokat is, a közösség már elvégezte a munka nehezét. Az OWASP (Open Web Application Security Project) Core Rule Set (CRS) egy ingyenes, robusztus és folyamatosan frissített szabálykészlet, amely ipari sztenderdnek számít.
Telepítés és alapkonfiguráció:
A mod_security
telepítése a legtöbb Linux disztribúción egyszerűen, a csomagkezelővel megoldható:
# Debian/Ubuntu esetén
sudo apt-get install libapache2-mod-security2
# CentOS/RHEL esetén
sudo yum install mod_security
A telepítés után engedélyezni kell a modult (sudo a2enmod security2
), majd újra kell indítani az Apache-t. A fő konfigurációs fájl általában a /etc/apache2/mods-available/security2.conf
vagy hasonló helyen található. Itt a legfontosabb beállítás a SecRuleEngine
.
SecRuleEngine On
: Éles üzemmód. A modul aktívan blokkolja a gyanús kéréseket.SecRuleEngine DetectionOnly
: Csak naplózás. A modul azonosítja a támadásokat, de nem blokkolja őket. Ez hasznos a kezdeti beállítások tesztelésére, hogy elkerüld a jogos kérések téves blokkolását (false positives).
Az OWASP CRS letöltése és integrálása kulcsfontosságú. A szabályokat be kell másolni a megfelelő mod_security
könyvtárba, és be kell őket tölteni az Apache konfigurációjában. A megfelelő beállításokról és a legfrissebb szabálykészletről az OWASP CRS hivatalos weboldalán tájékozódhatsz.
Védekezés a túlterheléses és brute-force támadások ellen: mod_evasive
A túlterheléses (Denial of Service – DoS) támadások célja, hogy annyi kéréssel árasszák el a szervert, hogy az ne tudja kiszolgálni a jogos felhasználókat. A mod_evasive
egy rendkívül hasznos modul, amely segít kivédeni ezeket a támadásokat, valamint a bejelentkezési oldalak elleni brute-force (próbálgatásos) kísérleteket. ⚙️
A mod_evasive
úgy működik, hogy figyeli az egy IP-címről érkező kérések számát egy adott időintervallumon belül. Ha egy IP-cím gyanúsan sok kérést küld ugyanahhoz az oldalhoz vagy a webhelyhez összesen, a modul ideiglenesen letiltja az adott IP-címet egy rövid időre (alapértelmezetten 10 másodpercre).
Telepítése és konfigurációja:
# Debian/Ubuntu esetén
sudo apt-get install libapache2-mod-evasive
A konfigurációs beállításokat általában egy külön fájlban, például /etc/apache2/mods-enabled/evasive.conf
-ban helyezhetjük el. Néhány kulcsfontosságú direktíva:
DOSHashTableSize
: A hash tábla mérete. Nagyobb érték több erőforrást igényel, de hatékonyabb.DOSPageCount
: Az a küszöbérték, amely meghatározza, hogy egy IP-cím hányszor kérhet le egy konkrét oldalt egy adott időintervallumon belül, mielőtt gyanússá válna.DOSSiteCount
: Hasonló az előzőhöz, de az egész webhelyre vonatkozó összes kérés számát figyeli egy IP-címről.DOSBlockingPeriod
: Az az időtartam másodpercben, ameddig a modul blokkol egy IP-címet, miután az túllépte a limiteket.DOSEmailNotify
: Ha beállítasz egy e-mail címet, a modul értesítést küld, amikor egy IP-címet blokkol.
Fontos: Óvatosan állítsd be ezeket az értékeket! Egy túl agresszív konfiguráció kizárhatja a jogos felhasználókat is, például azokat, akik egy proxy mögül érkeznek.
Az információ a támadók fegyvere: Rejtsd el a szerver adatait!
Alapértelmezett beállítások mellett az Apache hajlamos túl sok információt „elárulni” magáról. A HTTP fejlécekben és a hibaoldalakon gyakran megjelenik a pontos verziószám, az operációs rendszer és a telepített modulok listája. Ezek az információk aranyat érnek egy támadónak, aki így célzottan kereshet ismert sebezhetőségeket.
Szerencsére ezt könnyen megakadályozhatod két egyszerű direktívával az Apache fő konfigurációs fájljában (apache2.conf
vagy httpd.conf
):
# A szerver aláírásának (verziószám, OS) kikapcsolása a generált oldalakon
ServerSignature Off
# A HTTP fejlécben küldött információk minimalizálása
ServerTokens Prod
A ServerSignature Off
direktíva eltünteti a szerver verzióinformációit a hibaoldalakról és a szerver által generált egyéb dokumentumokból. A ServerTokens Prod
beállítás pedig a lehető legkevesebb információt küldi a Server
HTTP fejlécben, mindössze ennyit: Server: Apache
. Ezzel elrejted a pontos verziószámot és a telepített modulokat.
A könyvtárlistázás letiltása
Ha egy olyan könyvtárra navigál a felhasználó, amelyben nincs index.html
vagy index.php
fájl, az Apache alapértelmezetten hajlamos egy listát megjeleníteni a könyvtár teljes tartalmáról. Ez komoly biztonsági kockázatot jelent, hiszen felfedhet konfigurációs fájlokat, biztonsági mentéseket vagy más érzékeny adatokat.
A könyvtárlistázás letiltása elengedhetetlen. Ezt a legegyszerűbben a weboldalad gyökérkönyvtárában elhelyezett .htaccess
fájlban teheted meg, vagy globálisan a szerver konfigurációjában:
# A könyvtárak tartalmának listázásának megakadályozása
Options -Indexes
Ez a kis beállítás megakadályozza, hogy a látogatók a weboldalad fájlstruktúrájában böngésszenek.
Hozzáférések és jogosultságok szigorítása
A biztonság egyik alaptétele a legkisebb jogosultság elve (Principle of Least Privilege). Ez azt jelenti, hogy minden felhasználónak és folyamatnak csakis a legszükségesebb jogosultságokkal szabad rendelkeznie a feladatai elvégzéséhez. 📜
-
Fájlrendszer jogosultságok: A webes fájlok tulajdonosának soha nem szabad a
root
felhasználónak lennie. Általában egy dedikált felhasználó, például awww-data
(Debian/Ubuntu) vagyapache
(CentOS/RHEL) futtatja az Apache folyamatokat. A webes fájlok tulajdonosának ennek a felhasználónak kell lennie. A jogosultságokat a következőképpen érdemes beállítani:- Könyvtárak:
755
(a tulajdonos írhat/olvashat/futtathat, a csoport és mások olvashatnak/futtathatnak). - Fájlok:
644
(a tulajdonos írhat/olvashat, a csoport és mások csak olvashatnak).
- Könyvtárak:
-
Felesleges modulok letiltása: Minden engedélyezett Apache modul potenciális támadási felületet jelent. Érdemes áttekinteni az aktív modulok listáját (
apache2ctl -M
vagyhttpd -M
) és letiltani azokat, amelyekre nincs szükséged (sudo a2dismod modul_neve
). Például, ha nem használsz WebDAV-ot, amod_dav
ésmod_dav_fs
modulokat mindenképpen kapcsold ki. -
.htaccess védelem: A
.htaccess
fájl rendkívül hatékony eszköz, de maga is célponttá válhat. Védd le a.htaccess
fájlt, hogy ne legyen elérhető böngészőből:<Files ".htaccess"> Require all denied </Files>
Hasonló módon védheted a kritikus fájlokat is, mint például a WordPress
wp-config.php
fájlját.
A kommunikáció titkosítása: SSL/TLS és a HTTPS 🔒
2025-ben a HTTPS használata már nem opció, hanem kötelező. A mod_ssl
modul segítségével az Apache képes titkosított kapcsolatot létesíteni a kliens böngészője és a szerver között. Ez megakadályozza, hogy a támadok lehallgassák a felhasználó által küldött adatokat, például jelszavakat vagy személyes információkat.
A Let’s Encrypt szolgáltatásnak köszönhetően ma már bárki ingyenesen juthat SSL/TLS tanúsítványhoz. A Certbot eszköz segítségével a folyamat szinte teljesen automatizálható.
Azonban nem elég csupán bekapcsolni a HTTPS-t. Fontos a biztonságos konfiguráció is:
-
Erős protokollok és rejtjelező csomagok (Cipher Suites): A régi, sebezhető protokollokat (SSLv2, SSLv3, TLSv1.0, TLSv1.1) le kell tiltani. A
SSLCipherSuite
ésSSLProtocol
direktívákkal egy erős, modern konfigurációt kell beállítani. Egy jó kiindulási alap lehet a Mozilla SSL Configuration Generator, amely a kívánt kompatibilitási szintnek megfelelő, biztonságos konfigurációt generál. -
HTTP Strict Transport Security (HSTS): Ez egy HTTP fejléc, amely arra utasítja a böngészőket, hogy a jövőben kizárólag biztonságos (HTTPS) kapcsolaton keresztül kommunikáljanak a weboldallal. Ez védelmet nyújt a protokoll-visszaminősítő (protocol downgrade) támadások ellen.
# HSTS fejléc beállítása (például egy évre) Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
További biztonsági HTTP fejlécek
A HSTS mellett számos egyéb HTTP fejléc létezik, amelyekkel tovább erősítheted a weboldalad védelmét a kliensoldali támadásokkal szemben.
X-Content-Type-Options: nosniff
: Megakadályozza, hogy a böngészők megpróbálják kitalálni a tartalom típusát (MIME-sniffing), ami XSS támadásokhoz vezethet.X-Frame-Options: DENY
vagySAMEORIGIN
: Védelmet nyújt a „clickjacking” támadások ellen, ahol a támadó egy láthatatlan<iframe>
-ben tölti be az oldaladat, hogy rávegye a felhasználót egy nem kívánt kattintásra.Content-Security-Policy (CSP)
: Ez az egyik leghatékonyabb, de egyben legkomplexebb biztonsági fejléc. Lehetővé teszi, hogy pontosan meghatározd, milyen forrásokból (szkriptek, stíluslapok, képek stb.) tölthet be tartalmat a böngésző. Egy jól beállított CSP szinte teljesen lehetetlenné teszi az XSS támadásokat.
Ezeket a fejléceket a mod_headers
modul segítségével adhatod hozzá a szerver válaszaihoz.
Naplózás és monitorozás
A legjobb biztonsági beállítások sem érnek sokat, ha nem figyeled a szervered működését. Az Apache két alapvető naplófájlt kezel:
access_log
: Minden bejövő kérést rögzít.error_log
: Minden hibát, figyelmeztetést és a modulok (pl.mod_security
) üzeneteit rögzíti.
Rendszeresen ellenőrizd ezeket a naplókat! Keress gyanús mintázatokat:
- Ismétlődő 404-es hibák egy IP-címről (sebezhetőségek keresése).
- Sikertelen bejelentkezési kísérletek.
- Furcsa, olvashatatlan kérések, amelyek SQL-injekcióra vagy XSS-re utalhatnak.
- A
mod_security
ésmod_evasive
által generált bejegyzések.
Olyan eszközök, mint a GoAccess
, AWStats
vagy a fail2ban
segíthetnek a naplók automatizált elemzésében és a támadók valós idejű blokkolásában. A DigitalOcean közösségi útmutatói kiváló forrást jelentenek a naplóelemző és biztonsági eszközök beállításához.
Összegzés
Az Apache szerver biztonságossá tétele nem egy egyszeri feladat, hanem egy folyamatos folyamat. A technológia és a támadási módszerek folyamatosan fejlődnek, ezért elengedhetetlen, hogy naprakészen tartsd a szoftvereidet, figyeld a biztonsági híreket, és rendszeresen felülvizsgáld a konfigurációdat.
A fentebb részletezett lépések – a mod_security
és mod_evasive
használata, a szerverinformációk elrejtése, a jogosultságok szigorítása, a HTTPS kényszerítése és a gondos naplózás – együttesen egy rendkívül erős védelmi pajzsot vonnak a weboldalad köré. Ha komolyan veszed a weboldalad biztonságát, ezeknek a beállításoknak az alkalmazása nem lehet kérdés.