SSH-Login: Verzögerung bei Anmeldung mit falschem Passwort

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Holger0Net

Benutzer
Registriert
18. Jan. 2014
Beiträge
10
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

ich hätte ganz gerne beim SSH-Login noch eine zeitliche Verzögerung, wenn sich jemand versucht mit einem ungültigen Benutzer oder Passwort über SSH anzumelden. Kann mir jemand dabei weiterhelfen?

Vielen Dank
Holger
 
Die Automatische Blockierung im DSM reicht dir nicht?
Die gilt nämlich auch für SSH.
 
Theoretisch machbar über iptables. Man kann die Anzahl der Versuche auf 1 pro Minute limitieren. Ein Delay, der immer größer wird, je öfter man es versucht, wäre dann wohl anders zu machen. Bevor du dashier ausprobierst, würde ich dir empfehlen, auf ner VirtualBox ein Linux laufen zu haben und dann mal den Code zu testen und dann die VirtalBox "angreifen".

# Use IPTables to limit Access
# limit new login attempts to once per minute
iptables -A INPUT -p tcp -m state --syn --state NEW --dport ssh \
-m limit --limit 1/minute --limit-burst 1 -j ACCEPT
iptables -A INPUT -p tcp -m state --syn --state NEW --dport ssh -j DROP
 
Hat jemand das mit PAM zum Laufen bekommen oder ausprobiert?
 
Ich habe auf meiner DS213j kein entsprechendes PAM-Modul gefunden.
Das müsste man sich dann wohl selbst kompilieren....
 
@trinija
da müsste aber imho unbedingt noch die SRC mit rein. Sonst hast du keine Chance dich selber anzumelden wenn gerade jemand mit BruteForce deine Server eindeckt :-)
Also sowas in der Art
Code:
iptables -A INPUT -p tcp --dport 22 -m hashlimit --hashlimit-mode srcip --hashlimit-above 1/minute -j DROP
 
SRC bringt dir aber nur was im LAN oder wenn du von extern mit ner festen IP drauf zugreifst. Sobald du im Standardinternet unterwegs bist mit Laptop/UMTS und Co, bringt dir SRC nix mehr, da du ja erstmal deine DynIP in iptables reinhämmern müsstest. ;)

Alternativ kann man auch andere Wege gehen, ich spiel ja eh viel mit iptables rum und bin mal über dashier gestolpert: http://aplawrence.com/Security/sshloginattack.html
 
das verstehe ich jetzt nicht ganz. Wieso sollte SRC nicht nötig sein? Ist ein schlichter Zähler pro IP. Wieso sollte ich meine IP reinhämmern müssen? srcip steht für jede IP das ist kein Platzhalter, den man noch ersetzen müsste
Und noch was kleines zu deinem Vorschlag: ich würde das nicht unbedingt am NEW festmachen. Denn je nachdem wieviele Versuche pro Session der SSH zulässt, sind die meisten Anmeldeversuche nicht mit State NEW.
 
Whoops, ok, mal wieder falsche Baustelle. War im Gedanken schon bei dem Fall, das du eine feste IP excludest und zulässt für mehrere Tries. Gut, das mit der Session ist so richtig, nicht bedacht das ich meinen ssh so eingerichtet hab, das er die Connection und damit die Session nach einem Fehlversuch killt. Bin eh gerade aber eh dran das so scharf zu stellen, das ich mit Keys und ohne User/Pass arbeite und die Loginversuche generell auf 1 reduziere.
 
NAS in der VB?
Wie soll das aussehen?

Ob du 32 oder 64 Bit brauchst, kann ich dir von hier, ohne Kenntnisse über deine Box nicht sagen.
Aber soviel: Das PAM-Modul muss für den Prozessor deiner Box kompiliert sein, also wahrscheinlich ARM.
 
Mit der Vorkenntnis wird es schwierig.
Um das zu kompilieren, brauchst du erstmal eine s.g. toolchain zum crosskompilieren, und diese gibt es meines Wissens nur für Linux:
http://sourceforge.net/projects/dsgpl/

Dann musst du alles richtig konfigurieren usw:
http://ukdl.synology.com/ftp/ds/use...on_Manager_3rd_Party_Apps_Developer_Guide.pdf

Wenn du jetzt aufgibst, hast du mein volles Verständnis.

