SSH bei Fehlversuchen blocken o. ä.?

Status
Für weitere Antworten geschlossen.

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
nachdem ich den syslog mal etwas geschwätziger gemacht habe, habe ich auch die Logfiles etwas häufiger kontrolliert. Und siehe da: Heute hat doch ein Möchte-gern-Hacker versucht, über ssh auf die DS zu kommen (normalerweise nehme ich die Portweiterleitung raus, sobald ich zuhause bin und sie daher nicht mehr nötig ist, aber kann man ja auch mal vergessen :rolleyes:...). Nun hat ihm das nix genützt; er hat alle möglichen Benutzer durchprobiert und es auch massenhaft mit root, guest etc. probiert. Allerdings dürfte mein mehr als 12-stelliges zufälliges Passwort so wohl nicht zu knacken sein, aber immerhin hat er in der halben Stunde, bis ich den Port geblockt habe, 1.775 Versuche geschafft.
Ich würde sowas natürlich gerne ein wenig erschweren; naheliegend wäre ein zeitlicher Abstand zwischen Fehlversuchen, der sich nach einer kleinen Zahl von Fehlversuchen deutlich erhöht und schließlich eine Blockade nach einer größeren Anzahl. Meine Linux-Kenntnisse reichen nicht mal für die Suche nach einer Möglichkeit, daher hier die Frage, was sich da ggf. machen läßt. Die Möglichkeit, den Zugang über Zertifikate zu sichern, ist mir bekannt, kommt aber aus verschiedenen Gründen nicht in Betracht und würde auch nicht meinen obigen Vorstellungen entsprechen. Mit der Suche habe ich nichts gefunden, das mag aber auch daran liegen, dass ich nicht das richtige Stichwort hatte. Hinweise, Tips, Lösungen sind daher willkommen.

Gruß
Peter
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0

Was genau an
Die Möglichkeit, den Zugang über Zertifikate zu sichern, ist mir bekannt, kommt aber aus verschiedenen Gründen nicht in Betracht und würde auch nicht meinen obigen Vorstellungen entsprechen.
war unverständlich :confused:...? Danke für den Versuch, aber die Antwort hat mit meiner Frage leider nicht viel zu tun.

Gruß
Peter
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Du kannst in der ssh config festlegen, nach wievielen Versuchen ein Account gesperrt werden soll. Wenn du dies aber setzt, dann kann ein böser Zeitgenosse, der deine Accounts kennt, diese ziemlich schnell alle sperren! Dann kommst du als root nur noch via telnet rein oder überhaupt nicht mehr wenn du telnet nicht aktviert hast.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@PeterG
Sorry habe im Manual mal genauer nachgelesen und gesehen, dass mein Vorschlag iptables auf der DS voraussetzen würden. Afaik ist das aber auf einer DS bis jetzt noch nicht vorhanden.
Das ssh Manual empfiehlt dann das Python Tool fail2ban. Dieses setzt "nur" Python >= 2.4 voraus, welches es imho via ipkg für die DS geben sollte.

Die einzige Konfig Var in der ssh Conf zu diesem Thema wäre MaxAuthTries. Leider bezieht sich das nur auf die Anzahl Login Versuche pro ssh Verbindung (der böse Zeitgenosse macht einfach eine neue Verbindung auf). Accounts werden damit keine gesperrt.

Bei fail2ban hättest du aber wieder das Risiko, dass dir der root Account sehr einfach gesperrt werden kann.

Der beste Weg, auch wenn er sich bei dir anscheindend nicht umsetzen lässt, sind Schlüsselverfahren zur Authentifizierung. Wirklich alle Pasworte lassen sich irgendwann knacken. Dasselbe gilt natürlich auch für Schlüssel, nur ist bei diesen der Zeitaufwand um Welten grösser ;)

Der beste Schutz vor Brute Force ist es keine Passwortanmeldung zuzulassen.

Gruss

tobi
 

Chrunchy

Benutzer
Mitglied seit
05. Mrz 2007
Beiträge
470
Punkte für Reaktionen
0
Punkte
16
Ist es nicht eh ratsam root den Zugriff via SSH zu verbieten und statt dessen den Weg mittels User-Login uns su zu gehen?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ist es nicht eh ratsam root den Zugriff via SSH zu verbieten und statt dessen den Weg mittels User-Login uns su zu gehen?

