Einschränken von SSH-Anmeldeversuchen mit fail2ban (Abhilfe für Bots, die versuchen, Passwörter über SSH brutal zu erzwingen)

Bild



SSH ist ziemlich sicher, insbesondere wenn Sie angemessene Vorsichtsmaßnahmen treffen, z. B. eine Schlüsselpaar-basierte Authentifizierung. Es gibt jedoch immer noch viele Bots in freier Wildbahn, die versuchen, anfällige Hosts zu finden, indem sie versuchen, sich mit häufig kompromittierten Benutzernamen und Kennwörtern wie root / root oder admin / admin anzumelden. Obwohl es unwahrscheinlich ist, dass sie erfolgreich sind, nutzen sie dennoch Ihre Bandbreite und generieren riesige Mengen an Protokollen.



Eine Möglichkeit, Brute-Force-Anmeldeversuche zu minimieren, besteht darin, den Standardport zu ändern, den SSH überwacht. Dies wird jedoch nicht als bewährte Methode angesehen. Denken Sie zunächst daran, dass bei jeder Verbindung zum Server der richtige Port festgelegt werden sollte, der nicht der Standardport ist. Darüber hinaus kann eine weitere Sicherheitslücke entstehen, wenn der ausgewählte Port größer als 1024 ist. Normalerweise kann nur Root an Portnummern unter 1024 gebunden werden. Wenn jedoch eine höhere Portnummer für SSH verwendet wird, können Benutzer ohne Root-Zugriff unter bestimmten Umständen diese ersetzen der SSH-Daemon mit einem anderen möglicherweise böswilligen Dienst.

Der beste Weg, um dieses Problem zu lösen, ist die Verwendung eines Tools, das einen Angreifer am Zugriff auf den SSH-Server hindert. Ein solches weit verbreitetes Tool ist fail2ban ( www.fail2ban.org ). Durch die Analyse der Protokolle erkennt fail2ban wiederholte fehlgeschlagene Authentifizierungsversuche und legt automatisch Firewall-Regeln fest, um Datenverkehr zu verwerfen, der von der IP-Adresse des Angreifers stammt.



Installieren Sie fail2ban unter Ubuntu



Manuelle Installation Die



Installation von fail2ban unter Ubuntu (und anderen Debian-basierten Distributionen) ist sehr einfach:



$ sudo apt install fail2ban
      
      





Überprüfen der Funktionsweise



Mit dem folgenden Befehl können Sie überprüfen, ob der Dienst ausgeführt wird:



$ sudo systemctl status fail2ban



Die Ausgabe sollte wie folgt aussehen - der Dienststatus sollte aktiv sein:



● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-05-18 12:36:36 ***; ** min ago
       Docs: man:fail2ban(1)
    Process: 723*** ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 723*** (f2b/server)
      Tasks: 5 (limit: 38293)
     Memory: 18.0M
     CGroup: /system.slice/fail2ban.service
             └─723488 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
      
      





Mal sehen, wie fail2ban die iptables-Regeln geändert hat:



$ sudo iptables -L -n -v
      
      





Sie sollten auch sehen, dass es in der iptables-Konfiguration eine neue f2b-sshd-Kette gibt, auf die durch die INPUT-Kettenregel verwiesen wird:



Chain INPUT (policy ACCEPT 73411 packets, 6622K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1019 65297 f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22


Chain f2b-sshd (1 references)
 pkts bytes target     prot opt in     out     source               destination
    8   480 REJECT     all  --  *      *       94.191.93.46         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       77.50.75.162         0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       51.254.143.190       0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       46.101.97.5          0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       43.129.28.88         0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       41.221.168.167       0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       35.247.219.12        0.0.0.0/0            reject-with icmp-port-unreachable
   12   720 REJECT     all  --  *      *       220.180.119.192      0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       218.75.121.75        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       213.87.101.176       0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       192.139.15.34        0.0.0.0/0            reject-with icmp-port-unreachable
   21  1260 REJECT     all  --  *      *       187.104.145.210      0.0.0.0/0            reject-with icmp-port-unreachable
    8   480 REJECT     all  --  *      *       177.191.189.13       0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       159.89.82.134        0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       159.75.140.97        0.0.0.0/0            reject-with icmp-port-unreachable
    8   480 REJECT     all  --  *      *       157.92.13.105        0.0.0.0/0            reject-with icmp-port-unreachable
   11   660 REJECT     all  --  *      *       117.80.225.245       0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       106.53.121.179       0.0.0.0/0            reject-with icmp-port-unreachable
  865 56057 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
      
      







Das fail2ban-Paket enthält ein Tool namens fail2ban-client. Sie können den Status des Dienstes überprüfen und mit ihm interagieren (z. B. können Sie IP-Adressen manuell blockieren und entsperren, Jails aktivieren und deaktivieren usw.).



Lassen Sie uns sehen, welche Jails aktiv sind:



$ sudo fail2ban-client status
      
      





Status
|- Number of jail:	1
`- Jail list:	sshd
      
      







Es gibt nur ein Gefängnis - sshd - welches sq für die Überwachung der SSH-Serverprotokolle auf fehlgeschlagene Anmeldung und die Konfiguration von Firewall-Regeln verantwortlich ist, um weitere Versuche zu blockieren.



Jetzt können wir die Statistiken für das SSHD-Gefängnis überprüfen:



$ sudo fail2ban-client status sshd
      
      





Status for the jail: sshd
|- Filter
|  |- Currently failed:	8
|  |- Total failed:	26
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	22
   |- Total banned:	25
   `- Banned IP list:	106.53.121.179 117.80.225.245 157.92.13.105 159.75.140.97 159.89.82.134 177.191.189.13 187.104.145.210 213.87.101.176 218.75.121.75 220.180.119.192 35.247.219.12 41.221.168.167 43.129.28.88 46.101.97.5 51.254.143.190 77.50.75.162 94.191.93.46 1.55.165.141 120.53.245.68 104.131.178.145 106.56.102.83 152.32.146.21
      
      





Fail2ban konfigurieren



In den meisten Fällen sollte die Standardkonfiguration ausreichend sein. Es ist jedoch hilfreich zu verstehen, wie diese Standardeinstellungen lauten und wie sie an Ihre Anforderungen angepasst werden können.



In einer Standardkonfiguration schützt fail2ban den SSH-Server und blockiert den Angreifer nach 5 fehlgeschlagenen Anmeldeversuchen innerhalb von 10 Minuten für 10 Minuten. Die Standardkonfigurationsdatei finden Sie unter /etc/fail2ban/jail.conf. Die Datei ist gut dokumentiert und meist selbsterklärend. Bitte beachten Sie, dass Sie keine Änderungen an dieser Datei vornehmen sollten, da diese während des Fail2Ban-Updates möglicherweise überschrieben wird.



Vergessen Sie nach dem Ändern der Konfiguration nicht, den Dienst neu zu starten:



$ sudo systemctl restart fail2ban
      
      





Ich sollte beachten, dass ich in diesem Fall die Konfigurationsparameter geändert, die Angriffsstrategie verstanden und eine tägliche Liste der angreifenden Hosts erhalten und diese blockiert habe.



Aber ich werde Ihnen später in einer separaten Notiz davon erzählen, ob diese für jemanden nützlich und interessant ist.



All Articles