logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [06/11/2014 10:47]
Hypathie [Pare-feu pour une station (client)]
doc:reseau:iptables-pare-feu-pour-un-client [07/11/2014 10:40]
Hypathie [Pare-feu pour une station (client)]
Ligne 283: Ligne 283:
 Commandes précédentes,​ ou celles-ci plus précises que l'on préférera : Commandes précédentes,​ ou celles-ci plus précises que l'on préférera :
 <code root> <code root>
-iptables -A OUTPUT -p icmp -m conntrack\+iptables -A OUTPUT ​-o eth0 -p icmp -m conntrack\
  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
-iptables -A INPUT -p icmp -m conntrack\+iptables -A INPUT -i eth0 -p icmp -m conntrack\
  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT
 </​code>​ </​code>​
Ligne 313: Ligne 313:
 <​note>​Remarque sur la place du point d'​exclamation,​ qui ne se place pas devant ''​INVALID''​ comme on le voit souvent !</​note>​ <​note>​Remarque sur la place du point d'​exclamation,​ qui ne se place pas devant ''​INVALID''​ comme on le voit souvent !</​note>​
  
-  ​* Si l'on veut que cette imprimante soit partagée aussi par un autre réseau, par exemple 192.168.1.0/​24 on ajoutera :+<note tip>**Si l'on veut que cette imprimante soit partagée aussi par un autre réseau, par exemple 192.168.1.0/​24 on ajoutera ​ceci au pare-feu du client ​:**
  
 <code root>​iptables -A INPUT -i eth0 -s 192.168.1.0/​24 -d 192.168.0.22 -p tcp\ <code root>​iptables -A INPUT -i eth0 -s 192.168.1.0/​24 -d 192.168.0.22 -p tcp\
- ​--dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT</​code>​+ ​--dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
  
- +iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/​24 -p tcp\
-<code root>iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/​24 -p tcp\+
  ​--sport 631 -m state ! --state INVALID -j ACCEPT</​code>​  ​--sport 631 -m state ! --state INVALID -j ACCEPT</​code>​
  
-Dans ce cas au niveau de la passerelle, il faudra ​relayer ​le trafic pour le port 631, c'​est-à-dire accepter sur eth0 (réseau 192.168.0.0/​24) ​en entrée ​et en sortie ​tcp sur le port 631, de même pour eth1 (réseau ​168.168.1.0/24).\\ +**Dans ce cas au niveau de la passerelle** : 
 +Si elle dotée d'un pare-feu, il faudra ​que **son** pare-feu permette ​le trafic pour le port 631, c'​est-à-dire accepter sur eth0 (réseau 192.168.0.0/​24) ​les entrées ​et les sorties ​tcp sur le port 631.\\  
 + 
 +Par exemple : 
 + 
 +  iptables -A INPUT -i eth0 -s 192.168.0.22 -d 192.168.0.1 -p tcp --sport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
 +  iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
 + 
 + 
 +Voir : [[atelier:​chantier:​iptables-un-pare-feu-pour-une-passerelle?&#​le-script-de-la-passerelle|Script d'une passerelle]] 
 +</​note> ​
  
 ====Vérifier et faire des tests==== ====Vérifier et faire des tests====
Ligne 533: Ligne 542:
 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 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.+  * 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 546: Ligne 556:
  
 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à...
 +
 +  * Une grande facilité de modification des règles du pare-feu :
 +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 :
 +Lister les règles avec un numéro de ligne :
 +
 +  iptables -L INPUT -n --line-numbers
 +
 +Supprimer une ligne particulière (avec le numéro de la colonne de gauche) :
 +
 +  iptables -D INPUT numeroDeLaLigneASupprimer
 +
 +Dans ce cas pour sauvegarder les nouvelles règles il n'y a qu'à relancer :
 +
 +  iptables-save > /​etc/​même_nom_de_fichier_que_celui_modifier
 +
 +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.\\ ​
 +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.
  
-**C'est soit la méthode précédente,​ soit celle-ci !**\\  +  ​Ce script permettra un rappel des possibilités : 
-(Pour tester n'​oubliez pas de commenter, mettre un ''#''​ devant la ligne\\ ''​pre-up ​iptables-restore < /​etc/​firewall-client'' ​du fichier ​/etc/network/interfaces ajoutée lors de la méthode précédente.)+<code root>/​etc/​init.d/​firewall-client.sh</​code>​ 
 + 
 +  Usage: /​etc/​init.d/​firewall-client.sh { start | stop | restart | status } 
 + 
 +  ​Par exemple pour supprimer toutes les règles de toutes les tables : 
 +<code root>/​etc/​init.d/​firewall-client.sh stop</​code>​ 
 + 
 +  * 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 "​status"​ pour l'​affichage des règles FILTER et NAT) 
 + 
 +<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.\\  
 +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. 
 +</​note>​
  
 <code bash firewall-client.sh>​ <code bash firewall-client.sh>​
Ligne 569: Ligne 614:
 # Author: hypathie <​hypathie@debian-facile>​ # Author: hypathie <​hypathie@debian-facile>​
 # #
-##Set up init.d ​script+##Set up /etc/init.d/​firewall-client
 case "​$1"​ in case "​$1"​ in
 '​start'​) '​start'​)
-/​sbin/​iptables-restore < /​etc/​firewall-client 
-RETVAL=$? 
-;; 
-'​stop'​) 
-/​sbin/​iptables-save > /​etc/​firewall-client 
-RETVAL=$? 
-;; 
-'​clean'​) 
 ##Set up firewall-client ##Set up firewall-client
 # Clear any existing rules # Clear any existing rules
