PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH Dictionary Angriffe abwehren



~Gh05t~
20.10.08, 12:33
Hallo,
ich sitze öffter mal an unserem Server um irgendwas zu konfigurieren. Hin und wieder finde ich beim durchschauen der Logs sowas:
tail -f /var/log/messages

...
Oct 20 13:18:14 hyperion sshd[15679]: Invalid user admin from 198.247.175.168
Oct 20 13:18:15 hyperion sshd[15681]: Invalid user aramirez from 198.247.175.168
Oct 20 13:18:17 hyperion sshd[15683]: Invalid user asanchez from 198.247.175.168
Oct 20 13:18:18 hyperion sshd[15685]: Invalid user cacuna from 198.247.175.168
Oct 20 13:18:19 hyperion sshd[15687]: Invalid user cfernandez from 198.247.175.168
Oct 20 13:18:20 hyperion sshd[15689]: Invalid user contraloria from 198.247.175.168
Oct 20 13:18:21 hyperion sshd[15691]: Invalid user dba from 198.247.175.168
...

Kann ich irgendwas machen um das zu unterbinden? SSH sollte schon erreichbar sein, aber nach spätestens 10 fehlgeschlagenen Logins von derselben IP sollten die Pakete einfach abgewehrt werden. Z.B. irgendwie so:

iptables -I INPUT -s 198.247.175.168 -j DROP

Das würde mir Sicherheit geben und den "Spam" in den Logs sparen.

Lässt sich das automatisieren und die IP nach einiger Zeit wieder freigeben? Meißt sind solche Attacken ja von Hosts aus dem Dynamischen IP-Bereich.

Danke für eure Hilfe!

marce
20.10.08, 12:48
fail2ban - kann allerdings auch nach hinten los gehen...

oder einfach den ssh-Port ändern.

HirschHeisseIch
20.10.08, 13:12
Das übliche 'ssh-Paket.'
Port ändern, root-login verbieten, Key-Files verwenden und eben ggf. fail2ban.

~Gh05t~
20.10.08, 14:02
root-Login ist eh dicht, es gibt auch nur wenige User mit shell-Zugang. Fail2Ban schau ich mir mal an, aber das müsste ich ja auf jedem Server einzeln installieren.
Gibts nicht irgend ne Firewall-Lösung dafür?
So nach dem Motto:
Falls ein Host in einer bestimmten Zeit X mehr als Y Verbindungen auf Port 22 öffnet wird er für Zeit Z gesperrt.

muell200
20.10.08, 14:15
Falls ein Host in einer bestimmten Zeit X mehr als Y Verbindungen auf Port 22 öffnet wird er für Zeit Z gesperrt.


z.b.: iptables

HirschHeisseIch
20.10.08, 14:15
Eine Firewall-Lösung müsste auch auf jedem Server einzeln installiert/eingerichtet werden. Wo ist also der Unterschied?

Und oben redest Du von 'unserem Server'. Was sich für mich nach einem anhört. ;)

~Gh05t~
20.10.08, 14:38
Sorry. Zu Anfang hielt ich die Topologie für nicht so wichtig, hab nicht drüber nachgedacht.
Ich hab hier n Gateway mit Firewall, dahinter ne DMZ mit nem Webserver und ein Internes Netz mit zwei File/Application-Servern. Alle sind von außen über SSH erreichbar. Deshalb wäre mir eine Lösung in der Firewall am liebsten.

@iptables: Sorry, so gut kenn ich mich damit nicht aus... wie genau würde so eine Regel aussehen?

gropiuskalle
20.10.08, 14:45
Nochmal ganz kurz zu fail2ban - das ist nicht allzu schwer einzurichten, fail2ban bringt eine kommentierte config-Datei mit, ein Absatz ist explizit für ssh zuständig. Diese kannst Du dann einfach auf jede Kiste kopieren (fail2ban installieren natürlich auch noch).

framp
20.10.08, 18:24
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1200 --hitcount 2 --rttl --name SSH -j LOG --log-prefix SSH_brute_force
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1200 --hitcount 2 --rttl --name SSH -j DROP

Unterbindet beim dritten Versuch für 20 Minuten den Zugriff auf den ssh Port ...

