SSH brute-force abwehren.

Rabadag

Well-Known Member
Hi forum.

Hab da mal ne kleine frage.

Ist es möglich SSH brute-force angriffe zu erkennen und die entsprechende ip
zu sperren.

Ich denke da an 10 login versuche und dann sperren mittels einer ip-black-list.

Seit einiger Zeit beobachte ich immer mehr SSH brute-force angriffe.
Mit einem script oder einstellung um die IP direckt zu sperren wäre
eine gute sache.

Kennt da jemand eine lösung?
 

Rabadag

Well-Known Member
Daniel Seuffert schrieb:
Das Thema wurde imho schon ausführlich diskutiert in http://www.bsdforen.de/showthread.php?t=6540, die Ratschläge daraus sind imho schlüssig genug. ;)

Danke für den Therd. aber das ist nicht ganz das was ich brauche.

Auf der BSD maschine giebt es keine Firewall. Das ist zentrall auf ner anderen maschine.
Deshalb suche ich die möglichkeit einer ip sperre für ssh anmeldungen.
ein script das die logins überwacht und nach 10 versuchen die ip in ne liste packt und den ssh aktualisiert.
 

Daniel Seuffert

Well-Known Member
Ich meinte das nicht mit der firewall sondern mit der Verwendung ausreichend sicherer pw etc., siehe zweite Hälfte des threads.
 

Rabadag

Well-Known Member
hmmm..

Das mit dem Public/key ist schon eine möglichkeit, aber das verhindert nicht, das
weiterhin SSH brute-force attaken versucht werden.

Zudem möchte ich nicht unbedingt immer ein certivikat mit mir rumschleppen, damit ich zu jeder Zeit egal von wo zugriff habe.

Da ja wirklich nicht mit einer art Blacklist und block funkton gearbeitet wird, verstehe ich auch warum Brute-force ständig weiter entwikelt wird.
Es verhindert einfach nimand, das man sich mermals anmelden kann.
Ist das den so schwer in SSH zu implementieren?


Wenn auch bei meinen Server root für ssh gesperrt ist, beunruigt mich solche sachen dennoch.

May 18 00:12:35 web1 sshd[8137]: Failed password for thomas.weng from 209.45.208.4 port 4785 ssh2


und das dann auch noch 1200 mal.

Da steigern sich die chachen erheblich wenn der dann nun alle 2-3 stunden nen versuch startet.

Wenn du mich richtig vrestehst, möchte ich verhindern, das eine brute-force attake gar nicht möglich ist und damit das ineresse an einer solchen attake weltweit sinkt.

Ich bin kein Programierer, aber das muss doch möglich sein.
 

Ice

Well-Known Member
Ich verstehe ehrlich gesagt nicht, wie folgende DeinerAussagen zusammenpassen:

- Du bist beunruhigt wegen den Login-Versuchen

- Du bist aber nicht bereit für die Sicherheit der Maschine einen SSH-Key (z.B. auf einem USB-Stick) zu benutzen

Sicherheit ist leider nicht immer ganz bequem.......

Gruß,

Ice
 

Rabadag

Well-Known Member
Ice schrieb:
Ich verstehe ehrlich gesagt nicht, wie folgende DeinerAussagen zusammenpassen:

- Du bist beunruhigt wegen den Login-Versuchen

- Du bist aber nicht bereit für die Sicherheit der Maschine einen SSH-Key (z.B. auf einem USB-Stick) zu benutzen

Sicherheit ist leider nicht immer ganz bequem.......

Gruß,

Ice


Es geht nicht um die sicherheit. Es geht primär darum solche attaken zu unterbinden.
 

asg

push it, don´t hype
Rabadag schrieb:
Es geht nicht um die sicherheit. Es geht primär darum solche attaken zu unterbinden.

Du kannst diese "Attacken" (die prinzipiell Hintergrundrauschen darstellen und bei entsprechenden Vorkehrungen zerplatzen wie eine Seifenblase) nicht verhindern.
Wenn Du ein sehr gutes und langes PW hast ist die Wahrscheinlichkeit das es jemand schafft tendierend zu null (schliesslich muss auch noch der username+pw übereinstimmen). Wenn Du dann noch keys nutzt ist es nicht möglich (ausser ssh hat eine Schwachstelle aber dann haben wir alle ein Problem).

Um es zu verhindern kannst Du ja Emails an die entsprechenden Leute senden mit einer bitte das sie aufhören sollen.... ;-)