Ligne 596: Ligne 633:
 /​sbin/​iptables -t filter -A OUTPUT -o 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 ​-o eth0 -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT 
-/​sbin/​iptables -A INPUT -p icmp -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT+/​sbin/​iptables -A INPUT -i eth0 -p icmp -m conntrack --ctstate ​NEW,ESTABLISHED,​RELATED -j ACCEPT
 #Get web #Get web
 /​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 cups #Allow cups
-/​sbin/​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 
-/​sbin/​iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT+  
 +iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/​24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT 
 +#Allow cups from sub-net 
 +/​sbin/​iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
 +/​sbin/​iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT
 #Set up a user chain for ssh outgoing ​ #Set up a user chain for ssh outgoing ​
 /​sbin/​iptables -t filter -N OutGoingSSH /​sbin/​iptables -t filter -N OutGoingSSH
Ligne 620: Ligne 661:
 /​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT
 /​sbin/​iptables -t filter -A INPUT -i eth0 -s 192.168.0.0/​24 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A INPUT -i eth0 -s 192.168.0.0/​24 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
 +echo "set up firewall-client .........>​ [OK]"
 +/​sbin/​iptables-save > /​etc/​firewall-client
 +echo "​iptables-save > /​etc/​firewall-client .........>​ [OK]"
 +RETVAL=$?
 +;;
 +'​stop'​)
 +# Supprime toutes les règles du pare-feu
 +/​sbin/​iptables -t filter -F
 +/​sbin/​iptables -t nat -F
 +/​sbin/​iptables -t mangle -F
 +/​sbin/​iptables -t raw -F
 +/​sbin/​iptables -t filter -P INPUT ACCEPT
 +/​sbin/​iptables -t filter -P OUTPUT ACCEPT
 +/​sbin/​iptables -t filter -P FORWARD ACCEPT
 +echo "​FILTER [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]"​
 +/​sbin/​iptables -t nat -P PREROUTING ACCEPT
 +/​sbin/​iptables -t nat -P POSTROUTING ACCEPT
 +/​sbin/​iptables -t nat -P OUTPUT ACCEPT
 +/​sbin/​iptables -t mangle -P PREROUTING ACCEPT
 +/​sbin/​iptables -t mangle -P OUTPUT ACCEPT
 +/​sbin/​iptables -t mangle -P POSTROUTING ACCEPT
 +/​sbin/​iptables -t mangle -P FORWARD ACCEPT
 +/​sbin/​iptables -t mangle -P INPUT ACCEPT
 +/​sbin/​iptables -t raw -P OUTPUT ACCEPT
 +/​sbin/​iptables -t raw -P PREROUTING ACCEPT
 +echo "ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]"​
 RETVAL=$? RETVAL=$?
 ;; ;;
 '​restart'​) '​restart'​)
-$0 stop && $0 start+/​sbin/​iptables-restore < /​etc/​firewall-client 
 +echo "/​etc/​firewall-client ........[OK]"​ 
 +RETVAL=$
 +;; 
 +'​status'​) 
 +/​sbin/​iptables -L -n --line-numbers 
 +/​sbin/​iptables -t nat -L
 RETVAL=$? RETVAL=$?
 ;; ;;
 *) *)
-echo "​Usage:​ $0 { start | stop | restart | clean}"+echo "​Usage:​ $0 { start | stop | restart | status ​}"
 RETVAL=1 RETVAL=1
 ;; ;;
Ligne 648: Ligne 721:
  
 <code root> <code root>
-chmod +x /​etc/​init.d/​firewall-client.sh +chmod 0755 /​etc/​init.d/​firewall-client.sh 
-chmod 755 /​etc/​init.d/​firewall-client.sh+chown root:​root ​/​etc/​init.d/​firewall-client.sh
 </​code>​ </​code>​
  
Ligne 656: Ligne 729:
 <code root>​update-rc.d firewall-client.sh defaults</​code>​ <code root>​update-rc.d firewall-client.sh defaults</​code>​
  
-Et si tout c'est bien passé, au prochain redémarrage :+===Et si tout c'est bien passé=== 
 +Au prochain redémarrage ​
 +  * Le pare-feu se met en place pendant le démarrage du système  
 +<​code>​set up firewall-client .........>​ [OK] 
 +iptables-save > /​etc/​firewall-client .........>​ [OK]</​code>​ 
 + 
 +  * On peut le vérifier ​:
  
 <code root>​iptables -L -n --line-numbers</​code>​ <code root>​iptables -L -n --line-numbers</​code>​
  
-tout est là ! 8-)+Ou (plus complet) : 
 + 
 +<code root>/​etc/​init.d/​firewall-client.sh status</​code>​ 
 + 
 +Tout est là ! 8-)
  
 <note tip> <note tip>
doc/reseau/iptables-pare-feu-pour-un-client.txt · Dernière modification: 31/05/2023 20:57 par lagrenouille

Pied de page des forums

Propulsé par FluxBB