Der Fail2ban-Block mit IPtables funktioniert unter Debian Lenny nicht. [SSH-Port verschoben]


11

Ich habe vor kurzem beschlossen, einige Sicherheitsmaßnahmen durchzuführen. Ich habe meine Protokolle gesehen und es gab einige Versuche gegen meinen SSH-Server. Zuerst habe ich den SSH-Port von der Standardeinstellung 22 entfernt. Danach habe ich etwas über Fail2ban , BlockHosts und DenyHosts gelesen .

Ich habe mir das erste angesehen: Es ist einfach zu konfigurieren, alles ist verständlich; Aber als ich versuchte, "seinen Schutz zu prüfen", sind die Tests fehlgeschlagen . Alles scheint gut zu sein, aber ich kann trotzdem auf den Server zugreifen.

Ich habe auch die IPtables getestet: # iptables -I INPUT -j DROP- Danach ging meine SSH-Verbindung verloren (also, was ich wollte). Dann # iptables -I INPUT -s 84.x.y.z -j DROPhat das auch geklappt.

Aber welche Regeln hat der Fail2ban gemacht, das funktioniert nicht: ( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

Kernelmodule geladen: ( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

Versionen:

  • Debian Lenny 5.06, Kernel 2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Test Nr. 1 Schritt für Schritt:

  1. Konfigurieren Sie Fail2ban auf niedrige Bantime. 60 Sek. Dann neu laden.
  2. Versuchen Sie, sich (mit SSH) direkt mit falschem Passwort anzumelden.
  3. Geben Sie zum 6. Mal das richtige Passwort ein (maximal 4 Versuche hier). Ich habe mich angemeldet. Ich kann auch auf die von diesem Server gehostete Webseite zugreifen.
  4. iptables -Lzeigte mir wie oben erwähnt. Das Verbot war also aktiv, als ich eine Verbindung herstellte und meinen Server befahl.

Test Nr. 2 Schritt für Schritt:

  1. Stoppen Sie Fail2ban. Erstellen Sie ein atSkript, um die unten beschriebene Verbotsregel in Zukunft zu entfernen. ( iptables -D INPUT 1)
  2. Erstellen Sie eine Verbotsregel: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. Ich konnte nichts anderes eingeben, die SSH-Verbindung ist unbrauchbar. Ich konnte nicht auf die Webseite zugreifen. Also, was ich von iptables wollte.
  4. Nach dem atSkript kann ich auf meinen Server zugreifen.

Ich sehe die Lösung nicht. Was soll ich tun, damit mein IPtables-Verbot (von Fail2ban) funktioniert?


Frage bearbeitet! Irgendwelche Ideen?
Antivirtel

Antworten:


8

Ich habe das Problem gefunden, was ich getan habe, bevor ich fail2ban installiert habe. Entschuldigung für Ihre Zeit.

Aus Sicherheitsgründen habe ich meinen sshd von Port 22 auf einen anderen verschoben. Die Referenz in iptablesbezieht sich nur auf Port 22. Ich dachte, dass es eine Variable ist, die sich immer auf den aktuellen sshd-Port bezieht. Aber NICHT .

Die genaue Lösung (wenn Sie Ihren Daemon von seinem ursprünglichen Port entfernt haben):

  1. Öffnen Sie jail.local (oder .conf).
  2. Finden Sie Ihren Service (in geschweiften Klammern).
  3. Befestigen Sie den portAbschnitt an allen . Beispiel:port = all
  4. Fügen Sie banactionnach der Portzeile eine vorhandene Zeile mit dem Wert iptables-allports hinzu oder bearbeiten Sie sie . Beispiel : banaction = iptables-allports.
  5. Starten Sie den Daemon neu. Beispiel : # service fail2ban restart.

Ich konnte keine Lösung finden, um die port sshRichtlinie zu ändern oder dort eine Nummer zu schreiben. Wenn Sie eine Lösung haben, die nicht alle Ports umfasst, höre ich sie mir an!


1
Sie müssen lediglich die Portnummer anstelle des Namens angeben.
Julian Knight

Beachten Sie auch, dass Ihr iptable-Name weniger als 32 Zeichen enthalten muss, um erfolgreich hinzugefügt zu werden.
Adrian Lopez

2

Ich hatte das gleiche Problem mit fail2ban, das nicht gesperrt wurde, nachdem ich meinen SSH-Server auf den nicht standardmäßigen Port 12345 verschoben hatte (sagen wir mal).

Damit fail2ban nach mehreren fehlgeschlagenen Authentifizierungsversuchen die richtigen Regeln erstellt, habe ich sie bearbeitet /etc/fail2ban/jail.conf.

port = ssh 

in

port = 12345

Ich gehe davon aus, dass ein ähnlicher Ansatz für andere Dienste an nicht standardmäßigen Ports funktionieren würde.


0

Die Einstellungen für fail2ban sind in /etc/fail2ban/jail.local. Bei einer Standardinstallation bin ich mir nicht sicher, ob es da ist. Dann kopieren Sie jail.confin jail.local, sodass Sie beide Dateien haben /etc/fail2ban/. Bearbeiten jail.local, gehen Sie zu der Zeile mit [ssh]und aktivieren Sie es wie folgt :

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

Starten Sie danach fail2ban neu:

sudo /etc/init.d/fail2ban restart

Es ist möglich, dass es jetzt funktioniert, ich habe es so eingerichtet und es funktioniert.


Ich denke, du hast meine Frage nicht verstanden! Fail2ban macht, was ich will: Protokolle überwachen und Angreifer verbieten. Aber dieses Verbot, was IPtables tun sollten, funktioniert nicht. Ich kann immer noch mit der oben genannten Regeleinrichtung auf den Server zugreifen.
Antivirtel

Entschuldigung, ich hatte es eilig, also habe ich es falsch verstanden und da ich das gleiche Problem hatte, das ich mit dem Hinzufügen von jail.local gelöst habe, dachte ich, es würde helfen. Wenn Sie alles richtig eingestellt haben, weiß ich leider nicht, wo das Problem liegt, hoffe aber, dass es jemand anderes tut.
Enedene

0

Sie haben "Fail2ban 0.8.3-2sid1" als installiert aufgeführt. Dies ist eine nicht unterstützte Konfiguration. Sid-Pakete sollten nicht in einer stabilen Umgebung installiert werden.

Ich verwende Debian 6 (Squeeze), das von Lenny aktualisiert wurde, in einer VM speziell als SSH-Server für mein Zuhause. Ich benutze auch fail2ban. Ich habe Ihren Test Nr. 1 durchgeführt und alles hat so funktioniert, wie es sollte. Ich konnte mich nicht für die maximale Anzahl von Versuchen anmelden, und dann wurden meine Anmeldeanforderungen für 60 Sekunden gelöscht.

Meine Versionsliste:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6


In diesem Fall empfehle ich ein Dist-Upgrade.
James Sumners

okok, es ist nicht zu einfach, aber ich werde es irgendwie schaffen ... - vielleicht eine saubere Neuinstallation
Antivirtel

sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. Es ist ganz einfach.
James Sumners

Ja, aber gibt es eine Chance, das nächste Mal nicht zu booten ... In den Versionshinweisen heißt es, dass neuer Kenel + neues udev-System ... - war es mit Ihrer Maschine erfolgreich?
Antivirtel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.