Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:iptables-pare-feu-pour-un-client [08/10/2014 23:51] Hypathie [Introduction] |
doc:reseau:iptables-pare-feu-pour-un-client [14/10/2014 23:37] captnfab [Pare-feu pour une station (client)] |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
* Suivi : {{à-placer}} | * Suivi : {{à-placer}} | ||
* Création par [[user>Hypathie]] 08/10/2014 | * Création par [[user>Hypathie]] 08/10/2014 | ||
- | * Testé par <...> le <...> FIXME | + | * Testé par <...> le <...> |
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=99071#p99071| Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=99071#p99071| Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | **Nota :** | + | |
===== Introduction ===== | ===== Introduction ===== | ||
**Iptables** est un logiciel libre grâce auquel l’administrateur système peut configurer les chaînes et règles du pare-feu en espace noyau. | **Iptables** est un logiciel libre grâce auquel l’administrateur système peut configurer les chaînes et règles du pare-feu en espace noyau. | ||
Ligne 39: | Ligne 39: | ||
===Ports TCP/UDP et Protocole couramment utilisés=== | ===Ports TCP/UDP et Protocole couramment utilisés=== | ||
- | Comme un pare-feu classique, iptables contrôle les ports sur une interface réseau dans par laquelle les paquets peuvent entrer, passer à travers pour y être modifiés, ou encore sortir.\\ | + | Comme un pare-feu classique, iptables contrôle les ports sur une interface réseau par laquelle les paquets peuvent entrer, transiter, sortir, être rejetés.\\ |
- | Ce reporter à la documentation interne (lien en vert) pour la mise en place de ces services ci-dessous.\\ | + | Ce reporter à la documentation interne (lien en vert) pour la mise en place des services listés ci-dessous.\\ |
- | Vous y trouverez : leur installation et leur configuration. Et à ce sujet, comment changer les ports par défaut associé à tel ou tel service. | + | Vous y trouverez : leur installation et leur configuration, tel que la modification du port par défaut pour certains de ces protocoles.\\ |
- | Dans la suite je considérerai qu'ils n'ont pas été modifiés. | + | Et à ce sujet, dans la suite de ce wiki, je considérerai qu'ils n'ont pas été modifiés. |
**[[doc:reseau:ftp|FTP]]** = TCP 21/20\\ | **[[doc:reseau:ftp|FTP]]** = TCP 21/20\\ | ||
Ligne 65: | Ligne 65: | ||
Un conseil ne pas mettre en place un pare-feu tout fait sans comprendre ce qu'on fait.\\ | Un conseil ne pas mettre en place un pare-feu tout fait sans comprendre ce qu'on fait.\\ | ||
L'idéal est d'avoir quelques bases sur les réseaux.\\ | L'idéal est d'avoir quelques bases sur les réseaux.\\ | ||
- | Voici quelques liens indispensables pour aborder ces bases :\\ | + | Voici quelques liens indispensables pour acquérir quelques connaissances fondamentales :\\ |
* [[http://www.inetdoc.net/guides/iptables-tutorial/tcpiprepetition.html|TCP/IP]] | * [[http://www.inetdoc.net/guides/iptables-tutorial/tcpiprepetition.html|TCP/IP]] | ||
Ligne 74: | Ligne 74: | ||
* sur SCTP : les [[http://www.inetdoc.net/guides/iptables-tutorial/sctpcharacteristics.html|Caractéristiques SCTP]] et les [[http://www.inetdoc.net/guides/iptables-tutorial/sctpheaders.html|En-têtes SCTP]] | * sur SCTP : les [[http://www.inetdoc.net/guides/iptables-tutorial/sctpcharacteristics.html|Caractéristiques SCTP]] et les [[http://www.inetdoc.net/guides/iptables-tutorial/sctpheaders.html|En-têtes SCTP]] | ||
- | Pour ce qui concerne le routage (table NAT), nous l'aborderons lors de la mise en place d'un pare-feu pour une machine faisant office de routeur, dans un autre wiki. | + | Au sujet de la configuration réseau, commandes, fichiers de configuration pour GNU/linux:\\ [[http://www.linux-france.org/prj/edu/archinet/systeme/ch03.html]] |
+ | |||
+ | Pour ce qui concerne le routage (table NAT), nous l'aborderons lors de la mise en place d'un pare-feu pour une machine faisant office de routeur, dans le wiki suivant. | ||
=====Fonctionnement d'iptables===== | =====Fonctionnement d'iptables===== | ||
Pour apprendre à utiliser iptables et acquérir les différentes notions mises en œuvre lors de son utilisation, nous allons partir de l'exemple.\\ | Pour apprendre à utiliser iptables et acquérir les différentes notions mises en œuvre lors de son utilisation, nous allons partir de l'exemple.\\ | ||
Ligne 82: | Ligne 84: | ||
Une **table** permet de définir le plan de "travail". En effet, iptables ne sert pas uniquement à bloquer certains paquets et n'est pas uniquement utiliser pour dresser un pare-feu. On peut par exemple s'en servir modifier un paquet (table MANGLE), ou pour faire de la redirection de paquet (table NAT). | Une **table** permet de définir le plan de "travail". En effet, iptables ne sert pas uniquement à bloquer certains paquets et n'est pas uniquement utiliser pour dresser un pare-feu. On peut par exemple s'en servir modifier un paquet (table MANGLE), ou pour faire de la redirection de paquet (table NAT). | ||
- | Mais c'est la table filter permet d'utiliser iptables en tant que pare-feu. Avec cette table, on va indiquer à iptables un ensemble de règles dans un ordre précis afin qu'il sache s'il doit interdire ou autoriser le passage des paquets. \\ | + | Mais c'est la table filter qui permet d'utiliser iptables en tant que pare-feu et qui nous intéresse ici.\\ Avec cette table, on va indiquer à iptables un ensemble de règles dans un ordre précis afin qu'il sache s'il doit interdire ou autoriser le passage des paquets. \\ |
Dresser la table filter consistera à indiquer précisément à iptables pour quels paquets, pour quels ports ou protocoles, pour quelle direction... il y a autorisation ou interdiction de passage. | Dresser la table filter consistera à indiquer précisément à iptables pour quels paquets, pour quels ports ou protocoles, pour quelle direction... il y a autorisation ou interdiction de passage. | ||
Ligne 104: | Ligne 106: | ||
> **La première ligne ''Chain INPUT (policy ACCEPT)''** concerne les paquets entrants **''INPUT''**.\\ On voit que tout passe dans toutes les directions **''policy ACCEPT''**. | > **La première ligne ''Chain INPUT (policy ACCEPT)''** concerne les paquets entrants **''INPUT''**.\\ On voit que tout passe dans toutes les directions **''policy ACCEPT''**. | ||
- | > **En dessous ''target prot opt source destination''** ce sont les titres qui permettent de ranger dans un tableau bien lisible ce qui est mis en place : | + | > **En dessous ''target prot opt source destination''** ce sont les titres qui permettent de ranger le retour de la commande de listage dans un tableau bien lisible. Pratique pour lire plus facilement ce qui est mis en place : |
>> | >> | ||
>> **''target''** : c'est l'action à prendre, quand des règles seront mises en place, on trouvera dans cette colonne plusieurs lignes dont chacune aura l'une de ces valeurs :\\ **''ACCEPT''** (autoriser) ou **''DROP''** (interdire) ou **''REJECT''** (interdire en envoyant un signal d'interdiction). | >> **''target''** : c'est l'action à prendre, quand des règles seront mises en place, on trouvera dans cette colonne plusieurs lignes dont chacune aura l'une de ces valeurs :\\ **''ACCEPT''** (autoriser) ou **''DROP''** (interdire) ou **''REJECT''** (interdire en envoyant un signal d'interdiction). | ||
Ligne 175: | Ligne 177: | ||
<note> | <note> | ||
- | -F : (flush) : vider toutes les tables existantes\\ | + | -F : (flush) : vider toutes les chaînes existantes\\ |
- | -X : supprimer les règles personnelles | + | -X : supprimer les chaînes personnelles |
</note> | </note> | ||
Ligne 463: | Ligne 465: | ||
* Pour vérifier ses logs : | * Pour vérifier ses logs : | ||
- | On se connecte en ssh du client sur lequel on a installé le pare-feu vers un client de notre réseau; puis dans l'autre sens d'un client du réseau vers le client "pare-feuté" qui est aussi server ssh. | + | On se connecte en ssh du client sur lequel on a installé le pare-feu vers un client de notre réseau; puis dans l'autre sens d'un client du réseau vers le client "pare-feuté" qui est aussi serveur ssh. |
<code user>less /var/log/messages | grep OUTGOING_SSH</code> | <code user>less /var/log/messages | grep OUTGOING_SSH</code> | ||
Ligne 498: | Ligne 500: | ||
<code root>iptables-restore < /etc/iptables</code> | <code root>iptables-restore < /etc/iptables</code> | ||
- | Bon il ne faut pas oublier de mettre son pare-feu à chaque redémarrage !\\ | + | Bon il ne faut pas oublier de charger son pare-feu à chaque redémarrage !\\ |
Évitons ce risque et surtout de nous fatiguer...\\ | Évitons ce risque et surtout de nous fatiguer...\\ | ||
Ligne 525: | Ligne 527: | ||
(Pour tester n'oubliez pas de commenter, mettre un ''#'' devant la ligne\\ ''pre-up iptables-restore < /etc/iptables'' du fichier /etc/network/interfaces ajoutée lors de la méthode précédente.) | (Pour tester n'oubliez pas de commenter, mettre un ''#'' devant la ligne\\ ''pre-up iptables-restore < /etc/iptables'' du fichier /etc/network/interfaces ajoutée lors de la méthode précédente.) | ||
- | <code text firewall-client.sh> | + | <code bash firewall-client.sh> |
#!/bin/sh | #!/bin/sh | ||
### BEGIN INIT INFO | ### BEGIN INIT INFO | ||
Ligne 565: | Ligne 567: | ||
/sbin/iptables -t filter -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT | /sbin/iptables -t filter -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT | ||
/sbin/iptables -t filter -A INPUT -p udp -m udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | /sbin/iptables -t filter -A INPUT -p udp -m udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | ||
- | #Allow trafic on internal network | + | #Allow trafic on internal network |
- | /sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT | + | |
/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT | /sbin/iptables -t filter -A INPUT -i lo -j ACCEPT | ||
+ | /sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT | ||
#Allow ping to internal network | #Allow ping to internal network | ||
/sbin/iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT | /sbin/iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT | ||
Ligne 578: | Ligne 580: | ||
/sbin/iptables -I INPUT -p tcp --dport 22 -j OutGoingSSH | /sbin/iptables -I INPUT -p tcp --dport 22 -j OutGoingSSH | ||
/sbin/iptables -A OutGoingSSH -j LOG --log-prefix '[OUTGOING_SSH] : ' | /sbin/iptables -A OutGoingSSH -j LOG --log-prefix '[OUTGOING_SSH] : ' | ||
- | #Set up a user chain forr ssh incoming | + | #Set up a user chain for ssh incoming |
/sbin/iptables -t filter -N InComingSSH | /sbin/iptables -t filter -N InComingSSH | ||
/sbin/iptables -I OUTPUT -p tcp --sport 22 -j InComingSSH | /sbin/iptables -I OUTPUT -p tcp --sport 22 -j InComingSSH | ||
Ligne 646: | Ligne 648: | ||
Et voilà c'est déjà fini ;-) | Et voilà c'est déjà fini ;-) | ||
- | **Prochain n° sur iptables : "un pare-feu pour une passerelle-routeur Debian".** | + | **Prochain n° sur iptables : "[[atelier:chantier:iptables-un-pare-feu-pour-une-passerelle?&|un pare-feu pour une passerelle Debian]]".** |
=====Récapitulatif des commandes et options ===== | =====Récapitulatif des commandes et options ===== |