Fail2Ban

botond küldte be 2018. 07. 15., v - 10:17 időpontban

A Fail2Ban egy behatolás megelőzési program, amely védi a szerver számítógépeket a brute-force típusú támadásoktól. Python programnyelvben fejlesztették ki, és a POSIX rendszereken fut, ahol van csomagvezérlő rendszer, vagy helyileg telepített tűzfal, mint például: iptables, TCP Wrapper.

A Fail2Ban a log fájlokat (pl.: /var/log/auth.log, /var/log/apache/access.log, stb) felügyeli, amiken különböző szűrő szkripteket futtatva mintákat keres a támadások, illetve a próbálkozások felderítésére. Ha a log fájlban a szűrőkben meghatározott darabszámú mintákat megtalálja, akkor a rendszer tűzfalát használva letiltja a támadó IP-címét a megadott időpontig. Ezek a minták lehetnek például belépési kísérletek a különböző szerver szolgáltatásokba (FTP, SSH, SMTP, stb), vagy akár az Apache-on keresztül próbál valaki támadásokat végrehajtani a web szerver ellen. A konfigurációs fájlokban lehet meghatározni a próbálkozások számát, és az időszeletet, amin belül össze kell gyűlnie a megadott mintáknak, és hogy mennyi ideig legyen érvényben a blokkolás, hogy a program védelmi rendszere működésbe lépjen.

 

 

A Fail2Ban alapvetően úgy van konfigurálva, hogy a blokkolt támadásokat a megadott idő elteltével feloldja, hogy ne zárhasson ki valódi kapcsolatokat, amik átmenetileg rosszul lettek beállítva. Azonban általában néhány percnyi tiltási idő elegendő ahhoz, hogy megakadályozza a hálózati kapcsolat elárasztását a rosszindulatú kísérletektől, valamint a további próbálkozásoktól.

A védelmi rendszer többféle műveletet hajthat végre, ha egy rosszindulatú IP-címet észlel:

  • Frissítheti a tűzfal szabályait (pl Netfilter, iptables)
  • TCP Wrapper hosts.deny tábláját módosíthatja
  • Email értesítéseket küldhet
  • Bármi egyebet végrehajthat, amit egy Python szkriptben el lehet végezni.

Így tehát a rendszergazdák meghatározhatják, hogy az adott támadási típusok esetén milyen műveleteket hajtson végre a program.

Az alapkonfiguráció tartalmazza az Apache, Lighttpd, sshd, vsftpd, gmail, Postfix és a Courier Mail szerverek szűrőit. A szűrőkben reguláris kifejezésekkel lehet meghatározni a nem kívánatos tevékenységek mintáit. A szűrő és a hozzá tartozó művelet kombinációja "Jail" (börtön) -ként ismert, ami meghatározza, hogy mi történjen a rosszindulatú IP-címmel. Az alapkonfigurációval szállított Jail-eken kívül létrehozhatók további Jail beállítások, amik olyan hálózati tevékenységhez kapcsolódnak, amelyek naplófájlokat hoznak létre. Ezáltal a Fail2Ban hatékonyan együtt tud működni a legtöbb hálózati szolgáltatással.

 

Jail-ok

Az alapkonfiguráció jail beállításai a /etc/fail2ban/jail.conf fájlban vannak definiálva, amik tetszés szerint módosíthatók. Azonban a rendszer a fájl mellett kínál még egy egy felülíró fájlt is: /etc/fail2ban/jail.local, amiben célszerűbb elvégezni az egyedi beállításokat (eredetiek módosítása, újak felvitele), és az eredetieket érintetlenül hagyni. Így bármilyen hiba esetén könnyen visszaállítható az eredeti beállítás.

Ezekben a jail fájlokban egy bejegyzés jellemzően így néz ki:

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
findtime = 3600
maxretry = 3
bantime  = 86400

Ahol a szögletes zárójelben kell meghatározni a szekciót, amiről szól a beállítás. Ezt követően jönnek a paraméterek:

  • enabled: Engedélyezve van-e a szűrőszabály (jail)
  • port: Mely portokat figyeli
  • filter: szűrőfájl neve.
  • logpath: Ebben a log fájlban keresi a mintákat.
  • findtime: Ekkora időszeletet figyel, ebben kell összegyűlnie a meghatározott számú mintának
  • maxretry: És ennyi a meghatározott maximális mintaszám a legelsőt követően.
  • bantime: Tiltás időtarama, másodpercekben meghatározva

A szűrőfájlok pedig a /etc/fail2ban/filter.d könyvtárban tárolódnak, innen olvassa be őket a rendszer.

A Fail2Ban tehát a Linux szerverek védelmi vonalának igen fontos része, aminek a segítségével hatékonyan lehet felvenni a harcot a támadások ellen.