Ok, Dein log läuft voll, es wird schwierig dieses zu lesen und das Hintergrundrauschen, also die brute force Attacken, von denen die evtl. interessant sind zu unterscheiden.
Wenn es darum geht, dann nimm Dir doch auf der Büchse IPFW zur Hand, öffne alles (eine FW ist ja schon davor wie Du sagtest), setze portsentry auf (in den Ports) und lass portsentry immer eine Regel (deny) automatisch hinzufügen wenn es solche floods, scans, brute force Scheisse erkennt. Dann ist die jeweilige IP von der das kommt gesperrt.
 

Rabadag

Well-Known Member
asg schrieb:
Du kannst diese "Attacken" (die prinzipiell Hintergrundrauschen darstellen und bei entsprechenden Vorkehrungen zerplatzen wie eine Seifenblase) nicht verhindern.
Wenn Du ein sehr gutes und langes PW hast ist die Wahrscheinlichkeit das es jemand schafft tendierend zu null (schliesslich muss auch noch der username+pw übereinstimmen). Wenn Du dann noch keys nutzt ist es nicht möglich (ausser ssh hat eine Schwachstelle aber dann haben wir alle ein Problem).

Um es zu verhindern kannst Du ja Emails an die entsprechenden Leute senden mit einer bitte das sie aufhören sollen.... ;-)

Ok, Dein log läuft voll, es wird schwierig dieses zu lesen und das Hintergrundrauschen, also die brute force Attacken, von denen die evtl. interessant sind zu unterscheiden.
Wenn es darum geht, dann nimm Dir doch auf der Büchse IPFW zur Hand, öffne alles (eine FW ist ja schon davor wie Du sagtest), setze portsentry auf (in den Ports) und lass portsentry immer eine Regel (deny) automatisch hinzufügen wenn es solche floods, scans, brute force Scheisse erkennt. Dann ist die jeweilige IP von der das kommt gesperrt.

Da vresteht mich einer..
Es gäbe doch die möglichkeit mittels script das lofile auth.log abzu horchen und dan bei 10 ereignissen mit gleicher IP gleiches ergebnis die ip in ein file zu schreiben.

ich denke da an eine variante mitels grep.

#grep sshd /var/log/auth.log | grep Failed | grep ssh2

dieses erstellte file wird dan wiederum von ssh überwacht und alle einträge als deny betrachtet.

das wäre doch ein ansatz.

Ich mach mir wegend den Passwörten keine sorge die sind sicher.

Ich habe nun mit suchen was intresantes gefunden aber das geht auch nur wider mit iptaples.
http://www.pettingers.org/code/SSHBlack.html

wenn man das ohne FW verwenden könnte wurde den hackern schnell die luft ausgehen.

Das wir uns richtig verstehen, ich will eine brut-force auf einfachte art unterbinden. (Gründe wie Prozzeslasst, Traffice, log, und und und..)
 

asg

push it, don´t hype
@Rabadag
Wie gesagt, schau Dir "portsentry" an, findest Du in den Ports. Das erstellt Dir dann automatisch eine IPFW Regel mit "deny" und die IP wird geblockt.
Bedenke aber, viele der "Angriffe" kommen von Rechner die evtl. über eine dial-in Verbindung ins Netz gehen, soll heissen, die IP wird dynamisch vergeben und beim nächsten einwählen hat derjenige eine neue IP und die eben gesperrte IP gehört nun zu einem User der Dir wohlgesonnen ist und auf Deine webseite oder was auch immer möchte nun aber nicht mehr draufkommt.
 

Rabadag

Well-Known Member
asg schrieb:
@Rabadag
Bedenke aber, viele der "Angriffe" kommen von Rechner die evtl. über eine dial-in Verbindung ins Netz gehen, soll heissen, die IP wird dynamisch vergeben und beim nächsten einwählen hat derjenige eine neue IP und die eben gesperrte IP gehört nun zu einem User der Dir wohlgesonnen ist und auf Deine webseite oder was auch immer möchte nun aber nicht mehr draufkommt.

Das ist mir schon klar..
deshalb will ich ja nur die wichtigsten dienste sperren wie ssh, ftp, imap, pop3
und dies auch nur eine gewisse zeit. soll automatisch ablaufen.
Eben wie bei http://www.pettingers.org/code/SSHBlack.html

es giebt ja in file hosts.allow
den eintrag "#sshd : .evil.cracker.example.com : deny"
Das müsste man in ein file umleiten und mit nem script das entsprechde file abfüllen.

Ich bin da leider kein proger aber eventuel intressiert es ja einen so was zu entwikel.
 

lars

vom mars
Stell doch deinen sshd auf einen anderen Port um.