Am besten suchst du jemanden, der ebenfalls eine DS213+ hat und Erfahrung mit Crosskompilierung.
Im besten Fall hat er die toolchain schon installiert und weiss, was er tut.
 
Muss die Datei pam_delay.o unbedingt auf meinem NAS kompiliert werden? Kann ich die Datei pam_delay.so oder PAM_FAILDELAY.so nicht einfach irgendwo herunterladen?
 
Du kannst sie auch unter Linux auf dem PC cross-compilen.
Und ich kenne keine Seite, wo man passende, vorkompilierte Binaries runteerladen könnte.

Micky
 
So der Delay funktioniert in der VirtualBox mit der PAM_FAILDELAY.SO . Leider möchte ich jetzt gerne auch noch, dass die Zeit sich bei jedem Fehlversuch erhöht am besten exponentiell. Kann mir diesbezüglich jemand weiterhelfen?

ftp://ftp.ring.gr.jp/pub/linux/Plamo/Plamo-4.7/plamo/00_base/work/lib/security/pam_faildelay.so

Anleitung für PAM_FAILDELAY.SO

1. Datei download und auf die DS übertragen
2. Datei pam_faildelay.so in das Verzeichnis /lib/security/ kopieren / verschieben
3. Im Verzeichnis /etc/pam.d/ die Datei sshd editieren, die PAM_FAILDELAY muss in der ersten Zeile stehen.
Datei:
-----------------------------------------
auth optional pam_faildelay.so delay=10000000
auth [success=3 default=ignore] pam_unix.so nullok_secure nodelay
auth [success=2 default=ignore] pam_winbind.so
auth [success=1 default=ignore] pam_ldap.so
auth [default=die] pam_syno_log_fail.so [SSH]
auth [default=done] pam_syno_log_success.so [SSH] log=no
account [success=3 default=ignore] pam_unix.so
account [success=2 default=ignore] pam_winbind.so
account [success=1 default=ignore] pam_ldap.so
account [default=die] pam_syno_log_fail.so [SSH]
account [default=done] pam_syno_log_success.so [SSH] log=no
password sufficient pam_unix.so
password sufficient pam_winbind.so
session sufficient pam_unix.so
session sufficient pam_winbind.so

-----------------------------------------

4. SSH-Daemon neustarten

Kann jemand die Anleitung mal auf seiner Entwicklungs- / Test-DS ausprobieren? Leider habe ich im Moment nur produktive NAS.
 
Ich würde dringend davon abraten, das so einfach zu machen!!!

Holger: Die DS3612xs hat scheinbar einen Intel-x86 Prozessor, weswegen das bei dir funktioniert hat.
Aber die DS213+ hat eine PPC-Prozessor, da dürfte das Laden des Moduls zu unschönen Nebeneffekten führen -> bis hin zum Absturz des sshd
Da könntest du ja auch irgendeine Windows-Software auf deiner DS installieren!

Ich habe "deine" pam_faildelay.so mal runtergeladen und geprüft, wofür sie kompiliert wurde:
Code:
file pam_faildelay.so 
pam_faildelay.so: ELF 32-bit LSB shared object, [B]Intel 80386[/B], version 1 (SYSV), dynamically linked, not stripped


Jetzt zu deinem Problem.
Ich weiss nicht, was du genau vorhast, oder warum.
Aber du solltest dir bewußt sein, daß deine Anforderung erstens nicht genau spezifiert und zweitens wahrscheinlich nicht einfach zu realisieren ist.
Erstmal, wie lautet deine Anforderung?
Soll das Delay bezogen auf den User und/oder die Source-IP erfolgen?
Soweit ich weiss, funktioniert das Delay nur in der aktuellen Session.
Machst du also einfach eine zweite Session auf, weiss diese nix von der ersten, fehlgeschlagenen Session.

Zur Realisierung:
Wenn du einen Zusammenhang mit anderen Sessions herstellen möchtest, müssten diese Informationen irgendwo gespeichert und aber auch wieder gelöscht werden.
Das ist nicht einfach!



Da ist dann die Blocklist vielleicht doch das bessere Mittel.
Allerdings müsste man die ein wenig tunen, weil eine Standard-Sperrung von mindestens 24 Stunden zuviel ist.
 
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