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-une-passerelle [15/11/2014 17:30] Hypathie [Le script de la passerelle] |
doc:reseau:iptables-pare-feu-pour-une-passerelle [24/09/2015 17:10] milou [iptables: un pare-feu pour une passerelle] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag> avisé}} | * Niveau requis : {{tag> avisé}} | ||
* Commentaires : Fignoler le routage, installer un pare-feu sur une passerelle debian. | * Commentaires : Fignoler le routage, installer un pare-feu sur une passerelle debian. | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Suivi : {{tag>à-tester}} |
- | * Suivi : {{tag>à-tester à-placer}} | + | |
* Création par [[user>Hypathie]] 14/10/2014 | * Création par [[user>Hypathie]] 14/10/2014 | ||
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
Ligne 15: | Ligne 14: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Pour ce qui concerne iptables, ce wiki prend la suite du wiki [[http://wiki.debian-facile.org/atelier:chantier:iptables-pare-feu-pour-un-client|iptables-pare-feu-pour-un-client]], où les connaissances de base sur les commandes iptables ont été abordées.\\ | + | Pour ce qui concerne iptables, ce wiki prend la suite du wiki [[doc:reseau:iptables-pare-feu-pour-un-client?&#sauvegarder-ses-reglest|iptables-pare-feu-pour-un-client]], où les connaissances de base sur les commandes iptables ont été abordées.\\ |
Pour ce qui concerne les exemplifications qui vont suivre, je considérerai qu'une passerelle a été mise en place et que les commandes de base d'iptables sont connues. | Pour ce qui concerne les exemplifications qui vont suivre, je considérerai qu'une passerelle a été mise en place et que les commandes de base d'iptables sont connues. | ||
Ligne 34: | Ligne 33: | ||
L'ordinateur B appartient au sous sous-réseau : 192.168.1.0/255.255.255.0 | L'ordinateur B appartient au sous sous-réseau : 192.168.1.0/255.255.255.0 | ||
- | * Les services installés : | + | * Les services installés : |
__Sur l'ordinateur A (IP: 192.168.0.22)__, on a installé [[atelier:chantier:iptables-pare-feu-pour-un-client#pour-les-fadas-du-scripting-shell|ce pare-feu]].\\ | __Sur l'ordinateur A (IP: 192.168.0.22)__, on a installé [[atelier:chantier:iptables-pare-feu-pour-un-client#pour-les-fadas-du-scripting-shell|ce pare-feu]].\\ | ||
Ligne 41: | Ligne 40: | ||
- aucune interface graphique lors de son installation : on le configure en passant par ssh depuis l'ordinateur A\\ | - aucune interface graphique lors de son installation : on le configure en passant par ssh depuis l'ordinateur A\\ | ||
- [[atelier:chantier:dhcp#mise-en-place-basique-du-sercice-dhcp-sur-notre-reseau-local|un serveur DHCP basique]] qui fournit l'IP 192.168.1.2 a l'ordinateur B\\ | - [[atelier:chantier:dhcp#mise-en-place-basique-du-sercice-dhcp-sur-notre-reseau-local|un serveur DHCP basique]] qui fournit l'IP 192.168.1.2 a l'ordinateur B\\ | ||
- | - La table NAT a été modifiée très simplement pour l'instant afin [[atelier:chantier:dhcp#installation-de-la-passerelle-debian|de le transformer en passerelle]].\\ | + | - Un [[atelier:chantier:dns-bind9-sur-wheezy|serveur DNS (bind9)]]\\ |
+ | - le fichier **/etc/hosts de l'ordi B** est complété(( FQDN (Fully Qualified Domain Name)), par exemple: | ||
+ | <code> | ||
+ | 127.0.0.1 localhost | ||
+ | 127.0.1.1 debian-hpmondomaine.hyp debian-hp | ||
+ | </code> | ||
+ | - le fichier **/etc/resolv.conf de l'ordi B** a connaissance de l'ip du serveur DNS : | ||
+ | <code> | ||
+ | domaine mondomaine.hyp | ||
+ | search mondomaine.hyp | ||
+ | nameserver 192.168.1.1 | ||
+ | </code> | ||
+ | - De même le fichier **/etc/hosts de la passerelle** connaît l'ordi B : Par exemple ''192.168.1.3 debian-hp'' | ||
+ | - La table NAT a été modifiée très simplement pour l'instant afin [[atelier:chantier:dhcp#installation-de-la-passerelle-debian|de le transformer en passerelle]] avec masquerade sur eth0 (interface web).\\ | ||
- le fichier /etc/sysctl.conf a été modifié : la ligne ''net.ipv4.ip_forward=0'' est devenue ''net.ipv4.ip_forward=1''. | - le fichier /etc/sysctl.conf a été modifié : la ligne ''net.ipv4.ip_forward=0'' est devenue ''net.ipv4.ip_forward=1''. | ||
Ligne 343: | Ligne 355: | ||
- Interdire par défaut (DROP) la chaîne FORWARD | - Interdire par défaut (DROP) la chaîne FORWARD | ||
- Filter ce qui passe par FORWARD | - Filter ce qui passe par FORWARD | ||
- | - Autoriser (provisoirement) les entrées et sorties entre le <nowiki>LAN</nowiki> et le web. | + | - Par exemple pour autoriser la connexion au web du <nowiki>LAN</nowiki> on autorise tcp |
- | - Autoriser les pings depuis le pare-feu vers l'internet, uniquement si ceux-ci proviennent de connexions déjà établies ou dépendantes d'une connexion en cours. | + | - On autorise ICMP pour les pings |
- | - Autoriser la réponse du ping, que ce soit depuis le réseau interne, ou de la box-machin. | + | - Et bien sûr, ne pas oublier si on a "flushé" la table NAT, la commande avec MASQUERADE |
- | - Et bien sûr, ne pas oublier après avoir flusher la table NAT, la commande avec MASQUERADE | + | |
(//Puisque la politique par défaut de la table FILTER des chaînes INPUT et OUTPUT n'ont pas encore été modifiées, on peut déjà tester ces commandes.//) | (//Puisque la politique par défaut de la table FILTER des chaînes INPUT et OUTPUT n'ont pas encore été modifiées, on peut déjà tester ces commandes.//) | ||
* __Comme ceci__ : | * __Comme ceci__ : | ||
<code root> | <code root> | ||
- | ... | + | iptables -F |
- | iptables -P FORWARD DROP | + | iptables -X |
- | ... | + | iptables -t nat -F |
- | iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | + | iptables -t nat -X |
+ | iptables -P INPUT ACCEPT | ||
+ | iptables -P FORWARD ACCEPT | ||
+ | iptables -P OUTPUT ACCEPT | ||
- | iptables -t filter -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
- | ... | ||
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
+ | |||
+ | iptables -P FORWARD DROP | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p\ | ||
+ | tcp -m state --state NEW,ESTABLISHED -j ACCEPT | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p\ | ||
+ | tcp -m state --state ESTABLISHED -j ACCEPT | ||
</code> | </code> | ||
- | <note> | ||
- | Ou sans suivi de connexion :\\ | ||
- | iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT\\ | + | * Ce qui donne : |
- | iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT | + | <code root>iptables -L</code> |
- | </note> | + | <code> |
- | * On vérifie si le ping fonctionne de la machine A vers la machine B : | + | Chain INPUT (policy ACCEPT) |
+ | target prot opt source destination | ||
+ | |||
+ | Chain FORWARD (policy DROP) | ||
+ | target prot opt source destination | ||
+ | ACCEPT tcp -- 192.168.1.0/24 anywhere state NEW,ESTABLISHED | ||
+ | ACCEPT tcp -- anywhere 192.168.1.0/24 state ESTABLISHED | ||
+ | |||
+ | Chain OUTPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | </code> | ||
+ | > La navigation web fonctionne | ||
+ | > Le ping vers google et vers 192.168.0.22 est bloqué car on a autorisé seulement tcp | ||
+ | |||
+ | * On ajoute une autorisation pour icmp : | ||
+ | |||
+ | <code root> | ||
+ | iptables -t filter -A FORWARD -p icmp -j ACCEPT | ||
+ | </code> | ||
+ | |||
+ | * Ce qui donne : | ||
+ | |||
+ | <code root>iptables -L FORWARD</code> | ||
+ | <code> | ||
+ | Chain FORWARD (policy DROP) | ||
+ | target prot opt source destination | ||
+ | ACCEPT tcp -- 192.168.1.0/24 anywhere state NEW,ESTABLISHED | ||
+ | ACCEPT tcp -- anywhere 192.168.1.0/24 state ESTABLISHED | ||
+ | ACCEPT icmp -- anywhere anywhere | ||
+ | </code> | ||
+ | |||
+ | * OU de manière plus précise : | ||
+ | <code root> | ||
+ | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p icmp\ | ||
+ | -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p icmp\ | ||
+ | -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
+ | |||
+ | </code> | ||
+ | |||
+ | * Ce qui donnerait cette fois : | ||
+ | <code>iptables -L FORWARD</code> | ||
+ | <code> | ||
+ | Chain FORWARD (policy DROP) | ||
+ | target prot opt source destination | ||
+ | ACCEPT tcp -- 192.168.1.0/24 anywhere state NEW,RELATED,ESTABLISHED | ||
+ | ACCEPT tcp -- anywhere 192.168.1.0/24 state RELATED,ESTABLISHED | ||
+ | ACCEPT icmp -- 192.168.1.0/24 anywhere state NEW,RELATED,ESTABLISHED | ||
+ | ACCEPT icmp -- anywhere 192.168.1.0/24 state RELATED,ESTABLISHED | ||
+ | </code> | ||
+ | |||
+ | > Le web et le ping fonctionne : | ||
+ | |||
+ | * De la machine A vers la machine B : | ||
<code user> | <code user> | ||
ping 192.168.1.2 | ping 192.168.1.2 | ||
Ligne 381: | Ligne 453: | ||
:-D | :-D | ||
- | * Et de la machine B vers la machine A : | + | * De la machine B vers la machine A : |
<code user> | <code user> | ||
ping 192.168.0.22</code> | ping 192.168.0.22</code> | ||
Ligne 395: | Ligne 467: | ||
8-) | 8-) | ||
- | * Pour voir ce qu'on a fait : | + | <note tip> |
- | <code root>iptables -L -t nat && iptables -L</code> | + | |
+ | **__Quelques exlications :__** | ||
+ | |||
+ | * __On autorise toute connexion pour le LAN__ | ||
+ | |||
+ | iptables -A FORWARD -i eth1 -j ACCEPT | ||
+ | iptables -A FORWARD -o eth1 -j ACCEPT | ||
+ | |||
+ | iptables -L | ||
+ | Chain INPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | Chain FORWARD (policy DROP) | ||
+ | target prot opt source destination | ||
+ | ACCEPT all -- anywhere anywhere | ||
+ | ACCEPT all -- anywhere anywhere | ||
+ | Chain OUTPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | |||
+ | > Ce qui entre ''-i'' et ce qui sort ''-o'' | ||
+ | > La navigation internet depuis un ordi du réseau 192.168.1.0/24 est possible | ||
+ | > ping de l'un de ces ordi vers google est ok | ||
+ | |||
+ | * __Dans les deux sens d'une interface à l'autre__ : | ||
+ | |||
+ | iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT | ||
+ | iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT | ||
+ | |||
+ | > On constate que sans préciser de protocole ni de réseau, cela revient au même que précédemment | ||
+ | |||
+ | iptables -L | ||
+ | Chain INPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | Chain FORWARD (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | ACCEPT all -- anywhere anywhere | ||
+ | ACCEPT all -- anywhere anywhere | ||
+ | Chain OUTPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | |||
+ | > On autorise le passage de eth1 à eth0 et de eth0 à eth1 | ||
+ | |||
+ | * __Avec suivi de connexion d'une interface à l'autre avec des règles différentes__ : | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | ||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
+ | |||
+ | > On autorise le passage de tous protocoles avec suivi de connexion, de eth1 à eth0, et inversement, en précisant les réseaux source et destination. | ||
+ | |||
+ | iptables -L | ||
+ | Chain INPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | Chain FORWARD (policy DROP) | ||
+ | target prot opt source destination | ||
+ | ACCEPT all -- 192.168.1.0/24 anywhere state NEW,RELATED,ESTABLISHED | ||
+ | ACCEPT all -- anywhere 192.168.1.0/24 state RELATED,ESTABLISHED | ||
+ | Chain OUTPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | |||
+ | > Là encore la navigation est possible pour un ordi du sous-réseau 192.168.1.0/24 | ||
+ | > Et le ping fonctionne vers google et l'ordi 192.168.0.22 sans besoin d'ajouter de règle imcp car on a autorisé TOUS les protocoles | ||
+ | |||
+ | **Enfin il est inutile d'ajouter une règle udp pour la résolution de nom si le serveur de nom est installé et correctement paramétré.**\\ | ||
+ | Dans le cas contraire on ajouterait : | ||
+ | <code root> | ||
+ | iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT | ||
+ | </code> | ||
+ | |||
+ | Ou pour être plus précis : | ||
+ | |||
+ | <code root> | ||
+ | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p udp\ | ||
+ | --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p udp\ | ||
+ | --dport 53 -m state --state ESTABLISHED -j ACCEPT | ||
+ | </code> | ||
+ | |||
+ | </note> | ||
====Dépendance du NAT et des chaînes FILTER sur l'interface interne (eth1)==== | ====Dépendance du NAT et des chaînes FILTER sur l'interface interne (eth1)==== | ||
Ligne 444: | Ligne 594: | ||
iptables -A OUTPUT -o eth1 -j ACCEPT | iptables -A OUTPUT -o eth1 -j ACCEPT | ||
- | #On garde nos règles concernant le DROP sur FORWARD (FILTER) | + | ##On garde nos règles concernant le DROP sur FORWARD (FILTER) |
#mais on oublie pas eth1 ! | #mais on oublie pas eth1 ! | ||
- | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24\ | + | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p\ |
- | -d 0.0.0.0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | + | tcp -m state --state NEW,ESTABLISHED -j ACCEPT |
+ | |||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p\ | ||
+ | tcp -m state --state ESTABLISHED -j ACCEPT | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p icmp\ | ||
+ | -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | ||
+ | |||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p icmp\ | ||
+ | -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
+ | |||
+ | #décocher les deux règles ci-dessous si un serveur DNS n'est pas installé sur la passerelle | ||
+ | |||
+ | #iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p udp\ | ||
+ | # --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT | ||
- | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0\ | + | #iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p udp\ |
- | -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT | + | # --dport 53 -m state --state ESTABLISHED -j ACCEPT |
+ | ##Règles icmp pour INPUT et OUTPUT | ||
iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\ | iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\ | ||
--ctstate ESTABLISHED,RELATED -j ACCEPT | --ctstate ESTABLISHED,RELATED -j ACCEPT | ||
Ligne 469: | Ligne 634: | ||
iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53\ | iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53\ | ||
- | -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53\ | iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53\ | ||
- | -m state --state RELATED,ESTABLISHED -j ACCEPT | + | -m state --state ESTABLISHED -j ACCEPT |
iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53\ | iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53\ | ||
- | -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53\ | iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53\ | ||
- | -m state --state RELATED,ESTABLISHED -j ACCEPT | + | -m state --state ESTABLISHED -j ACCEPT |
iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports\ | iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports\ | ||
- | 80,443,8000 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports\ | iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports\ | ||
- | 80,443,8000 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | 80,443,8000 -m state --state ESTABLISHED -j ACCEPT |
iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT | iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT | ||
Ligne 622: | Ligne 787: | ||
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
- | iptables -A FORWARD -i eth1 -o eth0 -d 192.168.1.0/24 -s 0.0.0.0/0\ | + | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p tcp\ |
- | -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
- | iptables -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0\ | + | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p tcp\ |
- | -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT | + | -m state --state ESTABLISHED -j ACCEPT |
- | iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport\ | + | #Si pas de DNS configurer on dé-commente les règles udp suivantes : |
- | --dports 80,443,8000 -j ACCEPT | + | |
- | iptables -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0\ | + | #iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p udp\ |
- | -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT | + | # --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT |
+ | |||
+ | #iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p udp\ | ||
+ | # --dport 53 -m state --state ESTABLISHED -j ACCEPT | ||
+ | |||
+ | iptables -t filter -A FORWARD -p icmp -j ACCEPT | ||
iptables -N icmp_packets | iptables -N icmp_packets | ||
Ligne 652: | Ligne 822: | ||
</code> | </code> | ||
+ | |||
+ | > La navigation web fonctionne pour l'ordi B | ||
+ | > Les ping de même | ||
+ | |||
====DROP sur INPUT et OUTPUT (chaîne filter) ==== | ====DROP sur INPUT et OUTPUT (chaîne filter) ==== | ||
Cette fois, il va falloir interdire (DROP) les chaînes INPUT et OUTPUT de la table FILTER excepté pour tous les protocoles dont on a besoin.\\ | Cette fois, il va falloir interdire (DROP) les chaînes INPUT et OUTPUT de la table FILTER excepté pour tous les protocoles dont on a besoin.\\ | ||
Ligne 688: | Ligne 862: | ||
iptables -A OUTPUT -o eth1 -j ACCEPT | iptables -A OUTPUT -o eth1 -j ACCEPT | ||
- | # On garde nos règles concernant le DROP sur FORWARD (FILTER) | + | # On garde nos règles concernant FORWARD (FILTER) |
- | # et on oublie pas eth1 ! | + | |
- | iptables -t filter -A FORWARD -i eth1 -o eth0 -d 192.168.1.0/24 -s 0.0.0.0/0\ | + | iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p tcp\ |
- | -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
+ | |||
+ | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p tcp\ | ||
+ | -m state --state ESTABLISHED -j ACCEPT | ||
+ | |||
+ | #Si pas de DNS configurer on dé-commente les règles udp suivantes : | ||
+ | |||
+ | #iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p udp\ | ||
+ | # --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT | ||
- | iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0\ | + | #iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p udp\ |
- | -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT | + | # --dport 53 -m state --state ESTABLISHED -j ACCEPT |
iptables -t filter -A FORWARD -p icmp -j ACCEPT | iptables -t filter -A FORWARD -p icmp -j ACCEPT | ||
- | + | ||
+ | # règles icmp sur INPUT et OUTPUT | ||
iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\ | iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\ | ||
--ctstate ESTABLISHED,RELATED -j ACCEPT | --ctstate ESTABLISHED,RELATED -j ACCEPT | ||
Ligne 715: | Ligne 898: | ||
iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53\ | iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53\ | ||
- | -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53\ | iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53\ | ||
- | -m state --state RELATED,ESTABLISHED -j ACCEPT | + | -m state --state ESTABLISHED -j ACCEPT |
iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53\ | iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53\ | ||
- | -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53\ | iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53\ | ||
- | -m state --state RELATED,ESTABLISHED -j ACCEPT | + | -m state --state ESTABLISHED -j ACCEPT |
iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports\ | iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports\ | ||
- | 80,443,8000 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT |
iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports\ | iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports\ | ||
- | 80,443,8000 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | 80,443,8000 -m state --state ESTABLISHED -j ACCEPT |
iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT | iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT | ||
Ligne 962: | Ligne 1145: | ||
/sbin/iptables -A INPUT -i eth1 -j ACCEPT | /sbin/iptables -A INPUT -i eth1 -j ACCEPT | ||
/sbin/iptables -A OUTPUT -o eth1 -j ACCEPT | /sbin/iptables -A OUTPUT -o eth1 -j ACCEPT | ||
- | #permettre le passage entre les deux interfaces eternet de la passerelle | + | #permettre le passage de tcp entre les deux interfaces eternet de la passerelle |
- | /sbin/iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT | + | /sbin/iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p tcp\ |
- | /sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT | + | -m state --state NEW,ESTABLISHED -j ACCEPT |
+ | /sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p tcp\ | ||
+ | -m state --state ESTABLISHED -j ACCEPT | ||
+ | #Si pas de DNS configurer on dé-commente les règles udp suivantes : | ||
+ | #iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -d 0.0.0.0/0 -p udp\ | ||
+ | # --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT | ||
+ | #iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/24 -p udp\ | ||
+ | # --dport 53 -m state --state ESTABLISHED -j ACCEPT | ||
+ | |||
+ | #autoriser le ping avec le sous-réseau 192.168.1.0/24 | ||
/sbin/iptables -t filter -A FORWARD -p icmp -j ACCEPT | /sbin/iptables -t filter -A FORWARD -p icmp -j ACCEPT | ||
+ | |||
#accepter le ping entre les réseaux locaux | #accepter le ping entre les réseaux locaux | ||
/sbin/iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT | /sbin/iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT | ||
Ligne 1007: | Ligne 1200: | ||
/sbin/iptables -A syn_flood -j DROP | /sbin/iptables -A syn_flood -j DROP | ||
#autoriser la connexion avec les serveurs DNS | #autoriser la connexion avec les serveurs DNS | ||
- | /sbin/iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT |
- | /sbin/iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT |
- | /sbin/iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT |
- | /sbin/iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT |
#autoriser la navigation web | #autoriser la navigation web | ||
- | /sbin/iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT |
- | /sbin/iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state RELATED,ESTABLISHED -j ACCEPT | + | /sbin/iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT |
/sbin/iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT | /sbin/iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT | ||
/sbin/iptables -A INPUT -i eth1 -p tcp -m multiport --sports 80,443,8000 -j ACCEPT | /sbin/iptables -A INPUT -i eth1 -p tcp -m multiport --sports 80,443,8000 -j ACCEPT | ||
#Si le serveur cups est branché sur un ordinateur du réseau 192.168.0.0/24, par exemple sur 192.168.0.22 | #Si le serveur cups est branché sur un ordinateur du réseau 192.168.0.0/24, par exemple sur 192.168.0.22 | ||
# laisser décommenter les deux lignes suivantes : | # laisser décommenter les deux lignes suivantes : | ||
- | /sbin/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 | + | /sbin/iptables -A INPUT -i eth0 -s 192.168.0.22 -d 192.168.0.1 -p tcp --sport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
- | /sbin/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 | + | /sbin/iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT |
#créer une chaîne utilisateur pour les connexion ssh, les loguer et les accepter | #créer une chaîne utilisateur pour les connexion ssh, les loguer et les accepter | ||
/sbin/iptables -t filter -N InComingSSH | /sbin/iptables -t filter -N InComingSSH | ||
Ligne 1108: | Ligne 1301: | ||
<code root> | <code root> | ||
/sbin/iptables -A INPUT -i eth1 -p udp -m udp --sport 27000 -m\ | /sbin/iptables -A INPUT -i eth1 -p udp -m udp --sport 27000 -m\ | ||
- | state --state NEW,RELATED,ESTABLISHED -j ACCEPT | + | state --state NEW,ESTABLISHED -j ACCEPT |
/sbin/iptables -A INPUT -i eth0 -p udp -m udp --sport 27000 -m\ | /sbin/iptables -A INPUT -i eth0 -p udp -m udp --sport 27000 -m\ | ||
- | state --state RELATED,ESTABLISHED -j ACCEPT | + | state --state ESTABLISHED -j ACCEPT |
</code> | </code> | ||