introduction
En plus de changer le port par défaut pour SSH et d'utiliser une paire de clés pour l'authentification, le détournement de port peut être utilisé pour sécuriser davantage (ou plus précisément, obscurcir) votre serveur SSH. Il fonctionne en refusant les connexions à votre port réseau SSH. Cela masque essentiellement le fait que vous exécutez un serveur SSH jusqu'à ce qu'une séquence de tentatives de connexion soit effectuée sur des ports prédéfinis. Très sécurisé et simple à mettre en œuvre, le détournement de port est l'un des meilleurs moyens de protéger votre serveur contre les tentatives de connexion SSH malveillantes.
Conditions préalables
- Un serveur Vultr exécutant Ubuntu 18.04.
- Accès Sudo.
Avant de suivre les étapes ci-dessous, si vous n'êtes pas connecté en tant qu'utilisateur root, veuillez obtenir un shell root temporaire en exécutant sudo -i
et en entrant votre mot de passe. Alternativement, vous pouvez ajouter sudo
les commandes présentées dans cet article.
Étape 1: installation de Knockd
Knockd est le package utilisé en combinaison avec iptables pour implémenter le port knocking sur votre serveur. Le iptables-persistent
package ' ' est également requis.
apt update
apt install -y knockd iptables-persistent
Étape 2: règles iptables
Exécutez les commandes suivantes dans l'ordre:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4
Ces commandes feront respectivement ce qui suit:
- Demandez à iptables de maintenir en vie les connexions existantes.
- Demandez à iptables de supprimer toute connexion au port tcp / 22 (si votre démon SSH écoute sur un port autre que 22, vous devez modifier la commande ci-dessus en conséquence.)
- Enregistrez ces deux règles afin qu'elles persistent après un redémarrage.
Étape 3: configuration de Knockd
À l'aide d'un éditeur de texte de votre choix, ouvrez le fichier /etc/knockd.conf
.
Vous verrez ce qui suit:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Vous devez modifier la séquence des ports (choisissez les numéros de port ci 1024
- dessus et inutilisés par d'autres services) et stockez-les en toute sécurité. Cette combinaison doit être traitée comme un mot de passe. En cas d'oubli, vous perdrez l'accès à SSH. Nous ferons référence à cette nouvelle séquence comme x,y,z
.
la seq-timeout
ligne est le nombre de secondes pendant lesquelles Knockd attendra que le client termine la séquence de détournement de port. Ce serait une bonne idée de changer cela en quelque chose de plus grand, surtout si le port-knocking sera fait manuellement. Cependant, une valeur de délai d'attente plus petite est plus sûre. Il 15
est recommandé de le changer car nous allons frapper manuellement dans ce tutoriel.
Modifiez la séquence d'ouverture pour les ports que vous avez choisis:
[openSSH]
sequence = x,y,z
Modifiez la valeur de la commande comme suit:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Modifiez maintenant la séquence de fermeture en conséquence:
[closeSSH]
sequence = z,y,x
Enregistrez vos modifications et quittez, puis ouvrez le fichier /etc/default/knockd
:
- Remplacez
START_KNOCKD=0
par START_KNOCKD=1
.
- Ajoutez la ligne suivante à la fin du fichier:
KNOCKD_OPTS="-i ens3"
(remplacez ens3
par le nom de votre interface réseau publique s'il diffère.)
- Sauvegarder et quitter.
Lancez maintenant Knockd:
systemctl start knockd
Si vous vous déconnectez maintenant de votre serveur, vous devrez frapper sur les ports x
, y
et z
de vous connecter à nouveau.
Étape 4: test
Vous ne pourrez plus vous connecter à votre serveur SSH.
Vous pouvez tester le détournement de port avec un client Telnet.
Les utilisateurs de Windows peuvent lancer telnet à partir de l'invite de commande. Si telnet n'est pas installé, accédez à la section "Programmes" du Panneau de configuration, puis recherchez "Activer ou désactiver les fonctionnalités Windows". Dans le panneau des fonctionnalités, localisez «Client Telnet» et activez-le.
Dans votre terminal / invite de commande, tapez ce qui suit:
telnet youripaddress x
telnet youripaddress y
telnet youripaddress z
Faites tout cela en quinze secondes, car c'est la limite imposée dans la configuration. Maintenant, essayez de vous connecter à votre serveur via SSH. Il sera accessible.
Pour fermer l'accès au serveur SSH, exécutez les commandes dans l'ordre inverse.
telnet youripaddress z
telnet youripaddress y
telnet youripaddress z
Conclusion
La meilleure partie de l'utilisation du port knocking est que s'il est configuré en même temps que l'authentification par clé privée, il n'y a pratiquement aucune chance que quelqu'un d'autre puisse entrer à moins que quelqu'un ne connaisse votre séquence de port knocking et ait votre clé privée.