====== Ασφάλεια - Fail2Ban====== ===== mail ===== ==== fail2ban ==== === Δοκιμές === Για την δοκιμή των παρακάτω φίλτρων χρησιμοποιούμε το 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 === dovecot pop/imap === Στο αρχείο /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\S*),.* (?: pop3-login: Aborted login).*rip=(?P\S*),.* (?: pop3-login: Disconnected).*rip=(?P\S*),.* ignoreregex = και /etc/fail2ban/filter.d/dovecot-imap.conf [Definition] failregex = (?: imap-login: Authentication failure).*rip=(?P\S*),.* # (?: imap-login: Aborted login).*rip=(?P\S*),.* # (?: imap-login: Disconnected).*rip=(?P\S*),.* ignoreregex = === courier pop === Δημιουργούμε το αρχείο /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 === sasl === Τροποποιούμε το αρχείο /etc/fail2ban/filter.d/sasl.conf δηλώνοντας την παρακάτω regexpr failregex = : warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: authentication failure$ : warning: [[]::ffff:(?P\S*)[]]: SASL CRAM-MD5 authentication failed: authentication failure$ : warning: [[]::ffff:(?P\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 π.χ [[el:linux:debian:server: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 Θα πρέπει να βρούμε κανόνες που δεν συγκρούονται (FIXME limit-port bandwidth to work with fail2ban) ===== passwords ===== Μέσω perl μπορούμε να επιβάλλουμε δυνατά passwords. Π.χ. η παρακάτω regexpr επιβάλλει * 8 χαρακτήρες το λιγότερο * που να περιέχουν οπωσδήποτε αριθμούς, κεφαλαία ή πεζά γράμματα και σύμβολα ^.*(?=.{8,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[\`\~\!\*\(\)@#$%^&\-\_\{\[\}\]\:\;\"\'\<\,\>\.\?\/\\+=]).*$ Η παρακάτω επιβάλλει * 8 χαρακτήρες το λιγότερο * που να περιέχουν οπωσδήποτε αριθμούς, κεφαλαία και πεζά γράμματα ^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ ====== Πηγές ====== * Γενικά * http://www.cyberciti.biz/tips/linux-security.html * fail2ban : * wiki : * http://www.fail2ban.org/wiki/index.php/Main_Page * tutorials: * http://www.howtoforge.com/fail2ban_debian_etch * http://www.ducea.com/2006/07/03/using-fail2ban-to-block-brute-force-attacks/ * postfix : * http://www.cs278.org/blog/2006/07/20/fail2ban-rule-for-postfix/ * dovecot * http://www.dovecot.org/list/dovecot/2009-May/039447.html * apache (for abusive bots) * https://gauss-development.com/fail2ban/ * DNS DOS attacks : http://www.debian-administration.org/articles/623 * password regexpr : * http://davidhayden.com/blog/dave/archive/2004/09/25/501.aspx * http://www.virtuosimedia.com/tutorials/37-tested-php-perl-and-javascript-regular-expressions * grep, sed : http://www.linuxquestions.org/questions/linux-newbie-8/bash-checking-if-a-variable-is-a-number-need-regular-expression-help-714903/ * bash : http://www.daniweb.com/forums/thread25707.html * Smtpd error policy * http://www.cyberciti.biz/faq/postfix-limit-incoming-or-receiving-email-rate/ * pam * http://www.puschitz.com/SecuringLinux.shtml