Das "löst" zumindest dein Problem der zahlreichen Log-Einträge, es wird wahrscheinlich keine mehr geben.

Wenn du eine echte Lösung willst, mach was asg sagt.
 

Rabadag

Well-Known Member
lars schrieb:
Stell doch deinen sshd auf einen anderen Port um.

Das "löst" zumindest dein Problem der zahlreichen Log-Einträge, es wird wahrscheinlich keine mehr geben.

Wenn du eine echte Lösung willst, mach was asg sagt.

ich werde die materie mal studieren.

Das mit dem port wird nicht sehr fiel bringen hatte ich auch schon lange mal auf 54541 und da kammen dan auch all die scanner...

Die heutigen Scanner erkennen einen ssh da bringt auch ein port umstellung leider nicht fiel.

Das mit portsentry wäre ne ide sofern man den so umbauen kann das er keine FW regel macht sondern ein file das ich dan als deny deklarire und in den diensten als deny file angebe.
 

Dr.Sweety

Fnord!
Ich finde die Idee von Rabadag sehr sinnvoll und fände es toll, wenn es direkt mit dem sshd oder via einem Shellscript eine Lösung dafür gäbte. Was ich vielleicht noch als Vorschlag einbringen kann, ist eine zusätzliche Sicherheitsschicht durch ein Jail einzubauen. Der Angreifer muss so zuerst einen SSH Login in das Jail machen und dann von dort in den eigentlichen Hauptrechner. Bringt vielleicht nicht wahnsinnig viel aber ich denke, es kann durchaus sinnvoll sein wenn man eh schon Jails am laufen hat.
 

.mp

Wohngebietsmatthias
Rabadag schrieb:
Das mit dem port wird nicht sehr fiel bringen hatte ich auch schon lange mal auf 54541 und da kammen dan auch all die scanner...

Die heutigen Scanner erkennen einen ssh da bringt auch ein port umstellung leider nicht fiel.
Du kannst dem sshd afaik sagen, daß er sich anders zu erkennen geben soll. Wenn mich nicht alles täuscht kannst du dem sogar sagen der soll sich als "Barbi-Online-Bestellungsserver" melden wenn du willst. Ich glaube nicht, daß der dann noch als sshd erkannt wird durch nen "Portscan".

Gruß
 

Rabadag

Well-Known Member
Dr.Sweety schrieb:
Ich finde die Idee von Rabadag sehr sinnvoll und fände es toll, wenn es direkt mit dem sshd oder via einem Shellscript eine Lösung dafür gäbte. Was ich vielleicht noch als Vorschlag einbringen kann, ist eine zusätzliche Sicherheitsschicht durch ein Jail einzubauen. Der Angreifer muss so zuerst einen SSH Login in das Jail machen und dann von dort in den eigentlichen Hauptrechner. Bringt vielleicht nicht wahnsinnig viel aber ich denke, es kann durchaus sinnvoll sein wenn man eh schon Jails am laufen hat.


besten Dank für deine unterstüzung.

In der ide steckt noch mer, den ich möchte mit dieser möglichkeit
mein Kunden Server ck 60stk. mit den verschidenne Linux distis und BSd mit einer blacklist versorgen.

Das könnte man dan natürlich weiter auswbauen und ein verbund oder direckter service im opensource zu erstellen.

op dann das Blacklist-file von ner db kommt spielt dann ja keine rolle mer.

Wichtig wäre einfach, das man das file realtime mäsig abfüllen kann und
wia ssh, ftp, imap oder was auch immer als auth deny benuzen kann.

hat jemand ne ide wie mann das machen könte ?
 

lars

vom mars
Ich glaube, dass du nach einem Kosten-Nutzen-Vergleich nicht so eine "Lösung" aufbauen wirst, aber das ist nur meine bescheidene Meinung.

Wenn du lange und komplexe Passwörter benutzt
/usr/ports/security/apg
und
http://www.msdservices.com/apg/index.php
oder mit pub_keys arbeitest, musst du dich nicht fürchten.
Ausser OpenSSH hat eine Sicherheitslücke, heh.
 

Rabadag

Well-Known Member
lars schrieb:
Ich glaube, dass du nach einem Kosten-Nutzen-Vergleich nicht so eine "Lösung" aufbauen wirst, aber das ist nur meine bescheidene Meinung.

Wenn du lange und komplexe Passwörter benutzt
/usr/ports/security/apg
und
http://www.msdservices.com/apg/index.php
oder mit pub_keys arbeitest, musst du dich nicht fürchten.
Ausser OpenSSH hat eine Sicherheitslücke, heh.


