IP Tables

1-Présentation du Pare-feu







C’est un système (Matériel ou Logiciel) permettant de protéger un serveur ou un réseau d'ordinateurs des intrusions provenant d'un réseau tiers (Internet).

Passerelle filtrante comportant au minimum les interfaces réseau suivantes :

Une interface pour le réseau interne à protéger inside
Une interface pour le réseau externe outside.







2-Catégories de pare-feu

Pare-feu sans état (stateless firewall) : C'est le plus vieux dispositif de filtrage réseau, introduit sur les routeurs. Il regarde chaque paquet indépendamment des autres et le compare à une liste de règles pré configurées (ACL Cisco par exemple).


Pare-feu à états (stateful firewall) : Les pare-feu à états vérifient la conformité des paquets à une connexion en cours. C’est-à-dire qu'ils vérifient que chaque paquet d'une connexion est bien la suite du précédent paquet et la réponse à un paquet dans l'autre sens. Ils savent aussi filtrer intelligemment les paquets ICMP qui servent à la signalisation des flux IP.

Pare-feu applicatif : Dernière mouture de pare-feu, ils vérifient la complète conformité du paquet à un protocole attendu. Par exemple, ce type de pare-feu permet de vérifier que seul du protocole HTTP passe par le port TCP 80. Ce traitement est très gourmand en temps de calcul dès que le débit devient très important. Il est justifié par le fait que de plus en plus de protocoles réseaux utilisent un tunnel TCP afin de contourner le filtrage par ports. (CBAC Cisco ou Fixup par exemple)


Pare-feu identifiant Un pare-feu réalise l’identification des connexions passant à travers le filtre IP. L'administrateur peut ainsi définir les règles de filtrage par utilisateur et non plus par adresse IP ou adresse MAC, et ainsi suivre l'activité réseau par utilisateur.

Pare-feu personnel : les pare-feu personnels, généralement installés sur une machine de travail, agissent comme un pare-feu à états. Bien souvent, ils vérifient aussi quel programme est à l'origine des données. Le but est de lutter contre les virus informatiques et les logiciels espions.


Les portails captifs sont des pare-feux dont le but est d'intercepter les usagers d'un réseau de consultation afin de leur présenter une page web spéciale (par exemple : avertissement, charte d'utilisation, demande d'authentification, etc.) avant de les laisser accéder à Internet.






3-Présentation d’Iptables :

Iptables est une solution complète de firewall (stateful) de l'espace utilisateur Linux grâce auquel l'administrateur système peut configurer les chaînes et règles dans le pare-feu en espace noyau (et qui est composé par des modules Netfilter).
Iptables est l'interface "ligne de commande" permettant de configurer Netfilter.

Différents programmes sont utilisés selon le protocole employé : iptables est utilisé pour le protocole IPv4, Ip6tables pour IPv6, Arptables pour ARP (Address Resolution Protocol) ou encore Ebtables, spécifique aux trames Ethernet.

Iptables fonctionne selon un système de tables, ces tables sont composées de chaînes










4-Structure des options d'iptables

Beaucoup de commandes iptables ont la structure suivante :

iptables [-t <table-name>] <command> <chain-name> <parameter-1> \ <option-1> <parameter-n> <option-n>

L'option <table-name> : permet à l'utilisateur de sélectionner une autre table que la table filter qui utilisé par défaut.
L'option <command> : stipule une action spécifique à accomplir, telle que l'ajout ou l'élimination d'une règle spécifiée par <chain-name>.

<chain-name> : figurent des paires de paramètres et d'options qui définissent comment traiter un paquet répondant aux critères de la règle.






5-Options de commande


Les options de commande donnent à iptables l'instruction d'exécuter une action spécifique. Une seule option de commande est autorisée pour chaque commande iptables. À l'exception de la commande d'aide, toutes les autres commandes doivent être écrites en majuscules.







6-Exemple de commandes

Démarrage d’iptable :

service iptables start

Bloquer tout le trafic réseau Entrant:

# iptables -F INPUT
# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -j REJECT

Bloquer tout le trafic réseau Sortant:

# iptables -F OUTPUT
# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -j REJECT

Blocage des paquets sortant des serveurs Web du réseau LAN

# iptables -A OUTPUT -p tcp -d 192.168.1.0/24 --dport www -j REJECT

autoriser le trafic http entrant pour le serveur apache2web sur le port 80

Iptables –A input –j accept –p tcp - -destination-port 80 –i eth0

autoriser le trafic ftp entrant

Iptables –A input –j accept –p tcp - -destination-port 21 –i eth0

Blocage sortant Telnet du réseau LAN:

# iptables -A OUTPUT -p tcp -o eth0 --dport telnet -j ACCEPT

# iptables -A OUTPUT -p tcp --dport telnet -j REJECT

Blocage par controle des adresses MAC:

# iptables -F INPUT
# iptables -A INPUT -i eth0 -j ACCEPT
# iptables -A INPUT -m mac --mac-source 12:34:56:89:90:ab -j ACCEPT

# iptables -A INPUT -j REJECT


Blocage que d'un service ou port spécifique:

# iptables -A OUTPUT -p tcp --dport telnet -j REJECT

bloquer tout le trafic qui ne correspond pas à les régles

Iptable –A input –j drop –p tcp –i eth0 (catch all)


Accepte les requetes ICMP (ping) Entrantes

# iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT




7-les tests :

script dans le fichier /etc/init.d/iptables qui bloque certains attaques comme le scanning

Le script créer :
#!/bin/bash
# Script iptables by BeAvEr.
## Règles iptables.
## On flush iptables.
/sbin/iptables -F
## On supprime toutes les chaînes utilisateurs.
/sbin/iptables -X
## On drop tout le trafic entrant.
/sbin/iptables -P INPUT DROP
## On drop tout le trafic sortant.
/sbin/iptables -P OUTPUT DROP
## On drop le forward.
/sbin/iptables -P FORWARD DROP

## On drop les scans XMAS et NULL.
/sbin/iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
/sbin/iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
/sbin/iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
/sbin/iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
## Dropper silencieusement tous les paquets broadcastés.
/sbin/iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
## Permettre à une connexion ouverte de recevoir du trafic en entrée.
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Permettre à une connexion ouverte de recevoir du trafic en sortie.
/sbin/iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT
## On accepte la boucle locale en entrée.
/sbin/iptables -I INPUT -i lo -j ACCEPT
## On log les paquets en entrée.
/sbin/iptables -A INPUT -j LOG
## On log les paquets forward.
/sbin/iptables -A FORWARD -j LOG

exit 0


Bonne Chance
mohameddouhaji7@gmail.com