Home > Open Source, Systemverwaltung > Hacker aussperren mit fail2ban

Hacker aussperren mit fail2ban

Seid einigen Tagen wird unser Server im Sekundentakt mit Verbindungsanforderungen von permanent wechselnden IP-Adressen traktiert. Botnet at work, würde ich mal sagen. Sieht dann im Log so aus:

Oct  8 20:04:14 h2145820 postfix/smtpd[20627]: lost connection after UNKNOWN from unknown[197.148.232.61]
Oct  8 20:04:14 h2145820 postfix/smtpd[20627]: disconnect from unknown[197.148.232.61]
Oct  8 20:04:14 h2145820 postfix/smtpd[21223]: connect from rrcs-24-106-99-253.central.biz.rr.com[24.106.99.253]
Oct  8 20:04:16 h2145820 postfix/smtpd[20569]: warning: hostname customer-187-141-162-172-sta.uninet-ide.com.mx does not resolve to address 187.141.162.172: No address associated with hostname
Oct  8 20:04:16 h2145820 postfix/smtpd[20569]: connect from unknown[187.141.162.172]
root@h2145820:# tail /var/log/syslog
Oct  8 20:04:14 h2145820 postfix/smtpd[20627]: lost connection after UNKNOWN from unknown[197.148.232.61]
Oct  8 20:04:14 h2145820 postfix/smtpd[20627]: disconnect from unknown[197.148.232.61]
Oct  8 20:04:14 h2145820 postfix/smtpd[21223]: connect from rrcs-24-106-99-253.central.biz.rr.com[24.106.99.253]
Oct  8 20:04:16 h2145820 postfix/smtpd[20569]: warning: hostname customer-187-141-162-172-sta.uninet-ide.com.mx does not resolve to address 187.141.162.172: No address associated with hostname
Oct  8 20:04:16 h2145820 postfix/smtpd[20569]: connect from unknown[187.141.162.172]
Oct  8 20:04:17 h2145820 postfix/smtpd[21354]: connect from 85-250-130-223.bb.netvision.net.il[85.250.130.223]
Oct  8 20:04:18 h2145820 postfix/smtpd[20582]: connect from 89-96-53-186.ip10.fastwebnet.it[89.96.53.186]
Oct  8 20:04:18 h2145820 postfix/smtpd[21357]: lost connection after UNKNOWN from unknown[202.126.212.192]
Oct  8 20:04:18 h2145820 postfix/smtpd[21357]: disconnect from unknown[202.126.212.192]
Oct  8 20:04:19 h2145820 postfix/smtpd[21352]: connect from 70-90-111-49-nh.hfc.comcastbusiness.net[70.90.111.49]


Nett, nicht wahr ?  Was tut man dann nun ? Es gibt ja auch noch einige andere Angriffspunkte, wie ssh, den Webserver etc.

Die wichtigsten Massnahmen sind natürlich

  1. ein aktuelles System : Update, Update, Update …
  2. sichere Passwörter

Darüber hinaus gibt es u.a. noch ein leicht einsetzbares Tool, mit dem dynamisch solche Einbruchsversuche erkannt werden und die IP-Adressen des Angreifers dann für einen festzulegenden Zeitraum gesperrt werden können.

fail2ban

Wie arbeitet nun fail2ban ?

Eigentlich reichlich simpel. Alle Angriffe werden in den Server-Logs (meist unter /var/log) mitprotokolliert. Alle sog. Brut Force-Attacken, bei denen ein Script versucht Passwörter zu erraten, in dem es Wörterbücher benutzt, führen zu entsprechenden Meldungen im Log. fail2ban tut nun nichts anderes als permanent die Logs zu überwachen und solche Zeilen zu entdecken. Wird nun 3x ein solcher Versuch von einer IP-Adresse entdeckt, wird die IP-Adresse automatisch für eine festzulegende Zeit gesperrt.

Installation

Für die meisten Betriebssysteme gibt es fertige installierbare Pakete, die äüber den normalen Update-Mechanismus installiert und aktuell gehalten werden können.

