Fail2Ban installeren op een Raspberry Pi

Indien je jouw Raspberry Pi als een server gebruikt, bijvoorbeeld als ssh of webserver, dan zitten er ‘gaten’ in de firewall. Door deze gaten gaat het gewenste verkeer. Echter, kwaadwillenden kunnen via deze gaten ook naar binnen komen en daar kan Fail2ban goed van pas komen. Fail2ban, geschreven in Python, is een scanner die de logbestanden van de Raspberry Pi bekijkt op verdachte activiteiten. Zaken als brute-force pogingen om in te loggen zullen opgemerkt worden. Vervolgens wordt de geïnstalleerde firewall ‘geïnformeerd’ dat verdere log in pogingen van een verdacht IP adres geblokkeerd moeten worden. Je hoeft dus zelf de logbestanden niet meer te bekijken voor ongewenste pogingen en je hoeft de firewall zelf ook niet meer aan te passen.

 

Benodigdheden

 

Fail2Ban installeren

Installeer Fail2ban met het volgende commando:

sudo apt-get install fail2ban

Let op dat de versie van Fail2ban in de repository (v.0.8.13) geen IPv6 netwerken ondersteunt. Indien je IPv6 gebruikt dan moet je versie v0.10 of hoger installeren. Kijk op de website van Fail2ban voor meer informatie hoe je dit precies kunt doen.

Tijdens de installatie creëert Fail2ban een folder /etc/fail2ban waar het configuratiebestand jail.conf in staat. Dit moet gekopieerd worden naar jail.local om het te actieveren. In het configuratiebestand staat een set van standaard opties. Geef onderstaande commando’s bij de terminal in:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Ga opzoek naar de sectie[ssh]. Je zal iets soortgelijks als onderstaand zien (mocht je [ssh] niet vinden voeg onderstaande regels dan toe aan het bestand):

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Zoals je kunt zien heet deze sectie ssh, is ingeschakeld, betreft de ssh poort, filters gebruiken de \etc\fail2ban\filters.d\sshd.conf parameters, maakt een logbestand aan in /var/log/auth.log voor verdachte activiteiten en staat zes pogingen toe, voordat er daadwerkelijk actie wordt ondernomen. We zien dat de standaard ban actie het volgende is:

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

iptables-multiport betekent dat het Fail2ban systeem het /etc/fail2ban/action.d/iptables-multiport.conf bestand uitvoert indien aan de voorwaarden wordt voldaan. Er is een aantal verschillende actie configuratiebestanden die gebruikt kunnen worden. Multiport blokkeert alle toegang tot alle poorten.

 

IP-adres permanent blokkeren

Indien je een IP adres permanent wilt blokkeren na drie gefaalde pogingen dan kun je de waarde van maxretry in de[ ssh] sectie op 3 zetten en de bantime een negatief nummer geven:

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3 
bantime = -1

Verdere specifieke informatie over settings van Fail2ban kun je hier vinden. Nadat je alle settings goed gezet hebt gaan we Fail2ban herstarten, zodat alle wijzigingen ook actief zijn:

sudo service fail2ban restart

Vanaf nu is je Raspberry Pi beschermd tegen brute-force aanvallen, hoewel alle bans worden opgeheven indien je Fail2ban of je Raspberry Pi herstart. Mocht je het voor elkaar krijgen om jezelf te bannen, dan kun je simpelweg de Raspberry Pi rebooten.

Je kunt jouw IPTables bekijken om alle gebande IP adressen in te zien met commando:

sudo iptables -L -n --line

 

IP-adressen whitelisten

Uiteraard wil je niet dat je zelf geblokkeerd wordt, indien je een verkeerd wachtwoord intypt. We gaan de het LAN-netwerk op de whitelist van Fail2Ban zetten:

sudo nano /etc/fail2ban/jail.conf

Zoek nu naar de regel ignoreip = 127.0.0.1/8. Wijzig deze regel naar ignoreip = 127.0.0.1/8 192.168.1.0/24 (uiteraard moet je hier wel jouw LAN IP-range neerzetten. Mocht je nog meer vertrouwde IP-adressen hebben dan kun je deze aan het einde van de regel toevoegen (de IP-adressen moeten gescheiden worden met een spatie).

Om alle wijzigingen door te voeren moeten we Fail2Ban herstarten:

sudo service fail2ban restart

 

Unban IP-adres

Mocht er per abuis een IP-adres geblokkeerd zijn dan kun je dat uiteraard ongedaan maken. Dit doen we met onderstaand commando:

fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE

IPADDRESSHERE moet je vervangen door het IP-adres dat je weer wilt deblokkeren. YOURJAILNAMEHERE moet je vervangen door de desbetreffende jailname. De jailnames kun je opvragen met commando:

sudo fail2ban-client status

fail2ban

Om te controleren dat het IP-adres werkelijk gedeblokkeerd is geef je onderstaand commando in:

sudo iptables -L

 

Voorbeeld logbestand Fail2Ban

Mocht je nog niet overtuigd zijn van het nut van Fail2ban, bekijk dan eens onderstaand lijstje. Dit is de vangst van een paar uurtjes:

19-3-2018 fail2ban.actions [26697]: NOTICE [sshd] Ban 103.99.0.186
19-3-2018 fail2ban.actions [26697]: NOTICE [sshd] Ban 182.100.67.119
19-3-2018 fail2ban.actions [27877]: NOTICE [ssh] Ban 182.100.67.119
19-3-2018 fail2ban.actions [27877]: NOTICE [ssh] Ban 103.99.0.186
19-3-2018 fail2ban.actions [27877]: NOTICE [ssh] Ban 96.68.99.234
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 92.254.141.170
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 162.105.28.7
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 45.122.221.42
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 202.104.149.55
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 183.157.164.198
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 66.98.69.142
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 123.20.15.251
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 103.83.198.104
19-3-2018 fail2ban.actions [440]: NOTICE [sshd] Ban 103.83.198.104
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 193.70.90.250
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 5.188.10.179
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 203.154.243.50
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 137.119.55.87
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 195.88.62.244
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 88.87.202.71
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 85.95.185.53
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 36.34.85.175
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 193.70.85.206
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 35.178.84.184
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 101.236.61.35
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 52.210.166.166
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 35.227.78.252
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 180.250.210.133
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 193.70.46.201
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 85.199.232.4
19-3-2018 fail2ban.actions [440]: NOTICE [ssh] Ban 94.158.98.3
19-3-2018 fail2ban.actions [471]: NOTICE [ssh] Ban 195.219.9.72
19-3-2018 fail2ban.actions [471]: NOTICE [ssh] Ban 54.36.190.101
19-3-2018 fail2ban.actions [471]: NOTICE [ssh] Ban 38.108.53.157
19-3-2018 fail2ban.actions [471]: NOTICE [ssh] Ban 113.188.187.148
19-3-2018 fail2ban.actions [471]: NOTICE [ssh] Ban 116.107.129.184
19-3-2018 fail2ban.actions [471]: NOTICE [ssh] Ban 186.91.223.82

Indien je bovenstaande stappen hebt uitgevoerd is je Raspberry Pi uitstekend beveiligd tegen indringers van buitenaf!

In deel 2 wordt uitgelegd hoe je Domoticz toe kun voegen aan Fail2Ban.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *