Wie blockiere ich alle Root-Anmeldeversuche mit Denyhosts und / oder Fail2Ban?

8

Ich blockiere derzeit alle SSH-Anmeldungen mit root. Aber ich wollte noch einen Schritt weiter gehen und die IP-Adresse des Clients blockieren, der versucht hat, sich als Root anzumelden. Ich habe derzeit Denyhosts und Fail2Ban eingerichtet und arbeite. Kann ich Denyhosts und / oder Fail2Ban verwenden, um die IP-Adressen derer zu blockieren, die versuchen, sich als Root anzumelden?

Samwell
quelle

Antworten:

2

Bearbeiten Sie abhängig von Ihrer Distribution /etc/fail2ban/jail.conf den [ssh]Abschnitt Aktualisieren , um so etwas anzuzeigen

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

Ändern Sie die Parameter nach Bedarf. Root wird nicht speziell blockiert, aber jeder Versuch schlägt fehl. Sei vorsichtig mit maxretryund dem bantime. Wenn Sie mit Ihrem eigenen Passwort versagen, während Sie maxtretryauf niedrig eingestellt sind, blockieren Sie sich für das bantime. Starten Sie fail2ban neu.

Ich würde nicht versuchen, die IP für immer zu blockieren, da viele Versuche von dynamischen IPs kommen, die einige legitime Benutzer zu einem späteren Zeitpunkt blockieren könnten.

(Einige Distributionen bieten eine Datei jail.options für Ihre Änderungen an. Dies ist der bevorzugte Ort, an dem Sie Ihre Änderungen vornehmen können, da sie nicht durch Aktualisierungen beeinflusst werden sollten, die die conf überschreiben.)

Chris
quelle
4
Gute Infos, aber ich denke, er wollte wissen, wie man alle Anmeldungen mit User Root blockiert ... das kann man in deiner Antwort nicht sehen. Vielleicht hast du das vergessen.
Mose
17

Kopieren Sie diesen Code in eine neue Datei /etc/fail2ban/filter.d/sshd-root.conf:

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$

ignoreregex = 

BITTE BEACHTEN SIE, dass Sie möglicherweise den Failregex bearbeiten müssen, um fehlgeschlagene Root-Anmeldeversuche genau zu identifizieren. Verwenden Sie:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf

um zu testen, ob die richtigen Protokolleinträge identifiziert werden.

Dann müssen Sie Ihre jail.local bearbeiten, um den neuen Filter nutzen zu können - fügen Sie Folgendes hinzu:

[ssh]

enabled  = true
port     = 1:65535
filter   = sshd-root
logpath  = /var/log/auth.log
bantime  = 604800
maxretry = 3

Natürlich sollten Sie diese Werte an Ihre Bedürfnisse anpassen. Die obigen Einstellungen löschen alle eingehenden Pakete von der fehlerhaften IP-Adresse nach drei Versuchen, sich als Root anzumelden, und geben die IP nach einer Woche wieder frei.

ChrisG
quelle
1
Dies verdient es wirklich, die akzeptierte Antwort zu sein, da es tatsächlich die Frage beantwortet.
Peelman
Dies ist definitiv die richtige Antwort. Deaktivieren Sie am besten die Root-Anmeldungen in der sshd-Konfiguration und setzen Sie maxretry in jail.conf auf 1.
Anteatersa
1

Da der Standard /etc/fail2ban/filter.d/sshd.confbereits einen regulären Ausdruck für AllowUsers und DenyUsers hat ...

...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...

Folgendes wird:

  • Zulassen von Verbindungen exampleusernamevon externen IPs
  • Und rootoder irgendwelche Verbindungen im lokalen Netzwerk (192.168.0. *)

Die Zeile `/ etc / ssh / sshd_config ':

AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1

Und in /etc/fail2ban/jail.conf:

ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 99999999 
bantime  = 99999999
jmunsch
quelle
0

Wie haben Sie SSH-Anmeldungen blockiert? / bin / false oder die Option sshd_config DenyUsers?

Ich kann mir keine Antwort aus meinem Kopf vorstellen, aber IIRC Denyhosts analysiert die Protokolldatei. Überprüfen Sie also, ob Sie einen fehlgeschlagenen Eintrag in der Protokolldatei erhalten, nachdem jemand versucht hat, sich bei deaktiviertem Root anzumelden

MitziMeow
quelle
2
Ich habe die SSH-Konfigurationsdatei bearbeitet /etc/ssh/sshd_configund PermitRootLoginvon Ja zu Nein geändert . Ich weiß nicht, ob dies relevant ist, aber ich habe rssh installiert, damit sich nur bestimmte Benutzer mit sftp anmelden können, ssh jedoch nicht.
Samwell
Haben Sie die SSH-Protokolldateien überprüft, wenn der Anmeldeversuch des Benutzers fehlgeschlagen ist?
MitziMeow
Ja, ich kann sehen, dass es viele fehlgeschlagene Benutzeranmeldeversuche mit vielen verschiedenen IP-Adressen gibt, die ich nicht erkenne.
Samwell
dann sollten Denyhosts funktionieren
MitziMeow