Dienstag, 13. Mai 2008
[*]

Kein ssh für Dich, Du hattest schon genug

, 10:50

Ich benutze logcheck. Das warnt mich bei ungewöhnlichen Aktivitäten in den Logs der Server. Leider kommt es dabei häufig vor, daß man die eigentlichen Fehler garnicht finden kann, weil man sich durch endlose Wüsten von fehlgeschlagenen ssh-Logins blättern muß:

... failed password for invalid user ...

Das nervt. Haben die Scriptkiddies nichts besseres zu tun als Shellaccounts mit schlechten Paßwörtern zu suchen? Nach ein wenig herumsichen bin ich aber hier (wenn auch nicht im Artikel sondern in den Kommentaren) auf eine einfache Lösung gestoßen:

iptables -N ssh
iptables -A ssh -m state --state ESTABLISHED -j ACCEPT
iptables -A ssh -m recent --update --seconds 300 --hitcount 5 -j REJECT
iptables -A ssh -m recent --set -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j ssh
iptables -A FORWARD -p tcp --destination-port 22 -j ssh

Jetzt kann jeder Client pro 5 Minuten nur noch 5 ssh-Verbindungen öffnen, was in der Regel reichen sollte (man kann das ja auch noch etwas tunen…), danach wird die Verbindung verweigert. Test:

dentaku@charon:~$ ssh trenger@svn.advanced-solutions.de uname -a
Linux kampenwand 2.6.15 #1 SMP Thu Jun 8 18:38:40 CEST 2006 i686 GNU/Linux
dentaku@charon:~$ ssh trenger@svn.advanced-solutions.de uname -a
Linux kampenwand 2.6.15 #1 SMP Thu Jun 8 18:38:40 CEST 2006 i686 GNU/Linux
dentaku@charon:~$ ssh trenger@svn.advanced-solutions.de uname -a
Linux kampenwand 2.6.15 #1 SMP Thu Jun 8 18:38:40 CEST 2006 i686 GNU/Linux
dentaku@charon:~$ ssh trenger@svn.advanced-solutions.de uname -a
Linux kampenwand 2.6.15 #1 SMP Thu Jun 8 18:38:40 CEST 2006 i686 GNU/Linux
dentaku@charon:~$ ssh trenger@svn.advanced-solutions.de uname -a
Linux kampenwand 2.6.15 #1 SMP Thu Jun 8 18:38:40 CEST 2006 i686 GNU/Linux
dentaku@charon:~$ ssh trenger@svn.advanced-solutions.de uname -a
ssh: connect to host svn.advanced-solutions.de port 22: Connection refused
dentaku@charon:~$

5 Reaktionen:

  1. Gravatar

    Hmmm, so richtig zufrieden bin ich damit noch nicht. Die Sache mit dem Hitcount scheint sich nur sehr bedingt wieder zu erholen (vielleicht braucht man auch noch Regeln mit –remove?). Bis dahin habe ich mir mal so geholfen:

    # throttle to 5 connections per minute (FIXME: hitcount does not seem to work)
    # iptables -A ssh -m recent --update --seconds 60 --hitcount 5 --name SSH -j REJECT
    iptables -N ssh
    iptables -A ssh -m recent --rcheck --seconds 10 --name SSH -j LOG --log-level info --log-prefix "SSH scan blocked: "
    iptables -A ssh -m recent --update --seconds 10 --name SSH -j REJECT
    iptables -A ssh -m recent --set --name SSH -j ACCEPT
    iptables -A INPUT -p tcp --destination-port 22 -j ssh
    iptables -A FORWARD -p tcp --destination-port 22 -j ssh
    

  2. Gravatar

    ahm, es sollte doch ausreichend sein, erstmal den rootlogin als solchen per ssh grunsätzlich zu verweigern, und im sshd selbst eine begrenzung der möglichen fehlschläge beim login einzutragen? zumindest haben sich diese möchtegern-bruteforce-attäckchen bei meiner kiste gegen null reduziert seit ich den sshd „zugemauert“ habe.

  3. Gravatar

    nachtrag: vergiss den kommentar bitte… ich habs in den falschen hals gekriegt *narf* 😉

  4. Gravatar

    Schon Ok. Ich laß den mal trotzdem stehen, denn diese Sachen muß man natürlich auch (ach was, zuerst!) machen. Was ich hier beschreibe, das ist nur kosmetischer Natur (außer: wenn jemand eine Liste von Exploits durchprobieren möchte, dann braucht er viel länger als sonst).

  5. Gravatar

    Grrr. Wann hat mein WordPress eigentlich die Fähigkeit zum internen Pingback/Trackback verloren?

    Da greife ich das Thema jedenfalls nochmal auf.

Kommentare willkommen