Comment utiliser Port Knocking pour sécuriser le service SSH sous Linux
Le Port Knocking est une technique astucieuse qui consiste à contrôler l’accès à un port en autorisant uniquement les utilisateurs légitimes à accéder au service exécuté sur un serveur. Il fonctionne de telle sorte que lorsque le bon ordre de tentatives de connexion est effectué, le pare-feu ouvre volontiers le port qui a été fermé.
La logique derrière le frappement des ports est de protéger votre système Linux des scanners de ports automatisés qui rôdent à la recherche de ports ouverts. Dans ce guide, nous examinons comment vous pouvez installer le port knocking et comment vous pouvez le configurer pour sécuriser le service SSH. À des fins de démonstration, nous utiliserons Ubuntu 18.04.
Étape 1 : Installer et configurer knockd
Pour commencer, connectez-vous à votre système Linux et installez le démon knockd comme indiqué.
$ sudo apt install knockd
Une fois installé, ouvrez la configuration knockd.conf avec votre éditeur de texte préféré. Ici, nous utilisons l’éditeur de texte en ligne de commande vim.
$ sudo vim /etc/knockd.conf
Le fichier de configuration par défaut se présente comme suit.
Dans la section [openSSH], nous devons changer la séquence de frappe par défaut – 7000,8000,9000 – en quelque chose d’autre. En effet, ces valeurs sont déjà connues et peuvent compromettre la sécurité de votre système.
À des fins de test, nous avons défini les valeurs à 10005, 10006, 10007. Il s’agit de la séquence qui sera utilisée pour ouvrir le port SSH à partir d’un système client.
Sur la troisième ligne – en commençant par la commande, remplacez -A par -I juste après la commande /sbin/iptables et avant INPUT.
Et enfin, dans la section [closeSSH], encore une fois, changez la séquence par défaut pour votre choix préféré. C’est la séquence qui sera utilisée pour fermer la connexion SSH une fois que l’utilisateur a terminé et se déconnecte du serveur.
Voici notre configuration complète.
Une fois que vous avez terminé, enregistrez les modifications et quittez.
Une autre configuration que nous devons modifier est le /etc/default/knockd. Encore une fois, ouvrez-le à l’aide de votre éditeur de texte.
$ sudo vim /etc/default/knockd
Localisez la ligne START_KNOCKD=0. Décommentez-le et définissez-le sur 1.
Ensuite, rendez-vous sur la ligne KNOCKD_OPTS= « -i eth1 » Décommentez-le et remplacez la valeur par défaut eth1 par l’interface réseau active de votre système. Pour vérifier votre interface réseau, il suffit d’exécuter l’addr ip ou la commande ifconfig.
Pour notre système, enp0s3 est la carte réseau active.
La configuration complète est celle illustrée.
Enregistrez les modifications et quittez.
Ensuite, démarrez et activez le démon knockd comme indiqué.
$ sudo systemctl start knockd
sudo systemctl enable knockd
Pour vérifier l’état du démon knockd, exécutez la commande :
$ sudo systemctl status knockd
Étape 2 : Fermer le port SSH 22 sur le pare-feu
Étant donné que l’objectif du service knockd est d’accorder ou de refuser l’accès au service ssh, nous allons fermer le port ssh sur le pare-feu. Mais d’abord, vérifions l’état du pare-feu UFW.
$ sudo ufw status numbered
D’après la sortie, nous pouvons clairement voir que le port SSH 22 est ouvert sur les protocoles IPv4 et IPv6 numérotés respectivement 5 et 9.
Nous devons supprimer ces deux règles comme indiqué, en commençant par la valeur la plus élevée, qui est 9.
$ sudo ufw delete 9
sudo ufw delete 5
Maintenant, si vous essayez de vous connecter à distance au serveur, vous obtiendrez une erreur de délai d’expiration de la connexion comme indiqué.
Étape 3 : Configurer un client knock pour se connecter au serveur SSH
Dans la dernière étape, nous allons configurer un client et tenter de vous connecter en envoyant d’abord la séquence de frappe que nous avons configurée sur le serveur.
Mais d’abord, installez knockd daemon comme vous l’avez fait sur le serveur.
$ sudo apt install knockd
Une fois l’installation terminée, envoyez la séquence de frappe en utilisant la syntaxe indiquée
$ knock -v server_ip knock_sequence
Dans notre cas, cela se traduit par :
$ knock -v 192.168.2.105 10005 10006 10007
Vous devriez obtenir un résultat similaire à ce que nous avons, en fonction de votre séquence. Cela montre que les tentatives de frappe ont été couronnées de succès.
À ce stade, vous devriez être en mesure de vous connecter au serveur à l’aide de SSH.
Une fois que vous avez terminé de faire votre travail sur le serveur distant, fermez le port SSH en envoyant la séquence de frappe de fermeture.
$ knock -v 192.168.2.105 10007 10006 10005
Toute tentative de connexion au serveur échouera, comme indiqué.
Réflexions finales
Ceci conclut ce guide sur la façon d’exploiter le port knocking pour sécuriser le service SSH sur votre serveur. Une approche meilleure et plus simple serait de configurer l’authentification SSH par mot de passe à l’aide de paires de clés SSH. Cela garantit que seul l’utilisateur disposant de la clé privée peut s’authentifier auprès du serveur sur lequel la clé publique est stockée.











