3. Rappels réseau
UDP, TCP, ICMP, ARP
Upper Datagram Protocol
Transmission Control Protocol
Internet Message Control Protocol
Address Resolution Protocol (layer 2)
4. C quoi un firewall?
Definition
...software or hardware-based network security
system that controls the incoming and outgoing
network traffic by analyzing the data packets and
determining whether they should be allowed
through or not, based on a rule set.
6. C quoi un firewall?
Fonctionnalités
(Routage)
Filtrage
Nat
Gateway VPN
Proxy
Fonctionnalités de protection avancées
7. C quoi un firewall?
Concepts de base
Stateful vs Stateless
Drop vs Reject
DNAT, SNAT, PAT, RFC 1918
8. Policy / Rulebase
Ordonancement
Tout ce qui n'est pas autorisé est interdit!
1 Stealth Rule
2 Autoriser TCP port 80 vers Webserver
3 Autoriser TCP port 25 vers Serveur SMTP
4 Autoriser TCP ports 80, 443 vers Any sauf réseau interne
...
N Cleanup Rule
10. Policy / Rulebase
Règles de base
● Drop plutôt que Reject
● Toujours masquer le Firewall
● Contrôler strictement les flux ICMP
● Contrôler strictement les protocoles non captifs (RDP,
SSH...)
● Activer les fonction de protection contre les attaques
connues (antispoofing, Syn defender, conformité des
paquets...)
● Documenter et revoir régulièrement les règles du
firewall
15. Netfilter
Tables et chaînes
Table Chaîne Fonction
FILTER input filtre les paquets à destination de la machine
ouput filtre les paquets qui quittent la machine
forward filtre les paquets qui traversent la machine
NAT prerouting NAT avant routage (DNAT, PAT)
postrouting NAT après routage (SNAT)
output NAT des paquets émis par la machine
MANGLE prerouting modification des paquets avant routage
postrouting modification des paquets après routage
output modification des paquets émis par la machine
input modification des paquets à destination de la machine
forward modification des paquets qui traversent la machine
17. Netfilter
iptables/ip6tables
iptables [-t table]commande [correspondance]
[cible/saut]
-t table Indique dans quelle table on travaille (par défaut, FILTER)
commande Action à effectuer sur la table (ajout, suppression, insertion
de règle dans une chaine, nettoyage de la chaine...)
correspondance Critères de selection d'un paquet ou d'un flux (adresse
source ou destination, protocole, état...)
-cible/saut Action à effectuer si il y a correspondance, peut être une
cible prédéfinie ou une liste utilisateur, peut prendre
plusieurs arguments
18. Netfilter
Commandes les plus courantes
-A chaine, -I
chaine [pos]
Ajoute un règle à la fin de la chaine (-A) ou insère (-I) une règle à
la position indiquée par pos dans la chaine (si pos absent,
insère au début)
-D chaine
[num|match]
Supprime une règle dans la chaine chaine (soit la règle numéro
num, soit celle dont la definition correspond à match, match étant
la correspondance +la cible)
-F [chaine] Supprime toutes les règles de la chaine chaine, ou toutes les
chaines de la table
-L [chaine] Liste toutes les règles de la chaine chaine, ou toutes les chaines
de la table, ou toutes les chaines de toutes les tables
-P chaine
cible
Permet de definir la politique par défaut (paramètre cible) pour
la chaine chaine.
-N chaine, -X
chaine
Permet de créer ou de supprimer une chaine utilisateur
19. Netfilter
Correspondances les plus courantes
--protocol Permet de définir le protocole sur lequel
porte la règle (TCP, UDP, ICMP, ALL)
-s, --src, --source, --
src-range (-m iprange)
Permet de selectionner le paquet sur adresse
source
-d, --dst, --destination,
--dst-range (-m iprange)
Permet de selectionner le paquet sur
l'adresse destination
--sport, --source-port Permet de selectionner le paquet sur port
source
--dport, --destination-
port
Permet de selectionner le paquet sur port
destination
--state Permet de selectionner le paquet en fonction
de son état (stateful: NEW, RELATED,
ESTABLISHED, INVALID)
20. Netfilter
Cibles prédéfinies les plus courantes
ACCEPT Le paquet est accépté, son traitement continue (routage,
nat...)
REJECT Le paquet est rejeté, la machine source est notifié (ICMP)
DROP Le paquet est détruit (silencieux)
DNAT Translation d'adresse pour l'adresse destination (peut
s'appliquer aussi sur le port pour faire du PAT)
SNAT Translation d'adresse pour l'adresse source
MASQUERADE Translation d'adresse de type SNAT, spécifique aux
interfaces ayant une adresse IP dynaique
LOG Logue des informations sur le paquet/traitement
27. Netfilter
Mini script final
# Accepte les connections établies
iptables -t filter -A FORWARD -m state --state
ESTABLISHED,RELATED -j ACCEPT
# DNAT + Accept flux vers le serveur Web
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
DNAT --to 192.168.1.2:80
iptables -t filter -A FORWARD -p tcp --dst 192.168.10.2 --
dport 80 -j ACCEPT
# Autoriser les flux http(s) sortant
iptables -t filter -A FORWARD -p tcp -i eth2 --src
192.168.0.0/24 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth2 --src
192.168.0.0/24 --dport 443 -j ACCEPT
# Cleanup (deny all)
iptables -t filter -A FORWARD -j DROP
ATTENTION!
pas de stealth rule!
28. Netfilter
Mini script final (mieux!)
# Accepte les connections établies
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED
-j ACCEPT
# DNAT + Accept flux vers le serveur Web
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --
to 192.168.1.2:80
iptables -t filter -A FORWARD -p tcp --dst 192.168.10.2 --dport 80
-j ACCEPT
# Autoriser les flux http(s) sortant
iptables -t filter -A FORWARD -p tcp -i eth2 --src 192.168.0.0/24
--dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth2 --src 192.168.0.0/24
--dport 443 -j ACCEPT
# Policy par defaut
iptables -t filter -P FORWARD DROP
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
29. Netfilter
Logs
Loguer se fait en utilisant la cible LOG (-j LOG)
Par défaut, les logs sont dans /var/log/messages
--log-level Indique à syslog le niveau de log à utiliser
--log-prefix Permet de définir un préfixe pour chaque entréé de log
(ex: "netfilter:")
--log-tcp-
sequence
Logue les numéros de séquence TCP
--log-tcp-
options
Logue les option TCP (en-têtes TCP)
--log-ip-options Logue les options IP (en-tête IP)
30. Netfilter
Log & Drop
iptables -N logdrop
iptables -A logdrop -m limit --limit 5/m --
limit-burst 10 -j LOG --log-prefix "Nefilter
dropped: "
iptables -A logdrop -j DROP
Ajouter une cible pour logger ET dropped des paquets:
Utilisation dans une règle:
iptables -A FORWARD -p tcp -j logdrop
31. Netfilter
Protection DoS
La protection contre les DoS se fait grâce à la correspondance
limit (-m limit).
--limit Nombre de correspondance par unité de temps EN
MOYENNE (/second, /minute, /hour, /day)
Exemple: -m limit --limit 3/minute
--limit-burst Nombre maximum de fois ou il doit y avoir correspondance
avant de déclencher la règle
32. Netfilter
Routage
Par défaut, la plupart des distributions Linux ne permettent pas
le routage de paquets IP entre deux interfaces! Pour activer le
routage au niveau du kernel:
sysctl -w net.ipv4.ip_forward=1
Pour rendre la modification permanente, il faut modifier le
fichier /etc/sysctl.conf:
net.ipv4.ip_forward = 0
sysctl -p /etc/sysctl.conf
33. Netfilter
Sauvegarde /restauration
La sauvegarde et la restauration de stables peut se faire avec les
commandes iptables-save et iptables-restore:
iptables-save [-c] [-t table]
iptables-restore [-c] [-n]
Exemples:
iptables-save > ruleset-save
iptables-restore < ruleset-save