[[oktatas:linux:secure_linux|< Secure Linux]] ====== Fail2ban ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2019 * [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: http://szit.hu ===== A fail2banról ===== A fail2ban naplóállományokat elemez, majd IP cím alapján tiltásokat léptet életbe automatikusan. A naplóállományokban túl sok sikertelen jelszó vagy expolit, vagy egyéb próbálkozások után kutat a program. A fail2ban elsősorban a tűzfalszabályok frissítésével működik. Többféle szolgáltatás számára beállítható, mint például apache, ssh, courier stb. A fail2ban Debian GNU/Linux esetén csomagból telepíthető. Webhelye a következő linken érhető el: * https://www.fail2ban.org/ ===== Telepítés ===== Telepítés Debian GNU/Linuxon: apt install fail2ban ===== Ellenőrzés ===== Elindul egy szerver folyamat; ellenőrizzük: ps ax pgrep -a fail2ban pstree pstree -c A fail2ban unix socketet használ, ellenőrizzük: ss -lx | grep fail2ban ===== A szolgáltatás kezelése ===== A szerver szolgáltatásként kezelhető a systemctl paranccsal. Nézzük meg státuszát: systemctl status fail2ban Leállítás: systemctl stop fail2ban Indítás: systemctl start fail2ban Újraindítás: systemctl restart fail2ban ===== Beállítások ===== A beállításokat a /etc/fail2ban könyvtárban találjuk: ls /etc/fail2ban Az egyes szolgáltatásokhoz tartozó alapbeállítások a jail.conf állományban találhatók. Nézzünk bele: grep ^[^#] /etc/fail2ban/jail.conf Az ini fájlokhoz hasonló a fájl felépítése. Szögletes zárójelben megadott szekciókat tartalmaz. A [DEFAULT] szekció tartalmazza az alapbeállításokat. Soha ne szerkesszük a jail.conf állományt. ^ Néhány beállítás ^^ | bantime = 10m | 10 percig tiltunk | | maxretry = 5 | maximum 5 sikertelen próbálkozás lehet | | enabled = false | alapértelmezetten nincs engedélyezve \\ szolgáltatás | | findtime = 10m | ennyi idő alatt kell összegyűlnie \\ a sikertelen próbálkozásoknak. | ^ Néhány nem kötelező elem ^^ | port = http,https | milyen portokat figyeljen | | filter = apache-auth | milyen szűrőfájlt használjon; \\ a szűrőfájlok a /etc/fail2ban/filter.d \\ könyvtárban találhatók | | logpath = /var/log/apache2/*error.log | Hol található a naplófájl | Az sshd démon figyelése Debian 10 rendszeren alapértelmezetten engedélyezve van a következő fájlban: /etc/fail2ban/jail.d/defaults-debian.conf Az alapértelmezések felülírásához készíthetünk egy másolatot a jail.conf állományról, jail.local néven a /etc/fail2ban könyvtáron belül, de ennél sokkal letisztultabb megoldást, ha a /etc/fail2ban/jail.d/ könyvtárat használjuk. Készítsünk tetszőleges néven állományt, .local kiterjesztéssel. Legyen a példa kedvéért sshd.local cd /etc/fail2ban/jail.d/ nano sshd.local A fájl tartalmában szabályozzuk újra az SSH démon beállításait: [sshd] enabled = true bantime = 2m maxentry = 3 findtime = 10m Az aktualizáláshoz újra kell indítani a fail2ban szolgáltatást: systemctl restart fail2ban ===== A működés tesztelése ===== A fail2ban teszteléséhez telepítsük az OpenSSH szervert: apt install ssh Egy másik gépről próbáljunk meg bejelentkezni valamilyen felhasználóval, mindig rossz jelszót megadva. Például janos felhasználóval a 192.168.10.2 gépre: ssh janos@192.168.10.2 Az ötödik sikertelen bejelentkezés után már a hibaüzenet sem jelenik meg. Nézzük meg a célszerveren a tűzfalszabályokat: iptables -L Egy új lánc látható: f2b-sshd Az f2b-sshd láncon pedig egy tiltó szabály. A tiltás 10 percig működik. ===== Tiltás megszüntetése ===== Példa: fail2ban-client set sshd unbanip 192.168.10.3 ===== Fehér lista ===== Tegyük a kívánt szekcióba: ignoreip = 192.168.10.1 192.168.20.0/24 Indítsuk újra a fail2bant: systemctl restart fail2ban ===== Felhasználó ellenőrzése ===== grep janos /var/log/auth.log