Beskyt din server med Fail2Ban 2

Skrevet af: Patrick Kerwood

Fail2Ban er et effektivt program der beskytter din server mod angreb og banner angriberens IP, via iptables. Beskyt SSH, VsFTPd, ProFTPd, WuFTPd, Apache2, Postfix, Dovecut og meget mere. I denne guide vil jeg koncentrere mig om SSH.

Start med at installer fail2ban.
apt-get install fail2ban

Konfigurations filen er “/etc/fail2ban/jail.conf“, men denne kopiers så vi altid har en ren konfigurations fil, som vi bare kan kopier igen. Fail2Ban vil automatisk vælge jail.local, hvis den eksisterer.
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Åben jail.local med din favorit editor.
nano /etc/fail2ban/jail.local

Under “[DEFAULT]” er alle standard indstillinger, som fx. nedenstående. Hvis ikke disse indstillinger er specificeret under den specifikke protocol, vil de nedenstående blive brugt.
ignoreip = 127.0.0.1/8 //White list af IP som ikke bliver banned, fx. 192.168.1.0/24.
bantime = 600 //Hvor lang tid en IP skal bannes, i sekunder. 600/60 = 10 min.
maxretry = 3 //Hvor mange mislykket login forsøg inden IP bliver banned.

Den standard “banaction” er “iptables-multiport” som kun lukker for adgangen, til den service angriberen prøver at komme igennem. Jeg plejer at ændre denne variabel til “iptables-allports“, som lukker helt af for angriberen, hvis han først bliver banned. Han kan fx. ikke nå webserveren hvis han først har 3 mislykket login forsøg på SSH.

Hop ned til “[ssh]” og konfigurer den som du vil. Hvis du bruger en anden port end ssh’s standard port (som du burde), så skift “port = ssh” ud med “port = 4523” eller hvad der nu er dit port nummer.

Genstart fail2ban og system kører.
service fail2ban restart

Email notification

Du kan nemt konfigurer Fail2Ban til at sende dig en mail med vedhæftet whois på IP’en. Hvis du vil have mailen leveret på en ekstern mail, skal du installer en SMTP server, fx. Postfix eller Exim. Hvis ikke din internet udbyder har port 25 åben (det har de fleste ikke), kan du konfigurer din server til at bruge Gmail’s smart host. Se evt. her: http://linuxbloggen.dk/category/smtp/

En anden løsning er at få mailen leveret til din system bruger, på din server.

Åben din konfigurations fil.
nano /etc/fail2ban/jail.local

Under “[DEFAULT]” finder du nedenstående linje.
destemail = root@localhostÆndre mail adressen til det ønskede. Hvis du vil benytte din system bruger, ændre du den bare til “brugernavn@localhost“.

Under nedenstående linje, finder du 3 action indstillinger.
# Action shortcuts. To be used to define action parameter

action_ //The simplest action to take: ban only
action_mw //Ban & send an e-mail with whois report to the destemail.
action_mwl //Ban & send an e-mail with whois report and relevant log lines to the destemail.

Ændre variabelen “action” til den overstående ønskede indstilling.
Personligt bruger jeg “action_mw“.
action = %(action_mw)s

Gem og luk filen. Genstart “fail2ban“.
service fail2ban restart

Push notification på mobilen

Du kan, med lidt snilde, få Fail2Ban, til at sende dig en push notifikation til din iOS eller Android enhed, via Pushover API.

Første skridt er lave et “pushover” bash script, som vist i denne guide. Åben Fail2Ban konfigurations filen.
nano /etc/fail2ban/jail.local

Finde linjen med variabelen “banaction” og se hvad værdien af variabelen er. Hvis ikke du har ændret den, skulle den gerne se ud som eksemplet nedenunder.
banaction = iptables-multiport

Dette betyder at filen vi skal have fat i, er iptables-multiport.conf i /etc/fail2ban/action.d/. Hvis du bruger “iptables-allports” er det iptables-allports.conf du skal redigere.
nano /etc/fail2ban/action.d/iptables-multiport.conf

Find variabelen “actionban“. Værdien af den, er kommandoen der bliver executed når en potentiel angriber bliver banned. Tilføj “&&” til linjen og derefter din pushover kommando. Husk at angive den fulde sti til pushover scriptet.
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP && /usr/local/bin/pushoverCURL "Fail2ban" "Failed ssh login attempt from <ip>, access denied and source banned, after <failures> failed attempts."

<ip>” og “<failures>” er variabeler i scriptet og vil bliver erstattet af angriberens IP adresse og hvor mange gang han har forsøgt at logge ind. Gem og luk filen.

Genstart fail2ban og system kører.
service fail2ban restart

Personligt bruger jeg både mail og push notifikationer. Jeg har sat et filter på min mail, der automatisk arkiver mails fra Fail2Ban, så de ikke forstyrre mig. Til gengæld får jeg en denne korte push notifikation og hvis jeg har tid og lyst, kigger jeg på min mail, for at se detaljerne.

Credit til Jonatan Sørensen for Pushover tweak.


29 aug 2013   | Alle · Programmer · Sikkerhed

2 thoughts on “Beskyt din server med Fail2Ban

  1. Reply Brian feb 24,2015 01:00

    Lige en update.
    af en eller anden grund virker fail2ban ikke med apache hvis du ikke opdatere
    apache-auth.conf og apache-common.conf filerne fra github

    https://raw.githubusercontent.com/fail2ban/fail2ban/0.8/config/filter.d/apache-auth.conf
    https://raw.githubusercontent.com/fail2ban/fail2ban/0.8/config/filter.d/apache-common.conf

    ihvertfal ikke hos mig :-)

Leave a Reply