Wie können wir die Auswirkungen von SSH-Sonden begrenzen?

13

Mein Webserver wird ständig von verschiedenen IP-Adressen angegriffen. Sie versuchen es mit fünf Passwörtern und ändern dann die IP-Adresse.

Ich habe verschiedene Sperren vorgenommen, wie die Verwendung von SSH-Schlüsseln, das Nichtzulassen von Passwörtern und das Nichtzulassen der Remote-Root-Anmeldung.

Kann ich etwas tun, um diese Angriffsversuche loszuwerden? Wenn dies nicht der Fall ist, sollte ich bestimmte Abwehrmaßnahmen ergreifen?

JW01
quelle
1
Melden für eine Migration zu security.se, wo es ein bisschen thematischer ist
Rory Alsop
1
@Rory Es gibt einen Unterschied zwischen "ein bisschen mehr themenbezogen jemand anderes" und "hier nicht themenbezogen" - es scheint hier ziemlich eindeutig themenbezogen zu sein
Michael Mrozek
Keine Sorge, Michael. Ich hatte einen Ping von Gilles, um es mir anzuschauen, da es hier möglicherweise offtopisch war.
Rory Alsop
@Rory Ok, ich werde ihn danach fragen. Normalerweise kann er mich ziemlich gut davon überzeugen, dass etwas, von dem ich denke, dass es ein Thema ist, tatsächlich ein Thema ist
Michael Mrozek
1
Meine Frage scheint sich bis zur Unkenntlichkeit verändert zu haben. In meiner ursprünglichen Frage habe ich wirklich versucht herauszufinden, ob es für jede Site üblich ist, Brute-Force-Angriffe zu erleiden - das heißt, es ist eine Tatsache des Lebens. Dies wurde von Matteo mit "Es ist in der Tat eine Tatsache des Lebens." Beantwortet. Der zweite Teil der Frage war die Frage, was ich tun kann, um diese Angriffe aktiv zu stoppen, abgesehen von der Verteidigung . Dies wäre eine relevante Nebenfrage gewesen, wenn nur bestimmte Standorte Brute-Force-Angriffen ausgesetzt gewesen wären. Es wurde von Bruce mit seiner Tarpit-Idee beantwortet. Ich habe nicht wirklich um Abwehrtipps gebeten.
JW01,

Antworten:

14

Es ist in der Tat eine Tatsache des Lebens. Sie können Tools installieren, um Hosts herauszufiltern, die Sie nach einigen fehlgeschlagenen Versuchen angreifen.

DenyHosts analysiert Ihre Protokolldateien und fügt Ihrer /etc/hosts.denyDatei automatisch Angreifer hinzu .

Lesen Sie in der Dokumentation nach, wie Sie es für Ihre Anforderungen konfigurieren können.

Update : einige wichtige Punkte in den Kommentaren vorgeschlagen

  • Stellen Sie sicher, dass Sie die Tools ordnungsgemäß als DenyHosts konfigurieren, da Sie sich selbst aussperren könnten (z. B. können Sie einen Computer oder ein Netzwerk konfigurieren, das niemals gefiltert wird).

  • DenyHosts erhöht nicht die Sicherheit Ihres Systems: Es filtert nur Angriffe auf IP-Ebene (es kann die Last auf kleinen Computern verringern und die Größe der Protokolldateien verringern, mehr jedoch nicht).

Matteo
quelle
1
Aaah. Ich fing an zu denken, dass ich etwas Besonderes war. Danke, dass du mich klargestellt hast.
JW01,
Die Ausweitung auf Matteo, wird Ihre Frage fast genau beantwortet refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami
@whoami Danke für den Link, eine nette Zusammenfassung. Obwohl eine Sache, die mir immer in den Sinn kommt, wenn ich sehe, dass ein anderer Port verwendet wird, lautet: Woher weißt du, dass der alternative Port, den du wählst, nicht bereits von etwas anderem verwendet wird? '
JW01
1
Seien Sie vorsichtig mit DenyHosts und ähnlichen Tools, da sie zusätzliche Komplexität verursachen, dh sie können selbst Sicherheitsprobleme verursachen, vgl. der 2. Kommentar zu unix.stackexchange.com/questions/2942/…
maxschlepzig
1
Seien Sie auch vorsichtig mit DenyHosts, da Sie sich möglicherweise von Ihrem Computer fernhalten. Ein einfacher apt-get install denyhostshat mich aus meiner Maschine gesperrt.
Naftuli Kay
15

Ich habe diese Anweisungen befolgt , um jedem SSH-Anmeldeversuch mit falschem Kennwort eine Verzögerung von 7 Sekunden hinzuzufügen. Ich habe meine sshd zu einer "Plane" für die Brute-Force-Scanner gemacht.

Ich sollte auch hinzufügen, dass ich in meinem modifizierten, tarpit sshd die fehlgeschlagenen Passwörter protokolliere. Dies ist möglicherweise nicht ganz ethisch, da der Root-Benutzer einen Blick darauf werfen kann, was normale Benutzer als ihre eigenen Passwörter falsch eingeben. Da ich jedoch der einzige "echte" Benutzer bin, denke ich, dass dies in Ordnung ist.

