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:
1 |
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:
1 2 |
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):
1 2 3 4 5 6 |
[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:
1 2 3 4 5 |
# 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:
1 2 3 4 5 6 7 |
[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:
1 |
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:
1 |
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:
1 |
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:
1 |
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:
1 |
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:
1 |
sudo fail2ban-client status |
Om te controleren dat het IP-adres werkelijk gedeblokkeerd is geef je onderstaand commando in:
1 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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.
Hallo,
Ik heb wel 10 keer de installatie van Fail2Ban over gedaan maar blijf met een niet werkend programma zitten.
Wat doe ik fout?
Hieronder wat ik gedaan heb.
Ik hoop dat je me kan helpen
Groet,
Fred
pi@raspberrypi:~ $ sudo apt-get install fail2ban
Pakketlijsten worden ingelezenā¦ Klaar
Boom van vereisten wordt opgebouwd
De statusinformatie wordt gelezenā¦ Klaar
fail2ban is reeds de nieuwste versie (0.10.2-2.1).
0 opgewaardeerd, 0 nieuw geĆÆnstalleerd, 0 te verwijderen en 23 niet opgewaardeerd.
pi@raspberrypi:~ $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
pi@raspberrypi:~ $ sudo nano /etc/fail2ban/jail.local
pi@raspberrypi:~ $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
pi@raspberrypi:~ $ sudo nano /etc/fail2ban/jail.local
pi@raspberrypi:~ $ sudo service fail2ban restart
pi@raspberrypi:~ $ sudo iptables -L -n āline
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
pi@raspberrypi:~ $ sudo nano /etc/fail2ban/jail.conf
pi@raspberrypi:~ $ sudo fail2ban-client status
Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
pi@raspberrypi:~ $ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
pi@raspberrypi:~ $