[résolu]Iptables ipt_recent

Bonjour à tous,

Je suis sur Debian 2.6.18-6-686

Je souhaiterai avoir quelques infos et conseils sur l’utilisation du module ipt_recent pour iptables afin de bloquer les tentatives d’accès ssh.

Voici les règles que j’ai trouvé sur un site :

iptables -N SSHSCAN
iptables -A INPUT -p tcp --dport 22 -m state –state NEW -j SSHSCAN
iptables -A SSHSCAN -m recent –set –name SSH
iptables -A SSHSCAN -m recent –update –seconds 300 –hitcount 3 –name SSH -j DROP

J’ai bien chargé le modules, aucune erreurs, pareil lors de l’éxécution des règles iptables.
Sauf que ca ne fonctionne pas, j’ai beau relancé des connexion ssh, je ne suis pas tjrs pas bloqué.
Auriez vous quelques conseils à me donner ?

Merci d’avance !

Me parait bizarre de faire une nouvelle table, tu rajoutes simplement

iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --set iptables -I INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 90 --hitcount 3 -j DROP
comme règles et ça suffit.

euh si sa peux aider voila mon vieux truc sur icmp poure ne tolerer qu’une seul réponse enfin sa reste configurable :slightly_smiling:

#************************************************************************
#permet X paquet (tout les type icpm dans ce cas) par ip 
#contrairement aux module -m limit le module -m recent permet
# de donner un groupe de paquet par IP et non pour tout le monde
#car si une ip sature l icpm il va gèner toutes les autres connections.
#ne peux pas recevoir un nouveau paquet avant que ce délai
#ne soie ecouler
TIME_RESET_IN=60 
#ne peux pas emettre un nouveau paquet avant que ce délai
#ne soie ecouler
TIME_RESET_OUT=60 
MAX_REPONSE_IN=1 #Nombre de paquet permis en entrée (a la suite)
MAX_REPONSE_OUT=1 #Nombre de paquet permis en sortie (a la suite)
#----------------------------------------syntaxe
ip_in="iptables -A INPUT -p"
ip_out="iptables -A OUTPUT -p"
#**********************************************************************

iptables -N ICMP_ALL_OUT
iptables -N ICMP_ALL_IN

$ip_out icmp -m state --state new -m recent --rcheck --name ICMP_ALL_OUT --hitcount $MAX_REPONSE_OUT --seconds $TIME_RESET_OUT -j DROP
$ip_out icmp -m state --state new -m recent --set --name ICMP_ALL_OUT -j ACCEPT

$ip_in icmp -m state --state new,established,related  -m recent --rcheck --name ICMP_ALL_IN --hitcount $MAX_REPONSE_IN --seconds $TIME_RESET_IN -j DROP
$ip_in icmp -m state --state new,established,related  -m recent --set --name ICMP_ALL_IN -j ACCEPT

$ip_out icmp -j DROP
$ip_in icmp -j DROP

Bonjour et merci pour vos réponses.

Ta règle fonctionne bien fran.b, au bout de 3 SYN je suis bien bloqué. Par contre je suis bloqué pendant plusieur minutes mais je ne sais pas d’ou vient ce temps. Voila le fichier /proc/net/ipt_recent/DEFAULT

src=172.20.1.169 ttl: 128 last_seen: 2000564 oldest_pkt: 7 1834348, 1836713, 1840083, 1875686, 1882413, 1972882, 2000564, 1672491, 1674858, 1677619, 1678353, 1679857, 1682864, 1699357, 1700109, 1701617, 1704609, 1706374, 1707125, 1748608

Ce ttl pourrai etre la cause ? mais les 128 second ne correspondent pas au temps oue je suis banni

Theoriquement, la règle t’interdit plus de 3 nouvelles connexions à l’intérieur d’un délai de 90s soit une minute et demi. cf par exemple http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/explicitmatches.html#recentmatch

Salut,

Pour bloquer les bruteforce SSH, tu as aussi l’utilitaire fail2ban packages.debian.org/search?keywo … ection=all

Ca marche parfaitement avec la conf par défaut.

C’est un daemon qui va simplement rajouter à la volée des règles de parefeu quand il détecte un bruteforce, et les retirer après un certain temps (valeur configurable).

Tu gagnes en granularité dans le sens où tu peux lancer ou arrêter le service sans toucher à l’ensemble de tes règles de parefeu.

Hope it helps

Le truc c’est que je préfère éviter d’ajouter des packages, je suis pas sur le srv (qui est très loin) je travail juste en ssh mais merci de l’infos.

Sinon pour la config iptables, ces 2 règles fonctionnent bien sauf que j’aimerai bloquer l’accès pendant plusieur minutes

iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 90 --hitcount 3 -j DROP

Par contre comment faire pour ajouter une période de bannissement ?
merci

Augmente le temps de 90, tu le passes à 300 (6 minutes) ou 600 (10 minutes).

Le temps de blocage est bien de 90 sec.

Si pdt 90 sec une IP tente 3 SYN, elle sera bloquée pour 90 sec. et chaque nouvelle tentative relancera le compteur de 90 sec.

Apres cet période, tout recommence par contre.
C’est ce que j’ai vu lors de mes test.

Mais fail2ban est plus pratique…avec ssh l’arrêt du SYN se fait au bout de 5 échecs de login je crois.

ce qui correspondant a 15 tentatives de login avant qu’iptables ne réagissent (avec les règles que j’ai mis en place).