Eine sehr hartnäckige Person versucht seit einigen Tagen kontinuierlich, (unbefugten) Zugriff auf mein System zu erhalten ... Es gibt zig Einträge, wie zum Beispiel /var/log/auth.log
:
Jun 21 03:55:15 cloudy sshd[32487]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20 user=root
Jun 21 03:55:16 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:19 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Received disconnect from 116.31.116.20: 11: [preauth]
Jun 21 03:55:21 cloudy sshd[32487]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20 user=root
Ich möchte um Rat bitten, wie ich diese Person daran hindern kann, Ressourcen des Computers zu verbrauchen. Gibt es eine Möglichkeit, die IP „hart zu blockieren“, sodass sie überhaupt keine SSH-Verbindung herstellen kann? Bitte beachten Sie, dass ich Debian 8 als Betriebssystem verwende.
Antwort1
Hinzufügen sshd: 116.31.116.20
zu/etc/hosts.deny
Antwort2
Sie können auchiptables
Erstellen Sie eine Datei mit den IP-Adressen, die Sie blockieren möchtenblocked.ips.txt
Erstellen und führen Sie nun ein Skript mit dem folgenden Inhalt aus:
blocked=$(egrep -v -E "^#|^$" ./blocked.ips.txt)
for ip in $blocked
do
iptables -I INPUT -s $ip -p tcp --dport ssh -j DROP
done
Beim Ausführen iptables -L
sollte eine Ausgabe der verworfenen Pakete erfolgen
Antwort3
Der iptables-Ansatz ist der direkteste Weg. Erik Handriks hat ihn als Skript vorgeschlagen.
Zwei Abers: – Das Skript müsste nach jedem Neustart gestartet werden (sofern die Tabellen nicht intern mit iptables gesichert werden). – Wenn das Skript zweimal oder öfter aufgerufen wird, werden die Einträge dupliziert.
Versuchen Sie einfach, den Bösewicht mit Folgendem zu erwischen:
iptables -I INPUT -s BAD_IP -p tcp --dport ssh -j DROP
In den meisten Distributionen verfügt iptables über einen eigenen Mechanismus zum Speichern und Wiederherstellen von Regeln. Überprüfen Sie, ob „/var/lib/iptables/rules-save“ vorhanden ist. Bei Ihrer Distribution könnte es woanders liegen (hier: Gentoo).
Nachdem Sie jede einzelne FEHLERHAFTE IP hinzugefügt haben, versuchen Sie:
iptables-speichern > /var/lib/iptables/regeln-speichern
Überprüfen Sie nach dem Neustart mit „iptables -L“, was da draußen ist …
Antwort4
Auf meinem Server (Ubuntu 16.04) verwende ich UFW (UncomplicatedFireWall), eine Vereinfachungsschicht über iptables, die auf Ubuntu-Servern so ziemlich zum Standard zu gehören scheint (aber auch für andere Distributionen verfügbar sein sollte). Für diese Fälle verwende ich:
ufw insert 1 deny from nnn.nnn.nnn.nnn
Mit UFW können Sie auch die Anzahl der Verbindungen begrenzen
ufw limit ssh/tcp
Beachten Sie, dass dies auch für erfolgreiche Verbindungen gilt. Wenn Sie also Skripte verwenden, die mehrere SSH-Befehle verwenden, müssen Sie diese Beschränkung für Ihre IP deaktivieren, indem Sie Folgendes eingeben:
ufw insert 1 allow in from nnn.nnn.nnn.nnn