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/01/2015 17:19] bendia [iptables: un pare-feu pour un client] |
doc:reseau:iptables-pare-feu-pour-un-client [25/06/2017 06:17] smolski [Fonctionnement d'iptables] |
||
---|---|---|---|
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 : {{tag > a-tester}} | + | * 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 53: | Ligne 53: | ||
**SSL/https** = UDP 443((voir samba))\\ | **SSL/https** = UDP 443((voir samba))\\ | ||
**[[doc:reseau:dns|DNS]]** = UDP = 53\\ | **[[doc:reseau:dns|DNS]]** = UDP = 53\\ | ||
- | **[[atelier:chantier:dhcp|DHCP]]** = UDP = 67 et 68\\ | + | **[[doc:reseau:dhcp|DHCP]]** = UDP = 67 et 68\\ |
**[[doc:reseau:samba|SAMBA]]** = 137-139 et 445 (voir ci-dessous)\\ | **[[doc:reseau:samba|SAMBA]]** = 137-139 et 445 (voir ci-dessous)\\ | ||
**NETBIOS** = 137-139\\ | **NETBIOS** = 137-139\\ | ||
Ligne 98: | Ligne 98: | ||
> **''-t table''** : pour demander une table en particulier((Par défaut c'est la table filter qui est listée, donc on peut aussi utiliser la commande: ''iptables -L'' pour le même résultat.)) | > **''-t table''** : pour demander une table en particulier((Par défaut c'est la table filter qui est listée, donc on peut aussi utiliser la commande: ''iptables -L'' pour le même résultat.)) | ||
- | <code> | + | <code config retour de la commande> |
Chain INPUT (policy ACCEPT) | Chain INPUT (policy ACCEPT) | ||
target prot opt source destination | target prot opt source destination | ||
Ligne 125: | Ligne 125: | ||
> **La cinquième ligne ''Chain OUTPUT (policy ACCEPT)''** concerne les paquets sortants (**''OUTPUT''**). | > **La cinquième ligne ''Chain OUTPUT (policy ACCEPT)''** concerne les paquets sortants (**''OUTPUT''**). | ||
+ | === Lien utile === | ||
+ | |||
+ | En complément, voir ce post sur le forum : | ||
+ | * [[https://debian-facile.org/viewtopic.php?id=18221]] | ||
====Quelques définitions==== | ====Quelques définitions==== | ||
Ligne 143: | Ligne 147: | ||
Une chaîne est un ensemble de règles définies dans un **ordre précis**.\\ Pour l'instant, il n'y n'a pas de règle mais une fois le pare-feu mis en place on pourrait avoir par exemple pour les entrées ''INPUT'': | Une chaîne est un ensemble de règles définies dans un **ordre précis**.\\ Pour l'instant, il n'y n'a pas de règle mais une fois le pare-feu mis en place on pourrait avoir par exemple pour les entrées ''INPUT'': | ||
<code root>iptables -L --line-numbers Chain INPUT</code> | <code root>iptables -L --line-numbers Chain INPUT</code> | ||
- | <code> | + | |
- | num target prot opt source destination | + | <code config retour de la commande>num target prot opt source destination |
1 ACCEPT tcp -- anywhere anywhere tcp dpt:www | 1 ACCEPT tcp -- anywhere anywhere tcp dpt:www | ||
2 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh | 2 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh | ||
- | 3 ACCEPT tcp -- anywhere anywhere tcp dpt:imap2 | + | 3 ACCEPT tcp -- anywhere anywhere tcp dpt:imap2</code> |
- | </code> | + | |
>**Il y a bien un ordre précis** : | >**Il y a bien un ordre précis** : | ||
>>La première règle (''1'') autorise ''ACCEPT'', le protocole ''tcp'', venant de partout ''anywhere'', allant partout ''anywhere'', et cela pour ''www'', le web (ou port 80). | >>La première règle (''1'') autorise ''ACCEPT'', le protocole ''tcp'', venant de partout ''anywhere'', allant partout ''anywhere'', et cela pour ''www'', le web (ou port 80). | ||
+ | >> | ||
>>La seconde (''2'') pour ''ssh'' | >>La seconde (''2'') pour ''ssh'' | ||
+ | >> | ||
>>la troisième (''3'')pour ''imap2'' | >>la troisième (''3'')pour ''imap2'' | ||
Ligne 207: | Ligne 213: | ||
* Voyons le résultat : | * Voyons le résultat : | ||
<code root>iptables -L -n --line-numbers</code> | <code root>iptables -L -n --line-numbers</code> | ||
- | <code>Chain INPUT (policy DROP) | + | <code config retour de la commande>Chain INPUT (policy DROP) |
num target prot opt source destination | num target prot opt source destination | ||
Ligne 214: | Ligne 220: | ||
Chain OUTPUT (policy DROP) | Chain OUTPUT (policy DROP) | ||
- | num target prot opt source destination </code> | + | num target prot opt source destination</code> |
===Autoriser les échanges avec les serveurs DNS=== | ===Autoriser les échanges avec les serveurs DNS=== | ||
Ligne 262: | Ligne 268: | ||
Pour l'espace utilisateur les états valides sont NEW, ESTABLISHED, RELATED et INVALID. | Pour l'espace utilisateur les états valides sont NEW, ESTABLISHED, RELATED et INVALID. | ||
- | Voir [[http://www.inetdoc.net/guides/iptables-tutorial/traversingoftables.html|la traverser des tables et des chaînes]]. | + | Voir [[http://www.inetdoc.net/guides/iptables-tutorial/traversingoftables.html|la traversée des tables et des chaînes]]. |
[[http://www.inetdoc.net/guides/iptables-tutorial/tcpconnections.html|La machine d'état: connexion TCP]] | [[http://www.inetdoc.net/guides/iptables-tutorial/tcpconnections.html|La machine d'état: connexion TCP]] | ||
Ligne 337: | Ligne 343: | ||
- | Voir : [[atelier:chantier:iptables-un-pare-feu-pour-une-passerelle?&#le-script-de-la-passerelle|Script d'une passerelle]] | + | Voir : [[doc:reseau:iptables-pare-feu-pour-une-passerelle?&#le-script-de-la-passerelle|Script d'une passerelle]] |
</note> | </note> | ||
Ligne 345: | Ligne 351: | ||
ou | ou | ||
<code root>iptables -L -n --line-numbers</code> | <code root>iptables -L -n --line-numbers</code> | ||
- | <code> | + | |
- | Chain INPUT (policy DROP 80 packets, 19279 bytes) | + | <code config retour de la commande>Chain INPUT (policy DROP 80 packets, 19279 bytes) |
pkts bytes target prot opt in out source destination | pkts bytes target prot opt in out source destination | ||
1 131 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp\ | 1 131 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp\ | ||
Ligne 369: | Ligne 375: | ||
dports 80,443,8000 ctstate NEW,RELATED,ESTABLISHED | dports 80,443,8000 ctstate NEW,RELATED,ESTABLISHED | ||
| | ||
- | 4 336 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 | + | 4 336 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0</code> |
- | </code> | + | |
===Faire des tests === | ===Faire des tests === | ||
* Sur l'interface lo | * Sur l'interface lo | ||
<code user>ping localhost</code> | <code user>ping localhost</code> | ||
- | <code> | + | |
- | PING localhost (127.0.0.1) 56(84) bytes of data. | + | <code config retour de la commande>PING localhost (127.0.0.1) 56(84) bytes of data. |
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.050 ms | 64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.050 ms | ||
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.042 ms | 64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.042 ms | ||
Ligne 382: | Ligne 388: | ||
--- localhost ping statistics --- | --- localhost ping statistics --- | ||
2 packets transmitted, 2 received, 0% packet loss, time 999ms | 2 packets transmitted, 2 received, 0% packet loss, time 999ms | ||
- | rtt min/avg/max/mdev = 0.042/0.046/0.050/0.004 ms | + | rtt min/avg/max/mdev = 0.042/0.046/0.050/0.004 ms</code> |
- | </code> | + | |
Ça marche 8-) | Ça marche 8-) | ||
Ligne 389: | Ligne 394: | ||
* Vers un autre client : | * Vers un autre client : | ||
<code user>ping 192.168.0.1</code> | <code user>ping 192.168.0.1</code> | ||
- | <code> | + | |
- | PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. | + | <code config retour de la commande>PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. |
64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=0.226 ms | 64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=0.226 ms | ||
64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=0.209 ms | 64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=0.209 ms | ||
Ligne 396: | Ligne 401: | ||
--- 192.168.0.1 ping statistics --- | --- 192.168.0.1 ping statistics --- | ||
2 packets transmitted, 2 received, 0% packet loss, time 999ms | 2 packets transmitted, 2 received, 0% packet loss, time 999ms | ||
- | rtt min/avg/max/mdev = 0.209/0.217/0.226/0.017 ms | + | rtt min/avg/max/mdev = 0.209/0.217/0.226/0.017 ms</code> |
- | </code> | + | |
Tout va bien :-D | Tout va bien :-D | ||
Ligne 404: | Ligne 409: | ||
<code root>ping google.fr</code> | <code root>ping google.fr</code> | ||
- | <code>PING google.fr (173.194.40.152) 56(84) bytes of data. | + | <code config retour de la commande>PING google.fr (173.194.40.152) 56(84) bytes of data. |
64 bytes from par10s10-in-f24.1e100.net (173.194.40.152): icmp_req=1 ttl=55 time=34.0 ms | 64 bytes from par10s10-in-f24.1e100.net (173.194.40.152): icmp_req=1 ttl=55 time=34.0 ms | ||
^C | ^C | ||
Ligne 509: | Ligne 514: | ||
<code user>less /var/log/messages | grep OUTGOING_SSH</code> | <code user>less /var/log/messages | grep OUTGOING_SSH</code> | ||
- | <code> | + | |
- | <...> | + | <code config retour de la commande><...> |
Oct 8 12:01:07 debian-pc1 kernel: [16793.633030] [OUTGOING_SSH] : IN=eth0 OUT= MAC=xxx.. | Oct 8 12:01:07 debian-pc1 kernel: [16793.633030] [OUTGOING_SSH] : IN=eth0 OUT= MAC=xxx.. | ||
SRC=192.168.0.1 DST=192.168.0.22 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=13465 | SRC=192.168.0.1 DST=192.168.0.22 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=13465 | ||
DF PROTO=TCP SPT=48542 DPT=22 WINDOW=1523 RES=0x00 ACK URGP=0 | DF PROTO=TCP SPT=48542 DPT=22 WINDOW=1523 RES=0x00 ACK URGP=0 | ||
- | <...> | + | <...></code> |
- | </code> | + | |
<code user>less /var/log/messages | grep INCOMING_SSH</code> | <code user>less /var/log/messages | grep INCOMING_SSH</code> | ||
- | <code> | + | |
- | <...> | + | <code config retour de la commande><...> |
Oct 8 12:01:07 debian-pc1 kernel: [16793.632822] [INCOMING_SSH] : IN= OUT=eth0 | Oct 8 12:01:07 debian-pc1 kernel: [16793.632822] [INCOMING_SSH] : IN= OUT=eth0 | ||
SRC=192.168.0.22 DST=192.168.0.1 LEN=52 TOS=0x10 PREC=0x00 TTL=64 | SRC=192.168.0.22 DST=192.168.0.1 LEN=52 TOS=0x10 PREC=0x00 TTL=64 | ||
ID=35238 DF PROTO=TCP SPT=22 DPT=48542 WINDOW=431 RES=0x00 ACK FIN URGP=0 | ID=35238 DF PROTO=TCP SPT=22 DPT=48542 WINDOW=431 RES=0x00 ACK FIN URGP=0 | ||
- | <...> | + | <...></code> |
- | </code> | + | |
Ligne 550: | Ligne 555: | ||
<code root>vim /etc/network/interfaces</code> | <code root>vim /etc/network/interfaces</code> | ||
- | <code> | + | |
+ | <file config interfaces> | ||
# The loopback network interface | # The loopback network interface | ||
auto lo | auto lo | ||
iface lo inet loopback | iface lo inet loopback | ||
post-up iptables-restore < /etc/firewall-client | post-up iptables-restore < /etc/firewall-client | ||
- | </code> | + | </file> |
===Avantages de cette méthode=== | ===Avantages de cette méthode=== | ||
Ligne 591: | Ligne 598: | ||
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 604: | Ligne 611: | ||
<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 du script.\\ |
Pour ce faire :\\ | Pour ce faire :\\ | ||
Ligne 749: | Ligne 756: | ||
<code root> | <code root> | ||
- | chmod 0755 /etc/init.d/firewall-client.sh | + | chmod 0755 /etc/init.d/firewall-client.sh</code> |
- | chown root:root /etc/init.d/firewall-client.sh | + | <code root>chown root:root /etc/init.d/firewall-client.sh |
</code> | </code> | ||
* Faire en sorte qu'init le prenne en compte à chaque redémarrage | * Faire en sorte qu'init le prenne en compte à chaque redémarrage | ||
+ | |||
+ | <code root>update-rc.d firewall-client.sh defaults</code> | ||
+ | |||
+ | * Pour démarrer : | ||
<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é=== | ===Et si tout c'est bien passé=== | ||
- | Au prochain redémarrage : | + | Au prochain redémarrage, pendant la mise en route du système : |
* Le pare-feu se met en place pendant le démarrage du système | * Le pare-feu se met en place pendant le démarrage du système | ||
<code>set up firewall-client .........> [OK] | <code>set up firewall-client .........> [OK] | ||
Ligne 787: | Ligne 798: | ||
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 ===== |