Cour Linux
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
] <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
| 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