KNOCKD
Introduction
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.
Installation des packages
Les packages knockd sont disponibles dans les dépôts Debian officiels.
MAJ du système
apt-get update apt-get upgrade apt-get install knockd
Les fichiers de config
Le fichier knockd.conf se présente par défaut comme ci-dessous :
- /etc/knockd.conf
[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” :
- sequence : la liste des ports à attaquer pour déclencher un évenement
- seq_timeout : l'interval de temps maximal pour que le serveur recoive la séquence
- command : la commande éxécuter sur le serveur à réception de la séquence
- tcpflags : le flag tcp attendu par le serveur
Démarrer le service
systemctl start knockd
Déclencher l'éxecution du script
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
Conclusion : Pourquoi utiliser le service knockd?
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.