Isoler un environnement du réseau avec iptables

iptables offre de nombreuses possibilités pour bloquer, transformer ou router des trames réseaux. Cet article présente 2 techniques :

  • La première consiste à rediriger les trames IP à destination d’une adresse vers une autre. Pour les utilisateurs Oracle, cela permet de déplacer une base de données sans changer la configuration client; par exemple, si vous avez un programme java avec une URL JDBC codée dans le programme.
  • La seconde permet de bloquer l’ensemble des accès réseaux d’un serveur

Ces 2 techniques combinées permettent d’isoler un serveur après l’avoir cloné et sans utiliser d’équipement physique.

Re-router les trames émises sur un serveur

Dans l’exemple ci-dessous, vous configurerez iptables pour que les trames à destination de l’adresse 1.1.1.1 soient dirigées vers 209.85.229.99 une des adresses de www.google.com :

iptables -t nat -A OUTPUT -d 1.1.1.1 
-j DNAT --to 209.85.229.99

Vous pouvez tester le résultat de votre configuration avec le script ci-dessous :

iptables -t nat -L OUTPUT

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DNAT all -- anywhere 1.1.1.1 to:209.85.229.99


wget http://1.1.1.1

Bloquer toutes les connexions

Pour bloquer toutes les connexions, utilisez -j REJECT comme ci-dessous :

iptables -t filter -A OUTPUT -j REJECT
iptables -t filter -I OUTPUT -j ACCEPT -d 209.85.229.99

iptables -t filter -L OUTPUT

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 209.85.229.99
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable

Dans le script précédent, le fait d’insérer une règle -j ACCEPT permet de laisser passer les trames vers 209.85.229.99 malgré la restriction

Supprimer les règles iptables

Le script ci-dessous supprime les règles iptables :

iptables -t filter -D OUTPUT 1 
iptables -t filter -D OUTPUT 1
iptables -t nat -D OUTPUT 1

Vous apprécierez !