sorry lars.. es geht nicht um die passwörter oder username.. die security stimmt schon.

es geht darum keine brut-force attaken zu erlauben. Und das mit einer Zentralen Datei.

Ich will damit erreichen das alle meine server nicht mer das ziel sind und eventuel auch file andere server ebenfalls.

die anwendungs möglichkeit ist gross.

Und nochmal ziel ist es diese attaken egal auf was für ne art und service geblockt werden.

wie eine anmeldungs versuch an einer windows domäne wo der login gesperrt wirt, ausser das hier die versuchten userlogins nicht exisieren und die IP gesperrt wird.
 

asg

push it, don´t hype
portsentry kann auch Einträge in die hosts.allow schreiben wenn es keine FW sein soll...
 

Deamon

Well-Known Member
Rabadag schrieb:
Und nochmal ziel ist es diese attaken egal auf was für ne art und service geblockt werden.

Ich mein kann sein, daß ich mich da jetzt täusche, aber solange du diese Services anbietest, wird man die angreifen können, schließlich kann keine Firewall zwischen nem normalen Login und nem try2hack unterscheiden.

Und wie gesagt, in Zeiten von DSL etc., sind IP-Sperrungen ziemlich sinnlos ( es sei denn du sperrst ganze IP-Ranges, was zugegebenermaßen zu Problemen führen könnte :ugly: ) Desweiteren arbeiten die Scripts automatisch, jedenfalls würde ich es so machen, wenn ich geblockt werde hol ich mir halt schnell ne neue IP und weiter gehts.

Wie gesagt, vernünftige Passwörter sollten da ausreichen...
 

Rabadag

Well-Known Member
Deamon schrieb:
Wie gesagt, vernünftige Passwörter sollten da ausreichen...

Es geht nicht um die Passwörter.

Du verstehst auch nocht was hier eigentlich gedacht ist.

nochmal für alle.

Es geht nicht darum einfach alles zu sperren sondern lediglich einer brutforce attake entgegen zu wirken. Dann kann er ja mit ner neuen IP kommen und wird widerum geblock.

Das Selbe gilt für Spam Mailer die es nicht kapieren das ein reley vorhanden ist und sie widerum ständig versuchen spam zu versenden.

Erlich gesagt benötige ich die resurcen von nem server für andere sachen als standig mails abzulehnen.

nochmal es geht darum vorübergehen dienste via IP sperre den angreifer auszusperren. z.b nach 10 versuchen für 1 Tag geblockt.


Ist das so schwer zu verstehen ?
 

maus

Maus-Phobie überwunden
Rabadag schrieb:
.
.
nochmal es geht darum vorübergehen dienste via IP sperre den angreifer auszusperren. z.b nach 10 versuchen für 1 Tag geblockt.


Ist das so schwer zu verstehen ?
Es soll schon Angreifer gegeben haben, die beim IP-Spoofing die IP des Standartgateways genutzt haben.
 

menace

Well-Known Member
Du wirkst der Attacke nur entgegen, in dem du die Leute, die das machen anklagst.
Wenn auf Port 22 einen Dienst anbietest, der ssh mässig ausschaut (auch wenns bloss ein fake ist) kommen solche versuche.

Wir verstehen dich schon. Nur du verstehst die sachlage nicht. Angriffe kann es immer geben. Und die gibt es auch immer (phishing z.b.), nur deswegen bringt dieser "deny" den du willst nichts (in bezug auf phishing wäre dass, dass du nach jedem versuchten phishing angriff die absenderadresse blockst, oder deine mailadresse wechselst)
Und die ressourcen werden dir so oder so verbraucht.

Was du da willst, ist wie die Scheinsicherheit, die DesktopFirewalls bieten. Entweder bringt es keine zusätzliche sicherheit, oder es ist ein unvollständiger schutz, der einem die augen zu kleistern soll.

Die Bruteforceattacken kommen so oder so.
 

k3rn3lpanic

Unregistered User
Erst einmal möchte ich mich meinen Vorrednern anschließen.

Die nächste Sache ist folgende: Du sagst, dass Du durch das Blocken von Brute-Force-Attacken CPU-Zeit, RAM, Traffic,... sparen willst. Wieviel Attacken hast Du pro Minute, dass das überhaupt notwendig ist?

Und wenn Du nicht willst, dass Dir die Logfiles zugespammt werden, setz doch einfach das LogLevel vom sshd herunter. Wenn Du das noch mit Public Key-Auth verbindest, hast Du den Großteil Deiner Probleme beseitigt :)
 
Oben