Fail2ban

From A-Eskwiki
Jump to: navigation, search

Fail2ban scant log files en bant adressen die verdachte kenmerken vertonen (bijvoorbeeld: Teveel foute inlog pogingen, zoeken naar exploits , etc). Fail2ban update de firewall regels vervolgens om het verdachte IP adres te weigeren voor een bepaalde tijds periode. Fail2ban vermindert de hoeveelheid incorrecte authenticatie pogingen, maar voorkomt niet het risico van slecht geïmplementeerde authenticatie mechanismes.

Fail2ban draait op vm-sysop en is te vinden onder /etc/fail2ban. Met het command: /etc/init.d/fail2ban status kun je de status van fail2ban checken. De standaard configuratie en regels van fail2ban staan in jail.conf en aanpassingen die wij zelf hebben gemaakt staan in jail.local. De aanpassingen in jail.local overschrijven de standaard regels in jail.conf. Als je een aanpassing maakt moet je dit dus in jail.local doen. Een voorbeeld van een regel in jail.local is:

[ssh-aes]                          // Naam van de service
enabled  = true                    // Deze service wordt gemonitoord door fail2ban
filter   = sshd                    // De filter die de logs scant op een patroon (in de map filter.d)
action   = a-eskwadraat            // De actie die wordt uitgevoerd als de filter true returnt (in de map action.d)
logpath  = /var/log/secure         // De log file die gescant wordt door de filter
maxretry = 5                       // Het aantal keer dat de filter het patroon mag tegen komen voordat de ban actie wordt uitgevoerd   


In de map filter.d staan de filters voor services. Deze werken met behulp van reguliere expressies. Wanneer er in een log file een bepaald patroon voorkomt dat de reguliere expressie matcht wordt dit gezien als een foute log-in poging.

In de map action.d staan acties die uitgevoerd worden op gedefineerde momenten. Actions zijn bijvoorbeeld het bannen en unbannen van een ip adres. Voorbeelden van een ban en unban action van de hierboven genoemde jail zijn:

actionban = /usr/bin/ssh -i /root/.ssh/id_rsa_fail2ban_ban root@10.14.0.42 <ip>
actionunban = /usr/bin/ssh -i /root/.ssh/id_rsa_fail2ban_unban root@10.14.0.42 <ip>

Hierbij is het belangrijk dat de ssh key die gebruikt wordt bepaald welke actie wordt uitgevoerd. Op ernst (de router) staan namelijk voor deze ssh keys in /root/.ssh/authorizedkeys specifieke commando's gedefinieerd. Wat deze regels doen is met behulp van ipset ip's aan de groep "blacklist" toevoegen. Om ip adressen uit zo'n ipset groep te blacklisten moet er op ernst aan /etc/shorewall/blrules een regel worden toegevoegd:

#ACTION		SOURCE		DEST
DROP            ext:+blacklist  all



STILL IN PROGRESS -------------------------