|
|
| Ligne 1 : |
Ligne 1 : |
| = Routage et Firewall =
| |
|
| |
|
| == Sysctl ==
| |
| '''sysctl''' permet de gérer certains paramètres conjointement à Netfilter. Ces paramètres permettent d'agir sur la configuration du kernel.
| |
|
| |
| Les modifications peuvent se faire :
| |
| * En "live" dans les fichiers ''/proc/sys/*''
| |
| * En "dur" dans le fichier ''/etc/sysctl.conf''
| |
|
| |
| Pour valider la configuration de sysctl :
| |
| # sysctl -p
| |
|
| |
| === Configuration courante ===
| |
| * Activer le routage :
| |
| ** En live :
| |
| echo '1' > /proc/sys/net/ipv4/ip_forward
| |
| ** Dans le fichier :
| |
| net.ipv4.ip_forward=1
| |
|
| |
| * Protection contre le spoofing :
| |
| net.ipv4.conf.all.rp_filter = 1
| |
|
| |
| * Protection contre le syn-flood :
| |
| net.ipv4.tcp_syncookies = 1
| |
| net.ipv4.tcp_max_syn_backlog = 1024
| |
|
| |
| == Routage statique ==
| |
|
| |
| === Concepts ===
| |
| Lorsqu'un hôte (A) cherche à communiquer avec un autre hôte (C) :
| |
| # L'hôte (A) détermine si l'hôte distant (C) est sur le même réseau logique
| |
| # Si non, il recherche dans sa table de routage une route vers le réseau de destination
| |
| # Il extrait l'adresse de passerelle (B)
| |
| # Il transmet le paquet à la passerelle (B)
| |
|
| |
| === Types de routes ===
| |
| * '''Route d'hôte''' : route vers un seul hôte ciblé
| |
| * '''Route de réseau''' : route vers les hôtes d'un réseau distant
| |
| * '''Route par défaut''' : route utilisée en l'absence des autres types
| |
|
| |
| === Commande ip ===
| |
| * Ajout de route d'hôte :
| |
| # ip route add 10.11.12.3 via 172.16.6.123
| |
|
| |
| * Ajout de route réseau :
| |
| # ip route add 10.56.0.0/16 via 172.16.6.253
| |
|
| |
| * Route par défaut :
| |
| # ip route add default via 172.16.6.1
| |
|
| |
| == Firewall ==
| |
|
| |
| === Netfilter ===
| |
| Netfilter est un module qui permet de filtrer et manipuler les paquets réseau. Il fournit :
| |
| * Des fonctions de pare-feu
| |
| * De la traduction d'adresse (NAT)
| |
| * De l'historisation du trafic réseau
| |
|
| |
| ==== Tables ====
| |
| Il existe 3 tables principales :
| |
| * '''Filter''' : filtrage des paquets
| |
| * '''Nat''' : translation d'adresses ou de ports
| |
| * '''Mangle''' : modification des en-têtes des paquets
| |
|
| |
| ==== Chaînes ====
| |
| Les chaînes principales sont :
| |
| * '''INPUT''' : paquets à destination du système
| |
| * '''OUTPUT''' : paquets émis par les processus
| |
| * '''FORWARD''' : paquets à transmettre
| |
|
| |
| === Commandes iptables ===
| |
|
| |
| ==== Syntaxe générale ====
| |
| iptables [-t <table>] <commande> <options>
| |
|
| |
| ==== Commandes principales ====
| |
| * Lister les règles :
| |
| # iptables -L
| |
|
| |
| * Ajouter une règle :
| |
| ** En fin de chaîne : ''-A''
| |
| ** En début de chaîne : ''-I''
| |
|
| |
| * Supprimer :
| |
| ** Une règle : ''-D''
| |
| ** Toutes les règles : ''-F''
| |
|
| |
| ==== Critères principaux ====
| |
| {| class="wikitable"
| |
| ! Critère !! Description
| |
| |-
| |
| | -p <protocole> || tcp, udp, icmp ou all
| |
| |-
| |
| | -s <adresse>[/masque] || Adresse source
| |
| |-
| |
| | -d <adresse>[/masque] || Adresse destination
| |
| |-
| |
| | -dport <port> || Port destination
| |
| |-
| |
| | -sport <port> || Port source
| |
| |-
| |
| | -i <interface> || Interface d'entrée
| |
| |-
| |
| | -o <interface> || Interface de sortie
| |
| |}
| |
|
| |
| ==== Cibles ====
| |
| * '''-j ACCEPT''' : autorise le paquet
| |
| * '''-j DROP''' : rejette sans notification
| |
| * '''-j REJECT''' : rejette avec notification
| |
| * '''-j LOG''' : enregistre dans les logs
| |
|
| |
| === Solutions de firewall ===
| |
|
| |
| ==== Shorewall ====
| |
| Shorewall est un outil de configuration haut niveau pour Netfilter, permettant de définir les règles via des fichiers de configuration.
| |
|
| |
| '''Configuration principale''' :
| |
| * /etc/shorewall/zones : définition des zones
| |
| * /etc/shorewall/interfaces : association zones/interfaces
| |
| * /etc/shorewall/policy : politiques par défaut
| |
| * /etc/shorewall/rules : règles spécifiques
| |
| * /etc/shorewall/snat : configuration du masquerading
| |
|
| |
| ==== PfSense ====
| |
| PfSense est une solution complète de routeur/firewall basée sur FreeBSD :
| |
| * Interface web de gestion
| |
| * Multiple fonctionnalités de sécurité
| |
| * Configuration simple et intuitive
| |
|
| |
| == Outils de diagnostic ==
| |
|
| |
| === netstat/ss ===
| |
| Affiche les connexions réseau :
| |
| # netstat -paunt
| |
| * ''-p''' : nom du programme et PID
| |
| * '''-a''' : tous les ports
| |
| * '''-u''' : ports UDP
| |
| * '''-t''' : ports TCP
| |
| * '''-n''' : affiche les IP
| |
|
| |
| === nmap ===
| |
| Scanner réseau :
| |
| * Détection des machines :
| |
| # nmap -sP 192.168.20.0/24
| |
| * Détection OS :
| |
| # nmap -O 192.168.20.20
| |
| * Scan complet :
| |
| # nmap -p- 192.168.20.20
| |
|
| |
| === tcpdump ===
| |
| Analyseur de paquets en ligne de commande :
| |
| * Capture basique :
| |
| # tcpdump -nv
| |
| * Capture sur port spécifique :
| |
| # tcpdump port http
| |
| * Capture avancée :
| |
| # tcpdump src 192.168.1.100 and dst 192.168.1.2 and port ftp -w capture.log
| |
|
| |
| === Solutions de sécurité additionnelles ===
| |
| * '''Fail2ban''' : bannissement automatique d'IP malveillantes
| |
| * '''PSAD''' : détection d'intrusion et analyse de ports
| |
|
| |
| [[Category:Sécurité]]
| |
| [[Category:Réseau]]
| |
| [[Category:Administration système]]
| |