Aktuális helyzet: PHP2Shell. Két kritikus PHP-rés (CVSS 9,2) lehetővé teszi kártékony kód futtatását bejelentkezés nélkül. Javítások 2026. 10. 21. óta.Mi a teendő most →

A Fail2ban beállítása webszerverekhez

A Fail2ban tiltja azokat a címeket, amelyek ismétlődően feltűnnek a naplókban. Webszerverekhez kész szűrőket hoz, és néhány sorral sajátokat is hozzáadhat. Így állítsa be anélkül, hogy kizárná magát vagy az ügyfeleit.

Állapot 5 perc olvasási időKeményítés és konfiguráció

Röviden: A Fail2ban naplófájlokat olvas, és a tűzfalban tiltja azokat a címeket, amelyek egy időablakon belül túl gyakran feltűnnek. Az Nginxhez és az Apache-hoz kész jaileket hoz, mint az nginx-botsearch vagy az apache-noscript; a saját szűrőket a fail2ban-regex-szel tesztelje. A beállítások a jail.local-ba valók, a saját címei az ignoreip-be, a visszaeső elkövetőket a recidive-jail fogja meg. Az egyedi célzott támadások ellen a Fail2ban nem segít, a tömeges vizsgálatok ellen igen.

Amikor a naplók tele vannak keresőkkel

Aki ezekben a napokban megnézi webszervereinek hozzáférési naplóit, gyakran tele találja olyan útvonalakra irányuló kérésekkel, amelyek nem is léteznek: régi adminisztrációs felületek, tesztfájlok, más termékek ismert gyengeségei. A PHP2Shellhez hozzájön a sebezhető szerverek célzott keresése: a Cloudflare és a Patchstack támadási kísérletekről számolt be, a Unit 42 több mint 22,6 millió kitett, potenciálisan sebezhető példányt számolt.

A Fail2ban bevált eszköz ez ellen a tömeg ellen. Naplófájlokat olvas, szűrőkkel felismeri a feltűnő bejegyzéseket, és a feladó címét meghatározott időre tiltja a tűzfalban. Ez tehermentesíti a szervert, csökkenti a naplózaj mennyiségét, és fáradságosabbá teszi az egy forrásból érkező módszeres próbálkozást.

Amit a Fail2ban nem tud, az ugyanolyan fontos: egyetlen kérést, amely kihasznál egy rést, nem akadályoz meg. A PHP2Shell ellen csak a PHP-frissítés segít. Hogyan zajlanak az automatizált támadások, azt a Tömeges vizsgálatok javítatlan PHP után írja le.

Fail2ban Nginxhez és Apache-hoz: a mellékelt jailek

Egy jail összeköt egy szűrőt egy naplófájllal és egy tiltási művelettel. A mellékelt jail.conf már tartalmaz jaileket webszerverekhez. Alapértelmezetten ki vannak kapcsolva, és egyenként kell aktiválni őket.

Jail Webszerver Mit ismer fel
nginx-http-auth Nginx sikertelen HTTP Basic bejelentkezések
nginx-limit-req Nginx kérések, amelyek túllépik az Nginx rate-limitjét
nginx-botsearch Nginx tipikus, nem létező útvonalak keresése
nginx-bad-request Nginx hibás kérések
apache-auth Apache sikertelen bejelentkezések
apache-badbots Apache ismert káros botazonosítók
apache-noscript Apache nem létező szkriptek meghívásai
apache-overflows Apache túl hosszú kérések
apache-botsearch Apache tipikus, nem létező útvonalak keresése
php-url-fopen mindkettő az URL-beágyazási kísérletek bizonyos mintái
recidive mindkettő címek, amelyeket a Fail2ban ismételten tiltott

A mellékelt konfiguráció alapértékei inkább enyhék: 10 perces tiltás 10 percen belüli 5 találat után. A sok vizsgálati forgalommal rendelkező webszervereknél megéri egy hosszabb tiltás és az ismétlésekre növekvő szorzó.

Az alapkonfiguráció a jail.local-ban

A jail.conf maga közli, hogy nem szabad módosítani, mert a frissítések kicserélik. A saját értékek a /etc/fail2ban/jail.local fájlba valók. A következő, Nginxhez készült példa értelmes alapértékeket állít be, és aktiválja a megfelelő jaileket:

# /etc/fail2ban/jail.local
[DEFAULT]
# Saját rögzített címek beírása (a példacímet cserélje le)
ignoreip = 127.0.0.1/8 ::1 203.0.113.10
bantime  = 1h
findtime = 10m
maxretry = 5
bantime.increment = true

[nginx-http-auth]
enabled = true

[nginx-botsearch]
enabled = true

[recidive]
enabled  = true
bantime  = 1w
findtime = 1d

Az Apache-hoz ehelyett aktiválja például az apache-auth, az apache-noscript és az apache-botsearch jaileket. A naplóútvonalakat a Fail2ban disztribúciónként hozza; ha az Öné eltér, állítsa be a logpath értékét az adott jailben. Ha a rendszere a naplókat csak a journalon keresztül olvassa, a backend = systemd segít.

Saját szűrő a PHP-fájlokra irányuló tömeges kérésekhez

A jelenlegi helyzet tipikus mintája: rövid idő alatt sok kérés olyan PHP-fájlokra, amelyek nem léteznek. Egy saját szűrő ezt a 404-es állapotkódról ismeri fel. Csak azt írja le, ami az Ön saját naplójában áll:

# /etc/fail2ban/filter.d/nginx-php-404.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD) [^"]*\.php[^"]*" 404
ignoreregex =
# Kiegészítés a /etc/fail2ban/jail.local fájlban
[nginx-php-404]
enabled  = true
port     = http,https
filter   = nginx-php-404
logpath  = /var/log/nginx/access.log
maxretry = 20
findtime = 1m
bantime  = 1h

