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 09:51] Hypathie [Pare-feu pour une station (client)] |
doc:reseau:iptables-pare-feu-pour-un-client [07/11/2014 09:11] 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 -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 306: | Ligne 306: | ||
<code root>iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.22 -p tcp\ | <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 RELATED,ESTABLISHED -j ACCEPT</code> | + | --dport 631 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT |
- | <code root>iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/24 -p tcp\ | + | 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> | --sport 631 -m state ! --state INVALID -j ACCEPT</code> | ||
- | <note>Remarque 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.0.0/24 -d 192.168.1.0/24 -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 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.1 -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 520: | Ligne 529: | ||
* 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 538: | Ligne 547: | ||
<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 !**\\ | ||
- | (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.) | ||
<code bash firewall-client.sh> | <code bash firewall-client.sh> | ||
Ligne 569: | Ligne 576: | ||
# 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/config_parefeu | ||
- | RETVAL=$? | ||
- | ;; | ||
- | 'stop') | ||
- | /sbin/iptables-save > /etc/config_parefeu | ||
- | RETVAL=$? | ||
- | ;; | ||
- | 'clean') | ||
##Set up firewall-client | ##Set up firewall-client | ||
# Clear any existing rules | # Clear any existing rules | ||
Ligne 596: | Ligne 595: | ||
/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 | ||
+ | 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 | ||
+ | #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 617: | Ligne 623: | ||
/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 | ||
+ | /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 | ||
;; | ;; |