Για την δοκιμή των παρακάτω φίλτρων χρησιμοποιούμε το fail2ban-regex
Για να ελέγξουμε το αρχείο /var/log/mail.log για εκφράσεις που ταυτίζονται με το φιλτρο /etc/fail2ban/filter.d/dovecot-pop3.conf εκτελούμε
fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/dovecot-pop3.conf
Μπορούμε να αλλάξουμε κάποιες γενικές ρυθμίσεις γιατί οι επιθέσεις χρησιμοποιούν πολύ τα defaults από το fail2ban π.χ. μέχρι 3 sasl authentication failures ανα 10 λεπτά ώστε να μην γίνουν banned. Για να το πάμε ανά 30 λεπτά σε όλες τις υπηρεσίες στο αρχείο jail.local μπορούμε να προσθέσουμε κάτω από το [DEFAULT] (ή μέσα σε συγκεκριμένη υπηρεσία)
findtime = 1800
Στο αρχείο /etc/fail2ban/jail.local εισάγουμε
[dovecot-pop3] enabled = true filter = dovecot-pop3 action = iptables[name=POP3, port=pop3, protocol=tcp] logpath = /var/log/mail.log maxretry = 5 bantime = 86400 # [dovecot-imap] enabled = true filter = dovecot-imap action = iptables[name=IMAP, port=imap, protocol=tcp] logpath = /var/log/mail.log maxretry = 5 bantime = 86400
Δημιουργούμε στην συνέχεια τα αρχεία
/etc/fail2ban/filter.d/dovecot-pop3.conf
[Definition] # failregex = (?: pop3-login: Authentication failure).*rip=(?P<host>\S*),.* (?: pop3-login: Aborted login).*rip=(?P<host>\S*),.* (?: pop3-login: Disconnected).*rip=(?P<host>\S*),.* ignoreregex =
και /etc/fail2ban/filter.d/dovecot-imap.conf
[Definition] failregex = (?: imap-login: Authentication failure).*rip=(?P<host>\S*),.* # (?: imap-login: Aborted login).*rip=(?P<host>\S*),.* # (?: imap-login: Disconnected).*rip=(?P<host>\S*),.* ignoreregex =
Δημιουργούμε το αρχείο /etc/fail2ban/jail.local και επικολλούμε κομμάτια κώδικα από το αρχείο fail2ban.conf. Με π.χ filter=courierlogin λαμβάνει ρυθμίσεις από το αρχείο filter.d/courierlogin και έτσι μπορούμε να μην χρησιμοποιήσουμε δικό μας failregex, αλλά το προκαθορισμένο.
Οι παρακάτω ρυθμίσεις αποτρέπουν συνεχόμενες προσπάθειες σύνδεσης με τυχαία username και κωδικούς σε pop (courierpop3 filter) καθώς και σε smtp (Relay access denied) (postfix filter)
[courierpop3] # enabled = true port = pop3 filter = courierlogin logpath = /var/log/mail.log maxretry = 10 bantime = 86400 # [postfix] # enabled = true port = smtp filter = postfix logpath = /var/log/mail.log maxretry = 10 bantime = 86400
Τροποποιούμε το αρχείο /etc/fail2ban/filter.d/sasl.conf δηλώνοντας την παρακάτω regexpr
failregex = : warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: authentication failure$ : warning: [[]::ffff:(?P<host>\S*)[]]: SASL CRAM-MD5 authentication failed: authentication failure$ : warning: [[]::ffff:(?P<host>\S*)[]]: SASL CRAM-MD5 authentication failed: authentication failure
Ενεργοποιούμε το φίλτρο στο αρχείο /etc/fail2ban/jail.local
[sasl] enabled = true port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s filter = sasl logpath = /var/log/mail.log maxretry = 10 findtime = 3600 bantime = 86400
Σε περίπτωση που έχουμε ρυθμισμένους και άλλους κανόνες στα iptables π.χ limit_port_bandwidth πιθανόν να δούμε τα ακόλουθα στα logs του fail2ban
2012-02-01 19:52:32,229 fail2ban.jail : INFO Jail 'dovecot-imap' started 2012-02-01 19:52:32,296 fail2ban.actions.action: ERROR iptables -N fail2ban-postfix iptables -A fail2ban-postfix -j RETURN iptables -I INPUT -p tcp -m multiport --dports smtp -j fail2ban-postfix returned 200 2012-02-01 19:52:32,299 fail2ban.actions.action: ERROR iptables -N fail2ban-POP3 iptables -A fail2ban-POP3 -j RETURN iptables -I INPUT -p tcp --dport pop3 -j fail2ban-POP3 returned 400 2012-02-01 20:13:47,712 fail2ban.jail : INFO Jail 'dovecot-imap' stopped
Θα πρέπει να βρούμε κανόνες που δεν συγκρούονται ( limit-port bandwidth to work with fail2ban)
Μέσω perl μπορούμε να επιβάλλουμε δυνατά passwords. Π.χ. η παρακάτω regexpr επιβάλλει
^.*(?=.{8,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[\`\~\!\*\(\)@#$%^&\-\_\{\[\}\]\:\;\"\'\<\,\>\.\?\/\\+=]).*$
Η παρακάτω επιβάλλει
^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$