Fail2ban

„Selži a máš ban!“

Co je Fail2ban?

Fail2ban je utilita, která provádí jak říká název: selži a máš ban. Je to souhrn konfiguračních souborů pro různé protokoly a služby. Slouží k limitování útoků na počítač hrubou silou pomocí ověřování. Monitoruje logy a podle jejich údajů vydává "rozkaz k zatčení", takový rozkaz způsobí, že IP adresa útočníka je zablokována na danou dobu(dle nastavení). Na obrázku je vidět výpis stavu služby sshd.

Fail2ban ovládající službu sshd

Instalace

Pro instalaci stačí nainstalovat balíček fail2ban, který bývá součástí distribuce a také se může stát, že bude třeba v některých distribucích Linux spustit službu (service).

Pro instalaci v Debian/Raspbian/Ubuntu zadám:

sudo apt-get install fail2ban

Pro instalaci v Arch Linux zadám:

sudo pacman -S fail2ban

Po instalaci se musí převážně v Arch Linuxu zapnout démon běžící v pozadí, který bude vše řídit, to udělám příkazem:

sudo systemctl enable fail2ban.service
sudo systemctl start fail2ban.service

Nastavení

Příkaz pro spuštění je fail2ban.

Soubory s nastavením jsou uložené v adresáři /etc/fail2ban.

Nastavení cest k logům se bude lišit podle distribuce Linux.

Nápověda se vyvolá příkazem fail2ban -h.

Zrestartováním služby se okamžitě provedou změny.

Jail.conf

Jail nebo-li žalář slouží k nastavení aktivních služeb ochrany. Pokud chci vytvořit aktivní ochranu některého z mnoha typů, edituji soubor /etc/fail2ban/jail.d/jail.conf.

  1. Hodnoty
  2. SSHd
  3. Apache-noscript

Hodnoty v jail.conf

Hodnoty se do konfiguračního souboru zapisují malými písmeny.

SSHd a Fail2ban

Sleduje neúspěšná přihlášení z protokolu SSH.

V konfiguračním souboru SSHd je třeba změnit u LogLevel hodnotu na VERBOSE. Fail2ban potřebuje upovídaný log, aby mohl shromažďovat data, pak jen přidat pravidla do konfiguračního souboru jail.conf a zrestartovat PC nebo službu fail2ban.

  1. V souboru /etc/ssh/sshd_config najdu řádek LogLevel, měl by být odkomentovaný a hodnota za ním musí být VERBOSE - čili upovídaný. Poté restartuji službu sshd. (Arch Linux - "sudo systemctl restart sshd.service")
  2. LogLevel VERBOSE
  3. V souboru /etc/fail2ban/jail.d/jail.conf musí být něco jako:
  4. [sshd]
    enabled = true
    filter = sshd
    action = ufw
    backend = systemd
    maxretry = 1
    port = 22
    bantime = 12w
    findtime = 5d
    ignoreip = 198.168.40.50/16 10.21.45.09/24
  5. Zrestartuji službu fail2ban, u systému Arch Linux je to příkazem:
    sudo systemctl restart fail2ban.service

    A nebo jen sshd:

    sudo fail2ban-client restart sshd
  6. sudo fail2ban-client status by měl napsat, že je aktivní, kolik a jaké protokoly anebo služby hlídá. V mém případě hlídá navíc ještě apache-noscript.
  7. sudo fail2ban-client status
    Status
    |- Number of jail: 2
    `- Jail list: apache-noscript, sshd
  8. Podrobnější výpis získám upřesněním služby argumentem sshd:
  9. sudo fail2ban-client status sshd

Apache-noscript

Pokud provozuji server, bude se mi hodit eliminovat nesmyslné a chybné požadavky pro přístup k serveru. Na základě chyb URL bude blokovat přístupy s danou specifikací a počtem chyb.

  1. Nastavím si LogLevel pro Apache(httpd) alespoň na hodnotu warn, to provedu v souboru /etc/httpd/conf/httpd.conf do kterého nastavím:
    LogLevel warn
  2. V souboru /etc/fail2ban/jail.d/jail.conf musí být něco jako:
    [apache-noscript]
    enabled = true
    port = http, https
    filter = apache-noscript
    logpath = /var/log/httpd/error_log
    maxretry = 2
    bantime = 8w
    findtime = 1h
  3. Zrestartuji službu fail2ban.service (Arch Linux) příkazem:
    sudo systemctl restart fail2ban.service

    A nebo jen apache-noscript:

    sudo fail2ban-client restart apache-noscript