Frappe au port: une idée de sécurité dont l'heure est venue

De très nombreuses innovations proviennent du monde Linux et Unix. Rares sont ceux qui m'intriguent plus que de frapper à bâbord. En tant que plug-in de sécurité mondial destiné à protéger les services, il présente de nombreux avantages et quelques inconvénients. Cependant, pour une raison ou une autre, il souffre d'un manque d'utilisation et de compréhension. Beaucoup d'administrateurs en ont peut-être entendu parler, mais peu savent comment l'implémenter. Encore moins l'ont utilisé.

Le cliquetis de port fonctionne sur le concept selon lequel les utilisateurs souhaitant se connecter à un service réseau doivent initier une séquence prédéterminée de connexions de port ou envoyer une chaîne d'octets unique avant que le client distant puisse se connecter au service éventuel. Dans sa forme la plus élémentaire, le logiciel client de l'utilisateur distant doit d'abord se connecter à un ou plusieurs ports avant de se connecter au port de destination finale.

Par exemple, supposons que le client distant souhaite se connecter à un serveur SSH. L'administrateur configure à l'avance les exigences de frappe de port, exigeant que les clients distants qui se connectent se connectent d'abord aux ports 3400, 4000 et 9887 avant de se connecter au port de destination finale, 22. L'administrateur indique à tous les clients légitimes la «combinaison» correcte pour se connecter ; les pirates malveillants souhaitant se connecter au service SSH se verront refuser l'accès sans la combinaison. Le claquement des ports déjouera même les amateurs de numérisation de ports et de capture de bannières.

Comme toute combinaison de ports et de protocoles de transport peut être utilisée, le nombre de séquences possibles qu'un attaquant devrait deviner est élevé. Même si le pirate savait que seulement trois coups de port étaient impliqués, comme dans l'exemple très simple ci-dessus, avec 64000 ports TCP, UDP et ICMP (Internet Control Message Protocol) parmi lesquels choisir, l'ensemble résultant de combinaisons possibles pour le pirate essayez des millions. Les scanners de port seront frustrés car le cliquetis de port utilise des ports fermés pour faire l'écoute (plus d'informations ci-dessous).

Le plus grand avantage de tous est que le cliquetis de port est indépendant de la plate-forme, du service et de l'application: tout système d'exploitation doté du logiciel client et serveur approprié peut profiter de sa protection. Bien que le port knocking soit principalement une implémentation Linux / Unix, il existe des outils Windows qui peuvent faire la même chose. Et à l'instar d'IPSec et d'autres mécanismes de protection, aucun des services ou applications impliqués ne doit être sensible au cliquetis de port.

Le logiciel de serveur de frappe de port fonctionne en surveillant le journal du pare-feu et en recherchant les connexions aux ports fermés, ou en surveillant la pile IP. La première méthode nécessite que toutes les tentatives de connexion refusées soient écrites rapidement dans un journal de pare-feu, et le service de frappe de port (démon) surveille et corrèle les combinaisons légitimes de frappe de port. Pour les combinaisons de frappe authentifiées, le service de serveur de frappe de port indique ensuite au pare-feu d'ouvrir le port final demandé uniquement pour le client de frappe de port légitime - généralement suivi par adresse IP.

Des implémentations plus avancées de cliquetis de port fonctionnent au niveau de la pile IP et soit écoutent et enregistrent les connexions aux ports fermés, soit utilisent un mécanisme plus sophistiqué. Certaines implémentations recherchent une série d'octets spécifique lors de la première tentative de connexion. Ces octets peuvent même être «cachés» dans un simple ping de requête d'écho ICMP. Des méthodes de négociation de frappe de port encore plus efficaces impliquent le chiffrement ou l'authentification asymétrique.

Le cliquetis de port peut également servir de couche supplémentaire de sécurité pour protéger les services de gestion à distance à haut risque, tels que SSH et RDP (Remote Desktop Protocol). Malheureusement, le port knocking a été utilisé par plus de quelques chevaux de Troie rootkit alors que leurs créateurs de hackers tentent de garder le contrôle de leurs propres créations malveillantes.

Les critiques soulignent souvent le fait que les pirates espions pourraient être en mesure de capturer et de rejouer la séquence ou la série d'octets de frappe de port réussie. Bien que cela puisse être vrai avec les implémentations de base, des attaques comme celles-ci seraient écrasées en utilisant des méthodes d'authentification plus sophistiquées ou minimisées en utilisant des adresses IP autorisées codées en dur secondaires telles que des wrappers TCP.

Si un pirate parvient à glaner votre combinaison, le pire des cas est que l'intrus contourne la protection contre les attaques de port et doit maintenant faire face à vos mesures de sécurité de service normales - demande de mot de passe de connexion, etc. Pour autant que je sache, l'utilisation du port cogné ne peut que renforcer toute stratégie de défense en profondeur et ne fait rien pour lui nuire.

Je souhaite que Windows ait des mécanismes de frappe de port intégrés par défaut. Ce serait un bon complément aux implémentations IPSec et Kerberos testées par Microsoft sur le marché. Le monde Linux / Unix a une pléthore d'implémentations de frappe de port parmi lesquelles choisir, dont aucune ne nécessite une expertise incroyable pour être configurée ou utilisée.

Pour plus d'informations sur la frappe de port, visitez www.portknocking.org ou en.wikipedia.org/wiki/Port_knocking. Pour plus de détails sur la configuration d'un exemple d'implémentation, consultez gentoo-wiki.com/HOWTO_Port_Knocking.

Une excellente collection de logiciels et d'utilitaires de frappe de port est disponible sur www.portknocking.org/view/implementations, et un autre serveur et client de frappe de port basé sur Windows est disponible sur www.security.org.sg/code/portknock1 .html.