Wie kann ich (SSH-)Verkehr von anderen als den vordefinierten Quellports blockieren?

Wie kann ich (SSH-)Verkehr von anderen als den vordefinierten Quellports blockieren?

Ein VPS wird häufig Opfer von SSH-Angriffen. Diese Angriffe sind vielfältigQuelleHäfen:

sshd[76661]: Invalid user ts3server from 76.103.161.19 port 33062
sshd[76661]: Received disconnect from 76.103.161.19 port 33062:11: Bye Bye [preauth]
sshd[76661]: Disconnected from invalid user ts3server 76.103.161.19 port 33062 [preauth]
sshguard[61313]: Attack from "76.103.161.19" on service SSH with danger 10.
sshguard[61313]: Blocking "76.103.161.19/24" for 86400 secs (1 attacks in 0 secs, after 1 abuses over 0 secs.)
sshd[76821]: Invalid user tibaldi from 140.143.206.216 port 33936
sshd[76821]: Received disconnect from 140.143.206.216 port 33936:11: Bye Bye [preauth]
sshd[76821]: Disconnected from invalid user tibaldi 140.143.206.216 port 33936 [preauth]
sshguard[61313]: Attack from "140.143.206.216" on service SSH with danger 10.
sshguard[61313]: Blocking "140.143.206.216/24" for 86400 secs (1 attacks in 0 secs, after 1 abuses over 0 secs.)

Wie Sie sehen, verwende ich derzeit einen reaktiven Ansatz (sshguard), um diese Angriffe aggressiv zu blockieren und einzuschränken. (Außerdem sind keine SSH-Anmeldungen mit Passwort zulässig.) Es gibt jedoch immer noch zu viele, sodass meine Protokolle überflutet werden. Aus den Protokollen geht klar hervor, dass alle diese Angriffe von zufällig ausgewählten Ports mit hohen Nummern kommen. Ich möchte den gesamten Datenverkehr auf Firewall-Ebene blockieren, damit er meine Protokolle nicht verschmutzt.

Ich steuere den Client und kann auswählen/definieren, welche(n) Quellport(s) er verwendet.

Daher,Wie kann ich (SSH-)Verkehr von anderen Quellports als einem vordefinierten (oder Bereich) blockieren??

Ich verwende Firewalld als meine Firewall-Verwaltungssoftware. Daher wäre es besonders hilfreich, wenn Sie eine Firewalld-basierte Lösung bereitstellen könnten. Andere Lösungen sind jedoch ebenfalls willkommen.

Antwort1

WährendZielDer Port einer SSH-Verbindung ist normalerweise 22, derQuellePort hat (fast) keine Regeln. Das bedeutet, dass eine Verbindung von 140.143.206.216 port 33936an sich nicht verdächtig ist.

Da ich dieses Problem kenne (der Peak lag bei über einer Million Angriffen pro Sekunde auf einem 10G-Server), empfehle ich Ihnen die Verwendung fail2ban– das funktioniert wirklich.

BEARBEITEN

Nach der Diskussion verstehe ich, dass Sie den Client kontrollieren. In diesem Fall können Sie einfach etwas in der Art von

iptables -A INPUT -m tcp -p tcp --dport 22 '!' --sport 1000 -j DROP 

(für Remote-Port 1000) wird den Zweck erfüllen

verwandte Informationen