![fail2ban erkennt Brute-Force-Angriff auf SMTP-Passwort nicht](https://rvso.com/image/1554872/fail2ban%20erkennt%20Brute-Force-Angriff%20auf%20SMTP-Passwort%20nicht.png)
Spammer führen Brute-Force-Angriffe auf meinen Server (Postfix unter Debian) durch, bei denen Passwörter erraten werden. Sie haben bereits die Passwörter von zwei Benutzern erraten und begonnen, Spam über meinen Server zu versenden. Die Passwörter wurden geändert und die Angriffe (vorerst) abgeschwächt, aber ich möchte sie vollständig blockieren.
Ich habe fail2ban installiert, aber aus irgendeinem Grund erkennt es die Angriffe nicht.
/etc/fail2ban/fail.conf
enthält:
[sasl]
enabled = true
port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = sasl
# You might consider monitoring /var/log/mail.warn instead if you are
# running postfix since it would provide the same log lines at the
# "warn" level but overall at the smaller filesize.
#logpath = /var/log/mail.log
logpath = /var/log/mail.warn
/etc/fail2ban/filter.d/sasl.conf
enthält:
# Fail2Ban configuration file
#
# Author: Yaroslav Halchenko
#
# $Revision$
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Wenn ich den Filter ausführe /var/log/mail.warn
, werden die folgenden Ergebnisse erzeugt:
# fail2ban-regex /var/log/mail.warn '(?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$'
Running tests
=============
Use regex line : (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|P...
Use log file : /var/log/mail.warn
Results
=======
Failregex
|- Regular expressions:
| [1] (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
|
`- Number of matches:
[1] 15293 match(es)
Ignoreregex
|- Regular expressions:
|
`- Number of matches:
Summary
=======
Addresses found:
[1]
123.169.7.222 (Sun Feb 25 06:40:18 2018)
123.169.7.222 (Sun Feb 25 06:40:21 2018)
...
185.173.176.157 (Fri Mar 02 10:12:46 2018)
185.173.176.157 (Fri Mar 02 10:13:15 2018)
185.173.176.157 (Fri Mar 02 10:13:43 2018)
185.173.176.157 (Fri Mar 02 10:14:11 2018)
185.173.176.157 (Fri Mar 02 10:14:41 2018)
185.173.176.157 (Fri Mar 02 10:15:13 2018)
185.173.176.157 (Fri Mar 02 10:15:42 2018)
185.173.176.157 (Fri Mar 02 10:16:13 2018)
185.173.176.157 (Fri Mar 02 10:16:42 2018)
185.173.176.157 (Fri Mar 02 10:17:10 2018)
Date template hits:
34294 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Year.Month.Day Hour:Minute:Second
0 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): <Month/Day/Year@Hour:Minute:Second>
Success, the total number of match is 15293
However, look at the above section 'Running tests' which could contain important
information.
Trotz alledem /var/log/fail2ban.log
wird keine Blockierung der betreffenden IP-Adresse angezeigt.
Aktualisieren
Ich habe den Vorschlägen gefolgt und die Protokollebene erhöht. Dies zeigt:
2018-03-02 12:47:55,920 fail2ban.filter : DEBUG Processing line with time:1519986602.0 and ip:185.173.176.157
2018-03-02 12:47:55,920 fail2ban.filter : DEBUG Ignore line since time 1519986602.0 < 1519987675.92 - 600
2018-03-02 12:47:55,920 fail2ban.filter : DEBUG Processing line with time:1519986635.0 and ip:185.173.176.157
2018-03-02 12:47:55,920 fail2ban.filter : DEBUG Ignore line since time 1519986635.0 < 1519987675.92 - 600
Die jail.conf enthält:
bantime = 600
maxretry = 3
Antwort1
Aus dem Ignore line since time 1519986602.0 < 1519987675.92 - 600
Logbuch unddie Dokumente, ich vermute, das 600
ist der Wert der findtime
Option. Das heißt, Crack-Versuche von einer bestimmten IP scheinen in Schritten zu erfolgen, die größer sind als findtime
, und werden daher von ignoriert fail2ban
.
1519987675.92-1519986602.0
beträgt 1073.92
oder circa 18 Minuten.
Eine todsichere Lösung wäre die zwingende Verwendung von TLS auf der Internet-Schnittstelle sowie die zwingende Überprüfung, dass die von den Clients vorgelegten Zertifikate von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurden.