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

  1. Gebruik sterke wachtwoorden - Fail2Ban is een extra laag, geen vervanging
  2. Controleer regelmatig - Controleer logboeken op verdachte activiteiten
  3. Testconfiguraties - Gebruik fail2ban-client -t voor syntaxiscontroles
  4. Back-upconfiguraties - Bewaar kopieën van uw aangepaste gevangenissen
  5. Combineer met andere beveiligingstools - Gebruik samen met UFW, SSH-sleutels, enz.

Aanvullende bronnen

User