Construisez d'abord l'idée, puis utilisez l'activité suivante pour la vérifier.
Filtrer par service, pas seulement par hôte
Ajouter le protocole et le port à une règle, et les trois réponses qu'un port bloqué peut vous donner.
Ce que vous serez capable de faire
- Écrire une règle qui autorise un service plutôt qu'un hôte
- Expliquer pourquoi une autorisation spécifique à un port est la forme du moindre privilège
- Distinguer un port ouvert, refusé et filtré à partir de la réponse
- Dire pourquoi rejeter silencieusement vaut mieux que refuser explicitement pour une règle censée être discrète
Avant cela : Vous avez besoin de l'ordre de première correspondance et du refus implicite tirés de « Filtrer le trafic avec une ACL », et des ports tirés de « TCP, UDP et ports ».
Pourquoi c'est important : Une règle qui autorise un hôte à en atteindre un autre autorise chaque service qui s'y trouve - la base de données, l'interface de gestion, tout ce qui sera installé l'année prochaine. Nommer le service fait la différence entre une liste d'accès qui exprime une intention et une qui ne fait que l'approximer.
Une liste d'accès qui ne nomme que les adresses répond à la question « ces deux machines peuvent-elles parler ». C'est rarement la question que l'on se pose réellement. La véritable demande concerne presque toujours un service : l'équipe Web a besoin du port de l'application, l'auditeur doit lire un système, le réseau invité a besoin d'Internet et rien de interne.
Ajouter le service à une règle
Une règle peut correspondre au protocole de transport et au port de destination ainsi qu'aux adresses. Même ordre au premier match, même refus implicite à la fin, un champ de plus sur lequel faire correspondre.
# Permits everything between these two hosts
permit src 10.30.10.25 dst 10.30.30.10
# Permits one service, and nothing else, between the same two
permit src 10.30.10.25 dst 10.30.30.10 tcp dport 443
Le port de destination est celui qui identifie le service, car c'est le port sur lequel le serveur écoute. Le port source est choisi au hasard par le client pour chaque connexion et il n'est pas utile de le faire correspondre. Il s'agit d'une erreur précoce courante qui produit une règle qui fonctionne une fois puis s'arrête.
Trafic aller-retour
Une demande sortante nécessite un retour de réponse, et la réponse arrive sur le port source aléatoire choisi par le client. Une liste apatride doit autoriser un large éventail de ports entrants pour autoriser les réponses, ce qui annule en grande partie la précision qui vient d'être obtenue.
La correspondance en fonction de l'état de connexion résout ce problème correctement. Le pare-feu suit les connexions sortantes qu'il a autorisées et admet les réponses qui leur appartiennent, sans aucune règle qui permettrait à quiconque de démarrer une nouvelle connexion entrante.
# Replies to connections we already allowed out
permit ct state established,related
# One service, inbound, from one source
permit src 10.30.10.25 dst 10.30.30.10 tcp dport 443
Les trois réponses
Lorsqu'une connexion à un port échoue, la façon dont elle échoue vous indique quelque chose de spécifique. Cela vaut la peine d'être connu à la fois pour le diagnostic et pour décider de la manière dont une règle de refus doit être écrite.
| Résultat | Que s'est-il passé | Ce que cela signifie |
|---|---|---|
| Ouvrir | La connexion est terminée | Quelque chose écoute et rien ne l'a filtré |
| Refusé | Une réinitialisation est revenue immédiatement | Le paquet a atteint l'hôte et a reçu une réponse : soit rien n'écoute, soit une règle l'a rejeté |
| Filtré | Aucune réponse, jusqu'à l'expiration du délai | Quelque chose l'a jeté en silence |
Le signal distinctif est le temps. Un refus revient instantanément parce que quelque chose a été répondu. Un drop fait perdre tout le temps car rien ne s'est passé. Les deux semblent « ne pas se connecter » si vous ne surveillez pas la différence.
Abandonner ou rejeter
| Action | Réponse envoyée | Effet sur un scanner | Effet sur un client légitime |
|---|---|---|---|
| Déposer | Aucune | Lent : chaque port coûte un temps d'arrêt complet | Défaillance lente, erreur moins claire |
| Refuser | Une réinitialisation immédiate ou un message ICMP | Rapide : le scan se termine rapidement | Défaillance rapide, erreur plus claire |
La suppression est la solution par défaut à une limite faisant face à un élément non fiable : cela coûte du temps à l'attaquant et ne révèle rien de ce qui s'y trouve. Le rejet est plus facile au sein d'un réseau que vous contrôlez, où une panne rapide et claire permet à quelqu'un d'économiser un après-midi de diagnostic et où il n'y a aucun scanner à contrecarrer.
Un audit qui a révélé plus que ce que disait la règle
La règle permettant au niveau Web d'atteindre le niveau application a été écrite par adresse, car à l'époque, le serveur d'applications exécutait un service. Il exécute désormais également la base de données, sur son port par défaut. Rien dans la liste d'accès n'a changé et rien ne semble anormal : les serveurs Web ont simplement obtenu un accès direct à la base de données le jour où le service a démarré, et la règle qui l'a accordé a été écrite des années plus tôt pour une raison différente.
Vérification par comportement
Une règle qui se lit correctement peut toujours ne pas fonctionner, et un apprenant qui a obtenu le même résultat différemment ne doit pas être mal noté. Vérifier un filtre signifie tester ce qui se passe réellement sur la machine qui compte.
# Should connect
nc -w 3 10.30.30.10 443
# Should time out with no response at all
nc -w 3 10.30.30.10 3306
Terminologie
- Port de destination
- Port sur lequel le serveur écoute et port qui identifie un service dans une règle.
- Filtrage dynamique
- Suivi des connexions autorisées afin que les réponses soient admises sans règle autorisant de nouvelles connexions entrantes.
- Filtré
- Port dont le trafic est ignoré en silence, sans réponse.
- Refusé
- Un port qui a répondu par une réinitialisation : soit rien n'écoute, soit une règle de rejet.
Points clés à retenir
- Faites correspondre le port de destination pour autoriser un service ; le port source est aléatoire et il est inutile de le faire correspondre.
- Une autorisation d'adresse uniquement accorde tous les services sur cet hôte, y compris les futurs.
- L'état de connexion correspondant admet les réponses sans autoriser les nouvelles connexions entrantes.
- L'ouverture, le refus et le filtrage sont trois résultats distincts, qui se distinguent par la réponse ou non.
- Sur TCP, un refus ne peut être distingué d'un service arrêté.
- Adhérez à une limite non fiable ; rejetez à l'intérieur d'un réseau où des erreurs claires sont plus utiles qu'elles ne coûtent.
Prêt à continuer ?
Créez un compte gratuit pour enregistrer votre progression et passer le contrôle de connaissances.
