Les Réseaux

Une courte introduction aux réseaux et firewall (iptables pour netfilter)

Les Réseaux

Un réseau interconnecte différents systèmes
Le web est un réseau de réseau (amalgame Internet et internet)

Un réseau local est souvent appelé Intranet ou LAN (Local Aera Network)
d'autres topologies réseau existent encore

exemple du
MAN : Metropolitan Area Network, réseau de la taille d'une ville
WAN : Wide Area Network, accès à la zone Internet, "l'extérieur"

Le couple TCP/IP, le protocole d'Internet

Les couches du modèle TCP/IP

"Couche 7"ApplicationHTTP, FTP, DNS
Couche 4TransportTCP, UDP, RTP, SCTP, "ICMP"
Couche 3NetworkPour TCP/IP il s'agit d'IP (Internet Protocol)
NB : ARP ne nécessite pas IP
Couche 2Data LinkEthernet, Token ring, etc.
Couche 1Physicalmédia physique "les câbles"

Adressage IP

Adresse et masque

Les paquets réseaux

Un paquet contient les informations suivantes

Un port est une porte ouverte vers un service réseau
un exemple connu : le port 80 pour le traffic HTTP

NAT (Network Address Translation)

Problème :

les adresses réservées aux LAN sont banies de l'Internet

Bidouille :

faire provenir le paquet de l'adresse publique (celle donnée par l'ISP) et mapper au niveau du réseau local

Pour des exemples, voir le chapitre Iptables

Routage, Passerelle (Default Gateway) (1)

Exemple concret (man route ;) )

192.168.0.2 veut contacter 192.168.0.1

	Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

le masque indique que les adreses en 192.168.0.x sont sur le réseau local donc le paquet est envoyé sur le réseau local (IP ARP, cf Google)

Routage, Passerelle (Default Gateway) (2)

Exemple concret (man route ;) )

192.168.0.2 veut contacter 195.238.2.21

	Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

L'adresse 195.238.2.21 ne correspond par à 192.168.0.0 masque 255.255.255.0 mais 0.0.0.0 masque 0.0.0.0 oui, tout ce qui est différent de 192.168.0.x

Le paquet est donc envoyé vers le Gateway par défaut, 192.168.0.1, qui avec le NAT va s'occuper d'établir la communication entre les deux.

Les paquets réseaux

Un exemple concret (man tcpdump ;))

un abonné Skynet accède à www.google.fr
après requête DNS (le lien IP - nom) tcpdump affiche

	IP 80.200.124.19.32915 > 216.239.59.104.www ##la requete
IP 216.239.59.104.www > 80.200.124.19.32915 ##la réponse

où www est le port 80
le client contacte donc le serveur et attend la réponse sur un port déterminé aléatoirement (entre 1024 et 65535)

Etablissement d'une connexion

Le Three Way Handshake, SYN, ACK, RST etc ... consultez notre ami Google ;)

Le Firewall, le filtre à café

La petite pause pour les questions sur ce qui vient d'être dit

Firewall : principe

Un firewall peut servir à :

Firewall : stateless

Le plus simple, chaque paquet est analysé indépendament

On ne fait pas de distinction entre un paquet faisant partie d'une connexion déjà établie ou non

Il ne peut dire qu'une seule chose,

Problème : Comment autoriser un retour de requête http par exemple ? Un client demande à voir un site web, la demande passe la réponse, elle non

Firewall : stateful

Un peu plus fin, chaque paquet est analysé en fonction des connexions déjà établies.

Ainsi la réponse à notre requête sur un serveur http nous parvient, on voit la page demandée.

Problème : si on autorise tous les retours relatifs à une connexion établie on se retrouve avec une passoire car on fait totalement confiance aux users

Firewall : niveau software

Le Firewall autorise ou non une application à accéder au réseau

Problème : quand une application est autorisée, elle peut faire et n'importe quoi, un service Windows indispensable à la connexion au web peut ainsi envoyer des infos de license, pareil pour un soft contenant un spyware

Mise en pratique, iptables pour Netfilter

Netfilter est le module noyau chargé de contrôler le traffic réseau

Il se trouve dans le noyau, donc si un paquet n'est pas autorisé, il n'ira jamais interférer avec le système (rappel, le noyau est entre le matériel et le système d'exploitation)

Les 3 tables

Les 3 tables de Netfilter

Chaque table comprend des chaînes (entre 3 et 5)

Une chaîne

Chaque table comprend différentes chaînes

Chaque chaîne est parcourue séquentiellement
tant que le paquet ne match pas une règle, on continue les tests

Pour finir, si aucune règle ne match le paquet, on applique la
Default Policy dont l'action est DROP, ACCEPT, QUEUE ou RETURN

Règle et Default Policy

Pour chaque règle un argument -j [action] est spécifié

si la règle match, on jump

exemple :

iptables -P INPUT -j DROP

Default Policy : cf exemple

Policy (-P) pour la chaîne INPUT , action DROP
si aucune règle ne match on DROP le paquet entrant

Table principale

3 Chaînes dans la table principale

Table NAT

3 Chaînes dans la table NAT

Table Mangle

5 Chaînes dans la table mangle

tous les paquets, quel que soit leur chemin, peuvent être marqués et modifiés

Application :limitation du traffic, quota et encore bien d'autres choses

Premier script

A quoi penser

Iptables par la pratique

Un script de base

Lien vers le forum

en avant pour les questions et l'essai ;)

Nous allons rédiger notre script, à vos claviers

Références

Quelques exemples:

			iptables -A [chaine] -P [police] ##Police par défaut pour [chaine]
iptables -A [chaine] -p [protocol] --dport [port] -j [police]
iptables -A INPUT -p tcp --dport 631 -j DROP
##empeche quiconque de se connecter au serveur d'impression si celui ci accepte tout
##mais ceci bloque le traffic local, on va donc DROP par défaut et autoriser le local
iptables -P INPUT -j DROP
iptables -P INPUT -p tcp --dport 631 --source 192.168.0.0/24 -j ACCEPT

##pour un serveur web d'adresse 192.168.0.4 derrière le firewall
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.4:80
iptables -A FORWARD -p tcp --dport 80 --destination 192.168.0.4 -j ACCEPT

Les liens qui sauvent

Les bases :

Pour les courageux :

Quelques exemples de fichier de configuration

Pour une passerelle "maison", les fichiers de configuration de base