[TUTORIAL] Guide de Survie Iptable/Netfilter

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

[TUTORIAL] Guide de Survie Iptable/Netfilter

Messagepar Muzo » 25 Mai 2004 11:31

Bonjour,

Un petit post dédié à Iptables, celui ci va recenser les questions/réponses courantes à Iptables.

Merci de n'y mettre que des liens vers des sites traitant de ce sujet, ou des Questions dont vous avez la réponse. Par exemple vous avez posez la question et obtenu la réponse dans le forum Ipcop, et vous pensez que ca peut intéresser du monde.

Mettez ici la question formulée en francais avec des "mots clefs" si possible. Et la réponse précise et commentée si possible.

Sites

je vais donc commencer par poster quelques liens :
Le principal : http://www.netfilter.org/
Les bases Iptables : http://lea-linux.org/reseau/iptables.php3
Site dédié IpCop, mais surtout iptables (Merci Antolien): http://ipcop.hn.org/
Tous sur les réseaux et la sécurité, avec un chapitre Iptables : http://christian.caleca.free.fr/
Ensembles de liens sur Iptables/Netfilter : http://www.linuxguruz.com/iptables/
Un sympatique débat avec tomtom en prof sur le forum SME : viewtopic.php?t=10867
Firewall et sécurité d'un réseau personnel sous Linux : http://olivieraj.free.fr/fr/linux/information/firewall/
Writing Linux firewall rules with IPTables: http://www.tipmonkies.com/2005/07/08/wr ... w-iptables
Didacticiel sur Iptables: http://www.linux-france.org/prj/inetdoc ... -tutorial/

Scripts
Script de base à 4 interfaces : http://gcu-squad.org/viewtip/85
Configurations Iptables avec plusieurs fichiers de conf : http://www.malibyte.net/iptables/scripts/fwscripts.html
Dernière édition par Muzo le 24 Juin 2006 00:05, édité 12 fois au total.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar Muzo » 25 Mai 2004 11:37

Question : Comment forwarder des ports avec iptables?
Mots clefs : port forwarding, portforwarding, transfert de ports

Réponse :
iptables -t nat -A PREROUTING -p tcp --dport NUMERO_PORT_DESTINATION -i INTERFACE -j DNAT --to-destination IP_DESTINATION:PORT_DESTINATION

Exemple :
Vous voulez forwarder le port 80 recu sur voter serveur sur l'interface eth0 vers le beau serveur web de votre lan qui tourne sur le port 8090 lui, et qui set à l'adresse ip 162.168.0.5. Cela donne :

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-destination 192.168.0.5:8090
Dernière édition par Muzo le 25 Mai 2004 13:49, édité 2 fois au total.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar Muzo » 25 Mai 2004 12:04

Question : Comment ouvrir/fermer un port avec Iptables?
Mots Clefs: iptables port opening portopening ouverture de ports

Réponse :

Ouverture d'un seul port :
iptables -A INPUT -p tcp --dport NUMERO_PORT -j ACCEPT

Ouverture d'une plage de ports :
iptables -A INPUT -p tcp --dport NUMERO_PORT_DEBUT:NUMERO_PORT_FIN -j ACCEPT

Fermeture de port :
Pour interdire un port il suffit de mettre REJECT ou DENY à la place de ACCEPT
Dernière édition par Muzo le 25 Mai 2004 13:50, édité 2 fois au total.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar Fredish » 25 Mai 2004 12:35

Y a celui-là aussi sur lea: http://lea-linux.org/reseau/murdefeu.html

J'espère que ce post sera utile et répondra au moins en partie aux besoins de ceux pour qui, comme moi, iptables est un peu vaste. :)
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Muzo » 25 Mai 2004 13:38

Question : Comment empêcher un spoofing?
Mots Clefs : iptables antispoofing spoofing

Réponse :
/sbin/iptables -t nat -I PREROUTING -i INTERFACE_EXTERNE -s ADRESS_IP/MASK -j DROP

Exemple :
Vous voulez vous prémenir des attaques de l'extérieur utilisant le spoofing sur la palge d'adresse ip pour un réseau local : 192.168.X.X. Votre interface externe est l'interface eth0.

/sbin/iptables -t nat -I PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

Pour faire la même chose sur les adresses de type : 127.0.0.X :
/sbin/iptables -t nat -I PREROUTING -i eth0 -s 127.0.0.0/8 -j DROP


Pour savoir comment faire cela utilisez le calculteur ip d'iXUS : Calculateur d'ip


Qu'est ce que le Spoofing?
Dernière édition par Muzo le 25 Mai 2004 20:48, édité 1 fois au total.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar antolien » 25 Mai 2004 13:54

Merci muzo pour ce post ,

Juste un truc, le lien nerim est down pour mon site, je l'ai repassé chez free : http://antolien.free.fr

@+
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar Muzo » 25 Mai 2004 15:06

Question : Comment bloquer le ping de mon Firewall depuis internet?
Mots clefs: bloquer ping icmp echo-request

Réponse :

/sbin/iptables -A INPUT --proto icmp --icmp-type echo-request -j DROP

On va bloquer sur l'entrée (INPUT) les demandes icmp echo-request.

Il faut savoir que iptable permet de bloquer les icmp type soit en nommant me type (Cf man iptable) soit en indiquant sont numéro. Dans notre cas :
echo-request = 8

Ce qui nous donnera :
/sbin/iptables -A INPUT --proto icmp --icmp-type 8 -j DROP

(Modifié suite aux conseils zavisés d'Antolien)

[Edit suite à quelques MP explicatifs]
Attention cette politique est à adapter en fonction de la configuration de base de votre firewall. Certains accepteront toute requete icmp par défaut, d'autres rejetteront tout par défaut.

Et dans le cas ci-dessus, le ping n'est pas rejeter (-j REJECT) mais mis à la "poubelle" (DROP). Ce qui fait que techniquement je ne peux pas dire que l'on bloque le ping, mais on y répond simplement pas.
[/Edit]
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar Fredish » 28 Mai 2004 11:18

Puisque c'est pour les noobs...

Question: Comment discuter sous msn(texte seulement)?

Réponse:

iptables -A OUTPUT --protocol tcp --dport 1863 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 1863 -m state --state ESTABLISHED -j ACCEPT


Le NEW, est pour indiquer qu'on effectue une nouvelle connection, le ESTABLISHED indique que ce qui rentre depuis le port 1863 doit être lié à une connection existante(dans les deux directions, cf. "man iptables"). Je lis souvent qu'on a besoin d'ouvrir aussi en udp. Perso, je n'en ai pas besoin, et cela fonctionne. Donc, j'attends des retours si il y a lieu. Je précise quand même, au cas où, que c'est dans un contexte où la police bloque tout, et sans forward. J'y pense, pour icq ou d'autres, il suffit de changer le port(4190 pour icq par exemple). Voilà :)
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Muzo » 24 Juin 2004 10:53

Question : Comment bloquer les ports en sortie de mon firewall
Mots Clefs : deny port FORWARD

Réponse :

Par défaut Iptables n'a pas de port ouvert vers l'extérieur, sauf si cela a été fait explicitement (Cf plus haut ouverture de port). Il est donc inutile de faire de fermeture de port.

Dans le cas ou vous avez fait un script acceptant tout en sortie (il est préférable de faire l'inverse de tout fermer par défaut et d'ouvrir au cas par cas). Si votre script ouvre tout par défaut, faites bien attention à placer ces règles de fermeture de port AVANT cette ouverture. Sinon iptables va considérer la règle d'ouverture comme la bonne et ne jamais passer par la règle de fermeture.

Voici la conduite à suivre :

Vérifiez que ces 3 variables n'existent pas déjà dans votre script sous un autre nom. Si le nom change adaptez ces règles avec les noms de variable de votre script.

#interface interne (lan)
InternalIF=eth0
#interface externe (internet)
OuterIF=eth1
#source réseau (l'adressage du lan)
Lan=192.168.0.0/255.255.255.0


Vérifiez aussi que la chaine que vous allez créer n'existe pas déjà sous un autre nom.
#Création d'une nouvelle chaine
/sbin/iptables --new-chain ForwardOutBound
/sbin/iptables -A FORWARD -i $InternalIF -o $OuterIF -j ForwardOutBound


#Refus d'un port de sortie pour la classe d'adresses
/sbin/iptables -A ForwardOutBound -s $Lan -p PROTOCOLE --dport PORT -j DROP


#Refus d'une plage de port de sortie pour la classe d'adresses
/sbin/iptables -A ForwardOutBound -s $Lan -p PROTOCOLE --dport PORT:PORT -j DROP


#Refus d'un port pour une adresse spécifique
/sbin/iptables -A ForwardOutBound -s 192.168.0.25 -p PROTOCOLE --dport PORT -j DROP


PROTOCOLE peut prendre la valeur tcp ou udp en fonction du protocole que vous voulez bloquer.
PORT est le numéro de port que vous voulez bloquer.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar cf » 12 Mars 2005 13:19

Question : Comment sécuriser la pile TCP/IP?
Mots Clefs : spoofing, syn flood, etc...

Réponse : En passant des paramètres au kernel

En pratique, on peut ajouter à son script iptables (ou au fichier /etc/sysctl.conf, sous la forme:
net.ipv4.conf.all.nom_action=0/1) :

Code: Tout sélectionner
# Ignore 'ICMP Redirects' message
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Ignore 'ICMP Echo Request' message
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Ignore 'ICMP Bogus Response' message
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Interdire 'Source Routing'
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