A szűrő aktiválása előtt ellenőrizze a valódi naplóval szemben. Így látja, hány sort talál el, és vannak-e köztük jogos hozzáférések:

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-php-404.conf
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status nginx-php-404
# Egy véletlenül tiltott cím felszabadítása
sudo fail2ban-client set nginx-php-404 unbanip 203.0.113.25

A küszöböt válassza nagyvonalúan. Egy elavult linkeket feldolgozó crawler vagy egy monitoring-szolgáltatás nem kerülhet a tiltásba.

A leggyakoribb csapdák

A Fail2ban gyorsan telepíthető, de könnyen rosszul alkalmazható. Ezeket a pontokat éles használat előtt ellenőrizze:

  1. Önkizárás: Az irodai, VPN- és monitoring-címek az ignoreip-be valók, mielőtt a jailek aktívvá válnak.
  2. Előtte álló szolgáltatások: CDN vagy load balancer mögött a Fail2ban módosítás nélkül csak azok címeit látja. Bővebben az Admin-bejelentkezések védelme brute force ellen útmutatóban.
  3. Naplórotáció: A naplófájl váltása után a Fail2bannek az új fájlt kell olvasnia. Az első rotáció után ellenőrizze, hogy a jailek tovább számolnak-e találatokat.
  4. Együttműködés a tűzfallal: A Fail2ban a tiltásokat a tűzfalba írja be. Aki a tűzfalát a szabályrendszer teljes újratöltésével kezeli, ezeket a bejegyzéseket közben törölheti. Hogyan építse fel magát a tűzfalat, azt a Tűzfal webszerverekhez: csak a szükséges portokat nyissa meg írja le.
  5. IPv6: A támadások IPv6-on keresztül is érkeznek. Ellenőrizze, hogy a tiltási művelete mindkét protokollt lefedi-e.
Tipp

Rendszeresen értékelje ki a tiltási listákat. Ha bizonyos hálózatokból vagy bizonyos útvonalakra felhalmozódnak a tiltások, az célzott keresésre utal, és ok arra, hogy az érintett alkalmazást közelebbről megvizsgálja.

Összegzés: eszköz a tömeg ellen, nem mindenre

A Fail2ban gyorsan beállítható, és leveszi a webszerverekről az állandó ostrom egy részét. A mellékelt jailek a tipikus mintákat lefedik, a saját szűrők a fail2ban-regex-szel veszélytelenül tesztelhetők valódi naplókon, a recidive-jail pedig gondoskodik arról, hogy a makacs források hosszabb ideig kint maradjanak.

Ne becsülje túl. A Fail2ban az ismétlésre reagál, nem az első találatra, és csak azt látja, ami a naplókban áll. Egy olyan rés ellen, mint a PHP2Shell, egyedül a frissítés segít, a sok címről érkező elosztott támadások ellen a Fail2ban alig. Értékét egy réteg a több közül fejti ki: egy karcsú tűzfal, egy keményített webszerver-konfiguráció, a kétfaktoros bejelentkezés és egy olyan felügyelet mellett, amely a feltűnéseket nem csak tiltja, hanem jelenti is.

Hogyan segít konkrétan a PHP SOS?

  • Naplók kiértékelése: Megnézzük, milyen minták fordulnak elő a hozzáférési naplóiban, és kiválasztjuk a megfelelő jaileket.
  • Beállítás és tesztelés: Saját szűrőkkel beállítjuk a Fail2bant, minden szűrőt valódi naplókon tesztelünk, és a rögzített címeit kivételként beírjuk.
  • Az együttműködés tisztázása: A CDN-t, a load balancert, a tűzfalat és a naplórotációt úgy hangoljuk össze, hogy a tiltások a helyes címeket találják el.
  • Megfigyelés: A biztonsági monitoring keretében folyamatosan kiértékeljük a tiltásokat és a feltűnéseket.

Gyakori kérdések

Véd a Fail2ban a PHP2Shell ellen?

Nem. A Fail2ban csak azután reagál, hogy egy cím többször feltűnt a naplókban. Egyetlen sikeres támadást ez nem akadályoz meg. A Fail2ban viszont csökkenti a keresők okozta terhelést, és költségesebbé teszi az ugyanabból a forrásból érkező ismételt kísérleteket.

Miért ne módosítsam közvetlenül a jail.conf fájlt?

A fájlt a csomagfrissítések kicserélik, és ezt maga is közli. A saját beállítások egy jail.local fájlba vagy a jail.d alatti fájlokba valók. Ott célzottan felülírják az alapértékeket.

Mi a recidive-jail?

Egy jail, amely magának a Fail2bannek a naplóját értékeli ki. Aki újra és újra tiltásba kerül, lényegesen hosszabb tiltást kap. A mellékelt konfigurációban ez egy hét.

Működik a Fail2ban a Cloudflare vagy egy load balancer mögött?

Csak kiegészítő konfigurációval. Anélkül a naplókban az előtte álló szolgáltatás címe áll, és egy tiltás minden látogatót érintene. A webszervernek ilyenkor át kell vennie a látogató valódi címét, a tiltásokat pedig jobb az előtte álló szolgáltatásnál beállítani.

Források

Azonnali kapcsolat

Minden óra számít. Írjon nekünk most.

Ismertesse röviden a rendszert, a PHP-verziót és a megfigyelését. Jelentkezünk, tisztázzuk a helyzetet, és távolról dolgozunk, amíg az incidens le nem zárul és dokumentálva nem lesz.

Azonnali segítség