Iptables

De Linuxmemo.

(Différences entre les versions)
(iptables-persistent)
(iptables-persistent)
 
Ligne 94 : Ligne 94 :
-
Depends on your OS version, behind the scenes iptables-persistent works with netfilter-persistent.service.
+
Depends on your OS version, behind the scenes iptables-persistent works with netfilter-persistent.service. You can verify that your service up and running using:
-
you can verify that your service up and running using  
+
  systemctl status netfilter-persistent.service
-
  sudo systemctl status netfilter-persistent.service
+
==iptables-apply / iptables-restore / iptables-save==
==iptables-apply / iptables-restore / iptables-save==

Version actuelle en date du 3 septembre 2024 à 10:17

Commandes de Netfilter

Sommaire

[modifier] Construction de la commande

[modifier] Tables (et ses chaines)

iptables [-t table] 
(default FILTER)

-t filter
           chains: INPUT, FORWARD, OUTPUT
-t nat
           chains: PREROUTING, INPUT, OUTPUT, POSTROUTING
-t mangle
           chains: PREROUTING, OUTPUT, INPUT, POSTROUTING
-t raw
           chains: PREROUTING, OUTPUT
-t security
           INPUT, OUTPUT, FORWARD

[modifier] Action sur chaine

iptables [-t table]  -A chain rule-specification                 append
                     -D chain [rulenum|rule-specification]       delete
                     -I chain [rulenum] rule-specification       insert
                     -R chain rulenum rule-specification         replace
                     
                     -N chainperso                               Create  a  new user-defined chain
                     -X chainperso                               Delete the optional user-defined chain specified
                     -E old-chain new-chain                      Rename the user specified chain to the user supplied name
                     -P chain target-ACCEPT-or-DROP              Set  the policy for the built-in (non-user-defined) chain to the given target
                     -C chain rule-specification                 check
                        exp: iptables -C INPUT -p tcp --dport 8080 --jump ACCEPT
                             Bad rule (does a matching rule exist in that chain?).

Si aucune table n’est spécifiée, iptables utilisera la table FILTER par défaut.

  • lister les règles
iptables -nvL --line-number
iptables -t nat -n -L
  • Vider (flush) les règles

Si aucune table n’est spécifiée, iptables utilisera la table FILTER par défaut.

iptables -F
iptables -t nat -n -F

[modifier] rule-specification

[-4|-6] \
-p protocole \
--tcp-flags [!] masq comp \
-i in-interface \
-s [!] source/mask \
-sport [!] [port[:port]] \
-o out-interface \
-d [!] source/mask \
-dport [!] [port[:port]] \
-m state --state RELATED,ESTABLISHED \ 
-j [chain|ACCEPT|DROP|REJECT|LOG|SNAT|DNAT|MASQUERADE] --log-prefix "text"
  • Pour -state -m state Etat du paquet.

Une liste de plusieurs valeurs peut être indiquée en les séparant par des virgules. L’état de ce paquet est comparé alors à ces valeurs. NEW correspond à un paquet initiant une nouvelle connexion. ESTABLISHED est un paquet participant à une conversation déjà établie. RELATED est pour un paquet qui ouvre une nouvelle connexion, mais ceci en rapport avec une précédente déjà établie. INVALID indique un paquet qui n’est rattaché à aucune connexion.

man iptables-extensions
https://netfilter.org/documentation/HOWTO/fr/netfilter-extensions-HOWTO.html#toc3
  • Les actions qui peuvent arriver lorsqu’une règle s’applique à un paquet sont :
ACCEPT : le paquet est accepté.
DROP : le paquet est rejeté.
QUEUE : le paquet est déplacé dans les processus utilisateurs. Ceci nécessite un intermédiaire (queue handler), qui transfère le paquet à une application.
RETURN : le paquet est renvoyé à la chaîne précédente s’il s’agit d’une chaine personnalisée par l’utilisateur.
         Dans les chaînes standard, le règlement (policy) est exécuté (sans configuration par défaut : ACCEPT).

[modifier] Les tables

Trois tables au total:

  • MANGLE, qui est responsable de l’altération de la qualité du service bits dans l’entête TCP.
  • FILTER qui est responsable de filtrage de paquets. Il dispose de trois chaînes intégrées dans lequel vous pouvez placer vos règles de pare-feu :
   chaîne de transmission ( FORWARD ): filtrage des paquets à des serveurs protégés par le pare-feu.
   chaîne d’entrée ( INPUT ): Filtres paquets destinés au pare-feu.
   chaîne de sortie ( OUTPUT ): filtrage des paquets provenant du pare-feu.
  • NAT qui est responsable de la traduction d’adresse réseau. Il dispose de deux chaînes intégrées, qui sont:
   La chaine de pré-acheminement ( PREROUTING ): les paquets NAT, l’adresse de destination du paquet doit être changé.
   La chaine de post-routage (POSTROUTING ): les paquets NAT, l’adresse source du paquet doit être modifiée

Pour chaque règle de filtrage que vous créez vous devez spécifier la table et la chaîne, sauf pour le filtrage de paquets. En effet, la plupart des règles sont liées au filtrage, de ce fait, si aucune table n’est spécifiée, iptables utilisera la table FILTER par défaut.

[modifier] iptables-persistent

Since Ubuntu 10.04 LTS (Lucid) and Debian 6.0 (Squeeze) there is a package with the name "iptables-persistent" which takes over the automatic loading of the saved iptables rules. To do this, the rules must be saved in the file:

/etc/iptables/rules.v4 for IPv4
and
/etc/iptables/rules.v6 for IPv6.

For use, the package must simply be installed.

apt-get install iptables-persistent


Depends on your OS version, behind the scenes iptables-persistent works with netfilter-persistent.service. You can verify that your service up and running using:

systemctl status netfilter-persistent.service

[modifier] iptables-apply / iptables-restore / iptables-save

These can be saved in a file with the command iptables-save for IPv4.

Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4
RHEL/CentOS: iptables-save > /etc/sysconfig/iptables

These files can be loaded again with the command iptables-restore for IPv4.

Debian/Ubuntu: iptables-restore < /etc/iptables/rules.v4
RHEL/CentOS: iptables-restore < /etc/sysconfig/iptables

If you would also like to use IPv6 rules, these can be stored in a separate file.

Debian/Ubuntu: ip6tables-save > /etc/iptables/rules.v6
RHEL/CentOS: ip6tables-save > /etc/sysconfig/ip6tables

iptables-apply - a safer way to update iptables remotely

[modifier] Default Rules

iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 172.21.0.0/21 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 172.21.0.0/21 -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
Outils personnels