Was ist der einfachste Weg, um maximale Anmeldeversuche in einer LAMP-Umgebung einzurichten (sshd über yum installiert)? Gibt es ein Paket oder eine einfache Firewall-Regel?
Was ist der einfachste Weg, um maximale Anmeldeversuche in einer LAMP-Umgebung einzurichten (sshd über yum installiert)? Gibt es ein Paket oder eine einfache Firewall-Regel?
Antworten:
Ich benutze Fail2ban ; Ich habe Denyhosts in der Vergangenheit benutzt und es funktioniert auch ganz gut. Ich bevorzuge Fail2ban jetzt, weil es konfigurierbarer ist und die Überwachung mehrerer verschiedener Dienste besser beherrscht - zum Beispiel die Anmeldeseite von sshd und Ihrer Web-App gleichzeitig (vorausgesetzt, Sie protokollieren Fehler).
Eine andere Methode, die Sie in Betracht ziehen könnten, ist die Implementierung einer LIMIT-Regel in iptables; Ich kann Ihnen leider nicht dabei helfen, es sei denn, Sie möchten Shorewall installieren , und dann verweise ich Sie einfach auf die ausgezeichnete Dokumentation auf dieser Site , um herauszufinden , wie Sie eine LIMIT-Regel konfigurieren, um die Brute-Fähigkeit von Personen einzuschränken -zwingen Sie Ihren Server.
Ich verwende keine Tools von Drittanbietern. Daher habe ich eine Kombination aus SSH-Konfiguration und Firewall-Einstellungen verwendet. Mit der folgenden Lösung kann ein Angreifer in 2 Minuten genau 3 Fehler-Logins erstellen, oder er wird für 120 Sekunden blockiert.
1) Fügen Sie die folgende Zeile hinzu /etc/ssh/sshd_config
MaxAuthTries 1
Dies ermöglicht nur einen Anmeldeversuch pro Verbindung. Starten Sie den SSH-Server neu.
2) Fügen Sie die folgenden Firewall-Regeln hinzu
Erstellen Sie eine neue Kette
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
Blockieren Sie jede IP-Adresse für 120 Sekunden, wodurch innerhalb von 120 Sekunden mehr als drei Verbindungen hergestellt werden. Beim vierten Verbindungsversuch wird die Anforderung an die SSHATTACKKette delegiert , die für die Protokollierung des möglichen SSH-Angriffs verantwortlich ist und die Anforderung schließlich löscht.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
3) Siehe Protokolleinträge möglicher ssh-Angriffe in /var/log/syslog
Dec 27 18:01:58 ubuntu kernel: [ 510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0
SSH ist kein bestimmtes Paket zugeordnet, um dies einzurichten. Sie können jedoch CSF (ConfigServer & Firewall) installieren.
Zwei Konfigurationsänderungen, die ich vorschlagen würde, würden in der Datei vorgenommen: / etc / ssh / sshd_config
Begrenzen Sie die maximale Anzahl nicht authentifizierter Verbindungen, die der SSH-Server gleichzeitig verarbeiten kann. Je kleiner dieser Wert ist, desto schwieriger ist es für Skriptkinder, parallele, koordinierte Crackversuche mit mehreren Verbindungen durchzuführen. bearbeite sshd_config und ändere MaxStartups von "10" auf "3:50:10". Die durch Doppelpunkte getrennten Werte weisen den ssh-Server an, "3 Benutzern zu erlauben, sich gleichzeitig anzumelden und Verbindungsversuche zwischen 3 und maximal 10 zufällig und zunehmend zu unterbrechen". Hinweis: Dies sollte auf Servern mit einer beträchtlichen Anzahl gültiger SSH-Benutzer, die sich anmelden, erhöht werden.
Reduzieren Sie die maximale Zeit, die für die erfolgreiche Anmeldung erforderlich ist, bevor Sie die Verbindung trennen. Die Standardeinstellung von 2 Minuten ist zu viel Zeit, um einen nicht authentifizierten Verbindungsversuch offen zu halten (siehe oben). 30 Sekunden sind mehr als genug Zeit, um sich einzuloggen:
Ich verwende diese IPTables-Regeln dafür:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl --name SSH -j DROP
Dadurch können innerhalb von 5 Minuten nur 4 TCP / SYN-Pakete von einer IP-Adresse an Port 22 gesendet werden. Bei mehreren Versuchen wird die Tür geschlossen, bis 5 Minuten vergangen sind.
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Es gibt eine Option, die Sie in Ihre sshd_config-Datei für den Server einfügen können:
MaxAuthTries
Specifies the maximum number of authentication attempts permitted per
connection. Once the number of failures reaches half this value, additional
failures are logged. The default is 6.