« - pom pom pom poooom (musique). Tiens m'sieur Marchais, j'ai un courrier pour toi.
- Merci, dépose le là. .... Dis donc, tu connais le salaire du patron ?
- Ben non et toi ?
- Ouaip. He bien Môsieur touche plus que moi. C'est un scandale !!
- Ooooh. Et t'as trouvé ça où ?
- Hé hé. L'autre jour, en fouillant un peu dans le réseau, je suis tombé sur un partage de la direction où les RH ont déposé de la doc pas vraiment publique. Et là, mon gars ...
- Ah. Je comprend mieux pourquoi la direction t'envoie du courrier. C'est sûrement pas pour t'offrir le salaire du boss.
- ?!!! Glps.
Eh oui, l'autre jour, les routeurs ont été renouvelés et les rêgles de sécurité n'ont pas encore été remises en place.
Mais quelle sécurité mettre en place ?
Il y a différents niveaux de sécurité simples :
Le routage est la première sécurité (déjà vu)
La seconde est la translation d'adresses ou/et de ports
La troisième : le filtrage permet de mettre en place une sécurité plus avancée au niveau IP (on parle de routeur filtrant, bloc 2, pas encore de firewall, bloc 3)
Enfin, les rêgles de filtrage avancées, au niveau 4 : TCP/UDP. Ici on est toujours sur un routeur filtrant, limite blocs 2 et 3.
Pour finir, les couches ISO supérieures à transport appartiennent vraiment au bloc 3 et aux firewall qui filtre les niveaux 3 et 4 mais aussi les applications et processus.
Fidèles au bloc 2, nous verrons ici les trois premières pratiques de sûreté et de sécurité. Peut être courtiserons-nous le quatrième niveau ?
Stratégie de routage
Petit add-on sur le routage (première sécurité).
Afin que le routage fasse son rôle, il est possible de définir des routes statiques particulières afin de limiter la communication au sein des réseaux.
Dans la table de routage, on pourrait ajouter des règles afin d'orienter les paquets vers une passerelle chargée de filtrer une partie des accès au réseau.
Ici, nous avons un réseau 162.168.0.0/24 avec un ensemble d'hôtes qui ne doivent pas pouvoir être atteints directement.
Pour ceux-là, on va définir une règle de routage, en plus de celle du réseau, qui aura un hôte spécialisé comme passerelle.
la table de routage pourrait être celle-ci :
Type
Adresse/masque
Passerelle
interface
C
192.168.0.0/24
192.168.0.1
R0.L0
C
FAI
FAI
R0.internet
S
192.168.0.160/28
192.168.0.161
R0.L0
S*
0.0.0.0/0
FAI
R0.internet
Touts les paquets à destination des hôtes dans le filtre statique S (route 3) seront orientés vers sa passerelle. Les autres sont délivrés directement.
Bon, D'accord, c'est un peu tordu mais ça marche.
[[Rappel]] : La route choisie par le routeur pour un paquet sera la route la plus adaptée à l'adresse de destination du paquet.
L'ordre des routes n'a pas d'importance, même si on écrit (à la main) les adresses connectées en premier et la route par déafaut en dernier
NAT/PAT
La théorie, rapidos
« NAT/PAT, nat-pat, nat-pat ... Yoh quel rythme ...
- N'importe quoi ! autant faire du rythme avec des boots et des cats
- Ouaaaiiis, Ça c'est une idée
- Boaf, ça existe déjà sur le net. Ha ha ha.
- Eh bien, petit malin, tu sais au moins ce que c'est ? NAT/PAT ? hm ?
- Euh. »
Routage, le retour
On est en IPV4. Il existe cependant un mécanisme similaire en IPv6
Le routage sert à passer d'un réseau à l'autre.
Cependant, Certaines adresses sont bloquées par le routeur. Lesquelles ? Eh bien, les adresses de réseaux privés.
Quel intérêt ? J'en vois des saladiers pleins (on est en IPV4) :
Il n'y a pas assez d'adresses pour en donner une publique à chaque poste,
On peut utiliser autant de fois la même adresse dans des organisations différentes,
On peut (un peu) se cacher derrière un routeur (le LAN est masqué par le routeur)
La techno est ancienne et connue des informaticiens en place.
On passe d'IPV4 sur le LAN en IPV6 sur internet
Etc.
Mais comment ça marche ?
Eh bien c'est NAT/PAT qui fait le taf.
NAT/PAT en clair
Pour des raisons de clareté, on ne montre pas l'encapsulation dans la couche Liaison (2) et les adresses MAC ni la somme de contrôle (CRC)
Je sors du réseau
Principe
Comme mon adresse n'est pas routable, le routeur me prête la sienne pour aller sur le net.
Il remplace mon IP privée par son IP publique et note le port de retour que je veux pour en mettre un bidon.
Ensuite, il envoie les paquets sur le net.
A la réception, il réceptionne des paquets pour lui (c'est la seule adresse publique) avec un port qu'il a noté dans une liste.
Dans cette liste, il retrouve ma conversation et remet mon IP privée et mon port dans la destination du paquet puis me l'envoie. Et voilà.
Voyons ça en détail :
En pratique
Étape
Chemin trame
Contenu du segment TCP
Commentaires
1
Client_Routeur (clt - rtr)
Le client envoie un paquet à un serveur. Il passe par le routeur (passerelle) grâce au jeu des adresses MAC.
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Clt
1234
IP_Srv
80
What is your quest ?
Shit! I hav'nt no Mac for this server. Hey Guy! No problem. Take gateway's (router) MAC.
2
Routeur_Serveur (rtr - srv)
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Rtr
3030
IP_Srv
80
What is your quest ?
Le routeur note le port source et l'adresse IP dans une table et lui attribue un nouveau port source (le "n° de conversation"). Il remplace les adresses du PC dans la trame.
protocol
port retour
ancien port
ancienne IP
TCP
4569
6831
IP_PC2
UDP
5721
3782
IP_PC3
TCP
TCP 3030
1234
IP_Clt
3
Serveur_Routeur
Le serveur reçoit le paquet, le traite et renvoie un nouveau paquet avec son adresse source et l'adresse reçue comme nouvelle cible.
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Srv
80108
IP_Rtr
3030
Found the holly Graal
En passant, il choisi un autre port de conversation chez lui, pour ne pas surcharger le port 80.
4
Routeur_Client
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Srv
80108
IP_Clt
1234
Found the holly Graal
Le routeur reçoit le paquet du serveur et reconstitue un paquet avec l'adresse de destination du PC client grâce au port cible qui est recherché dans la table des connexions enregistrées.
protocol
port retour
ancien port
ancienne IP
...
...
...
...
TCP
3030
1234
IP_Clt
Je viens d'internet et je veux consulter un service
Principe
Comme je viens d'internet (avec une adresse publique) je ne connais que l'adresse du routeur et le port du service que je demande.
Le routeur consulte sa liste de redirection de port et d'adresse et remplace son IP publique par l'IP privée et le port de connexion du serveur à joindre.
Si le port demandé par le client n'est pas dans la liste, le paquet passe à la poubelle. Sinon, le routeur note le port dans une liste.
Ensuite, il envoie les paquets sur le réseau du serveur (souvent la DMZ).
A la réception, le serveur traite les paquets et renvoie une réponse.
Dans la liste, le routeur retrouve ma conversation et remet mon IP publique et le port de retour dans la destination du paquet puis l'envoie sur le net. Et voilà.
Voyons ça en détail :
En pratique
Exemple avec une service web (port 80).
Étape
Chemin trame
Contenu du segment TCP
Commentaires
1
Client_Routeur (clt - rtr)
Le routeur reçoit un paquet et vérifie la liste des ports écoutés (le port cible du paquet).
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Clt
1234
IP_Rtr
80
What is the meaning of life ?
protocol
port écouté
IP service
port service
TCP
80
IP_Srv
8080
...
...
...
...
2
Routeur_Serveur (rtr - srv)
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Clt
5678
IP_Srv
8080
What is the meaning of life ?
Le routeur remplace l'adresse et le port de destination par ceux du serveur et en profite pour mettre un port aléatoire comme port de retour. Il note la translation dans une table.
protocol
port retour
ancien port
TCP
4569
6831
UDP
5721
3782
TCP
5678
1234
2
Serveur_Routeur (srv - rtr)
Le Serveur traite le paquet et construit un nouveau paquet à destination du client via le routeur.
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Srv
80108
IP_Clt
5678
Meaning of life is forty two
Il utilise la passerelle pour l'adresse mac du routeur.
En passant, il change le port de la communication pour ne pas surcharger le port 8080
2
Routeur_Client (rtr - clt)
protocol
IP srce
port srce
IP cible
port cible
charge utile
TCP
IP_Rtr
80108
IP_Clt
1234
Meaning of life is forty two
Le routeur remet les bons ports et mac dans la trame ainsi que son adresse IP publique en fonction de la table de translation construite au début.
Il ajoute aussi une ligne temporaire dans la table de redirection (filtrage dynamique).
protocol
port écouté
IP service
port service
TCP
80
IP_Srv
8080
...
...
...
...
TCP
80108*
IP_Srv
80108
Filtrage et ACL
La théorie
Voir aussi le diaporama de cours, vu ... en cours
Ques aquo ?
Comme les services sont associés à des ports, le filtrage va donc filtrer les "services".
Par exemple (FTP sauf indication) :
Ports
Service
Ports
Service
20,21/989,990
ftp/ftps
80/443
http/https
25/465
smtp/smtps
554
rtsp (ftp+udp)
22
ssh
udp 123
ntp
Le routage se limite à orienter les paquets sur une route ou une autre. Ce travail est essentiel pour permettre aux réseaux de comuniquer.
Le NAT permet de convertir les adresses privées en adresses publiques et, inversement, de convertir des adresses/port publiques de services en adresses/port privées des serveurs assurant ces services.
C'est du full bloc 2. Mais qu'en est-il de la démarche de sécurisation des transferts entre les réseaux ? (on est à cheval sur les blocs 2 et 3)
Eh bien, dans la couche OSI 3 et 4, on pratique le filtrage IP et TCP basé sur des règles d'autorisation ou d'interdiction en fonction des adresses IP et/ou des ports TCP/UDP.
Attention : l'ordre des règles de filtrage est important.
Dans la table de routage, l'ordre des routes n'a pas d'importance. Le routeur choisi la route la plus adaptée à la destination du paquet.
Dans les règles de filtrage, la règle choisie sera la première qui correspond aux conditions de filtrage. Les règles suivantes seront ignorées !!
Une règle contient en général les données suivantes :
L'interface d'application (*)
Le sens d'application (entreée/sortie : in/out) (*)
Action : accepter ou refuser (accept/deny)
Le protocole traité : TCP ou UDP
Un indicateur d'état (ack = acknowledgement)
Une source :
Une adresse IP de filtrage
Un masque de filtrage de l'adresse IP
le port
Une cible :
Une adresse IP de filtrage
Un masque de filtrage de l'adresse IP
le port
(*) Les règles sont souvent regroupées dans une liste (ACL) sans tenir compte de l'interface ni du sens.
Les ACL sont ensuite appliquées en bloc sur une interface. A ce moment, on définit aussi le sens.
L'indicateur d'état ACK à 1 (vrai, on, oui) exige que la connexion soit déjà enregistrée et autorisée pour que le paquet soit effectivement accepté.
Exemple
Règle
Sens
IP source/Masque
IP cible/Masque
Protocole
port source
port cible
Ack
Action
A
out
192.168.0.0/24
* (toutes)
TCP
80
>1023
yes
Accept
B
in
*
192.168.0.0/24
TCP
>1023
80
*
Accept
C
*
*
*
*
*
*
*
Deny
A : Le serveur peut accéder à internet en réponse à une demande http (port TCP 80) vers les ports non réservés (>1023)
B : Les clients peuvent demander le serveur accessible depuis l'extérieur avec le port TCP 80
C : Toute autre communication est interdite
Deux modes de filtrage
Sans état : stateless
Filtrage simple, les paquets sont analysés séparément et comparés à la liste de règles
Inconvénients :
Le nombre de règles risque d'être très grand et la protection moins efficace (il restera des trous non détectés).
Ceci les rend sensibles aux attaques IP spoofing (usurpation IP), IP flooding (innondation IP) et Dos (déni de service par saturation de l'algorithme d'analyse).
Avec état : statefull
Filtrage plus sophistiqué, il enregistre une trace dynamique des sessions et des connexions.
L'indicateur ACK permet de vérifier que la conversation soit déjà enregistrée pour que la règle soit appliquée.
Avantages :
Le suivi des sessions et connexions permet de ne pas consulter toutes les ACL durant la session ou la connexion. Cela accélère le filtrage : les paquets de connexion active seront acceptés sans vérifier les ACL.
Il est aussi possible de surveiller si le paquet est dans la suite des précédents ou fait la réponse à un paquet entrant.
Inconvénients :
Un grand nombre de connexion = un grand nombre d'enregistrements
Filtrage applicatif
Ce type de filtrage est clairment celui du firewall - proxy.
Avantages :
Il peut analyser les contenus au niveaux OSI supérieurs à TCP (4) et filtrer application par application.
Chaque protocole applicatif aura son propre filtre
Limites :
Un trafic important aura des conséquences sur la charge du logiciel.
Démarche en pratique
Définition des règles
Elle se fait service par service (http, ftp, etc en fonction du port)
Elle se fait en fonction du sens à autoriser ou interdire (client interne, client externe)
Autoriser un service
Créer les règles d'autorisations dans les deux sens : client vers serveur et serveur vers client.
Interdire un service
le blocage d'un seul flux suffit. Mais on peut ajouter une règle d'interdiction de sortie si le service est externe.
Sens des règles
Service externe autorisé : règle d'autorisation des utilisateurs internes vers l'extérieur.
Service interne autorisé : règle d'autorisation des utilisateurs externes vers l'intérieur.
Exemple
Autoriser les utilisateur à accéder aux serveurs web externes
Autoriser les clients externes à accéder au serveur web de la DMZ sur le port 8080
Règle
Sens
IP source/Masque
IP cible/Masque
Protocole
port source
port cible
Ack
Action
Commentaire
A
in
*
192.168.0.0/24
TCP
>1023
8080
*
Accept
Accepter les clients
B
out
192.168.0.0/24
*
TCP
80
>1023
1
Accept
Réponse seulement aux clients
C
out
LAN
WAN
TCP
>1023
80
*
Accept
Autoriser la connexion au web
D
in
WAN
LAN
TCP
80
>1023
1
Accept
Accepter les connexions web externe en réponse à une demande
C
*
*
*
*
*
*
*
Deny
Interdire tout le reste
L'indicateur ACK est important pour ne pas avoir de connexion du web vers le LAN à l'initiative d'un pirate. C'est la première couche de sécurité contre les intrusions.
En effet, seules les connexions du web vers le LAN à la suite d'un connexion du LAN vers le WAN enregistrée sera acceptée.
Configuration en pratique
Cisco, comme d'hab'.
Soit un réseau et trois VLANs. Configurons le routeur pour permettre tous les VLAN de sortir sur internet mais le VLAN30 ne doit pas pouvoir passer dans les VLAN 10 et 20 qui discuttent librement ensemble.
Préparer les interfaces du routeur
On va configurer les trois interfaces du routeur R4 en présumant qu'il existe 2 interfaces physiques : Gi0/1 et Gi0/0.
Gi0/0 sera connectée vers internet et Gi0/1 découpée en interfaces virtuelles Gi0/0.1 (LAN10), Gi0/0.2 (LAN20) et Gi0/0.3 (LAN30) pour les VLANs respectifs.
Différentes ACL
Standard ou étendues
Il y a deux types d'ACL : les ACL IP standard ou étendues (extended). La première ne tiens pas compte du port et uniquement des adresses IP.
Note : on peut mettre une adresse IP, le nom d'un hôte, any = tous les hôtes (équivalent à 0.0.0.0/0), host + IP = un hôte en particulier (équivalent IP/32)
Exemple
// interdiction des adresses 192.168.30.0/24 (vlan 30) vers le réseau de l'interface g0/1.1 (vlan 10)
r0(config)# access-list30deny 192.168.0.0 0.0.0.255
r0(config-std-nacl)# exit// association de l'acl standard à l'interface (vers le réseau 10 + standard donc out)
r0(config)# int gi0/1.1
r0(config-subif)# ipaccess-group30out
r0(config-subif)# exit
Attention :
C'est un masque de filtrage
Le masque est "inversé" : les bits à 1 sont mis à 0 et les bits à 0 sont mis à 1
/ex : 255.255.255.0 devient 0.0.0.255 et 255.255.255.240 devient 0.0.0.7
« Mais ... Il n'y a pas de port ?!
- Ah ? tiens donc. hum. »
C'est normal, c'est une ACL standard. Une ACL étendue en a, elle.
« Euh, c'est quoi l'opérateur port ? un agent qui dirige les bateaux ?
- Non (soupir). C'est un opérateur de comparaison pour dire si le filtre est sur un port particulier ou sur une gamme de ports et le numéro du port ou nom du protocole. »
Par exemple, voila une règle : #access-list 111 permit TCP any 255.255.255.0 gt 1024 any 0.0.0.0 eq 80
L'opérateur sera gt, lt, eq, neq ou range. Le port est soit un numéro de port soit un nom de protocole : www, ftp, telnet, etc. C'est tout.
Devant une adresse IP, on peut mettre "host". Cela signifie que l'adresse concerne un et unseul hôte. C'est intéressant pour les ACL ciblées, par exemple sur un serveur.
Les ACL sont numérotées ou nommées.
Les commandes sont les suivantes, c'est du réchauffé :
R0> en
R0# conf t// supprimer l'adresse IP de l'interface
R0(config)# interface G0/0
R0(config-if)# noipaddress
R0(config-if)# noshut// créer les interfaces virtuelles, y ajouter les adresses des réseaux et le vlan
R0(config)# interface G0/0.1
R0(config-subif)# encapsulationdot1q10
R0(config-subif)# ipaddress 192.168.10.1 255.255.255.0
R0(config-subif)# exit
R0(config)# interface G0/0.2
R0(config-subif)# encapsulationdot1q20
R0(config-subif)# ipaddress 192.168.20.1 255.255.255.0
R0(config-subif)# exit
R0(config)# interface G0/0.3
R0(config-subif)# encapsulationdot1q30
R0(config-subif)# ipaddress 192.168.30.1 255.255.255.0
R0(config-subif)# exit
R0(config)# exit
Configurer une ACL
Pour que les ACL soient dans une liste, on leur donne simplement le même numéro.
Mais attention, l'ordre d'écriture des ACL détermine l'ordre d'analyse de celles-ci. Donc, pas d'erreur ..
Configurer les ACL vues plus haut
Autoriser les utilisateurs de tous les VLANs à accéder aux serveurs web externes
Autoriser les clients externes à accéder au serveur web de la DMZ (VLAN 10) sur le port 8080
Interdire les clients du VLAN 30 d'accéder aux VLANs 10 et 20
On va donc mettre des ACL sur l'interface Gi0/0 pour la navigation internet et sur Gi0/1.3 pour interdire d'aller sur les VLAN 10 et 20.
Bon, j'ai parlé de VLANs, mais le routeur ne connait que des adresses IP ...Voir plus haut pour la correspondance.
IN ou OUT ?
La règle implicite dit : une ACL standard se placera toujours au plus proche de la destination, une ACL étendue se placera toujours au plus proche de la source.
Pourquoi? Une ACL standard étant plus restrictive (blocage de tout le trafic d'un réseau ou d'un hôte, couche 3 routage), la placer au plus proche de la source risque de limiter ses possibilités d'accès ailleurs.
Une ACL étendue filtrant au niveau de la couche 4 (ports TCP/UDP) et pas 3 seulement, le placement au plus proche de la source évite de faire transiter des paquets qu'on ne souhaite pas voir sur le réseau. On économise aussi du temps de calcul.
// permission d'aller sur les serveurs web
r0(config)# ipaccess-listextended PERMIT_WWW
r0(config)# access-list100permit TCP any 255.255.255.255 gt1024 192.168.0.0 0.0.255.255 eq80
r0(config)# int gi0/0
r0(config-subif)# ipaccess-group PERMIT_WWW in
r0(config-subif)# exit// Trafic vers la DMZ : de partout vers le serveur web, protocole www
r0(config)# ipaccess-listextended DMZ
r0(config)# permit tcp any host 192.168.0.2 eq8080
r0(config)# int gi0/1.1
r0(config-subif)# ipaccess-group DMZ in
r0(config-subif)# exit// interdiction du vlan 30 vers les réseaux des vlan 10 et 20 avec une acl standard
r0(config)# ipaccess-liststandard DENY_V30
r0(config-std-nacl)# deny 192.168.0.0 255.255.255.0
r0(config-std-nacl)# exit
r0(config)# int gi0/1.1
r0(config-subif)# ipaccess-group DENY_V30 out
r0(config-subif)# exit
r0(config)# int gi0/1.2
r0(config-subif)# ipaccess-group DENY_V30 out
r0(config-subif)# end
r0#
Voilà
Limites
Comme on l'a vu, les ACL se basent sur un nombre de critères important qu'il s'agit d'utiliser au max.
Cependant, à trop détailler les ACL, on risque d'être confronté à des incohérences :
Redondance une règle recouvre une règle dont la plage est plus générale que la première, avec la même action.
La première règle est inutile
Masquage une règle plus générale recouvre une règle recouvre règle avec une plage plus précise.
La seconde règle est toujours ignorée. C'est un soucis si les actions sont différentes
Généralisation une redondance avec des actions différentes.
La première règle est ignorée mais la seconde est alors prise en compte. /ex : Un refus précis pourrait être accepté par la règle plus générale.
Conclusion
Comparaisons
Les rôles de technos vues ici sont différentes
Nom
OSI
Rôle
Données
Routage
3 réseau
Oriente les paquets vers une destination
route : filtre de destination, interface, passerelle
NAT/PAT
4 transport
Convertit une adresse privée en adresse publique
source IP+port, adresse du routeur
Redirection de port
4 transport
Convertit une adresse Publique+port en adresse privée déterminée
destination IP+port, adresse cible de la conversion
ACL standard
3 et 4
Autoriser/interdire le passage d'adresses sources en entrée/sortie d'une interface
Un filtre ip source (masque inversé) et une action ; des règles appliquées à une interface en entreée ou sortie.
Routage
NAT/PAT
ACL
Filtrage
Firewall
Remarques :
Les paquets passent par : ACL en entrée => NAT/PAT => redirection de port => routage => ACL sortante
En conclusion :
A noter qu'on a parlé de routeur filtrant mais pas de firewall.
Le routage ne suffit pas toujours pour régler les pbm de contrôle des communications
NAT et PAT ont permis de faire face à une demande exponentielle d’adresses IP sur internet, avant de passer à IPv6.
Grâce à l'utilisation de multiples adresses privées dans le LAN et les ports pour les communications avec internet via le routeur.
Les ACL sont un outil essentiel pour le contrôle des communications au sein d'un réseau.
Le nombre d'adresses IPv6 étant trrrrrrès important, NAT/PAT n'a plus vraiment d'intérêt sauf ...
Si NAT/PAT est la première couche de sécurité, elle est relativement faible et facile à contourner (voir bloc 3)
Le filtrage de paquets et de segments (IP et TCP/UDP) est bien plus proche du firewall. Même les switch L3 sont capables de faire du filtrage IP.
Pour augmenter la protection du LAN, il faut utiliser d'autres techniques comme le filtrage applicatif des firewalls, l'usage de "pots de miel" serveur cloquants connectés sur les ports traditionnellement ouverts, etc. Là encore, voir le bloc 3.
Cet article est (vraiment) le dernier de la liste des articles sur la configuration matérielle des équipements réseau. Pour la suite de ces configurations, se référer aux liens associés à cet article et poursuivre sur la sécurité des équipements en Bloc 3