A Fail2ban használata a Linux-szerver biztonságához
A szerver biztonságának javítása kell, hogy legyen az egyik legfontosabb prioritás a linuxos kiszolgálók kezelésekor. A szervernaplók áttekintésével gyakran találkozhat különféle brute force bejelentkezési kísérletekkel, webözönekkel, kihasználáskereséssel és sok mással.
Egy behatolásgátló szoftverrel, például a fail2ban segítségével megvizsgálhatja a szervernaplókat, és további iptables szabályokat adhat hozzá a problémás IP-címek blokkolásához.
Olvassa el még: A Fail2Ban telepítése az SSH védelmére CentOS/RHEL 8 rendszeren
Ez az oktatóanyag bemutatja a fail2ban telepítését és az alapvető konfigurációk beállítását, hogy megvédje Linux rendszerét a brute force támadásoktól.
Követelmények
A Fail2ban pythonban van írva, és az egyetlen követelmény a python telepítése:
- A Fail2ban ág 0.9.x verziójához Python >=2.6 vagy Python >=3.2 szükséges
- A Fail2ban ág 0.8.x Python >=2.4-et igényel
- Root hozzáférés a rendszerhez
- Opcionálisan iptables vagy showwall és sendmail
A Fail2Ban telepítése Linux rendszereken
A fail2ban telepítése viszonylag egyszerű:
Telepítse a Fail2Ban-t a CentOS/RHEL rendszeren
Először frissítse a csomagokat, engedélyezze az Epel tárolót, és telepítse a fail2ban alkalmazást az ábra szerint.
yum update
yum install epel-release
yum install fail2ban
Telepítse a Fail2Ban-t Debian/Ubuntu rendszerre
Először frissítse a csomagokat, és telepítse a fail2ban alkalmazást az ábra szerint.
apt-get update && apt-get upgrade -y
apt-get install fail2ban
Opcionálisan, ha engedélyezni szeretné a levelezési támogatást (levélértesítésekhez), telepítheti a sendmailt.
yum install sendmail [On CentOS/RHEL]
apt-get install sendmail-bin sendmail [On Debian/Ubuntu]
A fail2ban és a sendmail engedélyezéséhez használja a következő parancsokat:
systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail
A Fail2ban konfigurálása Linux rendszereken
Alapértelmezés szerint a fail2ban az /etc/fail2ban/ könyvtárban található .conf
fájlokat használja, amelyek először kerülnek beolvasásra. Ezeket azonban felülbírálhatják az ugyanabban a könyvtárban található .local
fájlokkal.
Így a .local
fájlnak nem kell tartalmaznia a .conf
fájl összes beállítását, hanem csak azokat, amelyeket felül akar bírálni. A módosításokat a .local
fájlokban kell elvégezni, nem a .conf
fájlban. Ez megakadályozza a változtatások felülírását a fail2ban csomag frissítésekor.
Ennek az oktatóanyagnak a céljára átmásoljuk a meglévő fail2ban.conf fájlt a fail2ban.local fájlba.
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
Most már elvégezheti a módosításokat a .local
fájlban kedvenc szövegszerkesztője segítségével. A szerkeszthető értékek a következők:
naplózási szint – ez a naplózandó részletességi szint. A lehetséges opciók a következők:
- KRITIKAI
- HIBA
- FIGYELEM
- ÉRTESÍTÉS
- INFO
- DEBUG
logtarget – naplózza a műveleteket egy adott fájlban. Az alapértelmezett érték a /var/log/fail2ban.log. Ezt azonban módosíthatja a következőre:
- STDOUT – bármilyen adat kiadása
A Fail2ban jail.local konfigurálása
A fail2ban egyik legfontosabb fájlja a jail.conf
, amely meghatározza a börtönöket. Itt adhatja meg azokat a szolgáltatásokat, amelyeknél engedélyezni kell a fail2ban-t.
Amint azt korábban említettük, a .conf
fájlok a frissítések során módosíthatók, ezért érdemes létrehozni egy jail.local fájlt, ahol alkalmazni tudod a módosításokat.
Egy másik módja ennek, ha egyszerűen másolja a .conf fájlt a következővel:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
CentOS vagy Fedora használata esetén módosítania kell a háttérrendszert a jail.local fájlban a következőről: „auto”-ról „systemd”-re.
Ha Ubuntu/Debiant használ, nincs szükség erre a módosításra, még akkor sem, ha ők is systemd-t használnak.
A jail fájl alapértelmezés szerint engedélyezi az SSH-t a Debian és az Ubuntu esetén, de nem a CentOS rendszeren. Ha engedélyezni szeretné, egyszerűen módosítsa a következő sort a /etc/fail2ban/jail.local fájlban:
[sshd]
enabled = true
Kitiltás és újrapróbálkozási idők
Beállíthatja azt a körülményt, amely után az IP-cím blokkolva legyen. Ebből a célból a fail2ban a bantime, a findtime és a maxretry használatát használja.
- bantime – ez a másodpercek száma, ameddig egy IP-cím tiltva marad (alapértelmezett 10 perc).
- findtime – a bejelentkezési kísérletek között eltelt idő a gazdagép kitiltása előtt. (alapértelmezett 10 perc). Más szóval, ha a fail2ban úgy van beállítva, hogy blokkoljon egy IP-címet 3 sikertelen bejelentkezési kísérlet után, akkor ezt a 3 kísérletet a keresési időn belül (10<) meg kell tenni perc).
- maxretry – a tiltás alkalmazása előtt végrehajtandó próbálkozások száma. (alapértelmezett 3).
IP-cím engedélyezési listája
Természetesen bizonyos IP-címeket szeretne engedélyezőlistára tenni. Az ilyen IP-címek beállításához nyissa meg az /etc/fail2ban/jail.local fájlt kedvenc szövegszerkesztőjével, és törölje a megjegyzéseket a következő sorból:
ignoreip = 127.0.0.1/8 ::1
Ezután megadhatja a figyelmen kívül hagyni kívánt IP-címeket. Az IP-címeket szóköztől vagy vesszőtől el kell választani.
E-mail figyelmeztetések
Ha e-mailben szeretne értesítést kapni az eseményről, a következő beállításokat kell megadnia az /etc/fail2ban/jail.local oldalon:
- destemail – e-mail cím, ahová az értesítést kapja.
- Feladónév – a feladó, akit látni fog az üzenet fogadásakor.
- feladó – e-mail cím, ahonnan a fail2ban küldi az e-maileket.
Az alapértelmezett mta (levéltovábbító ügynök) sendmail.
Ha e-mailes értesítéseket szeretne kapni, módosítania kell az „művelet” beállítást a következőről:
Action = %(action_)s
Ezek egyikére:
action = %(action_mw)s
action = %(action_mwl)s
- %(action_mw)s – kitiltja a gazdagépet, és e-mailt küld a whois jelentéssel.
- %(action_mwl)s – kitiltja a gazdagépet, megadja a whois-információkat és minden lényeges információt a naplófájlból.
További Fail2ban Jail konfiguráció
Eddig az alapvető konfigurációs lehetőségeket néztük meg. Ha börtönt szeretne konfigurálni, engedélyeznie kell azt a jail.local fájlban. A szintaxis nagyon egyszerű:
[jail_to_enable]
. . .
enabled = true
Ahol a jail_to_enable kifejezést a tényleges börtönre kell cserélni, például: „sshd”. A jail.local fájlban a következő értékek lesznek előre meghatározva az ssh szolgáltatáshoz:
[sshd]
port = ssh
logpath = %(sshd_log)s
Engedélyezheti a szűrőt, amely segít azonosítani, ha a napló egy sora hibás. A szűrő értéke valójában egy hivatkozás egy fájlra, amelynek szolgáltatásneve és utána .conf. Például: /etc/fail2ban/filter.d/sshd.conf.
A szintaxis a következő:
filter = service
Például:
filter = sshd
A meglévő szűrőket a következő könyvtárban tekintheti meg: /etc/fail2ban/filter.d/.
Használja a fail2ban-klienst
A Fail2ban egy klienssel érkezik, amely az aktuális konfiguráció áttekintésére és módosítására használható. Mivel számos lehetőséget kínál, a kézikönyvet a következőkkel nézheti át:
man fail2ban-client
Itt láthat néhány alapvető parancsot, amelyet használhat. A fail2ban aktuális állapotának vagy adott börtönhöz tartozó állapotának áttekintéséhez a következőket használhatja:
fail2ban-client status
Az eredmény ehhez hasonlóan fog kinézni:
Egyéni börtön esetén futhat:
fail2ban-client status sshd
Az alábbi képernyőképen látni fogja, hogy szándékosan sikertelen voltam több bejelentkezésben, így a fail2ban blokkolhatja azt az IP-címet, amelyről csatlakozni próbáltam:
Következtetés
A Fail2ban egy kiváló, jól dokumentált behatolásgátló rendszer, amely extra biztonságot nyújt Linux rendszerének. Kell egy kis idő, amíg megszokja a beállítását és szintaxisát, de ha megismeri, nyugodtan módosíthatja és kiterjesztheti a szabályait.