# Surveiller 'martians' (adresse source falsifée ou non routable)
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# Se protéger de l'IP Spoofing bis
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

# Se protéger des attaques 'SYN Flood'
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

cf
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 217
Inscrit le: 01 Jan 2004 01:00

Un autre article

Messagepar OverCiv » 04 Mai 2005 18:44

Pour continuer dans les articles sur Iptables / Netfilter je vous conseille aussi celui du labo-linux, à cette adresse :

:arrow: http://www.labo-linux.org/cours/module-3/chapitre-04-firewalling/?searchterm=iptables

Sommaire:

=Firewalling=
1 Introduction
1.1 Concepts
1.1.1 Notion de firewall
1.1.2 Principe de translation d'adresse
1.2 Netfilter
2 Installation
2.1 Partie noyau : Netfilter
2.2 Partie administration : ipatbles
3 Utilisation d'Ipatbles
3.1 La table FILTER
3.1.1 Les cibles de la table Filter
3.1.2 Les cibles personnalisées
3.1.2.1 Création de chaîne :
3.1.2.2 Suppression de chaîne
3.2 Enregistrement et chargement de règles
3.2.1 Sauvegarder les règles
3.2.2 Charger les règles
3.3 Les commandes principales
3.4 Options
3.4.1 Options globales
3.4.2 Options protocoles
3.4.3 Options de correspondance
3.5 NAT (Network Address Translation)
3.5.1 Les cibles pour NAT
4 Options noyau
4.1 Options relatives aux ICMP
4.2 Options relatives aux IP
_::= OverCiv =::_
~--~ ~--~ ~--~ ~--~ ~--~ ~--~
http://www.labo-linux.org
http://desktoplinux.labo-linux.org
OverCiv
Quartier Maître
Quartier Maître
 
Messages: 19
Inscrit le: 12 Oct 2004 14:02

Comment bloquer MSN via iptables

Messagepar Jacques- » 09 Nov 2005 21:30

Question : Comment bloquer MSN avec iptables ?
Mots clefs : blocage filtrage MSN

Réponse :
Suite à la suggestion de Muzo, voici un petit tuto sur le blocage de MSN.
Dans ma config, une MNF sert de passerelle vers le web, les postes du LAN ont acès au Web via le proxy squid de la MNF.
Le port classique de MSN (1863) est bloqué et celui-ci ne peut donc que passer par l'encapsulation en HTTP sur les passerelles prévues à cet effet. Toutes ces passerelles sont (pour le moment) dans le réseau 207.46.0.0/16.

J'utilise iptables pour bloquer selon les heures les accès à MSN via une tache cron (en fait il y a un script lancé toutes les heures qui lit un fichier de config décrivant ce qu'il doit faire, selon le jour et l'heure, les paquets sont jetés ou non).

Remarque : les paquets venant du proxy, c'est dans la chaîne OUTPUT qu'il faut bloquer et non dans la chaîne FORWARD (cette dernière est à utiliser si les machines ne passent pas par le proxy mais que le 1863 bloqué les empêche de se connecter normalement).

Il suffit de lancer ces règles iptables par exemple pour bloquer :
# Nouvelle cible pour logguer les paquets
/sbin/iptables -N msn-drop
/sbin/iptables -A msn-drop -j LOG --log-prefix "Iptables:msn:DROP:" --log-level 6
/sbin/iptables -A msn-drop -j DROP
# Blocage des paquets entrants des gateways MS
# (cette règle est à supprimer si on veut laisser l'accès à d'autre machines)
/sbin/iptables -I INPUT -s 207.46.0.0/16 -j msn-drop
# Blocage des paquets sortants pour les machines d'adresse AdresseIPx
/sbin/iptables -I OUTPUT -s AdresseIP1 -d 207.46.0.0/16 -j msn-drop
/sbin/iptables -I OUTPUT -s AdresseIP2 -d 207.46.0.0/16 -j msn-drop


et pour débloquer :
# Déblocage des paquets sortants pour les machines d'adresse AdresseIPx
/sbin/iptables -D OUTPUT -s AdresseIP1 -d 207.46.0.0/16 -j msn-drop
/sbin/iptables -D OUTPUT -s AdresseIP2 -d 207.46.0.0/16 -j msn-drop
# Déblocage des paquets entrants des gateways MS
# (dans le cas où on l'a utilisée au dessus bien entendu)
/sbin/iptables -D INPUT -s 207.46.0.0/16 -j msn-drop
# Suppression de la cible
/sbin/iptables -F msn-drop
/sbin/iptables -X msn-drop


Jacques
Avatar de l’utilisateur
Jacques-
Vice-Amiral
Vice-Amiral
 
Messages: 952
Inscrit le: 23 Jan 2003 01:00

Messagepar dexinou » 11 Sep 2007 11:54

dexinou
Matelot
Matelot
 
Messages: 2
Inscrit le: 11 Sep 2007 11:45


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité