Fail2Ban blokkeert hackers en poortscanners
Fail2Ban is een beveiligingstool die uw webserver beschermt tegen brute-force-aanvallen en poortscanners door automatisch IP-adressen te blokkeren na herhaalde mislukte inlogpogingen.
Wat doet Fail2Ban?
Fail2Ban monitort logbestanden (zoals SSH-, Apache-, Nginx-logboeken) en blokkeert IP-adressen die verdachte activiteit vertonen. Standaard blokkeert het een IP-adres na 3 mislukte pogingen gedurende 10 minuten.
Installatie
Stap 1: Installeer Fail2Ban```bash
sudo apt update sudo apt install fail2ban
### Stap 2: Schakel de service in en start deze```bash
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Stap 3: Controleer de status```bash
sudo systemctl status fail2ban
## Configuratie
### Maak een lokale configuratie
Kopieer de standaardconfiguratie naar een lokaal bestand (zodat updates uw wijzigingen niet overschrijven):```bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Bewerk de configuratie```bash
sudo nano /etc/fail2ban/jail.local
Belangrijke instellingen in de sectie `[DEFAULT]`:```ini
[DEFAULT]
# Number of minutes an IP remains blocked
bantime = 10m
# Time window in which failed attempts are counted
findtime = 10m
# Number of allowed failed attempts
maxretry = 5
# Email notifications (optional)
destemail = your@email.com
sendername = Fail2Ban
action = %(action_mwl)s
Gevangenissen configureren
SSH beschermen (standaard actief)```ini
[sshd] enabled = true port = ssh logpath = /var/log/auth.log maxretry = 3 bantime = 1h
### Bescherm Apache```ini
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
[apache-badbots]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
bantime = 48h
maxretry = 1
[apache-noscript]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
Bescherm Nginx```ini
[nginx-http-auth] enabled = true port = http,https logpath = /var/log/nginx/error.log
[nginx-limit-req] enabled = true port = http,https logpath = /var/log/nginx/error.log
### PHP/WordPress beveiligen```ini
[php-url-fopen]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
Start Fail2Ban opnieuw na configuratiewijzigingen```bash
sudo systemctl restart fail2ban
## Toezicht
### Bekijk geblokkeerde IP's```bash
sudo fail2ban-client status
Bekijk specifieke gevangenis```bash
sudo fail2ban-client status sshd
### Bekijk alle geblokkeerde IP's in alle gevangenissen```bash
sudo zgrep 'Ban' /var/log/fail2ban.log
Live monitoring van verbodsgebeurtenissen```bash
sudo tail -f /var/log/fail2ban.log
## Handmatig IP-beheer
### Deblokkeer een IP```bash
sudo fail2ban-client set sshd unbanip 192.168.1.100
Een IP handmatig blokkeren```bash
sudo fail2ban-client set sshd banip 192.168.1.100
## Controleer de firewallregels
Fail2Ban maakt gebruik van iptables. Bekijk de regels:```bash
sudo iptables -L -n
Of met UFW:```bash sudo ufw status numbered
## Problemen oplossen
### Fail2Ban start niet
Controleer op configuratiefouten:```bash
sudo fail2ban-client -d
Logboeken bekijken```bash
sudo journalctl -u fail2ban -n 100
### Testconfiguratie```bash
sudo fail2ban-client -t
Fail2Ban-database opnieuw instellen
Als er databaseproblemen zijn:```bash sudo systemctl stop fail2ban sudo rm /var/lib/fail2ban/fail2ban.sqlite3 sudo systemctl start fail2ban
## Witte lijst (IP's die nooit mogen worden geblokkeerd)
Voeg vertrouwde IP's toe in `/etc/fail2ban/jail.local`:```ini
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 your.static.ip.address
Beste praktijken
- Gebruik sterke wachtwoorden - Fail2Ban is een extra laag, geen vervanging
- Controleer regelmatig - Controleer logboeken op verdachte activiteiten
- Testconfiguraties - Gebruik
fail2ban-client -tvoor syntaxiscontroles - Back-upconfiguraties - Bewaar kopieën van uw aangepaste gevangenissen
- Combineer met andere beveiligingstools - Gebruik samen met UFW, SSH-sleutels, enz.
Aanvullende bronnen
- Fail2Ban Wiki
- Monitor aanvallen in realtime:
sudo tail -f /var/log/auth.log - Combineer met: UFW-firewall, SSH-sleutelauthenticatie, Beveiligingsheaders
