OVH Community, votre nouvel espace communautaire.

[HOW-TO] Détecter certains scans de port (en utilisant uniquement IPT)


ritalou
22/11/2010, 09h40
sa me plait sa il vas falloir tester sa
des que je récupère un serveur vierge qui risque rien je testerai en attendant quelqu'un a t'il tester?

DaRk56
09/11/2010, 22h03
Edit By moi: Erreur trouvé

MasterOfQuebec
13/03/2010, 05h59
Bonjour,
Étant un peut paranoïak je n'aime pas beaucoup que des gens ou robots s'amuse a faire des scans de mes serveur dédiés afin de trouver des ports ouverts.

Les solutions qui s'offraient a moi ne me convenaient pas donc j'ai décidé il y a quelque heures de tester un truc bien simple. Utiliser le module recent de IPTables afin de détecter d'éventuels scans.

Avant de vous lancer notez que c'est probablement pas optimisé, il y a des trucs inutiles et je n'ai fait que quelques tests. Mais sa fonctionne bien a première vue...


Voici les règles en question:
Code:
iptables -N PORTSCAN_DODROP
# Ajout d'un entré au fichier journal pour fail2ban par exemple, cette chaine est complètement facultative mais peut s'avérer utile si vous souhaitez enregistrer les tentatives.
iptables -A PORTSCAN_DODROP -j LOG --log-prefix 'PORTSCAN IPT ' --log-level info
# Refus du paquet
iptables -A PORTSCAN_DODROP -j DROP

iptables -N PORTSCAN_CHECK
# Chaque fois qu'un paquet "nouveau" est reçu ont met a jour un compteur qui n'affecte que la source du paquet.
iptables -A PORTSCAN_CHECK -m state --state NEW -m recent --set --name portscanrecent
# 6 paquets reçus en 45 secondes, appel de la chaine PORTSCAN_DODROP, nous appelons cette chaine uniquement a ce moment car sinon il le fichier journal pourrait être très rempli.
iptables -A PORTSCAN_CHECK -m state --state NEW -m recent --update --seconds 60 --hitcount 6 --name portscanrecent -j PORTSCAN_DODROP
# Refus du premier paquet reçu
iptables -A PORTSCAN_CHECK -j DROP

# Blocage de 24 heures sur les ports ouverts et fermés, ajout en tant que première chaine (doit être avant les chaines spécifiant d'accepter les paquets sur les ports ouverts). Adaptez cette règle selon vos bessoins ainsi que votre configuration.
iptables -I INPUT 1 -m state --state NEW -m recent --rcheck --seconds 86400 --hitcount 6 --name portscanrecent -j DROP

# Tous ce qui entre et qui ne concorde pas avec une chaine est passé a PORTSCAN_CHECK, c'est de la que pourraient venir les soucis de performance mais c'est nécessaire.
iptables -P INPUT PORTSCAN_CHECK
En plus simple: Ce qui va frapper un port qui est fermé va faire augmenter le compteur et quand le compteur atteint 6 il crée une entrée dans un fichier journal et bloque tous les paquets de l'IP pendant 24 heures.

Voila, si je n'ai pas fait d'erreurs et que vous n'en avez pas faits non plus c'est bon!