web-dev-qa-db-fra.com

Comment répertorier les adresses IP bloquées par IPTABLES?

Pour prévenir les attaques de force brute contre SSH, j'ai ajouté certaines règles IPTABLES (ci-dessous). La question est la suivante: comment puis-je énumérer les adresses IP bloquées?

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP
16
milton

Une option serait de connecter l'un de vos paquets abandonnés avec une règle comme:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

Insérez cela immédiatement avant la règle DROP. Ensuite, vous pouvez grep le fichier Syslog pour n'importe quoi avec "FW_Dropped" et la liste des IPS sera là. Les entrées dans le fichier journal ressemblent à ceci comme suit:

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

Ainsi, vous sortez ce que suit "src =" vous montrera les IP abandonnés. Trier cela, éliminer les doublons et vous aurez votre liste.

J'ai trouvé le Tutorial IPTABLE comme la documentation la plus utile pour iptables/NetFilter.

16
yukondude

Vous pouvez trouver des détails sous/proc/net/ipt_recent/ssh.

Cet article a plus d'informations.

5
David Pashley

Regarder

/proc/net/ipt_recent/YOURNAME

où votre nom est le nom que vous avez utilisé avec l'optionName dans votre règle IPTABLES.

4
ipozgaj

Voici un simple doublure:

$ iptables -L -n --line
3
giorgio79

Ce que je fais, par exemple pour l'entrepooftage d'adresse d'entrée, est de définir la chaîne SPOOF_REJECT:

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

ensuite, pour envoyer des paquets à cette chaîne s'ils sont spoofés:

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

Vous pouvez faire quelque chose comme ceci pour chaque catégorie de paquets que vous déposez ou rejetez pour obtenir une ligne dans le syslog pour rechercher, puis grep, coupé, trier périodiquement, pour obtenir uniquement les adresses IP de ces lignes de journalisation.

L'avantage d'utiliser des chaînes individuelles pour chaque catégorie est que votre configuration devient plus simple et qu'il est plus facile de lire votre configuration iptables. Lorsque vous ajoutez de plus en plus de règles, vous serez heureux d'utiliser des chaînes individuelles pour des actions différentes spécifiques.

1
Eddie

"La question est la suivante: comment puis-je énumérer les adresses IP bloquées?"

Créer une chaîne interdite:

iptables -N BANNED
iptables -F BANNED

Créer une chaîne de journalisation:

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

Ajouter un saut à la chaîne interdite dans la chaîne d'entrée avant la plupart des autres règles

...
iptables -A INPUT -j BANNED
...

Maintenant, ajoutez des iPaddresses à la chaîne interdite:

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

Vous pouvez également l'utiliser comme une base de données avec les options de commentaire, vous pouvez donc savoir quand et pourquoi etc. FLOCK est important lorsque les iptables sont fréquemment mis à jour par de nombreux processus - il apparaît que IPtables n'a pas de verrouillage intégré.

Pour afficher les adresses et les règles interdites dans la chaîne interdite:

iptables -S BANNED

Pour voir juste triés iPaddresses uniques:

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

J'ai un certain nombre de démons à exécuter sur mes serveurs en vérifiant les fichiers et weblogs syslog, donc si quelque chose de méchant est tenté par quiconque, leur adresse est automatiquement interdite pendant quelques jours, en fonction du type et de la gravité et du nombre d'attaques précédentes. L'information est connectée dans une base de données MySQL et a périodiquement expiré. Les adresses sont également distribuées à chaque autre machine du cluster sur la réplication MySQL afin qu'elles soient également protégées et conservent la synchronisation. Mon logiciel recherche également le propriétaire du réseau et connaît une plainte auprès de l'ISP.

Après 10 ans de travail, j'espère la rendre disponible pour que tout le monde soit utilisé bientôt. J'ai actuellement environ 1,5 million d'histoires d'adresse IP et de centaines de milliers de milliers d'attaques de courrier et de SSH rapportées, aidant à nettoyer le filet. Si plus l'utiliserait, j'espère que cela aurait plus d'impact.

1
Andy Lee Robinson