Accueil
Java Standard Edition
Java EE 5
Visual Basic .Net 2005
Visual C++ .Net 2005
Visual C# .Net 2005
Cours ASP .Net 2.0
Postgresql
Linux
Visual Studio 2008
ASP 3.0 Classique
Cours Javascript - DOM - DHTML
Cours Ajax
VBA
Assembleur
Perl
Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Exécution d'un programme
Les archives Jar
Les classes abstraites
Les interfaces
Les tableaux
La généricité
Les énumérations
Les classes internes
Classes anonymes et internes locales
E/S(1):InputStream et OutputStream
E/S(2):FileInputStream et FileOutputStream
E/S(3):Reader et Writer
E/S(4):FilterInputStream et FilterOutputStream
E/S(5):Les filtres d'octets: PrintStream
E/S(6):Les filtres d'octets: DataInputStream et DataOutputStream
E/S(7):Les filtres d'octets: BufferedInputStream et BufferedOutputStream
E/S(8):Flux de caractères: PrintWriter
E/S(9):Flux de caractères: FilterReader et FilterWriter
E/S(10):Flux de caractères: InputStreamReader, OutputStreamWriter, StreamDecoder, StreamEncoder
E/S(11):Flux de caractères: BufferedReader et BufferedWriter
E/S(12):Flux de caractères: FileReader et FileWriter
La classe String (java.lang)
Les collections: L'interface Collection(java.lang)
Les collections(2): L'interface List(java.util)
Les collections(3): AbstractCollection(java.util)
Les collections(4): AbstractList(java.util)
La bibliothèque Swing en Java
Les bases de données en Java
JDBC ( Java Database Connectivity )
Les interfaces graphiques
Les fichiers de configuration en Java
INSTALLATION JAVA EE 5, JRE 6, ECLIPSE, TOMCAT, ETC SOUS LINUX
INSTALLATION JAVA EE 5, JRE 6, ECLIPSE, TOMCAT, ETC SOUS WINDOWS
Les applications Web en java
Les filtres Java (javax.servlet.Filter)
I Généralités
I.1 Le formulaire principal
I.2 Les objets créés par Visual
I.3 Les variables références
I.4 Le garbage collector
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Applications winforms
I.2 Applications MFC
I.3 Objets managés ou pas
I.4 Objets non managés
I.5 Objets managés - handle
I.6 Le top-level ^
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Puissant et Accessible
I.2 Créer ses classes
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
III Les services Windows
IV Le .net remoting
V Communication Tcp avec TcpClient et TcpListener
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Un EDI formidable
I.2 Inclure C# ou VB
I.3 L'objet Response
I.4 Les évènements
II ASP .net et les bdd
II.1 Essayer plusieurs fois la requête
I 2.1 Fichiers distincts
I.2.2 Avec la balise script
I.2.3 Inclure réellement
I.2.4 Avec Response.Write()
I.3.1 La méthode Response.Redirect()
I.4.1 Résoudre problème post
Installation Postgre Linux
Cours Postgresql
Le Shell Unix( Linux, Ubuntu)
Les scripts C-Shell
Programmation système Unix
Reseau Linux
Les iptables
Windows Presentation Foundation(WPF)
Le Framework 3.0
Windows Workflow Foundation(WF)
ASP 3.0 Classique
Cours Javascript - DOM - DHTML
Chat Ajax
VBA Excel 2003
Assembleur
Perl
Inscription
Liste membres
Livre d'or
Forum
Accueil
>
Linux
>
Les iptables
____________________________________________________________________________________________________
Connexion
LA COMMANDE IPTABLES
28/12/07
MANUEL IPTABLES EN FRANCAIS
I) Packages nécessaires
I.1)Fedora Core 8
Pour avoir accès à iptables, il faut, sous Fedora Core 8, le package iptables-ipv6( par exemple iptables-ipv6 – 1.3.8-6.fc8.i386), et le package iptables( par exemple iptables – 1.3.8 - 6.fc8.i386). Ces 2 paquetages sont installés par défaut sous fedora core 8.
II) Généralités
Une table est un ensemble de chaînes. Une table par défaut existe. Mais on peut en créer d’autres.
Une chaîne est un ensemble de règles. Extrait man : « Chaque chaîne est une liste de règles. ».
Le système iptables permet un filtrage des paquets, c'est-à-dire une sélection des paquets. Le paquet est l’unité élémentaire pour désigner quelque chose qu’on a reçu, ou qu’on veut envoyer. On peut le comparer à un paquet pour La Poste !
iptables est donc un système de pare-feu. Son avantage est qu’il est paramétrable en langage de commande, ce qui apporte de la puissance et de la souplesse.
Extrait man : « Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l’utilisateur. ». INPUT est un exemple de chaîne prédéfinie. Les chaînes définies par l’utilisateur sont ce que j’appelerai par la suite les chaînes utilisateur.
II.1) Les règles :
Extrait man : « Une règle de pare-feu spécifie des critères de correspondance pour un paquet, et une cible ».
Les critères de concordance, c’est-à-dire qu’on précise une situation, un contexte hypothétique dans lequel le paquet courant se trouve, par exemple « INPUT », ou, plus précis, un INPUT sur une certaine interface réseau.
Qu’est-ce que la cible ? Extrait man : « La cible peut être le nom d’une chaîne définie par l’utilisateur ou l’une des valeurs spéciales suivantes : ACCEPT, DROP, QUEUE, ou RETURN ». La cible est donc une décision qu’on prend, dans le cas où la correspondance a lieu, par exemple DROP( on rejète le paquet).
RETURN signifie qu'il faut arrêter d'exécuter les règles de cette chaîne, donc ne pas exécuter la suite. Utile par exemple dans les cas où la syntaxe limitée ne nous permet pas certaines choses. Exemple: pour une interface réseau inter1, on veut faire un DROP de tout ce qui ne vient pas de deux de nos réseaux locaux. On rajoute à une chaîne utilisateur:
iptables -A maChaine -i inter1 -s $ad_reseau_1 -j RETURN
iptables -A maChaine -i inter1 -s $ad_reseau_2 -j RETURN
iptables -A maChaine -i inter1 DROP
Dans le cas présent, la syntaxe ne nous permettait pas de mettre plusieurs adresses derrière le -s, sinon on aurait mis -s !$ad_reseau_1 !$ad_reseau_1 -j DROP( FAUX)
On est donc obligé de s'en sortir avec le RETURN.
Le return prouve bien qu'une chaîne est comme un sous-programme qui est exécuté ligne par ligne. L'ordre des lignes a de l'importance. Et on peut arrêter l'exécution du sous-programme quand on veut.
II.2) Les cibles
Extrait man : « ACCEPT signifie que le paquet est autorisé à passer. DROP signifie que le paquet est détruit. ».
Différence entre une chaîne utilisateur et une chaîne prédéfinie :
Le seul point commun entre une chaîne utilisateur et une chaîne prédéfinie, est que toutes les deux sont un ensemble de règles.
Une chaîne utilisateur, c’est un ensemble de règles, et c’est tout. C’est donc une ou plusieurs règles. Il n’y a aucune notion en plus de la notion de règle. C’est un simple regroupement de règles. On peut donner un nom à cet ensemble de règles, c’est un des avantages. Une chaîne utilisateur s’utilise comme cible, c’est-à-dire comme décision. Cela veut dire qu’on décide d’appliquer cet ensemble de règles comme décision. La notion de chaîne utilisateur est donc on ne peut plus simple.
Une chaîne prédéfinie est un ensemble de règles, mais en plus une sémantique est rattachée à cet ensemble de règles. Par exemple « INPUT » : un sens est rattaché, qui est « pour chaque paquet entrant ». Donc l’ensemble des règles de cette chaîne s’applique sous cette condition-là. C’est comme un déclencheur( trigger) en base de données : lorsqu’un certain évènement( INPUT ici) a lieu, une exécution automatique de l’ensemble des règles a lieu( c’est donc la décision prise !). Le point commun avec les chaînes utilisateurs, c’est que la décision prise, c’est finalement toujours l’exécution de l’ensemble des règles de la chaîne.
II.3) Principaux paramètres iptables
iptables –F
supprime toutes les règles de la chaîne. Si aucune chaîne n’est spécifiée, toutes les chaînes de la table sont vidées.
Exemple de chaîne( prédéfinie ici) : INPUT
-L : affiche toutes les règles de la chaîne indiquée
-N : crée une nouvelle chaîne utilisateur avec le nom passé en paramètre
-X : supprime la chaîne utilisateur. Si aucun nom n’est spécifié, toutes les chaînes utilisateurs seront supprimées.
-P Modifie la politique par défaut de la chaîne. Il faut indiqué en plus comme paramètre la cible à utiliser.
-A ajoute une règle à la fin de la chaîne spécifiée.
-I Insère la règle avant celle indiquée. Cette place est précisée par un numéro qui fait suite au nom de la chaîne. La première porte le numéro 1. Si aucun numéro n’est indiqué, la règle est insérée au début.
-D Supprime une règle de la chaîne. Soit un numéro peut être précisé, soit la définition de la règle à supprimer( ses tests de concordance et sa cible).
--destination-ports port[,port[,port...]]
Man: "Établit la correspondance si le port destination est l’un des
ports spécifiés. Et --dports est un synonyme commode pour cette
option."
-p, --protocol [!] protocole
Man: "Protocole de la règle ou du paquet à vérifier. Le protocole
spécifié est l’un des suivants : tcp, udp, icmp ou all, ou bien
sous forme d’une valeur numérique, représentant un de ces proto-
coles ou un protocole différent. Un nom de protocole issu du
fichier /etc/protocols est aussi autorisé. Un «!» avant le pro-
tocole inverse le test. La valeur zéro est équivalente à all.
Le protocole all correspond à tous les protocoles ; c’est aussi
la valeur par défaut lorsque cette option est omise."
-s, --source [!] adresse[/masque]
Man: "
Spécification de la source. L’adresse peut être un nom de
réseau, un nom d’hôte (attention : spécifier un nom à résoudre
avec une requête distante de type DNS est vraiment une mauvaise
idée), une adresse de réseau IP (avec /masque) ou une simple
adresse IP. Le masque peut être un masque de réseau ou un nom-
bre entier spécifiant le nombre de bits égaux à 1 dans la partie
gauche du masque de réseau (bits de poids fort). Par conséquent,
un masque de 24 est équivalent à 255.255.255.0. Un «!» avant la
spécification d’adresse inverse la sélection d’adresse.
L’option --src est un synonyme de --source.
"
-d, --destination [!] adresse[/masque]
Man: "
Spécification de la destination. Voir la description du
paramètre -s (source) pour une description détaillée de la syn-
taxe. L’option --dst est un synonyme de --destination."
-j, --jump cible
Man: "
Ceci détermine la cible de la règle ; c’est-à-dire ce qu’il faut
faire si le paquet correspond à la règle. La cible peut être une
chaîne définie par l’utilisateur (autre que celle dans laquelle
se situe cette règle), une des cibles prédéfinies qui décide
immédiatement du sort du paquet, ou une extension (voir EXTEN-
SIONS ci-dessous). Si cette option est omise dans une règle, la
correspondance d’un paquet avec la règle n’aura aucun effet sur
le sort du paquet, mais les compteurs seront incrémentés."
-i, --in-interface [!] [nom]
Man : "
Nom de l’interface qui reçoit les paquets (seulement pour les
paquets passant par les chaînes INPUT, FORWARD et PREROUTING).
Lorsqu’un «!» est utilisé avant le nom d’interface, la sélection
est inversée. Si le nom de l’interface se termine par un «+», il
désigne toutes les interfaces commençant par ce nom. Si cette
option est omise, toutes les interfaces réseau sont désignées."
-o, --out-interface [!] [nom]
Man: "
Nom de l’interface qui envoie les paquets (seulement pour les
paquets passant par les chaînes FORWARD, OUTPUT et POSTROUTING).
Lorsqu’un «!» est utilisé avant le nom d’interface, la sélection
est inversée. Si le nom de l’interface se termine par un «+», il
désigne toutes les interfaces commençant par ce nom. Si cette
option est omise, toutes les interface réseau sont désignées."
RETOUR HAUT