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 [06/11/2014 07:48] Hypathie [Récapitulatif des commandes et options] |
doc:reseau:iptables-pare-feu-pour-un-client [06/11/2014 10:47] Hypathie [Pare-feu pour une station (client)] |
||
---|---|---|---|
Ligne 219: | Ligne 219: | ||
<code root> | <code root> | ||
iptables -t filter -A OUTPUT -p udp -m udp\ | iptables -t filter -A OUTPUT -p udp -m udp\ | ||
- | --dport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | + | --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -p udp -m udp\ | iptables -t filter -A INPUT -p udp -m udp\ | ||
Ligne 281: | Ligne 281: | ||
<note> | <note> | ||
- | Commande précédente, ou on peut aussi faire : | + | 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 -p icmp -m conntrack\ | ||
Ligne 301: | Ligne 301: | ||
RELATED,ESTABLISHED -j ACCEPT | RELATED,ESTABLISHED -j ACCEPT | ||
</code> | </code> | ||
+ | |||
+ | ===Pour installer une imprimante partagée === | ||
+ | * Si l'on veut brancher son imprimante sur la machine d'IP 192.168.0.22 faisant alors office de serveur d'impression pour le réseau local 192.168.0.0/24 : | ||
+ | |||
+ | <code root>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 OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp\ | ||
+ | --sport 631 -m state ! --state INVALID -j ACCEPT</code> | ||
+ | |||
+ | <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 : | ||
+ | |||
+ | <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> | ||
+ | |||
+ | |||
+ | <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> | ||
+ | |||
+ | 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).\\ | ||
====Vérifier et faire des tests==== | ====Vérifier et faire des tests==== | ||
Ligne 498: | Ligne 520: | ||
* Pour sauvegarder toutes les règles : | * Pour sauvegarder toutes les règles : | ||
- | <code root>iptables-save > /etc/iptables</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/iptables</code> | + | <code root>iptables-restore < /etc/firewall-client</code> |
Bon il ne faut pas oublier de charger son pare-feu à chaque redémarrage !\\ | Bon il ne faut pas oublier de charger son pare-feu à chaque redémarrage !\\ | ||
Ligne 516: | Ligne 538: | ||
<code> | <code> | ||
# The loopback network interface | # The loopback network interface | ||
- | pre-up iptables-restore < /etc/iptables | ||
auto lo | auto lo | ||
iface lo inet loopback | iface lo inet loopback | ||
+ | post-up iptables-restore < /etc/firewall-client | ||
</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 crant un ''iptables-save > /etc/iptables-wifi''.\\ | + | 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''.\\ |
- | 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 toucher 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à... |
===Pour les fadas du "scripting" shell=== | ===Pour les fadas du "scripting" shell=== | ||
**C'est soit la méthode précédente, soit celle-ci !**\\ | **C'est soit la méthode précédente, soit celle-ci !**\\ | ||
- | (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/firewall-client'' du fichier /etc/network/interfaces ajoutée lors de la méthode précédente.) |
<code bash firewall-client.sh> | <code bash firewall-client.sh> | ||
Ligne 550: | Ligne 572: | ||
case "$1" in | case "$1" in | ||
'start') | 'start') | ||
- | /sbin/iptables-restore < /etc/config_parefeu | + | /sbin/iptables-restore < /etc/firewall-client |
RETVAL=$? | RETVAL=$? | ||
;; | ;; | ||
'stop') | 'stop') | ||
- | /sbin/iptables-save > /etc/config_parefeu | + | /sbin/iptables-save > /etc/firewall-client |
RETVAL=$? | RETVAL=$? | ||
;; | ;; | ||
Ligne 579: | Ligne 601: | ||
/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 | ||
+ | /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 | ||
+ | /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 | ||
#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 689: | Ligne 714: | ||
====La syntaxe générale ==== | ====La syntaxe générale ==== | ||
===Commande iptables basique=== | ===Commande iptables basique=== | ||
+ | * Ouvrir une connexion vers sa machine | ||
+ | |||
+ | iptables -A INPUT -i <interface_d'entrée> -p <nom_du_protocole> --dport <nom_du_port_de_destination> -j ACCEPT | ||
+ | |||
+ | > Où <nom_du_protocole> est à remplacer par TCP, UDP, all ; | ||
+ | > une règle pour chaque protocole | ||
+ | > et <nom_du_port> est le **nom du service**, tels FTP, DNS ... **ou le numéro** qui leur correspond tels 21, 53... | ||
+ | |||
+ | ===Règles plus précise === | ||
+ | |||
+ | * Sur l'entrée : | ||
+ | |||
+ | iptables -A INPUT -i <interface_d'entrée> -s <reseau_local/masque_de_reseau> -d <ip_locale> -p <nom_du_protocole> --dport <nom_du_port> -m state --state NEW -j ACCEPT | ||
+ | |||
+ | |||
+ | > Ce qui rentre sur sa carte ethernet, dont la source est seulement <reseau_local/masque_de_reseau> et seulement à destination de <ip_locale>, dont l'état est une nouvelle connexion par tel protocole et sur tel port, sera accepté. | ||
+ | |||
+ | * Sur la sortie : | ||
+ | |||
+ | iptables -A OUTPUT -o eth0 -s <ip_locale> -d <reseau_local/masque_de_reseau> -p <nom_du_protocole> --sport <nom_du_port> -m state --state NEW -j ACCEPT | ||
+ | |||
+ | > Ce qui sort de sa carte ethernet, dont la source est seulement <reseau_local/masque_de_reseau> et seulement à destination de <ip_locale>, dont l'état est une nouvelle connexion par tel protocole et sur tel port, sera accepté. | ||
+ | |||
+ | |||
+ | ===Filtre encore plus restrictif=== | ||
+ | |||
+ | * En entrée : | ||
+ | |||
+ | iptables -A INPUT -i eth0 -s <reseau_local/masque_de_reseau> -d <ip_locale> -p <nom_du_protocole> --dport <nom_du_port> -m state --state ! INVALID -j ACCEPT | ||
+ | |||
+ | > On précise que l'on accepte, en entrée sur l'interface réseau, tout ce qui vient de notre réseau local à destination de l'adresse ip, correspondant à notre interface réseau utilisant tel protocole, vers tel numéro de port (ou service) dont l'état du paquet n'est pas invalide, c'est-à-dire un paquet ayant l'état 'nouveau', 'établi', 'relatif' ou 'non traqué'. | ||
+ | |||
+ | * En sortie : | ||
+ | |||
+ | iptables -A OUTPUT -o eth0 -s <ip_locale> -d <reseau_local/masque_de_reseau> -p <nom_du_protocole> --sport <nom_du_port> -m state --state RELATED,ESTABLISHED -j ACCEPT | ||
+ | |||
+ | > On précise que l'on accepte de laisser sortir de l'interface réseau, tout paquet dont la source est l'adresse ip correspondant à notre interface réseau, à destination de notre réseau local utilisant tel protocole, vers tel numero de port (ou service) dont l'état est 'relatif' ou 'établi' - en rapport avec la règle d'entrée. | ||
+ | |||
+ | **-> Tous les paquets qui ne correspondent pas à ces critères d'entrée ou sortie n'entrent pas ou ne sortent pas !** | ||
+ | |||
- | iptables -A INPUT -i <interface_d'entrée> -p <nom_du_protocole> --dport <nom_du_port_de_destination> -j ACCEPT | + | Pour dresser des définitions avec des arguments plus précis car tenant compte des particularités de chacun des protocoles, voir la documentation **[[http://www.netfilter.org/documentation/|netfilter:Documentation]]**. |