Recherche de site Web

Comment utiliser Port Knocking pour sécuriser le service SSH sous Linux


Le Port Knocking est une technique astucieuse permettant de contrôler l'accès à un port en autorisant uniquement les utilisateurs légitimes à accéder au service exécuté sur un serveur. Cela fonctionne de telle manière que lorsque la bonne séquence de tentatives de connexion est effectuée, le pare-feu ouvre volontiers le port qui a été fermé.

La logique derrière le port knocking est de protéger votre système Linux contre les scanners de ports automatisés qui recherchent les ports ouverts. Dans ce guide, nous examinons comment installer le port knocking et comment 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 apparaît comme suit.

Dans la section [openSSH], nous devons remplacer la séquence de frappe par défaut – 7000,8000,9000 – par autre chose. En effet, ces valeurs sont déjà connues et peuvent compromettre la sécurité de votre système.

À des fins de tests, nous avons défini les valeurs sur 10005, 10006, 10007. C'est la séquence qui sera utilisée pour ouvrir le port SSH depuis un système client.

Dans la troisième ligne – en commençant par commande, remplacez -A par -I juste après /sbin/iptables commande et avant INPUT.

Et enfin, sous la section [closeSSH], encore une fois, modifiez la séquence par défaut selon votre choix préféré. C'est la séquence qui sera utilisée pour fermer la connexion SSH une fois que l'utilisateur aura terminé et se déconnectera 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 la /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 la valeur sur 1.

Ensuite, rendez-vous sur la ligne KNOCKD_OPTS= ”-i eth1 ” Décommentez-la 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, exécutez simplement la commande ip addr ou ifconfig.

Pour notre système, enp0s3 est la carte réseau active.

La configuration complète est comme indiqué.

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 : fermez le port SSH 22 sur le pare-feu

Puisque 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

À partir du résultat, nous pouvons clairement voir que le port SSH 22 est ouvert sur les protocoles IPv4 et IPv6 numérotés 5 et 9 respectivement.

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

Désormais, si vous essayez de vous connecter à distance au serveur, vous obtiendrez une erreur d'expiration de connexion, comme indiqué.

Étape 3 : Configurer un client knock pour se connecter au serveur SSH

Dans la dernière étape, nous configurerons un client et tenterons de nous connecter en envoyant d'abord la séquence de frappe que nous avons configurée sur le serveur.

Mais d'abord, installez le démon knockd 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 à celui que nous avons, en fonction de votre séquence. Cela montre que les tentatives de frappe ont réussi.

À ce stade, vous devriez être en mesure de vous connecter avec succès au serveur en utilisant SSH.

Une fois que vous avez terminé 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 illustré.

Pensées finales

Ceci conclut ce guide sur la façon de tirer parti du port knocking pour sécuriser le service SSH sur votre serveur. Une approche meilleure et plus simple consisterait à 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.