Si vous souhaitez autoriser les utilisateurs à accéder à des services spécifiques sur votre serveur sans ouvrir de pare-feu, vous pouvez utiliser le port knocking. Port knocking est une méthode qui vous permet de sécuriser votre service contre les utilisateurs non autorisés. Le port knocking autorise les connexions entrantes lorsqu'une séquence correcte de tentatives de connexion est reçue.
Dans cet article, nous allons sécuriser le port SSH ouvert 22 avec le port knocking. Ce port ne sera ouvert que lorsque quelqu'un demandera les ports 7000, 8000, 9000 dans l'ordre.
Prérequis
- Un serveur Ubuntu 20.04 sur la plate-forme cloud Atlantic.Net
- Un mot de passe root configuré sur votre serveur
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 20.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur Ubuntu 20.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Installer et configurer Knockd
apt-get install knockd -y
Une fois le package installé, modifiez le fichier de configuration par défaut du port knocking :
nano /etc/knockd.conf
Trouvez la séquence par défaut ci-dessous :
sequence = 7000,8000,9000 sequence = 9000,8000,7000
Et remplacez-les par la séquence suivante :
sequence = 7777,8888,9999 sequence = 9999,8888,7777
Recherchez également la ligne suivante :
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Et remplacez-le par la ligne suivante :
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Enregistrez et fermez le fichier lorsque vous avez terminé.
Dans le fichier de configuration ci-dessus, la séquence 7777, 8888, 9999 est utilisée pour ouvrir le port 22 pour un système client, et la séquence 9999, 8888, 7777 est utilisée pour fermer le port 22 pour un système client.
Ensuite, modifiez le /etc/default/knockd fichier de configuration :
nano /etc/default/knockd
Modifiez les lignes suivantes :
# Start the Knockd service START_KNOCKD=1 # Name of your network interface KNOCKD_OPTS="-i eth0"
Enregistrez et fermez le fichier lorsque vous avez terminé, puis redémarrez le service Knockd et activez-le pour qu'il démarre au redémarrage du système :
systemctl restart knockd systemctl enable knockd
Ensuite, vérifiez l'état du service Knockd avec la commande suivante :
systemctl status knockd
Exemple de sortie :
● knockd.service - Port-Knock Daemon Loaded: loaded (/lib/systemd/system/knockd.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 13:26:31 UTC; 5s ago Docs: man:knockd(1) Main PID: 6555 (knockd) Tasks: 1 (limit: 2353) Memory: 296.0K CGroup: /system.slice/knockd.service └─6555 /usr/sbin/knockd -i eth0 Aug 15 13:26:31 ubuntu2004 systemd[1]: Started Port-Knock Daemon. Aug 15 13:26:31 ubuntu2004 knockd[6555]: starting up, listening on eth0
Étape 3 - Installer et configurer Iptables
Knockd utilise la règle Iptables pour ouvrir et fermer le port SSH, vous devrez donc installer le package Iptables sur votre serveur.
Exécutez la commande suivante pour installer le package Iptables :
apt-get install iptables iptables-persistent -y
Une fois le package installé, créez une règle Iptables pour bloquer le port SSH 22 pour tous les utilisateurs :
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT
Ensuite, enregistrez la règle Iptables et rechargez-la avec la commande suivante :
netfilter-persistent save netfilter-persistent reload
À ce stade, le port knocking est configuré pour OpenSSH sur votre serveur.
Étape 4 - Vérifier la connexion OpenSSH à partir du système client
Ensuite, accédez au système client et vérifiez si le port OpenSSH 22 est bloqué ou non.
Vous pouvez le vérifier à l'aide de la commande NMAP :
nmap your-server-ip
Vous devriez voir que le port 22 est filtré sur le serveur.
Nmap scan report for your-server-ip Host is up (0.38s latency). Not shown: 998 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp filtered ssh Nmap done: 1 IP address (1 host up) scanned in 277.58 seconds
Maintenant, essayez de vous connecter à votre serveur en utilisant SSH depuis la machine client :
ssh [email protected]
Vous devriez voir le message de connexion refusée :
ssh: connect to host your-server-ip port 22: Connection refused
Étape 5 - Configurer Knockd sur le client pour connecter le serveur SSH
Vous devez maintenant installer le client Knock sur le système client pour vous connecter au serveur SSH.
Tout d'abord, exécutez la commande suivante pour installer le package client Knockd :
apt-get install knockd -y
Utilisez maintenant la séquence de frappe suivante pour ouvrir le port SSH 22 sur le serveur.
knock -v your-server-ip 7777 8888 9999
Lorsque votre serveur reçoit une séquence correcte que vous avez définie dans le fichier de configuration de Knockd, il ouvrira le port SSH 22 pour votre machine cliente et vous pourrez vous connecter au serveur SSH.
ssh [email protected]
Après avoir terminé votre tâche sur le serveur SSH distant, vous pouvez utiliser la séquence suivante à partir de la machine cliente pour fermer à nouveau le port SSH.
knock -v your-server-ip 9999 8888 7777
Conclusion
Dans le guide ci-dessus, vous avez appris comment sécuriser un serveur SSH avec le port knocking. Vous pouvez utiliser la même méthode pour sécuriser d'autres ports sur un serveur Linux. Essayez-le sur l'hébergement VPS d'Atlantic.Net !