Könntest du dieses Szenario ein wenig erhellen? oder meinst du sudo?

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ist es nicht eh ratsam root den Zugriff via SSH zu verbieten und statt dessen den Weg mittels User-Login uns su zu gehen?
Wär mir auf jeden Fall zu mühsam nicht als echter root zugreifen zu können. Ich arbeite viel mit der Konsole und darum wärs mir zu mühsam. Ich sichere denn ssh Zugang mit einem Schlüssel ab und verbiete PW-Anmeldungen. Zu Hause im LAN greife ich eh vorzugsweise mit telnet auf die DS zu (Ports natürlich am Router gesperrt ;) )
Den root Login kannst du in der ssh Conf mit einer eigenen Variable verbieten. Heisst glaub ich PermitRoot
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich bin mir nicht ganz sicher, ob nicht ein paar der Dienste unter 'root' laufen müssen und dass dort auch ne 'root'-Shell benutzt wird. Wäre mal interessant, das lückenlos nachzuvollziehen und zu dokumentieren, ob dabei auch der root-Login notwendig ist.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich bin mir nicht ganz sicher, ob nicht ein paar der Dienste unter 'root' laufen müssen und dass dort auch ne 'root'-Shell benutzt wird. Wäre mal interessant, das lückenlos nachzuvollziehen und zu dokumentieren, ob dabei auch der root-Login notwendig ist.

Itari
Wenn du den root Login in ssh verbietest, dann wird eigentlich nicht der System-Account gesperrt und auch keine nologin-shell in passwd eingetragen. Die Sperrung übernimmt der ssh-Daemon bzw seine Config. Per telnet kommst du ja immer noch rein als root. Ich denke solange keine Einträge in Dateien wie passwd vorgenommen werden, müssten alle "Dinge" noch genau gleich laufen wie vorher ;)
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
erstmal danke für die Infos; leider komme ich erst heute dazu, mich wieder damit zu beschäftigen. Allerdings meinte ich eigentlich etwas anderes, habe mich aber falsch ausgedrückt. Ich wollte nicht den account blocken (wäre in der Tat witzlos, wenn ich mich damit selbst aussperre, das wäre im Beispielfall nach ca. 1.200 Versuchen sich als root einzuloggen ziemlich sicher passiert) sondern den Absender bzw. dessen IP, ähnlich wie es nach meinem Verständnis bei ftp möglich ist. Ich nehme mal an, dass das mit Linux grundsätzlich möglich ist, aber geht das auch auf der DS und ggf. wie?
Ansonsten ist die größere Sicherheit mit Zertifikaten schon klar, aber das geht hier eben nicht ohne Weiteres. Und die Wahrscheinlichkeit, ein zufälliges Passwort mit > 12 Stellen zu knacken, ist auch ausreichend klein...

Gruß
Peter
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Basierend auf IPs wirst du wohl nur mit iptables weiterkommen. Wobei beim Tool fail2ban (Python), das primär ein Logscanner ist, auch ein Einsatz ohne iptables in Frage käme (weiss aber nicht ob das besonders effizient ist).
Das Manual von fail2ban würde ich mir aber mal anschauen v.a. der Abschnitt Filter scheint direkt mit regulären Ausdrücken die Log Files abzugrasen.
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
danke für den Hinweis; ich geh mal grasen ;)... ob das mit meinen beschränkten Kenntnissen war bringt, lasse ich mal dahingestellt...

Gruß
Peter
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
das nützt wohl nix, weil es auf iptables oder shorewall aufsetzt; ohne vorhandene Firewall, in die fail2ban dann eine Regel einfügt, funktioniert es wohl nicht.

