fail2ban1

Linux: Fail2ban a Mikrotik firewall

Bezpečnost a ochrana skupiny serverů jako celku je velmi efektivní, pojďme si ukázat jak elegantně spojit firewall Mikrotik s řešením Fail2ban a chránit tak skupinu serverů jako jeden celek.

Fail2ban, nástroj dobře znám z unix světa, co dělá, jak funguje, v jednoduchosti scanuje log soubory, hledá chybné pokusy o přihlášení na jejich základě blokuje (ban) IP adresu utočníka po určitou dobu v lokálním firewallu serveru, jednoduché.

Složitěji?

Mějme následující situaci, Mikrotik jako hraniční firewall a router, za routerem skupina fyzických či virtuálních serverů, cílem je propojit fail2ban na serverech, tak aby upravovaly firewall na hraničním routeru, tedy ban bude probíhat na firewallu.

Proč?

Je pravděpodobně, že skupina serverů sdílý společný rozsah veřejných IP adres v případě pokusu o napadení jednoho serveru se automaticky začné chránit celý rozsah a to chceme, chránit celek je většinout(nikoliv vždy) efektivnější.

Obrázek pro dokreslení situace.

linux-fail2ban-mikrotik

Mikrotik firewall router

Základem je mít možnost přístupu na router Mikrotik via ssh, nejlépe pomocí klíčů, vygeneruje si tedy pár veřejný-soukromý klíč, přenést a importovat veřejný klíč na firewall router, nezadávejte při generování passphrase!

root@raspberrypi:~# ssh-keygen -t dsa
 Generating public/private dsa key pair.
 Enter file in which to save the key (/root/.ssh/id_dsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /root/.ssh/id_dsa.
 Your public key has been saved in /root/.ssh/id_dsa.pub.
 The key fingerprint is:
 ac:6c:02:92:bb:b0:b8:e4:4d:bc:ac:c6:eb:1b:cd:

Vzniklý soubor id_dsa.pub přeneste na Mikrotik router (winbox, ftp, scp …), založte samostatného uživatele a importujte mu klíč, za address dosaďte IP adresu linux serveru s instalovaným fail2ban. (uživatel je omezen na přístup z této IP, nebo nechte volné pokud chcete či chráníte ssh jinak), na Mikrotiku máme vše hotovo.

[admin@ro1.faha.neutron.mojeservery.cz] > user add name=fail2ban address=xx.xx.xx.xx group=full
[admin@ro1.faha.neutron.mojeservery.cz] > /user ssh-keys import public-key-file=id_dsa.pub user=fail2ban

Linux server

Instalace fail2ban démona (Debian součásti reposítářů, pro CentOS použíjte např. tento návod).

root@raspberrypi:~# apt-get install fail2ban

Nyní ta “magie”, vytvořet soubor /usr/local/bin/mikrotik-fail2ban s tímto obsahem, za xx.xx.xx.xx dosaďte IP adresu (nebo dns, v této ukázce) firewall Mikrotik (většinou brána)

#!/bin/bash
ssh -l failban -p22 -i /root/.ssh/id_dsa ro1.faha.neutron.mojeservery.cz "$1"

Naučíme fail2ban používat Mikrotik, vytvořte soubor /etc/fail2ban/action.d/mikrotik.conf s tímto obsahem.

# Mikrotik fail2ban
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = mikrotik-fail2ban ":ip firewall filter add action=drop chain=forward dst-address=<ip> comment=AutoFail2ban-<ip>"
actionunban = mikrotik-fail2ban ":ip firewall filter remove [:ip firewall filter find comment=AutoFail2ban-<ip>]"

Jsme téměr u konce, zapneme služby které mají být kontrolovány službou fail2ban a nastavíme action na mikrotik, v našem případě si ukážeme službu FTP, editujte soubor /etc/fail2ban/jail.conf.

[vsftpd]
enabled  = false
port     = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = /var/log/vsftpd.log
action = mikrotik
sendmail-whois[name=FTP, dest=havel@mojeservery.cz, sender=fail2ban-neutron@mojeservery.cz]
maxretry = 5
bantime = 300

Hotovo!

To bylo snadné, že?! Nyní postup můžete rozšířit na libovolný počet serverů v DMZ, dostanete automaticky ochranu celku při pokusu o napadnutí jednoho stroje.

Tento základní mustr lze zdokonalit, vylepšit, meze fantazii se nekladou, dejte pozor na přílišnou kreativitu.

Děkuji za Váš čas. František Havel