Bei Ubuntu z.B. : # apt-get install fail2ban

Konfiguration

Ich möchte hier nur kurz den Einstieg erleichtern. Die komplette Doku ist hier zu finden : http://www.fail2ban.org/wiki/index.php/MANUAL_0_8

fail2ban läuft als Daemon, der automatisch bei Systemstart angeworfen wird. Die Konfiguration wird über einige Konfigurationsfiles in /etc/fail2ban durchgeführt.

fail2ban kommt dabei mit einer ganzen Reihe von funktionierenden Funktionsblöcken zur Abwehr der häufigsten Angriffe, die man lediglich einschalten muss. Dies geschieht über die Datei  /etc/fail2ban/jail.conf
Hier ein Beispiel eines solchen Abwehrblocks :

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Hier wird die IP nach 6 Fehl-Versuchen sich per ssh anzumelden gesperrt.

Die eigentliche Regel um einen solchen Login-Versuch zu erkennen findet man über den Filter, hier „sshd“.  Damit wird eine weitere Konfigurationsdatei unter /etc/fail2ban/filter.d referenziert, die konsequenterweise  sshd.conf heisst:

# 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 = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from <HOST>s*$
^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>s*$
^%(__prefix_line)sFailed (?:password|publickey) for .* from <HOST>(?: port d*)?(?: sshd*)?$
^%(__prefix_line)sROOT LOGIN REFUSED.* FROM <HOST>s*$
^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers$
^%(__prefix_line)sauthentication failure; logname=S* uid=S* euid=S* tty=S* ruser=S* rhost=<HOST>(?:s+user=.*)?s*$
^%(__prefix_line)srefused connect from S+ (<HOST>)s*$
^%(__prefix_line)sAddress <HOST> .* POSSIBLE BREAK-IN ATTEMPT!*s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because none of user’s groups are listed in AllowGroupss*$

Hübsch nicht wahr 🙂 ? Aber keine Angst : Es gibt bereits für viele Fälle fertige Regeln, die man nur einbauen muss.  Und jail2ban bringt die wichtigsten ja auch bereits mit.

Gut, das soll als Einstieg in dieses wichtige Abwehrwerkzeug gegen Hackerangriffe genügen. Viel Spass bei der Abwehr.

Es ist jedenfalls gutes Gefühl, wenn man mal nachsieht und dann solche Erfolgsmldungen sieht:

root@h2145820:/etc/fail2ban# fail2ban-client status postfix-toome
Status for the jail: postfix-toome
|- filter
|  |- File list:        /var/log/mail.log
|  |- Currently failed: 16
|  `- Total failed:     159522
`- action
|- Currently banned: 5673

„postfix-toome“ ist ein selbst geschriebener Filter, der diese eingangs erwähnten Botnetz-Angriffe abblockt.

KategorienOpen Source, Systemverwaltung Tags:
  1. Bernd
    21. Januar 2014, 13:57 | #1

    Hi
    Gibt es dieses Filter postfix-toom irgendwo zum anschauen?

    • 21. Januar 2014, 14:23 | #2

      Ist höchst simpel:

      # Fail2Ban configuration file
      #
      # $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 „“ can
      # be used for standard IP/hostname matching and is only an alias for
      # (?:::f{4,6}:)?(?P
      [w-.^_]+)
      # Values: TEXT
      #
      failregex = too many errors after UNKNOWN from unknown[
      ]
      does not resolve to address
      : No address associated with hostname

      # Option: ignoreregex
      # Notes.: regex to ignore. If this regex matches, the line is ignored.
      # Values: TEXT
      #
      ignoreregex =

  2. 26. Juli 2014, 19:29 | #3

    fail2ban ist ja jetzt nicht gerade neu…gut natürlich, aber nicht neu :-). Aber schöne Anleitung.

    Wenn ich mir deine Attacken so anschaue, würde ich dir trotzdem empfehlen, die IPs einfach zu sperren. Sobald eine Anfrage kommt, direkt ein dev > 0 und ab dafür.

  1. Bisher keine Trackbacks