Eerder heb ik op mijn blog het gebruik van ‘Fail2Ban’ beschreven. Fail2Ban is een beveiligingsprogramma dat je Linux-server beschermt tegen brute-force-aanvallen. Het scant continu logbestanden op mislukte inlogpogingen. Als een IP-adres te vaak een fout wachtwoord invoert, geeft ‘Fail2Ban’ een opdracht aan de firewall (zoals iptables) om dat IP-adres tijdelijk te blokkeren.
Tot nu maakte ik gebruik van de command-line om de huidige status van ‘Fail2Ban’ te checken met de ‘fail2ban-client’ tool. Dit kan echter een stuk handiger met een web-interface voor deze tooling. Ik maak hierbij gebruik van Fail2Ban-UI. Fail2Ban-UI is een beheerplatform voor het gebruik van ‘Fail2Ban’ op één of meerdere Linux-hosts. Het biedt een centrale plek om blokkades te bekijken, IP-adressen te zoeken en te deblokkeren, jails en filters te beheren en meldingen te ontvangen.
Het installeren gaat eenvoudig via Docker. Je kunt de voorbeeld docker-compose files op de GIT repository van de tool downloaden en aanpassen naar jouw behoeften. Aangezien ik ‘Fail2Ban’ al heb draaien als aparte service op mijn Debian Server, heb ik alleen maar de ‘Fail2Ban-UI’ Docker nodig.
Als je de ‘Fail2Ban’ service al hebt draaien op je Linux Server moet je ervoor zorgen dat de ‘/etc/fail2ban’ volume setting naar jouw lokale ‘/etc/fail2ban’ directory wijst. Bij mij ziet de ‘docker-compose.yml’ file er nu als volgt uit:
services:
fail2ban-ui:
image: swissmakers/fail2ban-ui:latest
container_name: fail2ban-ui
privileged: true # needed because the fail2ban-ui container needs to modify the fail2ban config owned by root inside the linuxserver-fail2ban container
network_mode: host
environment:
- PUID=0
- PGID=0
- TZ=Europe/Amsterdam
- PORT=8080
- AUTODARK=true
volumes:
- ./config:/config:Z
- /etc/fail2ban:/etc/fail2ban:z
- /var/log:/var/log:ro
- /var/log/httpd:/remotelogs/apache2:ro
- /var/run/fail2ban:/var/run/fail2ban:z
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8000/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
restart: unless-stopped
Vervolgens is de web-interface met bovenstaande ‘docker-compose.yml’ file beschikbaar op poort 8080:
http://localhost:8080
In het screenshot hierboven zie je dat ik al een aantal jails heb geconfigureerd. Voordat je dit kunt doen moet je echter je huidige server toevoegen met de knop [Manage Servers]
Het toevoegen van ‘jails’ gaat met de knop [Manage Jails]. Kies nu [Create New Jail] en bij de ‘Filter’ combo-box kun je de voorgedefinieerde jails uitkiezen:
Als een IP-adres door ‘Fail2Ban’ wordt geblokt dan kun je deze ban ongedaan maken of meer informatie over het IP-adres opvragen. Voor het laatste moet je dan wel in je ‘Fail2Ban-UI’ settings een provider opgeven met een API key. Ik heb hiervoor gebruikt gemaakt van de gratis provider Open Thread Exchange.
Zie vooral de documentatie van ‘Fail2Ban-UI’ voor alle mogelijkheden en configuratie-opties.