Weg ist frei
Weg ist frei
Oh, was soll ich nur tun? Mein eigenes fail2ban hat mich gesperrt, und fail2ban verwendet "bantime.increment = true" ((( Was soll ich nur tun?
Zuallererst: Keine Panik.
Ermitteln Sie die aktuelle IP-Adresse (https://myip.ru). Deaktivieren Sie WLAN auf Ihrem Smartphone und aktivieren Sie den Hotspot. Verbinden Sie Ihren Computer mit dem Hotspot und entfernen Sie die blockierte IP-Adresse aus file2ban.
ssh root@4.3.2.1 'fail2ban-client set sshd unbanip 1.2.3.4'
Trennen Sie die Verbindung zum Hotspot und schalten Sie das normale WLAN ein, wie zuvor.
1. Lass uns einen Türklopfer bauen
Das Prinzip ist einfach: Sie greifen von einem beliebigen Gerät aus auf eine sichere URL zu (zum Beispiel von einem Telefon über mobiles Internet), Nginx überprüft Benutzername und Passwort und führt ein leichtgewichtiges Skript aus, das die Adresse aus $remote_addr nimmt und fail2ban-client unban ausführt.
cat << 'EOF' > /usr/local/bin/fail2ban-unban-me.sh
#!/bin/bash
echo "Content-type: text/plain; charset=utf-8"
echo ""
CLIENT_IP="${REMOTE_ADDR:-$1}"
if [ -z "$CLIENT_IP" ]; then
echo "Error: IP address not detected."
exit 1
fi
echo "Request received from IP: $CLIENT_IP"
echo "Attempting to unban across all jails..."
# Wir heben das Verbot für alle aktiven Jails (sshd, nginx-scraping usw.) auf.
JAILS=$(fail2ban-client status | grep "Jail list:" | sed 's/.*:\t//' | tr -d ',' )
for JAIL in $JAILS; do
RESULT=$(fail2ban-client set "$JAIL" unbanip "$CLIENT_IP" 2>&1)
echo "[$JAIL] $RESULT"
done
echo ""
echo "Done! You can now try to connect again."
EOF
Machen Sie es ausführbar und erlauben Sie Nginx, fail2ban-client auszuführen.
chmod +x /usr/local/bin/fail2ban-unban-me.sh
echo "www-data ALL=(ALL) NOPASSWD: /usr/bin/fail2ban-client" > /etc/sudoers.d/www-data-fail2ban
chmod 0440 /etc/sudoers.d/www-data-fail2ban
2. Installieren Sie fcgiwrap
Nginx selbst führt keine Bash-Skripte aus, daher verwenden wir das Standard-fcgiwrap.
apt update && apt install -y fcgiwrap
systemctl enable --now fcgiwrap
3. Erstellen Sie eine Passwortdatei
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd_unban admin
4. Nginx konfigurieren
Fügen Sie der Konfiguration Ihrer bestehenden HTTPS-Website einen versteckten Speicherort hinzu (z. B. /etc/nginx/sites-available/default oder einen anderen virtuellen Host).
location /knocker {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd_unban;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/local/bin/fail2ban-unban-me.sh;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param DOCUMENT_ROOT /;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
Hinweis: Aktualisieren Sie das Skript /usr/local/bin/fail2ban-unban-me.sh, um fail2ban-client intern über sudo aufzurufen.
sed -i 's/fail2ban-client/sudo \/usr\/bin\/fail2ban-client/g' /usr/local/bin/fail2ban-unban-me.sh
Nginx prüfen und neu starten:
nginx -t && systemctl reload nginx
5. Wie man es benutzt
Wenn Sie von fail2ban gesperrt wurden (zum Beispiel über SSH):
https://your-domain.com/knocker
Geben Sie Ihre Anmeldedaten (Benutzername/Passwort) von htpasswd ein. Sie erhalten eine Antwort:
Request received from IP: 1.2.3.4
Attempting to unban across all jails...
[sshd] 1.2.3.4
[nginx-scraping] 0
[dpi-ai] 0
Done! You can now try to connect again.
Die IP-Adresse wird sofort aus den Sperrlisten von iptables/nftables entfernt, und Sie können sich wieder per SSH verbinden.