Ouverture de port via code d’accès : Port knocking

Toc toc !!

– Sarah Connor ?

– Ouuuii ?

Pchout ! Pchout !

Dans cette article on va mettre en place un système d’ouverture de port d’un serveur Linux grâce à la saisie d’un code secret. Ceci est réalisable grâce au port-knocking.

Wikipédia: Le tocage à la port, ou port-knocking, est une méthode permettant de modifier le comportement d’un pare-feu (firewall) en temps réel en provoquant l’ouverture de ports permettant la communication, grâce au lancement préalable d’une suite de connexions sur des ports distincts dans le bon ordre, à l’instar d’un code frappé à une porte. Le système est donc une sécurité supplémentaire que l’on peut mettre en place sur son serveur dédié.

Le fonctionnement est le suivant:

  • Un serveur Linux log de façon native les tentative de connexion (même sur des ports fermé)
  • Un processus recherche dans le fichier de log ces événements
  • Si il rencontre, pour la même adresse IP source,  une suite de connexion de type SYN sur des ports et protocoles précis alors il ouvre le parfeu sur un port précis décidé par l’administrateur

De façon plus détaillé et en image:

portknocking-explained-01

 

  • Un client A ne peut pas se connecter sur le port « n » de sont application.
  • Le client B ne peut se connecter à aucun port
  • Le pare-feu bloque tous les ports

 

 

 

 

 

 

 

portknocking-explained-02

 

 

  • Le client envoi une suite de paquet de type SYN sur des ports et un ordre bien précis
  • Aucune réponse d’acknoledge n’est envoyé du faite que le pare-feu bloque ces échanges

portknocking-explained-03

 

 

 

  • Le processus (le daemon port knocking) intercepte et interprète la séquence envoyée.
  • La séquence correspond au port « n ». Ce dernier est ouvert au niveau pare-feu de la machine

 

 

 

 

 

portknocking-explained-04

 

 

 

 

  • Le client se connecte alors normalement à son application via le port ouvert
  • Les étapes peuvent être répétées de façon à fermer le port grâce à une autre séquence.

 

 

 

 

Mise en place sur un serveur Debian Wheezy

Installation du daemon

La configuration se trouve dans/etc/knockd.conf. Vous y trouverez une configuration toute faite pour le serveur ssh.

C’est dans ce fichier qu’il vous faudra ajouter chacun de des port que vous souhaitez protéger avec port-knock en respectant la syntaxe de l’exemple de ssh.

L’activation du daemon se passe dans un autre fichier : /etc/default/knockd. Il suffit de passer la variable START_KNOCKD de 0 à 1.

La configuration est terminée. Avant de bloquer pour de bon le ou les ports concernées par la protection nous allons tester. Vous pouvez lancer la commande suivante depuis le serveur lui même ou toute autre machine cliente Linux.

Toc toc d’ouverture

Il vous faut maintenant vérifier au niveau du pare-feu iptable que la règle d’ouverture de port pour la machine à bien était appliquée.

Le port est bien ouvert ça marche !

Toc toc de fermeture à présent :

Cette fois la ligne doit avoir disparue du pare-feu iptables. Voila c’est terminé.

Je vous entends d’ici crier : « hey mais moi je suis pas un puriste barbus tout le temps fourré sur un poste Linux! Je fais toc toc comment? »

Le site du développeur propose une liste de clients compatibles. Il en existe pour tous types de systèmes, mobile ou PC.

Depuis un terminal Android j’ai pu tester le programme PortKnocker qui fonctionne très bien.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *