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.