IP-Tables config gegen SSHD Brute-force

Gemeinsam ins Internet mit Firewall und Proxy.
Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

IP-Tables config gegen SSHD Brute-force

Beitrag von Crack02 » 05.06.2005 22:10:32

iptables ist eine ziemlich komplexe Sache und ich steig da nicht wirklich durch.
Ich würde mit iptables gerne brute-force Attacken auf meinen SSHd vorbeugen.
(ServerOS: Suse Pro 9.0, ich weis, das ist ein Debianforum, aber ich bin überzeugt, dass sich hier auch SuSE Leute herumtreiben....außerdem is das Forum hier besser :P)
Normal probiert die Source ca alle 2 Sekunden einen Angriff. Wenn mehr als 4 versuche in 10 sekunden von der gleichen IP stattfinden, wird die IP auf die Blacklist gesetzt, von mir aus 1 Stunde.

Ist sowas machbar?

Code: Alles auswählen

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 recent --update --seconds 60 --hitcount 4 --rttl \
 --name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 \
 --hitcount 4 --rttl --name SSH -j DROP
Obiges erlaubt maximal 3 Verbindungs-Versuche pro Minute von jeder IP-Adresse im Internet. Sollte diese Marke überschritten werden muss eine Minute gewartet werden bis wieder Verbindungen zugelassen werden.
Heißt hier "von jeder IP-Adresse", dass, wenn 4 Verbindungen pro Minute statt finden, dass das gesamte Internet ausgesperrt wird oder nur die besagte Angriffs-IP ausgesperrt wird?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 05.06.2005 23:06:04

iptables -mrecent --help hat geschrieben: --update ... Match if source address in list, also update last-seen time.
--hitcount hits ... Specifies that the match will only occur if source address seen hits times.
das ist der entscheidende Punkt.
Das DROP darf ja nur ausgeführt werden, wenn die Bedingungen dafür erfüllt sind und diese sind nur im Zusammenhang mit einer speziellen "source address" erfüllt.


Gruß
gms

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 06.06.2005 17:10:22

Achja........................und wie/wo/wie oft setze ich diese Parameter jetzt in oben genanntes Script ein?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: IP-Tables config gegen SSHD Brute-force

Beitrag von gms » 06.06.2005 18:07:04

Crack02 hat geschrieben:Heißt hier "von jeder IP-Adresse", dass, wenn 4 Verbindungen pro Minute statt finden, dass das gesamte Internet ausgesperrt wird oder nur die besagte Angriffs-IP ausgesperrt wird?
Es wird nur die besagte Angriffs-IP ausgesperrt, die anderen Adressen erfüllen ja nicht DEINE Bedingung für das DROP target.

wenn du jetzt noch alle Pakete mit state==ESTABLISHED durchläßt, und von dieser Zeile:

Code: Alles auswählen

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \ 
--name SSH -j ACCEPT
das ACCEPT entfernst
und am Ende alle Pakete mit state==NEW durchläßt,
könnte es funktionieren.

Also ungefähr so:

Code: Alles auswählen

# bestehende verbindungen erlauben
iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
# source adresse in liste eintragen
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
# wenn von der eingehenden source address in den letzten 60 sekunden 4 x versucht 
# wurde eine verbindung aufzubauen, logge das paket
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl  --name SSH -j LOG --log-prefix "SSH_brute_force " 
# wenn von der eingehenden source address in den letzten 60 sekunden 4 x versucht 
# wurde eine verbindung aufzubauen, droppe das paket
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60  --hitcount 4 --rttl --name SSH -j DROP
# erlaube alle anderen
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
Gruß
gms

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 06.06.2005 19:28:28