BedriddenTech
20.10.08, 20:07
Ich weiß, ich nerve damit immer wieder, aber ich kanns einfach nicht lassen: Das Ändern des Ports, an dem der SSH-Daemon lauscht, hilft nichts -- oder kann sogar schädlich sein, schließlich vermittelt es ein falsches Sicherheitsgefühl. Schwachstellen sind primär schlechte Benutzerpaßwörter (kann beheben, indem man als Admin nur Public Keys zur Anmeldung erlaubt) oder der SSH-Server selbst bzw. die SSL-Bibliothek, nämlich bei Programmfehlern.
Die Einträge im Log sind dann einfach nur noch lästig, und können mit iptables-Regeln wie denen von framp sehr leicht behoben werden. Fail2Ban ist dann interessant, wenn Loganalysen mehrere Dienste überwachen können, oder E-Mail-Benachrichtigung erwünscht ist.
Spar Dir die Arbeit, den Port zu ändern und allen zu erklären, daß Remote Logins jetzt nur noch auf Port 11454 möglich sind. :)

HirschHeisseIch
20.10.08, 22:16
Da hast Du natürlich - bedingt - Recht.
Das ändern des Ports verhindert allerdings schon etliches an Script-Attacken, welche einfach gängige Benutzernamen/Passwort-Kombinationen auf ssh (Port 22) durchprobieren.

BedriddenTech
20.10.08, 23:53
Ich würde nicht so darauf pochen, wenn ich nicht folgendes zu erzählen hätte:
In der Firma, in der ich als Admin tätig war, kam ein Server frisch ans Netz. Keine große Sache, der sollte von alten POP-/IMAP-Konten E-Mails einsammeln, filtern, prüfen und dann richtig einsortieren. Die Kiste lief und ich ging in den Urlaub. Während der Zeit wurde die genau auf die Art immer wieder angegriffen, und mein Chef, der nur durch Zufall in die Logs sah, änderte den Port.
Eine Woche später fing das Gehämmer in derselben Intensität auf dem neuen Port wieder an. Aufgrund von Indizienbeweisen (Logs des Paketfilters) glaube ich, daß die Angreifer sich einfach die Zeit für einen Portscan genommen haben.

Aus dem Grund bin ich kein großer Freund von Portwechseln und baue lieber gleich eine entsprechende Iptables-Regel ein. :)

HirschHeisseIch
20.10.08, 23:57
Das eine schliesst das andere ja nicht aus.
Mit nem Port-Wechsel verringert man aber schonmal das Risiko von Scriptkiddie-Attacken, wo einfach komplette IP-Ranges gescannt werden.

honkstar
21.10.08, 08:37
Ohne jetzt eine Lawine a la "Security by Obscurity" und ähnliches lostreten zu wollen, denke ich, dass man die Portänderung nicht als eigenständiges Sicherheitsfeature sehen sollte, sondern als zusätzliche Erschwerung von Angriffen. Auf einigen Servern, auf die nur ich Zugriffe brauche, habe ich die Ports auch geändert. Auf Servern, auf den mehrere zugreifen sollen, bleibt es beim Standard. Obwohl ich eigentlich kein Fan davon bin, vielen Leuten den Fernzugriff auf im Internet erreichbare Server zu geben.
Das Allerwichtigste ist immer (bei allen Diensten) die gescheite Konfig der Dienste...

Gruß
honkstar

~Gh05t~
21.10.08, 09:10
@framp: Danke, das war genau was ich suchte!

@Port ändern: Da muss ich BedriddenTech zustimmen: wer da wirklich dran will lässt sich von einem anderen Port nicht aufhalten. Und ich muss sagen ich finde es nervig wenn ständig irgendjemand kommt und fragt ob ich ssh abgeschaltet hätte. Und auch mir ist die Sache eher lästig. Darüber hinaus sind es idR sowieso nicht viele die ein SSH-Login haben, ein einfacher Schutz gegen Dictionary-Attacken halte ich für meinen Fall für ausreichend.

Danke für die Antworten!

ThE_FiSh
25.10.08, 11:45
ich hab mir mal nen knockd installiert - hält zumindest diese toolaufallesbenutzer ab mich mit logfiles zu nerven :D

http://www.portknocking.org/