IIRC, DenyHosts überwacht nur Ihren SSH-Dienst. Wenn Sie es auch zum Schutz anderer Dienste benötigen, ist Fail2ban definitiv die bessere Wahl. Es ist konfigurierbar, nahezu jeden Dienst zu überwachen, wenn Sie bereit sind, die Konfiguration zu optimieren. Dies sollte jedoch nicht erforderlich sein, da die neueren Versionen von Fail2ban Regelsätze enthalten, die für viele gängige Server-Daemons geeignet sind. Die Verwendung von fail2ban über ein einfaches iptables-Ratenlimit hinaus hat den Vorteil, dass ein Angreifer für einen bestimmten Zeitraum vollständig blockiert wird, anstatt nur zu reduzieren, wie schnell er Ihren Server schlagen kann. Ich habe fail2ban mit großartigen Ergebnissen auf einer Reihe von Produktionsservern verwendet und noch nie einen dieser Server gesehen, der durch einen Brute-Force-Angriff verletzt wurde, seit ich damit angefangen habe.
beste Weg, um Brute-Force-Anmeldungen zu verhindern?
Lassen Sie sie erst gar nicht an Ihre Maschine! Es gibt viele Möglichkeiten, Brute-Force-Versuche zu stoppen, bevor sie Ihren Host erreichen, oder sogar auf SSH-Ebene.
Trotzdem ist es eine großartige Idee, Ihr Betriebssystem mit so etwas wie fail2ban zu schützen. Fail2ban unterscheidet sich geringfügig von DenyHosts, obwohl sie im selben Bereich abgespielt werden. Fail2ban verwendet iptables.
http://en.wikipedia.org/wiki/Fail2ban
Es gibt eine Reihe wichtiger Sicherheitstechniken, die Sie berücksichtigen sollten, um Brute-Force-Anmeldungen zu verhindern:
SSH:
Anwendung:
quelle
Ich verwende iptables-Regeln, um neue Verbindungen von derselben IP-Adresse mit einer Rate zu begrenzen (hauptsächlich SSH, aber es würde auch für FTP gut funktionieren). Der Vorteil gegenüber "fail2ban" und anderen Tools dieser Art ist meines Erachtens, dass die iptables-Route vollständig im Kernel-Modus abläuft und keine Tools im Benutzermodus zum Tail / Parsen von Protokolldateien benötigt.
Hunderte fehlgeschlagene SSH-Anmeldungen
In diesem Fall hilft es natürlich auch, die Quelladressen zu beschränken, die auf die betreffenden Protokolle zugreifen können.
Mit SSH sollten Sie wirklich die Zertifikatauthentifizierung verwenden und ohnehin keine Passwörter akzeptieren.
quelle
Eine weitere gute Möglichkeit, SSH zu schützen (ich habe dies für ein Jahrzehnt oder besser verwendet), besteht darin, die aktuellen Bibliotheken in iptables nativ zu verwenden (abhängig von Ihrer Distribution).
Grundsätzlich kann es als Port-Knocking verwendet werden, das in iptables eingebaut ist. Dies erspart Ihnen viele Kopfschmerzen. Solange Sie eine TCP-Verbindung herstellen können (Telnet ist eine Möglichkeit. Ich habe auch SSH-Clients verwendet und sie auf den Port verwiesen. Alles, was eine TCP-Verbindung zu einer angegebenen Portnummer herstellen kann. Ich schaue Sie an, Putty!) Der Client, der die SSH-Verbindung initiiert, kann verwendet werden.
Im Folgenden finden Sie ein Beispiel, bei dem iptables den Port 22 für Ihren Host geöffnet hat, wenn Sie von Ihrem Host aus mit dem Server über Port 4103 telneten. Anschließend können Sie den Port 4102 oder 4104 mit einem Telnet schließen, um das Öffnen zu beenden. Der Grund für 4102 und 4104 ist, dass ein einfacher TCP-Scan nicht geöffnet werden kann. Nur eine TCP-Verbindung (Telnet) zu Port 4103 ermöglicht den Zugriff.
Genießen!
Oh und ich bevorzuge Fail2Ban. Mehr Flexibilität und ich mag, dass das Verbot eher in iptables als in tcpwrappern geschieht.
SSH PORTKNOCKING
quelle
Ein weiterer Unterschied zwischen Fail2ban und Denyhosts besteht darin, dass Denyhosts die Sperrliste für andere Denyhosts-Benutzer freigeben kann. Mit Fail2ban können Sie nur IP-Adressen blockieren, die Ihr Server zuvor gesehen hat. Mit Denyhosts gelangt ein Brute-Force-Versuch möglicherweise nie auf Ihren Server, wenn ihn jemand anderes gesehen hat, und die Blockierungsliste wird vor dem Angreifer auf Ihren Server heruntergeladen gelangt zu Ihrem Computer.
Ein weiterer Unterschied ist, dass Fail2ban iptables verwendet, während Denyhosts tcpwrapper verwendet. Andere haben diesen Unterschied bereits erwähnt, aber es gibt ein paar erwähnenswerte Randbemerkungen.
iptables ist darauf beschränkt, wie viele IP-Adressen Sie effizient blockieren können. Dies ist wahrscheinlich einer der Gründe, warum Fail2ban keinen Mechanismus zum Freigeben von Sperrlisten hat.
Ein weiterer Effekt ist, dass Fail2ban möglicherweise nicht mehr funktioniert oder neu geschrieben werden muss, wenn iptables durch nftables ersetzt wird. Denyhosts werden wahrscheinlich weiterarbeiten.
Beide haben also Vor- und Nachteile. Ich mag beides; Für mich selbst verwende ich Denyhosts, weil ich normalerweise nur SSH schützen möchte und die Sperrliste gerne freigebe.
quelle
Eine Sache, die Sie bei Fail2Ban beachten sollten, ist, dass es anscheinend etwa 10 MB mehr Speicher benötigt als DenyHosts. Wenn Sie also ein 128-MB-VPS verwenden, sollten Sie sich das genauer ansehen. Out-of-the-Box-Fail2Ban wird nur für SSH eingerichtet, was bedeutet, dass DenyHosts ohne Änderungen an der Konfiguration dasselbe in weniger Arbeitsspeicher ausführt.
quelle
denyhosts ist für ssh. fail2ban ist umfassender (HTTP, FTP usw.). Beide verwenden iptables hinter den Kulissen.
quelle
Warum sollte nicht die offene Community die ganze Arbeit für Sie erledigen und stattdessen CSF / LFD verwenden, anstatt sich mit langwierigen iptables oder fail2ban config herumzuschlagen? Ich kann es vor allen anderen genannten Optionen nur wärmstens empfehlen. Informationen zu den Funktionen für Ihre Server finden Sie unter http://configserver.com/cp/csf.html . CSF benötigt kein Control-Panel, sondern bietet eine einfache Benutzeroberfläche für diejenigen, die dies nicht per Shell tun möchten. Und es ist eine Menge stabiler, zuverlässiger Perl-Skripte für Nichtresidente.
quelle
fail2ban scheint keinen Mechanismus zu haben, um eine erfolgreiche SSH-Anmeldung zu erkennen und die Anzahl der Fehler zurückzusetzen.
Der Standardfilter für sshd (zumindest bei meiner Debian-Installation) taktet eine Fehleranzahl für jeden ssh-Schlüssel, den der Client vorlegt und den der Server ablehnt. Einige Benutzer zeigen bei jedem Login viele Schlüssel an und werden regelmäßig gesperrt, obwohl ihre Anmeldung erfolgreich war, nachdem einige Schlüssel durchlaufen wurden.
Infolgedessen denke ich derzeit über eine Abkehr von fail2ban nach. Zumindest in dieser Hinsicht ist Denyhosts besser. Es ist jedoch anscheinend keine gute Option mehr und wird in neueren Versionen von Debian nicht mehr unterstützt (einige Diskussionen unter https://www.chrissearle.org/2015/06/16/replacing-denyhosts-with-fail2ban-for- debian / )
Ich habe hier keine gute Lösung.
quelle
Eigentlich denke ich, dass DenyHost in der Lage ist, viele andere Dienste außer dem SSHD-Dienst zu unterbinden. In der Konfigurationsdatei -
/etc/denyhosts.conf
stehen folgende Codezeilen:Wenn wir also die
BLOCK_SERVICE
VariableALL
wie oben einstellen , können wir unseren ssh-Dienst beobachten.quelle
Denyhosts Version 3.0: Jedes Mal, wenn eine IP-Adresse in einer Protokolldatei angezeigt wird, öffnet Denyhosts die Datei hosts.deny und liest das Ganze so, dass es mit der Adresse übereinstimmt. Jedes Mal. Im Speicher ist nichts zwischengespeichert. Wenn Sie eine große hosts.deny-Datei haben und vielen Tests (vielen Protokolldateieinträgen) unterliegen, wird Denyhosts zu einem CPU-Hog, der die hosts.deny-Datei für jede angezeigte IP-Adresse liest und erneut liest. Nicht gut.
Wenn Sie die iptables-Unterstützung aktivieren, erstellt Denyhosts große, langsame Listen blockierter IP-Adressen. Denyhosts verwendet weder ipset noch nftables, um effiziente IP-Maps zu erstellen.
quelle