Iptables ~ Comprendre les bases d’un Firewall

Les attaques et le piratage étant de plus en plus fréquents sur le net, mettre un firewall sur son système est aujourd’hui un prérequis indispensable pour naviguer et protéger son réseaux. Ce tutorial, divisé en plusieurs articles, a pour but d’établir un système de défense via iptables afin de contrer les potentielles attaques, et de mettre en place des règles de redirection pour desservir tout un réseau local.

Iptables est l’outil de firewall sous linux, nous allons voir son fonctionnement de base dans cet article, avant d’étudier comment faire un firewall pour sa machine locale, puis mettre en place un routeur sécurisé pour protéger tout son réseaux.

Fonctionnement d’iptables

Iptables est un outil en ligne de commande qui crée ses règles directement depuis les arguments qu’il reçoit. Il possède 3 tables pour classer nos règles selon les besoins, contenant elles même plusieurs chaînes (catégories) :

  • FILTER : c’est la table par défaut, classée en 3 chaînes : INPUT (entrant), OUTPUT (sortant), et FORWARD (redirection)
  • NAT : c’est la table utilisée pour rediriger le trafic vers une autre machine. Elle possèdes les chaînes : PREROUTING (routage entrant), POSTROUTING (routage sortant) et OUTPUT (sortant)
  • MANGLE : c’est la table contenant toutes les autres règles. On y retrouve les 5 chaînes vu ci dessus

Chaque règle est donc définie par ses arguments, les plus utilisés sont :

  • -t : préciser la table
  • -A : indiquer la chaîne
  • -j : demander une action (accepter: ACCEPT, bloquer : DROP, loguer: LOG, natter : DNAT, etc..)
  • -i : interface réseaux de la connexion entrante
  • -o : interface réseaux de la connexion sortante
  • -p : protocole
  • -s : ip source
  • -d : ip de destination
  • –sports : ports source
  • –dports : ports de destination
  • -m : matcher une règle
  • -F : vider une chaîne de ses règles
  • -P : demander une action par défaut sur une chaine
  • -D : supprimer une règle

Ainsi une règle simple pour ouvrir le port 22 sur un serveur ressemblera à ça :

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT

Chaque connexion nécessite un accès en entrée pour délivrer la demande et un accès en sortie pour envoyer la réponse. Il faut donc faire 2 règles, une en INPUT et une en OUTPUT.

Créer, lister et supprimer des règles

Il convient en premier lieu de voir les actions de bases, à savoir lister les règles existantes, en créer de nouvelles, et en supprimer.

  • Ajouter une règle : pour bloquer l’accès entrant au port 80
    iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
  • Lister les règles : pour obtenir les règles de la table filter avec leur numéro
    iptables -t filter -vL --line-number
  • Supprimer une règle : pour enlever la règle précédemment ajoutée (numéro 1)
    iptables -t filter -D INPUT 1

A l’ajout d’une règle, celle ci prendra un numéro, celui ci est visible dans la 1ère colonne lors d’un listage, il faudra le reprendre une supprimer une règle. Dans cette exemple, nous n’avons créé qu’une seule règle, celle ci a donc le numéro 1.

Réinitialiser une chaîne et lui demander de mettre une action par défaut

Au démarrage du système, iptables ne possède aucune règle et accepte tout par défaut. Lors de tests, il peut arriver qu’une règle soit mal définie ou trop restrictive et qu’il soit plus simple de tout remettre à 0. Pour cela, on peut redémarrer la machine, ou plus simple, supprimer toutes les règles d’une chaîne et changer son action.

  • Supprimer toutes les règles d’une chaîne : iptables -t filter -F INPUT
  • Supprimer toutes les règles d’une table : iptables -t filter -F
  • Changer l’action par défaut d’une chaîne : iptables -t filter -P INPUT ACCEPT

Pour aller plus loin : exemples de règles

  • Bloquer les tentatives de connexion d’une ip spécifique (1.1.1.1) à notre serveur web
    iptables -t filter -A INPUT -p tcp -s 1.1.1.1 --dport 80 -j DROP
  • Autoriser les connexions FTP depuis le net
    iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --sport 21 -j ACCEPT
  • Bloquer le SSH depuis un réseau local de classe C (192.168.0.*)
    iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j DROP
  • Autoriser les connexions SMTP, IMAP et POP
    iptables -A INPUT -p tcp -m multiport --dport 25,110,143 -j ACCEPT
    iptables -A OUTPUT -p tcp -m multiport --sport 25,110,143 -j ACCEPT
  • Autoriser seulement les connexions entrantes en SSH sans pouvoir en initialiser
    iptables -A INPUT -p tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
Iptables ~ Comprendre les bases d'un firewall : A l'heure où protéger sa machine et son réseaux est devenu un prérequis, il est indispensable de comprendre les bases d'un firewall comme iptables. was modified:

Articles en relation :

Leave a comment

name*

email* (not published)

website