Le service “knockd” permet de déclencher l'éxécution d'une tâche à distance sur un serveur. Je m'en sert sur mes serveurs dédiés et VPS pour sécuriser l'accès SSH au serveur.
Je vais présenter ici un exemple de mise en place de ce service sur un serveur VPS qui tourne sous Debian Jessie.
Les packages knockd sont disponibles dans les dépôts Debian officiels.
apt-get update apt-get upgrade apt-get install knockd
Le fichier knockd.conf se présente par défaut comme ci-dessous :
[options] UseSyslog [openSSH] sequence = 7000,8000,9000 seq_timeout = 5 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9000,8000,7000 seq_timeout = 5 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
Afin de comprendre comment configurer le service, nous allons analyser la section “openSSH” :
systemctl start knockd
Côté poste client, si l'on travaille sur le poste linux, on peut utiliser le client knock de la manière suivante :
knock monvps.tld 7000,8000,9000
ou
knock 12.34.56.78 7000,8000,9000
Grâce à ce système, nous pouvons fermer le port ssh sur le firewall de notre serveur et l'ouvrir à la demande. De ce fait, on se protège contre les tentatives d'accès au serveur par force brute car le port ssh est ouvert uniquement pour notre adresse IP source.
J'utilise ce service uniquement pour cette raison, mais nous pouvons imaginer d'autres fonctionnalités comme le déclenchement d'un script “x.sh” en le précisant dans la section command.