Ich habe gerade eine Ubuntu-Instanz auf Linode bekommen. Um das SSH darauf zu sichern, habe ich fail2ban
(mit apt-get
) installiert, hatte dann aber ein Problem: fail2ban
Meine IP wurde ständig gesperrt (zum Glück für begrenzte Zeit), obwohl ich das richtige Passwort eingegeben habe. Also habe ich stattdessen entfernt fail2ban
und neu installiert denyhosts
. Dasselbe Problem, aber schwerwiegender: Es scheint, als würde meine IP jedes Mal gesperrt, wenn ich mich per SSH anmelde. Ich entferne sie von /etc/hosts.deny
, starte neu denyhosts
und melde mich erneut an, und meine IP wird erneut gesperrt.
Die einzige Erklärung, die mir einfällt, ist, dass ich mich per SSH als Root angemeldet habe (ja, ja, ich weiß); vielleicht ist irgendwo etwas eingestellt, das jeden blockiert, der sich per SSH als Root anmeldet, selbst wenn er sich erfolgreich anmeldet? Das kommt mir bizarr vor. Irgendwelche Ideen? (Das Whitelisting meiner IP ist eine vorübergehende Lösung. Ich möchte mich nicht nur von einer IP aus anmelden können.)
Antwort1
Ich glaube, ich habe schon einmal jemanden sagen hören, dass einige dieser Apps fehlgeschlagene Schlüsselanmeldungen als Brute-Force-Versuch werten. Läuft bei Ihnen ein SSH-Agent mit darin enthaltenen Schlüsseln? Bei der Verbindung mit diesem Set werden alle Schlüssel nacheinander angeboten, bevor auf das Passwort zurückgegriffen wird. Das könnte der Grund sein. Versuchen Sie, die Protokollebene von SSHD höher einzustellen, und überprüfen Sie die Protokolle von Fail2ban/Denyhost.
Bearbeiten:Hierist die Originalquelle, die mich darauf aufmerksam gemacht hat und eine Möglichkeit zur Behebung des Problems bietet.
Antwort2
Bitte überprüfen Sie die folgenden Links:
- http://denyhosts.sourceforge.net/faq.html#3_9
- http://denyhosts.sourceforge.net/faq.html#3_19
- http://denyhosts.sourceforge.net/faq.html#allowed
Wenn Sie die ganze Fail2Ban- und DenyHosts-Idee aufgeben möchten, tun Sie es wie Nathan Powell unten sagt, wechseln Sie von Port 22 zu etwas Unbekannterem
außerdem noch ein paar weitere Ideen:
iptables: Das folgende Beispiel trennt eingehende Verbindungen, die innerhalb von zehn Minuten mehr als zwei Verbindungsversuche über Port 22 unternehmen:
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Schlüsselbasierte Anmeldung
Port-Knocker (geknockt)
Antwort3
Wenn sshd auf die Protokollierungsebene VERBOSE (oder höher) eingestellt ist, fügt es den Satz „...Keiner fehlgeschlagen...“ in das Systemprotokoll ein, wenn sich ein Benutzer erfolgreich anmeldet. Standardmäßig ist fail2ban so eingestellt, dass dies als Fehler gewertet wird. Ich habe das Problem behoben, indem ich die Protokollierungsebene für sshd wieder auf INFO zurückgesetzt habe.
Weitere Einzelheiten finden Sie in meiner Antwort auf diese Frage.fail2ban sperrt mich nach einer Reihe *erfolgreicher* Anmeldungen
Antwort4
Wenn Sie bereit sind, zu fail2ban zurückzukehren, können Sie immer die ignoreip
Direktive in verwenden jail.conf
. Beispiel:
ignoreip = 127.0.0.1 192.168.1.0/32
Auf diese Weise werden Sie nicht wegen Ihrer schlampigen Eingabe blockiert ;-) Es bedeutet auch, dass niemand Sie blockieren kann, indem er Ihre IP fälscht (bei TCP-Verkehr ist das allerdings kein allzu großes Problem).