Könnte oder tut es? Weil ich würde mich nur sehr ungern per SSH von meinem Root-Server aussperren :(

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 06.06.2005 19:58:42

Crack02 hat geschrieben:Könnte oder tut es? Weil ich würde mich nur sehr ungern per SSH von meinem Root-Server aussperren :(
dann solltest du es eben einmal auf einer anderen maschine im LAN testen ... ich glaube nicht das gms dir für irgendwas etwas unterschreiben wird - das würde ich auch nicht - das ist ja ein teil es opensource gedanken

das testen solltest du sowieso machen - neue sachen gleich im produktivumfeld testen machen nur leute mit extrem guten selbsvertrauen und/oder nerven wie stahlseilen

gruesse markus

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 09.06.2005 20:44:09

Hätte ich auch nicht erwartet.

Jedenfalls funktioniert es. Zumindest soweit ich das getestet habe. Danke schonmal/nochmal an alle.
ich hatte es unter slackware getestet. jeztt wo ich es am root eingeben wollte

Code: Alles auswählen

iptables v1.2.8: Couldn't load match `recent':/usr/lib/iptables/libipt_recent.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.8: Couldn't load match `recent':/usr/lib/iptables/libipt_recent.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.8: Couldn't load match `recent':/usr/lib/iptables/libipt_recent.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables selbst ist installiert. hab ja vorher schon mit -L geschaut ob was drin is und mit -F ausgeleert.......

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 10.06.2005 12:49:04

Dir fehlt das iptables-Modul fuer recent. Du musst in der Kernelkonfig unter "Networking options" -> "IP: Netfilter Configuration" den Punkt "recent match support" aktivieren und deinen Kernel neu bauen denk ich. Damit hast du dann das passende Modul.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 10.06.2005 12:57:59

nein das erklärt aber nicht warum ihm diese Librarys fehlen.. ihm wird ein Paket fehlen.. nur leider kann ich das höchstens für Debian rausfinden.. SuSE? keine Ahnung
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 10.06.2005 13:47:24

Doch, genau das erklaert es. Die verschiedenen Zusaetze zu iptables sind eigene Module, deren Kompilation man in der Kernelconfig einschalten muss. Das Recent-Modul duerfte sicher kein Modul sein, das per default mit gebaut wird. Also mal checken, ob besagte Option im benutzten Kernel aktiviert ist...

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 10.06.2005 14:11:23

wäre mir aber neu das der Kernel Module nach /usr/lib/iptables schiebt.. sorry aber das will mir nicht in den Kopf!
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 10.06.2005 15:11:24

Stimmt. Die Files sollten auch unter /lib/modules/<kernelversion>/kernel/net/ipv4/netfilter liegen. Fakt ist aber, dass die besagte Datei meiner Meinung anhand der in der Kernelkonfiguration eingestellten Optionen erstellt wird und damit in oben genanntem Verzeichnis landen sollte, wo iptables sie dann auch finden sollte.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 10.06.2005 15:19:22

hmm.. vielleicht hilft dann ein

Code: Alles auswählen

ldconfig
?? villeicht sucht er sie auch nur an der falschen Stelle... aber wäre trotzdem komisch.. ist halt SuSE.. da kann ich zum Kernel eigentlich so gut wie nichts sagen..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 10.06.2005 16:12:06

mhm neuen Kernel bauen, das risiko geh ich beim root server ned ein^^.

bei "ldconfig" passiert nix...

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 10.06.2005 16:23:35

ja ldconfig soll auch nur im Hintergrund etwas gradebiegen.. danach nochmal versuchen die iptables Befehle abzusetzen
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 10.06.2005 16:47:41

achso. ok ich probiers mal.

edit:
ne die gleichen fehler kommen :(

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 10.06.2005 16:48:52

Was mir grade auffaellt, bei mir heissen diese Iptables-Module z.B.: ipt_length.o, ipt_MARK.o, sprich, es sind keine echten Bibliotheken.
Welchen Kernel hast du denn da im Einsatz? Meine Infos beziehen sich auf 2.4.28.

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 10.06.2005 16:53:23

ich hab auch einen 2.4.2x
ich kann mal schaun ob modprobe was findet

edit

Code: Alles auswählen

ipx21188:~ # modprobe ipt_length.o
modprobe: Can't open dependencies file /lib/modules/2.4.21-286-smp4G/modules.dep (No such file or directory)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 10.06.2005 17:11:57

Was gibts bei dir alles an Dateien unter /lib/modules/2.4.21-286-smp4G/kernel/net/ipv4/netfilter?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 10.06.2005 18:00:36

für "recent" muß sowohl das Kernelmodul "ipt_recent", als auch das Shared-Object "libipt_recent.so" (Teil des iptables-Pakets) vorhanden sein

Code: Alles auswählen

root:~# find /lib -name "*ipt_recent*"
/lib/modules/2.6.11-vk-2/kernel/net/ipv4/netfilter/ipt_recent.ko
/lib/modules/2.6.11-vk-1/kernel/net/ipv4/netfilter/ipt_recent.ko
/lib/modules/2.6.11-vk-3/kernel/net/ipv4/netfilter/ipt_recent.ko
/lib/iptables/libipt_recent.so
Gruß
gms

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 11.06.2005 07:51:34

Code: Alles auswählen

ipx21188:~ # find /lib -name "*ipt_recent*"
/lib/modules/2.4.27/kernel/net/ipv4/netfilter/ipt_recent.o
Was gibts bei dir alles an Dateien unter /lib/modules/2.4.21-286-smp4G/kernel/net/ipv4/netfilter?
es existieren nur folgende ordner

Code: Alles auswählen

ipx21188:/lib/modules # dir
total 28
drwxr-xr-x    7 root     root         4096 Jun 10 04:01 .
drwxr-xr-x    8 root     root         4096 Feb  4 16:57 ..
drwxr-xr-x    9 root     root         4096 Jun 10 04:01 2.4.21-291-smp4G
drwxr-xr-x    2 root     root         4096 May 24 14:32 2.4.21-override-smp4G
drwxr-xr-x    4 root     root         4096 Sep 21  2004 2.4.27
drwxr-xr-x   14 root     root         4096 Jun 10 04:01 precompiled
drwxr-xr-x    3 root     root         4096 May 24 14:27 scripts

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 11.06.2005 08:51:25

also halten wir fest... du willst ipt_recent verwenden..

nochmal die Frage:

was gitb dir:

Code: Alles auswählen

find /lib -iname *ipt_recent*
weil bis jetzt sehe ich noch nicht das dir das Kernel Modul fehlt, sondern die Fehlermeldung sagt nur aus, dass dir Dateien aus dem Userspace von Iptables fehlen.
Ich kenne mich mit SuSE nicht aus.. kannst du mal in Yast2 schauen ob du für Iptables noch was installieren kannst?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Crack02
Beiträge: 68
Registriert: 27.12.2004 14:13:56

Beitrag von Crack02 » 11.06.2005 12:58:15

ich will verwenden, was nötig ist, damit das script funktioniert.

das gibt mir

Code: Alles auswählen

ipx21188:~ # find /lib -iname *ipt_recent*
/lib/modules/2.4.27/kernel/net/ipv4/netfilter/ipt_recent.o
im yast hab ich nix gefunden

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 11.06.2005 13:03:17

was sagt ein

Code: Alles auswählen

nodprobe ipt_recent
# sorry natürlich nicht nodprobe sondern
modprobe ipt_recent
?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 11.06.2005 13:08:27

laut http://www.novell.com/products/linuxpac ... ables.html ist die "libipt_recent.so" Shared Library Bestandteil des "iptables" Pakets von SuSE 9.3.

Du hast also eine SuSE Version, die diese Funktionalität nicht unterstützt.

Gruß
gms

Antworten