[[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