IPTABLE3

5. Caractéristiques d’Iptables

Iptables utilise le concept de tables de règles distinctes pour les différents types de traitement de paquets. Ces tables de règles sont fonctionnelles en modules de tables séparées la table règle de filtrage, la table NAT nat, et la table mangle spécialisée packethandling.

5.1. La table filtre

La table de filtres est la table par défaut. Les autres tables sont spécifiées par une ligne de commande option. Les caractéristiques de base de table de filtrage comprennent les suivants:

  • Chaînes liés à des opérations sur les trois chaînes intégrées (INPUT, OUTPUT et FORWARD) et sur les chaînes définies par l'utilisateur
  • Aide
  • Cible disposition (ACCEPT ou DROP)
  • IP des opérations sur les en-tête de correspondance pour l'adresse de protocole, la source et la destination, d'entrée et de l’interfaces de sortie, et la manipulation fragment
  • Pertinence des opérations sur le protocole TCP, UDP, ICMP et les champs d'en-tête

La table filter a deux types d'extensions: Les extensions de fonctionnalités cibles et les extensions du match.

Les extensions de cibles incluent la disposition du paquet REJECT, les objectifs de parité et CLUSTERIP, la cible CLASSER, CONNMARK, TRACE et les fonctionnalités LOG et ULOG. Les extensions match correspondent sur les points suivants:

  • L'état actuel de la connexion
  • Des listes de ports (pris en charge par le module multiport)
  • Le matériel Ethernet adresse MAC source ou un dispositif physique
  • Le type d'adresse, type de paquet de couche de liaison, ou une plage d'adresses IP
  • Différentes parties de paquets IPSec ou la stratégie IPSec
  • Le type ICMP
  • La longueur du paquet
  • Le moment où le paquet est arrivé
  • Chaque paquet nième ou paquets aléatoires
  • Utilisation de l'expéditeur paquet, groupe, processus ou groupe de processus
  • Le type d'en-tête IP de service (TOS) (éventuellement fixé par la table mangle)
  • La section TTL de l'en-tête IP
  • Le champ de marquage iptables (défini par la table mangle)
  • Taux limité paquet correspondant

Exemple: Limiter les demandes de connexion sur TCP a une par seconde et cela grâce au champ syn dans l'entete TCP cette commande peut aider aussi contre l'attaque deni de service.

  iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
  iptables -A INPUT -i (interface) -p tcp -m multiport --source-port 80,443 ! --syn -j ACCEPT

De même pour ICMP et UDP

  iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
  iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

5.2. La table Mangle

La table mangle a deux extensions de cibles. Le module prend en charge MARK attribution d'une valeur de champ de marquage d'un paquet iptables qui le maintient. De même prend en charge Le TOS réglage de la valeur du champ TOS dans l'en-tête IP.

La cible TOS permet de définir et / ou modifier le champ Type de Service dans le paquet. Cela pourrait être utilisé pour mettre en place des politiques sur le réseau en ce qui concerne la façon dont un paquet doit être acheminé et ainsi de suite. Ne pas mettre cela pour les paquets envoyés à l'Internet, sauf si vous voulez prendre des décisions de routage sur elle, avec iproute2.

La cible TTL est utilisée pour changer le TTL (Time To Live) champ du paquet. Certains fournisseurs de services Internet n'aime pas les utilisateurs de plusieurs ordinateurs sur une connexion unique, et il ya des fournisseurs de services Internet connus pour rechercher un hôte unique générant différentes valeurs TTL, et de prendre cela comme un des nombreux signes de plusieurs ordinateurs connectés à un seul connexion.

