fail2ban macht den Server sicherer – speziell ssh und auch dovecot auf DEBIAN STRETCH

Fail2ban dient dazu, ständige Einlogversuche von fremden Rechnern auf den ssh-port zu unterbinden. Auch andere Ports können damit überwacht werden.

Nachdem sogar Fremdlogins auf den imap-port für existierende User auftauchten, stieg die empfundene Handlungsnotwendigkeit.

Beispiel: (Auszug aus /var/log/auth.log)

1
2
3
4
5
6
7
8
9
10
Dec 8 07:31:25 myserver sshd[9656]: Invalid user si from 113.120.16.165 port 51268
Dec 8 07:31:25 myserver sshd[9654]: Invalid user si from 113.120.16.165 port 51264
Dec 8 07:31:25 myserver sshd[9656]: input_userauth_request: invalid user si [preauth]
Dec 8 07:31:25 myserver sshd[9654]: input_userauth_request: invalid user si [preauth]
Dec 8 07:31:26 myserver sshd[9656]: pam_unix(sshd:auth): check pass; user unknown
Dec 8 07:31:26 myserver sshd[9656]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.120.16.165
Dec 8 07:31:26 myserver sshd[9654]: pam_unix(sshd:auth): check pass; user unknown
Dec 8 07:31:26 myserver sshd[9654]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.120.16.165
Dec 8 07:31:28 myserver sshd[9656]: Failed password for invalid user si from 113.120.16.165 port 51268 ssh2
Dec 8 07:31:28 myserver sshd[9654]: Failed password for invalid user si from 113.120.16.165 port 51264 ssh2

IP 113.120.16.165 startet einen Angriff und versucht sich über ssh einzuloggen.
Das bewirkt folgendes:

fail2ban log:

1
2
3
4
5
2017-12-08 07:31:25,911 fail2ban.filter [14863]: INFO [sshd] Found 113.120.16.165
2017-12-08 07:31:25,912 fail2ban.filter [14863]: INFO [sshd] Found 113.120.16.165
2017-12-08 07:31:26,285 fail2ban.filter [14863]: INFO [sshd] Found 113.120.16.165
2017-12-08 07:31:26,288 fail2ban.filter [14863]: INFO [sshd] Found 113.120.16.165
2017-12-08 07:31:26,828 fail2ban.actions [14863]: NOTICE [sshd] Ban 113.120.16.165

Die IP wird in der Firewall eingetragen und gebannt. Man kontrolliert das etwa mit:

tail -40 /var/log/fail2ban.log

 

Weiter kann man es in der Firewall kontrollieren: Ein „iptables-save“ liefert unter anderem:

-A f2b-sshd -s 113.120.16.165/32 -j REJECT –reject-with icmp-port-unreachable

 

Zu konfigurieren ist unter anderem in der jail.conf

  • findtime = 600 (Zeitfenster für den Zähler Fehlversuche pro IP)
  • maxRetry = 3 (Der Ban erfolgt nach 3 Fehlversuchen)
  • banTime = 3600 (Die IP ist für eine Stunde gebannt)

Der Teil für den sshd war trivial. Problematischer war der Part für den dovecot.

Es fiel auf, dass auf Versuche fremder IPs sich als Mailuser einzuloggen, nichts bewirkten.
Kurzer Check der Sachlage ergab, DEBIAN 9 trägt die Loginversuche aus IMAP (dovecot) in der auth.log ein:

Dec 8 07:07:31 myserver:auth: pam_unix(dovecot:auth): check pass; user unknown
Dec 8 07:07:31 myserver auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=sfsb rhost=130.204.239.232

fail2ban ist aber auf die mail.warn konfiguriert.

Am schnellsten korrigiert man das durch Überschreiben der entsprechenden Konfiguration in der Konfig (jail.local)

# dovecot defaults to logging to the mail syslog facility
# but can be set by syslog_facility in the dovecot configuration.
[dovecot]
# enabled = true
port = pop3,pop3s,imap,imaps,submission,465,993,sieve
#logpath = %(dovecot_log)s
logpath = /var/log/auth.log
backend = %(dovecot_backend)s

Mit dem harten Überschreiben des logpath in der Section für dovecot ist das Problem gelöst:

2017-12-08 10:34:08,015 fail2ban.filter [28202]: INFO [dovecot] Found 218.23.49.154

 


Etwas allgemeiner Ansatz wäre, in der paths-common.conf (in /etc/fail2ban/) folgendes zu überschreiben.

dovecot_log = %(syslog_mail_warn)s

Seiteneffekte sind jedoch unklar, man findet da folgendes vor:

# There is no sensible generic defaults for syslog log targets, thus
# leaving them empty here so that no errors while parsing/interpolating configs
syslog_mail_warn =
syslog_daemon =
syslog_ftp =
syslog_local0 =

Damit würde wohl:
dovecot_log = /var/log/auth.log
auch das Problem lösen.

Weitere Informationen über die Konfigurationsmöglichkeiten von fail2ban-server erhält man mit „man fail2ban-client“.