Afficher les adresses IP (triées numériquement et numérotées) bloquées par iptables

L'enchainement des commandes suivantes permet d'afficher à l'écran toutes les adresses ip bloquées par iptables, triées numériquement et  numérotées :

$ iptables -L -n | grep 'DROP' | awk '{print $4}' | sort -n | uniq | nl
     1  37.59.20.164
     2  61.38.252.112
     3  85.118.62.43
     4  91.236.74.176
     5  91.236.74.249
     6  93.182.139.42
     7  93.182.147.141
     8  93.182.174.159
     9  93.182.175.25
    10  117.21.225.66
    11  173.242.126.130
    12  199.15.234.138
    13  199.15.234.143
    14  199.15.234.145
    15  199.15.234.146
    16  199.15.234.147
    17  199.15.234.213
    18  208.177.72.206
$

Explications :

La commande suivante permet d'afficher les règles iptables (option -L) avec les ip au format numérique (option -n) :

$ iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  173.242.126.130      0.0.0.0/0
DROP       all  --  199.15.234.146       0.0.0.0/0
DROP       all  --  93.182.139.42        0.0.0.0/0
DROP       all  --  93.182.175.25        0.0.0.0/0
DROP       all  --  93.182.174.159       0.0.0.0/0
DROP       all  --  93.182.147.141       0.0.0.0/0
DROP       all  --  208.177.72.206       0.0.0.0/0
DROP       all  --  199.15.234.138       0.0.0.0/0
DROP       all  --  91.236.74.176        0.0.0.0/0
DROP       all  --  85.118.62.43         0.0.0.0/0
DROP       all  --  91.236.74.249        0.0.0.0/0
DROP       all  --  37.59.20.164         0.0.0.0/0
DROP       all  --  117.21.225.66        0.0.0.0/0
DROP       all  --  199.15.234.143       0.0.0.0/0
DROP       all  --  199.15.234.145       0.0.0.0/0
DROP       all  --  199.15.234.147       0.0.0.0/0
DROP       all  --  61.38.252.112        0.0.0.0/0
DROP       all  --  199.15.234.213       0.0.0.0/0
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Suivi de la commande suivante, seules les chaines DROP sont affichées :

$ iptables -L -n | grep 'DROP'
DROP       all  --  173.242.126.130      0.0.0.0/0
DROP       all  --  199.15.234.146       0.0.0.0/0
DROP       all  --  93.182.139.42        0.0.0.0/0
DROP       all  --  93.182.175.25        0.0.0.0/0
DROP       all  --  93.182.174.159       0.0.0.0/0
DROP       all  --  93.182.147.141       0.0.0.0/0
DROP       all  --  208.177.72.206       0.0.0.0/0
DROP       all  --  199.15.234.138       0.0.0.0/0
DROP       all  --  91.236.74.176        0.0.0.0/0
DROP       all  --  85.118.62.43         0.0.0.0/0
DROP       all  --  91.236.74.249        0.0.0.0/0
DROP       all  --  37.59.20.164         0.0.0.0/0
DROP       all  --  117.21.225.66        0.0.0.0/0
DROP       all  --  199.15.234.143       0.0.0.0/0
DROP       all  --  199.15.234.145       0.0.0.0/0
DROP       all  --  199.15.234.147       0.0.0.0/0
DROP       all  --  61.38.252.112        0.0.0.0/0
DROP       all  --  199.15.234.213       0.0.0.0/0

Suivi de la commande suivante, seule la 4ème colonne (celle contenant les ip) est affichées :

$ iptables -L -n | grep 'DROP' | awk '{print $4}'
173.242.126.130
199.15.234.146
93.182.139.42
93.182.175.25
93.182.174.159
93.182.147.141
208.177.72.206
199.15.234.138
91.236.74.176
85.118.62.43
91.236.74.249
37.59.20.164
117.21.225.66
199.15.234.143
199.15.234.145
199.15.234.147
61.38.252.112
199.15.234.213

Suivi de la commande suivante (sort), les ip sont triées numériquement (option -n) et les doublons sont exclus avec la commande uniq:

$ iptables -L -n | grep 'DROP' | awk '{print $4}' | sort -n | uniq
37.59.20.164
61.38.252.112
85.118.62.43
91.236.74.176
91.236.74.249
93.182.139.42
93.182.147.141
93.182.174.159
93.182.175.25
117.21.225.66
173.242.126.130
199.15.234.138
199.15.234.143
199.15.234.145
199.15.234.146
199.15.234.147
199.15.234.213
208.177.72.206

Enfin, la commande suivante numérote toutes les lignes affichées :

$ iptables -L -n | grep 'DROP' | awk '{print $4}' | sort -n | uniq | nl
     1  37.59.20.164
     2  61.38.252.112
     3  85.118.62.43
     4  91.236.74.176
     5  91.236.74.249
     6  93.182.139.42
     7  93.182.147.141
     8  93.182.174.159
     9  93.182.175.25
    10  117.21.225.66
    11  173.242.126.130
    12  199.15.234.138
    13  199.15.234.143
    14  199.15.234.145
    15  199.15.234.146
    16  199.15.234.147
    17  199.15.234.213
    18  208.177.72.206

Au total, ce sont donc 5 commandes qui sont utilisées pour afficher le résultat souhaité.

Si la liste est trop longue pour être affichée en une seule fois, une petite commande supplémentaire fera très bien l'affaire :

$ iptables -L -n | grep 'DROP' | awk '{print $4}' | sort -n | uniq | nl | less