Différences entre versions de « Iptables »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 12 : Ligne 12 :
 
</pre>
 
</pre>
  
Pourquoi inséré à la deuxième ligne (''-I INPUT 2'') plutôt que d'ajouter à la fin ?? Si vous regarder bien les règles d'un pare-feu Iptables sur une CentOS:
+
Pourquoi insérer à la deuxième ligne (''-I INPUT 2'') plutôt que d'ajouter à la fin ?? Si vous regardez bien les règles d'un pare-feu Iptables sur une CentOS:
  
 
<pre>
 
<pre>
Ligne 19 : Ligne 19 :
  
 
On s'aperçoit que:
 
On s'aperçoit que:
* la première règle autorise tout le trafic initier depuis la machine;
+
* la première règle autorise tout le trafic initié depuis la machine;
 
* la dernière règle ''drop'' tous les paquets
 
* la dernière règle ''drop'' tous les paquets
  

Version du 26 janvier 2014 à 19:50

Introduction

Soit une passerelle entre un LAN et Internet. Le LAN a le plan d'adressage 192.168.1.0/24 (192.168.1.254 pour la passerelle) et la passerelle a l'adresse publique 1.2.3.4.

Sur le LAN, il y a également un serveur Web à l'adresse 192.168.1.253.

Filtrage

Sur le serveur Web, on voudra autoriser le service HTTP (TCP/80)

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

Pourquoi insérer à la deuxième ligne (-I INPUT 2) plutôt que d'ajouter à la fin ?? Si vous regardez bien les règles d'un pare-feu Iptables sur une CentOS:

# iptables -nvL INPUT

On s'aperçoit que:

  • la première règle autorise tout le trafic initié depuis la machine;
  • la dernière règle drop tous les paquets

Il faut donc insérer notre règle entre les deux règles précédentes (e.g. en deuxième position).

Translation d’adresses

Pour les machine sur le LAN, il faut faire du camouflage (MASQUERADE en anglais) c'est à dire que les adresses du LAN (privées et donc non routables sur Internet)seront remplacées "à la volées" par l'adresse publique de la passerelle. Pour cela il faut:

  • Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24):
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
  • Vider la table FORWARD
# iptables -F FORWARD
  • Activer le routage sur la machine...

... en positionnant le paramètre ip_forward à 1...

# vi /etc/sysctl.conf

... et en rechargant les paramètres du noyau.

# sysctl -p

Translation de port

Pour que les clients sur Internet puisse joindre le serveur Web, il faut rediriger le port TCP/80 de la passerelle sur le port TCP/80 du serveur Web

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.253

Modification d'entête