Fail2ban je bezplatný a open-source systém prevence narušení napsaný v Pythonu. Používá se k ochraně vašeho systému před útoky hrubou silou. Průběžně monitoruje protokolové soubory SSH (a další) na pokusy o autentizaci, po zadaném počtu nesprávných pokusů o heslo je IP adresa klienta zakázána pomocí Fail2Ban. Lze jej použít k zabezpečení několika služeb včetně SSH, vsftpd, Apache a Webmin.
V tomto tutoriálu vám ukážu, jak nainstalovat Fail2Ban firewall na Alma Linux 8.
Předpoklady
- Server se systémem Alma Linux 8.
- Na serveru je nakonfigurováno heslo uživatele root.
Ověřit instalaci brány firewall
Ve výchozím nastavení je balíček Firewalld předinstalován na Alma Linux 8. Nejprve budete muset zkontrolovat, zda je spuštěn nebo ne. Můžete to zkontrolovat pomocí následujícího příkazu:
systemctl status firewalld
Pokud firewalld neběží, dostanete následující výstup:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Nyní spusťte službu firewalld pomocí následujícího příkazu:
systemctl start firewalld
Stav brány firewall můžete zkontrolovat pomocí následujícího příkazu:
systemctl status firewalld
Měli byste vidět následující výstup:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago Docs: man:firewalld(1) Main PID: 7214 (firewalld) Tasks: 2 (limit: 23696) Memory: 27.9M CGroup: /system.slice/firewalld.service ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon... Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.
Nyní vypište všechny služby nakonfigurované firewallem pomocí následujícího příkazu:
firewall-cmd --list-all
Měli byste vidět následující výstup:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Instalovat Fail2Ban
Ve výchozím nastavení není balíček Fail2Ban dostupný ve výchozím repozitáři Alma Linux. Budete jej tedy muset nainstalovat z úložiště EPEL. EPEL repo můžete nainstalovat pomocí následujícího příkazu:
dnf install epel-release -y
Jakmile je EPEL repo nainstalováno, můžete nainstalovat firewall Fail2Ban pomocí následujícího příkazu:
dnf install fail2ban fail2ban-firewalld -y
Po dokončení instalace spusťte a povolte službu Fail2Ban pomocí následujícího příkazu:
systemctl start fail2ban
systemctl enable fail2ban
Stav služby fail2ban můžete ověřit spuštěním příkazu:
systemctl status fail2ban
Měli byste vidět následující výstup:
? fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago Docs: man:fail2ban(1) Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 7840 (fail2ban-server) Tasks: 3 (limit: 23696) Memory: 10.8M CGroup: /system.slice/fail2ban.service ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service... Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service. Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready
Nakonfigurujte Fail2Ban
Hlavní konfigurační soubor Fail2Ban se nachází na adrese /etc/fail2ban/jail.conf . Je vhodné vytvořit kopii hlavního konfiguračního souboru. Můžete jej vytvořit pomocí následujícího příkazu:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ve výchozím nastavení používá Fail2Ban firewall Iptables. Chcete-li povolit podporu brány firewall, spusťte následující příkaz:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Poté restartujte službu Fail2Ban, aby se změny projevily:
systemctl restart fail2ban
Zabezpečte SSH pomocí Fail2Ban
Ve výchozím nastavení není Fail2Ban nakonfigurován k blokování vzdálených IP adres. Budete muset nakonfigurovat konfigurační soubor vězení Fail2Ban pro každou službu, kterou chcete chránit.
Chcete-li chránit službu SSH, vytvořte konfigurační soubor vězení pro SSH pomocí následujícího příkazu:
nano /etc/fail2ban/jail.d/sshd.local
Přidejte následující řádky:
# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. [sshd] enabled = true bantime = 2h maxretry = 3
Po dokončení uložte a zavřete soubor a poté restartujte službu SSH, aby se změny projevily:
systemctl restart fail2ban
Nyní můžete ověřit konfiguraci vězení pomocí následujícího příkazu:
fail2ban-client status
Konfigurovaný jail získáte v následujícím výstupu:
Status |- Number of jail: 1 `- Jail list: sshd
Chcete-li zkontrolovat zakázanou IP ve vězení SSH, spusťte následující příkaz:
fail2ban-client status sshd
Seznam všech zakázaných IP adres získáte v následujícím výstupu:
Status for the jail: sshd |- Filter | |- Currently failed: 6 | |- Total failed: 15 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 96.9.67.48 43.154.142.8
Pokud chcete IP adresu zrušit ručně, spusťte následující příkaz:
fail2ban-client unban remote-ip-address
Závěr
Ve výše uvedené příručce jsme vysvětlili, jak nainstalovat Fail2Ban na Alma Linux 8. Také jsme vysvětlili, jak používat Fail2Ban k zabezpečení služby SSH. Nyní můžete implementovat Fail2Ban do produkčního prostředí, abyste ochránili svůj systém před útoky hrubou silou.