KNOCKD

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.

Retour

Vous pourriez laisser un commentaire si vous étiez connecté.