Ich habe es nicht auf einem Nicht-Standard-Port laufen lassen, da der "Tarpit" -Aspekt nicht die Zeit von irgendjemandem verschwenden würde.

Bruce Ediger
quelle
Verwenden Sie auch einen nicht standardmäßigen Port und verwenden Sie Schlüssel anstelle von Kennwörtern. Dann haben sie fast keine Hoffnung mehr (vorausgesetzt, sie haben nicht die Schlüssel in der Hand, die ohnehin alle mit einem Passwort versehen sein sollten).
Callum Rogers
Dies ist eine nette Antwort, da es eher eine Art "offensiven" Ansatz hat, als nur "defensiven", was meiner Meinung nach zu einer moralischen Verbesserung beiträgt.
JW01,
9

Wenn nur eine geringe Anzahl von Personen eine SSH-Verbindung zum System benötigt, sollten Sie in Betracht ziehen, SSH auf einen nicht standardmäßigen Port (z. B. 6422, 8080 usw.) zu verschieben. Dies allein reduziert die Anzahl der Anmeldeversuche erheblich (und schützt Sie möglicherweise vor ungepatchten Ports) Beispiel: SSH-Exploit-basierter Wurm.

Keil
quelle
3
+1 Eher nützlich, da dies die Belästigung einschränkt. Verwechseln Sie dies jedoch nicht mit einer Sicherheitsmaßnahme - dies entspricht eher einer Fliegenschutztür als einem Sicherheitsschloss.
Piskvor hat das Gebäude
1
+1 Dies spart auch Serverressourcen.
Xeoncross
6

Stimmen Sie der Antwort von @ Matteo zu; Was Sie sehen, sind im Wesentlichen Tausende von Zombie-Systemen, die einen verteilten Brute-Force-Angriff auf Ihren Server ausführen, weil eine Website darauf ausgeführt wird. Dies bedeutet, dass es möglicherweise Benutzer gibt, die möglicherweise ein Anmeldekonto haben, mit dem erraten werden kann Minimaler Aufwand seitens des Drehbuchkindes - er hat ein Programm, das den Tausenden von Zombies befiehlt, die Bruteforce-Versuche auf mehreren hundert Website-Hosts gleichzeitig durchzuführen und einfach eine Liste der erfolgreichen Renditen zusammenzustellen.

In ähnlicher Weise sehen Sie manchmal viele Permuationen von "http://your.web.host/phpmyadmin/" in Ihren /var/log/apache2/access.logDateien. Hierbei handelt es sich um automatisierte Scans für die gängigsten Methoden zum Einrichten von PHPMyAdmin, und es werden eine Reihe bekannter Exploits versucht, falls einer gefunden wird Bleiben Sie auf dem neuesten Stand, anstatt ihre eigene Version zu installieren und zu vergessen, sie auf dem neuesten Stand zu halten.

Abgesehen davon, dass er den ursprünglichen Befehl gesendet hat, kostet ihn das weder Zeit noch Bandbreite. Es ist Feuer und vergessen.

Eine weitere sehr nützliche Software für Situationen wie diese ist fail2ban , die iptables verwendet, um Verbindungsversuche nach mehreren eindeutig falschen Anmeldeversuchen oder anderen Exploitversuchen zu blockieren.

Shadur
quelle
4

Versuchen Sie Fail2ban zu konfigurieren . Es bietet eine sehr flexible Möglichkeit, nach fehlgeschlagenen Versuchen zu suchen, und verfügt über Vorlagen für SSH, HTTP und allgemeine Dienste.

Fail2ban aktualisiert iptables entsprechend Ihren Aktionen. Ich liebe es.

Nick
quelle
3

Mit IPTABLES können Sie den Datenverkehr stoppen, ohne einen Daemon wie Fail2Ban oder DenyHosts auszuführen.

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
Xeoncross
quelle
2

Wenn Sie es schaffen, finde ich den besten Weg, mit solchen Dingen umzugehen, indem Sie ein VPN verwenden. Auf diese Weise können sie nur das VPN als Ziel festlegen. Es sollte keine Dienste geben, die für die ganze Welt offen sind, mit Ausnahme derjenigen, auf die "jeder" zugreifen muss, wie z. B. Ihr Webserver. Alles andere sollte von der Firewall blockiert werden. Jetzt müssen Sie sich nur noch um die Sicherung Ihres VPNs kümmern. Wenn Sie können, holen Sie sich eine statische IP-Adresse für die Computer, von denen aus Sie Ihre Server verwalten, und sperren Sie Ihr VPN auf diese bestimmte IP-Adresse. Dies ist wirklich die einzige Möglichkeit, die Leute davon abzuhalten, die Passwörter brachial zu erzwingen.

Kibbee
quelle
0

Sshguard funktioniert großartig. Ich benutze es zusammen mit Iptables.

Alexander
quelle