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 [07/11/2014 10:40] Hypathie [Pare-feu pour une station (client)] |
doc:reseau:iptables-pare-feu-pour-un-client [22/02/2015 11:03] Hypathie [Sauvegarder ses règles] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag> avisé}} | * Niveau requis : {{tag> avisé}} | ||
* Commentaires : //Contexte d'utilisation du sujet du tuto. // | * Commentaires : //Contexte d'utilisation du sujet du tuto. // | ||
- | * Suivi : {{à-placer}} | + | * Suivi : {{tag>à-tester}} |
* Création par [[user>Hypathie]] 08/10/2014 | * Création par [[user>Hypathie]] 08/10/2014 | ||
* Testé par <...> le <...> | * Testé par <...> le <...> | ||
Ligne 301: | Ligne 301: | ||
RELATED,ESTABLISHED -j ACCEPT | RELATED,ESTABLISHED -j ACCEPT | ||
</code> | </code> | ||
+ | |||
+ | ===Pour IMAP et SMTP (utilisation de messagerie icedove) === | ||
+ | <code root>iptables -A INPUT -m multiport -p tcp --sport 25,2525,587,465,143,993,995 -m state --state RELATED,ESTABLISHED -j ACCEPT | ||
+ | |||
+ | iptables -A OUTPUT -m multiport -p tcp --dport 25,2525,143,465,587,993,995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT </code> | ||
+ | |||
+ | Pour la liste des ports selon les serveurs de messagerie utilisés voir : [[https://www.arclab.com/en/amlc/list-of-smtp-and-imap-servers-mailserver-list.html|list of smtp and imap servers mailserver]] | ||
===Pour installer une imprimante partagée === | ===Pour installer une imprimante partagée === | ||
Ligne 520: | Ligne 527: | ||
- | ====Sauvegarder ses règles ==== | + | =====Sauvegarder ses règles ===== |
En l'état actuel, si on éteint le système au redémarrage nos règles et tables utilisateur auront disparu.\\ | En l'état actuel, si on éteint le système au redémarrage nos règles et tables utilisateur auront disparu.\\ | ||
Pour les sauvegarder, il y a plusieurs méthodes. On peut créer un script de démarrage, ou se servir de les commandes iptables-save et iptables-restore.\\ | Pour les sauvegarder, il y a plusieurs méthodes. On peut créer un script de démarrage, ou se servir de les commandes iptables-save et iptables-restore.\\ | ||
On choisira d'abord la seconde méthode car c'est la plus simple ! | On choisira d'abord la seconde méthode car c'est la plus simple ! | ||
- | ===Avec les commandes iptables-save et iptables-restore=== | + | ====Avec les commandes iptables-save et iptables-restore==== |
La commande iptables-save crée un fichier et la commande iptables-restore charge la dernière sauvegarde à partir du fichier crée par iptables-save. | La commande iptables-save crée un fichier et la commande iptables-restore charge la dernière sauvegarde à partir du fichier crée par iptables-save. | ||
- | * Pour sauvegarder toutes les règles : | + | ===Pour sauvegarder toutes les règles=== |
<code root>iptables-save > /etc/firewall-client</code> | <code root>iptables-save > /etc/firewall-client</code> | ||
- | * Pour les charger après le redémarrage : | + | ===Pour les charger après le redémarrage=== |
<code root>iptables-restore < /etc/firewall-client</code> | <code root>iptables-restore < /etc/firewall-client</code> | ||
Ligne 538: | Ligne 545: | ||
Évitons ce risque et surtout de nous fatiguer...\\ | Évitons ce risque et surtout de nous fatiguer...\\ | ||
- | * Pour restaurer automatiquement les règles au démarrage | + | ===Pour restaurer automatiquement les règles au démarrage=== |
- | On va installer la commande iptables-restore avant que les interfaces ne soient chargés via le fichier /etc/network/interfaces.\\ | + | On va installer la commande iptables-restore avant que les interfaces ethernet ne soient chargés via le fichier /etc/network/interfaces.\\ |
- | + | ||
- | * L'avantage de cette méthode : est la possibilité de créer des règles personnalisées pour chaque interface. | + | |
- | Si les règles sont indépendantes des interfaces, on place la commande iptables-restore en pre-up de la boucle locale. | + | |
<code root>vim /etc/network/interfaces</code> | <code root>vim /etc/network/interfaces</code> | ||
Ligne 553: | Ligne 557: | ||
</code> | </code> | ||
- | Donc le jour où on installera une carte wifi sur son vieil ordi fixe, on se teste d'abord quelques nouvelles règles iptables, puis quand elles sont tip-top, on les sauvegarde en créant un ''iptables-save > /etc/iptables-wifi''.\\ | + | ===Avantages de cette méthode=== |
+ | |||
+ | * La possibilité de créer des règles personnalisées pour chaque interface. | ||
+ | Si les règles sont indépendantes des interfaces, on place la commande iptables-restore en pre-up de la boucle locale. | ||
+ | |||
+ | On peut créer plusieurs fichiers à restaurer, un pour chaque interface par exemple, ou un fichier particulier pour un service particulier (un pour masquerade et squid, un autre pour un pare-feu)... | ||
+ | |||
+ | Ainsi par exemple le jour où on ajoutera une carte wifi sur son vieil ordi fixe, on se teste quelques nouvelles règles iptables, puis quand elles sont tip-top, on les sauvegarde en créant un ''iptables-save > /etc/iptables-wifi''.\\ | ||
On ne restera plus qu'à ajouter ''pre-up iptables-restore < /etc/iptables-wifi'' avant la configuration de l'interface wlan dans /etc/network/interfaces sans avoir à modifier ce qui fonctionnait déjà... | On ne restera plus qu'à ajouter ''pre-up iptables-restore < /etc/iptables-wifi'' avant la configuration de l'interface wlan dans /etc/network/interfaces sans avoir à modifier ce qui fonctionnait déjà... | ||
Ligne 560: | Ligne 571: | ||
Si pour une raison ou une autre il est nécessaire d'ajouter une règle au pare-feu, ou d'en supprimer une pour la modifier, on peut utiliser la commande iptables de suppression : | Si pour une raison ou une autre il est nécessaire d'ajouter une règle au pare-feu, ou d'en supprimer une pour la modifier, on peut utiliser la commande iptables de suppression : | ||
- | Par exemple : | + | Par exemple :\\ |
Lister les règles avec un numéro de ligne : | Lister les règles avec un numéro de ligne : | ||
Ligne 575: | Ligne 586: | ||
Ainsi cela évite de modifier un quelconque fichier, et l'on peut se servir de toutes les commandes fournies par sa distribution. | Ainsi cela évite de modifier un quelconque fichier, et l'on peut se servir de toutes les commandes fournies par sa distribution. | ||
- | ===Pour les fadas du "scripting" shell=== | + | ====Pour les fadas du "scripting" shell==== |
Le script suivant permettra de mettre en place le pare-feu à chaque démarrage du système.\\ | Le script suivant permettra de mettre en place le pare-feu à chaque démarrage du système.\\ | ||
Donc c'est soit la méthode de sauvegarde des règles iptables précédente, soit celle-ci.\\ | Donc c'est soit la méthode de sauvegarde des règles iptables précédente, soit celle-ci.\\ | ||
Si vous avez testé la première méthode, ne pas oublier de supprimer ou de commenté la ligne **''#post-up iptables-restore < /etc/firewall-client''** du fichier /etc/network/interfaces. | Si vous avez testé la première méthode, ne pas oublier de supprimer ou de commenté la ligne **''#post-up iptables-restore < /etc/firewall-client''** du fichier /etc/network/interfaces. | ||
- | * Ce script permettra un rappel des possibilités : | + | * Ce script permettra : |
<code root>/etc/init.d/firewall-client.sh</code> | <code root>/etc/init.d/firewall-client.sh</code> | ||
Ligne 589: | Ligne 600: | ||
* Avec "restart" pour permettre de remettre en place toutes les règles (via le fichier de sauvegarde d'iptables-restore) | * Avec "restart" pour permettre de remettre en place toutes les règles (via le fichier de sauvegarde d'iptables-restore) | ||
- | * Avec "start" pour relancer toutes les règles avec le script lui-même et les re-sauvegarder | + | * Avec "start" pour relancer toutes les règles avec le script lui-même et les sauvegarder |
* Avec "status" pour l'affichage des règles FILTER et NAT) | * Avec "status" pour l'affichage des règles FILTER et NAT) | ||
<note tip> | <note tip> | ||
Il faut prendre conscience que si l'on souhaite modifier les règles du pare-feu, il est nécessaire après avoir effectué ses tests d'aller éditer le fichier /etc/init.d/firewall-client pour y apporter les modifications souhaitées aux commandes iptables su script.\\ | Il faut prendre conscience que si l'on souhaite modifier les règles du pare-feu, il est nécessaire après avoir effectué ses tests d'aller éditer le fichier /etc/init.d/firewall-client pour y apporter les modifications souhaitées aux commandes iptables su script.\\ | ||
- | La commande iptables-save lancée après suppression, ajout, etc de nouvelles règles iptables seront écrasées au prochain redemarrage du système qui installera les règles du script /etc/init.d/firewall-client qui auraient été laissées en l'état. | + | |
+ | Pour ce faire :\\ | ||
+ | |||
+ | **''update-rc.d -f firewall-client.sh remove''** | ||
+ | |||
+ | **''vim /etc/init.d/firewall-client.sh''** | ||
+ | |||
+ | -> On modifie ce qu'on veut | ||
+ | |||
+ | **''update-rc.d -f firewall-client.sh default''** | ||
+ | |||
+ | Si l'on n'inscrit pas toute modification dans /etc/init.d/firewall-client.sh ainsi qu'une réinitialisation de ipdate-rc, comme ci-dessus, la simple commande iptables-save lancée après toutes modifications de règles iptables seraient écrasées au prochain redémarrage du système qui ré-installera les règles du script /etc/init.d/firewall-client laissées en l'état. | ||
</note> | </note> | ||
Ligne 618: | Ligne 640: | ||
'start') | 'start') | ||
##Set up firewall-client | ##Set up firewall-client | ||
- | # Clear any existing rules | + | # Clear any FILTER existing rules |
/sbin/iptables -F | /sbin/iptables -F | ||
# Delete all User-specified chains | # Delete all User-specified chains | ||
Ligne 638: | Ligne 660: | ||
/sbin/iptables -t filter -A OUTPUT -p tcp -m multiport --dports 80,443,8000 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT | /sbin/iptables -t filter -A OUTPUT -p tcp -m multiport --dports 80,443,8000 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT | ||
/sbin/iptables -t filter -A INPUT -p tcp -m multiport --sports 80,443,8000 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | /sbin/iptables -t filter -A INPUT -p tcp -m multiport --sports 80,443,8000 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | ||
+ | #Allow mailing protocols (IMAP and SMTP) | ||
+ | /sbin/iptables -A INPUT -m multiport -p tcp --sport 25,2525,587,465,143,993,995 -m state --state RELATED,ESTABLISHED -j ACCEPT | ||
+ | /sbin/iptables -A OUTPUT -m multiport -p tcp --dport 25,2525,143,465,587,993,995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | ||
#Allow cups | #Allow cups | ||
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | ||
Ligne 667: | Ligne 692: | ||
;; | ;; | ||
'stop') | 'stop') | ||
- | # Supprime toutes les règles du pare-feu | + | # delete any existing rules |
/sbin/iptables -t filter -F | /sbin/iptables -t filter -F | ||
/sbin/iptables -t nat -F | /sbin/iptables -t nat -F | ||
Ligne 696: | Ligne 721: | ||
'status') | 'status') | ||
/sbin/iptables -L -n --line-numbers | /sbin/iptables -L -n --line-numbers | ||
- | /sbin/iptables -t nat -L | + | /sbin/iptables -t nat -L -n --line-numbers |
RETVAL=$? | RETVAL=$? | ||
;; | ;; | ||
Ligne 707: | Ligne 732: | ||
</code> | </code> | ||
- | ===firewall-client.sh comme script init=== | + | ===Instalation de firewall-client.sh comme script init=== |
- | Après avoir téléchargé firewall-client.sh. | + | * Téléchargé firewall-client.sh. |
+ | |||
+ | * Déplacer le fichier firewall-client.sh dans le répertoire d'init : | ||
<note important> | <note important> | ||
Attention de bien changer $USER par votre nom d'utilisateur !\\ | Attention de bien changer $USER par votre nom d'utilisateur !\\ | ||
Pour pouvoir écrire (i.e. créer un fichier dans un dossier root, il faut lancer la commande en tant que root. Et donc $USER serait l'utilisateur root qui n'a pas de fichier "Téléchargements". | Pour pouvoir écrire (i.e. créer un fichier dans un dossier root, il faut lancer la commande en tant que root. Et donc $USER serait l'utilisateur root qui n'a pas de fichier "Téléchargements". | ||
</note> | </note> | ||
- | * Déplacer dans le répertoire d'init : | ||
<code root>mv /home/$USER/Téléchargements/firewall-client.sh /etc/init.d/</code> | <code root>mv /home/$USER/Téléchargements/firewall-client.sh /etc/init.d/</code> | ||
- | * Ajouter les droits d'exécution au fichier pour en faire un exécutable : | + | * Définir les droits d'exécution et l'appartenance du fichier /etc/init.d/firewall-client.sh |
+ | |||
+ | Ils doivent être : | ||
<code root> | <code root> | ||
Ligne 759: | Ligne 787: | ||
Et voilà c'est déjà fini ;-) | Et voilà c'est déjà fini ;-) | ||
- | **Prochain n° sur iptables : "[[atelier:chantier:iptables-un-pare-feu-pour-une-passerelle?&|un pare-feu pour une passerelle Debian]]".** | + | **Prochain n° sur iptables : "[[doc:reseau:iptables-pare-feu-pour-une-passerelle|un pare-feu pour une passerelle Debian]]".** |
=====Récapitulatif, commandes, options, syntaxe ===== | =====Récapitulatif, commandes, options, syntaxe ===== | ||
Ligne 772: | Ligne 800: | ||
| -L -t typetable | lister les règles d'un type de table où typetable est\\ soit ''FILTER''\\ soit ''NAT''\\ soit ''MANGLE'' ... | | | -L -t typetable | lister les règles d'un type de table où typetable est\\ soit ''FILTER''\\ soit ''NAT''\\ soit ''MANGLE'' ... | | ||
|-E <nowiki>[chain]</nowiki> | renommer la chaîne chain | | |-E <nowiki>[chain]</nowiki> | renommer la chaîne chain | | ||
- | | -F <nowiki>[chain]</nowiki> | effacer (flush) les règles de la chaîne chain\\ ATTENTION\\ si on ne précise pas de chaîne, tout est effacé ! | | + | | -F <nowiki>[chain]</nowiki> | effacer (flush) les règles de la chaîne chain | |
| -N chain | créer une nouvelle chaîne chain par l'usager | | | -N chain | créer une nouvelle chaîne chain par l'usager | | ||
| -X chain | effacer la chaîne chain de l'usager | | | -X chain | effacer la chaîne chain de l'usager | | ||
- | | -P chain target | définir la politique par défaut de la chaîne chain\\ où **target** est\\ soit ''ACCEPT''\\ soit ''DROP''\\ soit ''REJETC'' | | + | | -P chain target | définir la politique par défaut de la chaîne chain\\ où **target** est\\ soit ''ACCEPT''\\ soit ''DROP''\\ soit ''REJECT'' | |
| -Z <nowiki>[chain]</nowiki> | remise à zéro des compteurs dans la chaîne chain si elle est indiquée | | | -Z <nowiki>[chain]</nowiki> | remise à zéro des compteurs dans la chaîne chain si elle est indiquée | | ||