Utilisation Iptables : Différence entre versions
m |
(Aucune différence)
|
Version actuelle en date du 23 décembre 2019 à 12:32
Ce paragraphe référence quelques commandes utiles sur Iptables.
Votre avis
Nobody voted on this yet
|
|
Restriction
Visualisation
Après une mise en place des règles, il est possible de les visualiser à l'aide de l'option -L
, ou --list
. Le résultat présente les règles mises en place avec une résolutions des adresse IP quand cela est possible.
#sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 58.17.163.8 anywhere fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-ssh (1 references) target prot opt source destination DROP all -- 58.218.199.250 anywhere DROP all -- 213.79.125.20 anywhere DROP all -- 121.37.63.154 anywhere DROP all -- 220.178.63.27 anywhere DROP all -- pr2base.seas.gwu.edu anywhere DROP all -- 80.91.181.43 anywhere DROP all -- NSG-Static-130.243.71.182.airtel.in anywhere DROP all -- 219.140.165.85 anywhere DROP all -- 68.233.249.181 anywhere DROP all -- 202.103.30.24 anywhere DROP all -- 221.232.137.202 anywhere RETURN all -- anywhere anywhere
Dans le cadre de cette exécution, les adresses IP sont résolues sur les DNS. Or cela ralentit considérable l'exécution. Il est donc possible de présenter les adresses au format numérique, et cela devient immédiat, en ajoutant l'argument -n
.
#sudo iptables --list -n Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 58.17.163.8 0.0.0.0/0 fail2ban-ssh tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-ssh (1 references) target prot opt source destination DROP all -- 58.218.199.250 0.0.0.0/0 DROP all -- 213.79.125.20 0.0.0.0/0 DROP all -- 121.37.63.154 0.0.0.0/0 DROP all -- 220.178.63.27 0.0.0.0/0 DROP all -- 128.164.156.75 0.0.0.0/0 DROP all -- 80.91.181.43 0.0.0.0/0 DROP all -- 182.71.243.130 0.0.0.0/0 DROP all -- 219.140.165.85 0.0.0.0/0 DROP all -- 68.233.249.181 0.0.0.0/0 DROP all -- 202.103.30.24 0.0.0.0/0 DROP all -- 221.232.137.202 0.0.0.0/0 RETURN all -- 0.0.0.0/0 0.0.0.0/0
Suite à une mise à jour du serveur, l'outil Fail2ban
n'utilise plus la directive DROP
mais REJECT
. Le listing devient:
#sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination REJECT all -- 58.17.163.8 anywhere fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-ssh (1 references) target prot opt source destination REJECT all -- 58.218.199.250 anywhere REJECT all -- 213.79.125.20 anywhere REJECT all -- 121.37.63.154 anywhere REJECT all -- 220.178.63.27 anywhere REJECT all -- pr2base.seas.gwu.edu anywhere REJECT all -- 80.91.181.43 anywhere REJECT all -- NSG-Static-130.243.71.182.airtel.in anywhere REJECT all -- 219.140.165.85 anywhere REJECT all -- 68.233.249.181 anywhere REJECT all -- 202.103.30.24 anywhere REJECT all -- 221.232.137.202 anywhere RETURN all -- anywhere anywhere
Ou:
#sudo iptables --list -n Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 58.17.163.8 0.0.0.0/0 fail2ban-ssh tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-ssh (1 references) target prot opt source destination RETURN all -- 0.0.0.0/0 0.0.0.0/0
L'argument --line-numbers
est très utile également, surtout quand on veut supprimer une règle. Il permet d'afficher le numéro de ligne.
#sudo iptables --list -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 fail2ban-ssh tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain fail2ban-ssh (1 references) num target prot opt source destination 1 RETURN all -- 0.0.0.0/0 0.0.0.0/0
Ajout d'une restriction
Afin de bannir les adresses IP identifiées dans les logs, la commande iptables
est associée aux arguments suivants:
Paramètre | Utilisation |
---|---|
-A | Mode ajout. |
INPUT | Cible dans la table où est ajoutée la règle.
Ici, la restriction s'applique aux connexions entrantes. |
-s IP | Permet d'indiquer l'adresse IP à laquelle s'applique la règle. |
-j REJECT | Les connexions seront refusées. |
Pour les deux adresses 221.232.137.202
et 58.17.163.8
décrites dans le paragraphe précédent, l'interdiction d'accès est placé dans la "Chain" INPUT
par la commande suivante:
#sudo iptables -A INPUT -s 221.232.137.202 -j REJECT #sudo iptables -A INPUT -s 58.17.163.8 -j REJECT
La table devient donc celle-ci:
Chain INPUT (policy ACCEPT) target prot opt source destination REJECT all -- 221.232.137.202 anywhere REJECT all -- 58.17.163.8 anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Suppression d'une restriction
Afin de supprimer une restriction, il faut utiliser l'argument -D
et de spécifier la chaîne dans laquelle elle se trouve. Il est plus simple d'utiliser le numéro de la restriction.
#sudo iptables -D myCustomChain 3
Paramètre | Utilisation |
---|---|
-D | Mode suppression. |
myCustomChain | Nom de la "Chain" contenant la restriction. |
3 | Suppression de la restriction en ligne 3 dans la "Chain" myCustomChain .
|
Organisation des restrictions
Comme cela est réalisé par le script Fail2ban, une bonne pratique consiste à organiser les "Chains" en fonction des ports surveillés. Ainsi, l'administration des règles est facilitée. L'objectif de ce paragraphe est de mettre en place une nouvelle "Chain" custom-http
pour les ports http
et https
.
Ajout d'une nouvelle "Chain"
La première étape consiste en la création de la nouvelle "Chain" avec le nom custom-http
.
#sudo iptables -N custom-http
Paramètre | Utilisation |
---|---|
-N | Mode création. |
custom-http | Nom de la nouvelle "Chain". |
La définition de Iptables devient:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain custom-http (0 references) target prot opt source destination
Droit d'accès sur nouvelle "Chain"
Par défaut, toutes les requêtes sont autorisées pour ce nouveau paramétrage. Les restrictions seront injectées au fur et à mesure des besoins. Il faut donc injecter l'autorisation.
#sudo iptables -A custom-http -j RETURN
Paramètre | Utilisation |
---|---|
-A | Mode ajout. |
custom-http | Cible dans la table où est ajoutée la règle. |
-j RETURN | Les connexions sont autorisées par défaut. |
La définition de Iptables devient:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain custom-http (0 references) target prot opt source destination RETURN all -- 0.0.0.0/0 0.0.0.0/0
Activation nouvelle "Chain"
Enfin, il faut ajouter la nouvelle "Chain" comme règle du trafic.
#sudo iptables -I INPUT -p tcp -m multiport --dports 80,443 -j custom-http
Paramètre | Utilisation |
---|---|
-I | Mode insertion. |
INPUT | Cible dans la table où est ajoutée la règle. |
-p tcp | S'applique au connexion tcp. |
-m multiport | Permet de spécifier que la règle s'applique sur plusieurs ports. |
--dports 80,443 | Spécifie les ports auquel s'applique la règle, ici ce sera http et https. |
-j custom-http | La règle est redirigée vers la "Chain" custom-http précédemment créée.
|
La définition de Iptables devient:
Chain INPUT (policy ACCEPT) target prot opt source destination custom-http tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain custom-http (0 references) target prot opt source destination RETURN all -- 0.0.0.0/0 0.0.0.0/0
Ajout restriction dans la nouvelle "Chain"
Ainsi pour configurer une nouvelle restriction sur le port 80 ou 443, il suffit d'ajouter une règle dans la "Chain" custom-http
.
#sudo iptables -I custom-http 1 -s 58.218.199.250 -j DROP
Sécurisation applications
Dans le cadre de cette étude, de nombreux outils sont mis en place sur la machine. Ce paragraphe permet de référencer les différentes configuration de Iptables pour ceux-ci. Malgré le fait que la machine soit derrière une routeur qui ne redirige que quelques ports, ces configurations sont mises en place pour augmenter la sécurité.
Cups | Mysql | PostgreSql | OpenLDAP | ||
Tomcat | Jenkins | SonarQube | Nexus | ||
Gitea | Fail2rest |