La cible MARK sert à définir les valeurs de marque Netfilter qui sont associées à des paquets spécifiques. Cette cible n'est valide que dans la table mangle, et ne fonctionne pas en dehors de là. Les valeurs MARK peut être utilisé en conjonction avec les fonctionnalités avancées de routage de Linux pour envoyer différents paquets à travers différents itinéraires et de leur dire d'utiliser disciplines différentes files d'attente, etc. Notez que la valeur de marquage n'est pas dans le package réel, mais est une valeur qui est associé au sein du noyau avec le paquet. En d'autres termes, vous ne pouvez pas placer une MARK pour un paquet et ensuite espérer que la MARK sera toujours présente sur un autre hôte. Si c'est ce que vous voulez, vous serez mieux avec la cible TOS qui va être polluée par la valeur TOS dans l'en-tête IP.

exemple:

  iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2

Le --set-mark option est nécessaire pour placer une marque. --Set-mark prend une valeur entière. Par exemple, nous pouvons placer la marque 2 sur un flux spécifique de paquets, ou sur tous les paquets d'un hôte précis et ensuite faire du routage avancé sur cet hôte, pour diminuer ou augmenter la bande passante du réseau, etc

5.3. La table NAT

La table NAT a des modules d'extension pour la translation d'adresses Source et Destination et de la traduction des Ports. Ces modules prennent en charge:

  • SNAT-Source NAT.
  • DNAT-NAT de destination.
  • MASQUERADE dans iptables est un cas spécial de NAT source dans la mesure où l'état de connexion masqué est oublié immédiatement si la connexion est perdue. Il est conçu pour être utilisé avec connexions (par exemple, dial-up) dans laquelle l'adresse IP est affectée temporairement. Si l'utilisateur rebranché immédiatement, il serait probablement attribuer une adresse IP différente de celle qu'il avait lors de la connexion précédente. (Ce n'est pas souvent le cas avec de nombreux fournisseurs de services par câble modem et ADSL. Souvent, après une perte de connexion, la même adresse IP est affectée à la reconnexion.)
  • REDIRECT-Une forme spécialisée de destination NAT qui redirige le paquet, indépendamment de l'adresse de destination dans le champ d'en-tête IP.

iptables NAT supports source (SNAT) et NAT de destination (DNAT). La table NAT permet de modifier l'adresse source d'un paquet ou une adresse de destination et le port. Il dispose de trois chaînes intégrées:

  • La chaîne PREROUTING spécifie les changements de destination aux paquets entrants, avant la transmission des paquets de la fonction de routage (DNAT). Les modifications apportées à l'adresse de destination peuvent être à l'hôte local (proxy transparent, redirection de port) ou à un autre hôte pour le transfert d'hôte.
  • La chaîne OUTPUT spécifie les changements de destination à générées localement les paquets sortants avant la décision de routage a été faite (DNAT, REDIRECT). Cela se fait généralement de manière transparente rediriger un paquet sortant d'un proxy local, mais il peut aussi être utilisé pour porter en avant vers un hôte différent.
  • La chaîne POSTROUTING spécifie source change sur les paquets sortants étant acheminés par le biais de la boîte (SNAT, MASQUERADE). Les modifications sont appliquées après la décision de routage a été effectué.

Exemple sur le Nat D'abord, vous devez dire au noyau que d'autoriser l'IP forwarding. (en tant que root)

  echo 1> / proc/sys/net/ipv4/ip_forward

Ensuite, vous aurez besoin de configurer iptables pour rediriger les paquets de votre réseau interne sur / dev/eth1, à votre réseau externe sur / dev/eth0.

  # / Sbin / iptables-t nat-A POSTROUTING-o eth0-j MASQUERADE
  # / Sbin / iptables-A FORWARD-i eth0-o eth1-m state     - état ​​RELATED, ESTABLISHED-j ACCEPT
  # / Sbin / iptables-A FORWARD-i eth1-o eth0-j ACCEPT

Editer le fichier / etc / sysctl.conf et modifiez la ligne qui dit:

  net.ipv4.ip_forward = 0 à net.ipv4.ip_forward = 1. 

Ceci indique essentiellement le noyau de faire la première commande au démarrage.

Comments