diff --git a/HowtoIPTables.md b/HowtoIPTables.md index d96f928f..a157e14f 100644 --- a/HowtoIPTables.md +++ b/HowtoIPTables.md @@ -1,65 +1,130 @@ -**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.** +--- +categories: linux network firewall +title: Howto netfilter +... -# Howto IPTables +* Documentation : - +[netfilter](https://netfilter.org/) est la couche de firewalling sous Linux, contrôlable via les commandes `iptables` et `ip6tables`, ou plus récemment avec la commande `nft` (que nous n'utilisons pas encore). Sur les serveurs, nous utilisons notre script [minifirewall](https://forge.evolix.org/projects/minifirewall) permettant une gestion simple d'un firewall local. -_netfilter_ est la couche de firewalling sous Linux, gérable via la commande *iptables*. - -## Firewall sur un serveur - -Sur un serveur, nous gérons le firewall avec le script *minifirewall*. - -### minifirewall - - - -Cela s'installe ainsi : +## Installation ~~~ -# [ -e /etc/firewall.rc ] && cp /etc/firewall.rc /etc/firewall.rc.bak -# cd /etc && wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/firewall.rc" -O firewall.rc +# apt install iptables +~~~ + +~~~ +# iptables --version +iptables v1.6.0 + +# modinfo iptable_filter +filename: /lib/modules/4.9.0-6-amd64/kernel/net/ipv4/netfilter/iptable_filter.ko +description: iptables filter table +author: Netfilter Core Team +license: GPL +depends: x_tables,ip_tables +retpoline: Y +intree: Y +vermagic: 4.9.0-6-amd64 SMP mod_unload modversions +parm: forward:bool +~~~ + + +## Utilisation basique + +Lister les règles dans les 3 tables filter/nat/mangle : + +~~~ +# iptables -L -nvt filter --line-number +# iptables -L -nvt nat --line-number +# iptables -L -nvt mangle --line-number +# ip6tables -L -nvt filter --line-number +# ip6tables -L -nvt nat --line-number +# ip6tables -L -nvt mangle --line-number +~~~ + +Interdire toutes les connexions venant de l'IP 192.0.2.66 : + +~~~ +# iptables -I INPUT -s 192.0.2.66 -j DROP +~~~ + +Renvoyer les connexions exterieurs vers un port à un autre port (avec 192.0.2.42 l'IP du serveur local) : + +~~~ +/sbin/iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 192.0.2.42:22 +~~~ + +Désactiver toutes les règles et laisser tout passer : + +~~~ +# iptables -P INPUT ACCEPT +# iptables -P OUTPUT ACCEPT +# iptables -P FORWARD ACCEPT +# iptables -F -t filter +# iptables -F -t nat +# iptables -F -t mangle +~~~ + +Sauvegarder les règles courantes dans un fichier, reinitialiser les règles à partir d'un fichier : + +~~~ +# iptables-save > /tmp/IPT +# ip6tables-save > /tmp/IP6T +# iptables-restore /tmp/IPT +# ip6tables-restore /tmp/IPT +~~~ + +## minifirewall + +[minifirewall](https://forge.evolix.org/projects/minifirewall) est un script Shell permettant une gestion simple d'un firewall local, idéal pour un serveur dédié (virtualisé ou non). + +### Installation minifirewall + +~~~ +# [ -e /etc/default/minifirewall ] && cp /etc/default/minifirewall /etc/default/minifirewall.old +# cd /etc/default && wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/minifirewall.conf" -O minifirewall # cd /etc/init.d && wget "https://forge.evolix.org/projects/minifirewall/repository/revisions/master/raw/minifirewall" -O minifirewall # chmod 700 /etc/init.d/minifirewall -# chmod 600 /etc/firewall.rc +# chmod 600 /etc/default/minifirewall ~~~ -On peut ensuite gérer les règles via le fichier _/etc/firewall.rc_ et on peut ainsi : +On peut ensuite gérer les règles via le fichier `/etc/default/minifirewall` et on peut ainsi : ~~~ # /etc/init.d/minifirewall restart # /etc/init.d/minifirewall stop ~~~ -### Divers +## FAQ -En cas de besoin de bannir temporairement une adresse IP : +### Bannir une adresse IP + +En cas de besoin de bannir temporairement une adresse IP 192.0.2.66 : ~~~ -# iptables -I INPUT -s IP_PIRATE -j DROP +# iptables -I INPUT -s 192.0.2.66 -j DROP ~~~ -## NAT bidirectionnel +### NAT bidirectionnel ~~~ # iptables -t nat -A PREROUTING -i eth0 -d IP_publique -j DNAT --to-destination 10.1.2.3 # iptables -t nat -A POSTROUTING -o eth0 -s 10.1.2.3 -j SNAT --to-source IP_publique ~~~ -## Exemples - ### Autoriser toute une interface -Lorsqu'un serveur dispose de plusieurs interfaces, dont une pour un réseau local privé, on peut autoriser tout le trafic sur cette interface (ici "eth1") : +Lorsqu'un serveur dispose de plusieurs interfaces, dont une pour un réseau local privé, on peut autoriser tout le trafic sur cette interface (ici "eth1") : ~~~ -/sbin/iptables -A INPUT -i eth1 -j ACCEPT +# iptables -A INPUT -i eth1 -j ACCEPT ~~~ ### Autoriser la sortie sur un port -Exemple si on a un serveur Munin centralisé, il a besoin de joindre les "munin-node" : +Exemple si on a un serveur Munin centralisé, il a besoin de joindre les _munin-node_ : ~~~ -/sbin/iptables -A INPUT -p tcp --sport 4949 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT -~~~ \ No newline at end of file +# iptables -A INPUT -p tcp --sport 4949 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT +~~~