[Edit] Wobei ich gerade sehe, dass es iptables als ipkg-Paket gibt... hat das schon mal jemand probiert?
[Edit2] Nicht weit genug gelesen: Ist kein iptables sondern nur ein config-tool für iptables :(...

Gruß
Peter
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Eine "Möglichkeit" gäbe es auch ohne IP-tables. Du könntest via ipkg php installieren, dann sollte es möglich sein direkt aus Shellscripten php Scripte ohne Webserver aufzurufen. Dann zimmerst du dir ein PHP Script, das die verantwortlichen LogFiles durchsucht, die relevanten Eintrage mittels regulären Ausdrücken matched und dann IPs und Zugriffszeiten auswertet. Zu blockende IPs werden gespeichert.
Es gibt jedoch 3 Voraussetzungen:

1. das PHP Script kann ziemlich umfangreich werden
2. das Shell Script muss unter root laufen und damit auch der PHP Prozess
3. der ssh darf nicht als Daemon laufen, sondern muss via xinetd (via ipkg) gesteuert werden

Zu 3) xinetd ist wie ein Masterdaemon der auf spezifizierte eingehende Verbindungen warten und dann einen bestimmten Prozess anwirft. Also wird der ssh nur bei Bedarf angeworfen. Das feine bei xinetd ist, dass man in der Konfig der jeweiligen Prozesse via Direktive Host IPs verbieten kann. Das PHP Script müsste also die zu sperrenden IPs in die xinetd Config von ssh eintragen und den xinetd Daemon "zwingen" die Config Files sofort neu einzulesen.
Grundsätzlich kannst du fast jeden Daemon Prozess, der sonst permanent als eigenständiger Daemon laufen würde, mittels xinetd starten und kontrollieren (nicht bei jedem macht es natürlich auch Sinn)

Ich habe PHP nur zum Beispiel genommen, weil ich damit am besten umgehen kann ;) Das PHP Script liesse sich auch durch ein entsprechendes Shell-, Python- oder Perlscript ersetzen.
Alles in Allem dürfte das ein ziemlicher Aufwand werden, egal welche "Sprache" du wählst ;)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich habe mal noch ein bisschen mit /etc/hosts.deny rumprobiert. Aber zumindest den ssh Daemon lassen diese Einstellungen kalt :(
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Alles in Allem dürfte das ein ziemlicher Aufwand werden, egal welche "Sprache" du wählst ;)

Danke für Deine Ideen. Den letzten Satz formuliere ich mal für mich um: Übersteigt meine Fähigkeiten bei weitem ;)...

Gruß
Peter
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi Peter,

der FTP auf der DS ist ein sehr spezieller FTP (siehe auch Wiki dazu); nicht alle FTP-Server können das so bzw. machen es manchmal ganz anders.

Wie du richtig bemerkt hast, fehlt ein Kernel-Modul (sowas wie ein Treiber), um iptables zum laufen zu bringen. Du kannst ja mal Synology anmailen, dass sie es endlich einbauen sollen ... macht zwar die DS bestimmt sau langsam, aber es kann sich ja jeder entscheiden und ... irgendwann gibt es bestimmt schnellere DSen ;)

Es wäre natürlich auch grandios, wenn die Billig-Router-Hersteller in ihrer Mini-Firewall sowas einbauen täten; eigentlich wäre das der richtige Ort, weil je früher man blockt, desto besser (noch besser wäre der Provider, aber die manchen ja jetzt lieber das Ausspionieren-Spiel mit anstatt was Benutzerfreundliches zu machen). Vielleicht kannst du ja einen Verein zur Veränderung von Billig-Routern bzw. Provider-Gedanken-Modifikation gründen. Bekämst bestimmt riesig Zulauf. ;)

Itari
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
hm... stimmt eigentlich; am besten wäre blocken im Router. Der weiß aber nichts von dem Unfug, den der Angreifer auf der DS verzapft. Also müßte die DS irgendwie in die Firewall des Routers eingreifen können; vorgesehen ist das wohl nicht. Mit den Fritzboxen kann man ja eine Menge anstellen; vielleicht wäre sowas mit einer anderen Firmware sogar möglich.
Aber: Nachdem in der Ankündigung des DSM 2.2 für Juli (wie realistisch das ist lasse ich mal unkommentiert) von integrierter Firewall die Rede ist, fasse ich mich wohl am besten einfach etwas in Geduld und schaue dann mal.

Gruß
Peter
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ja es sieht so aus, als würden sie iptables einbauen ...

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat