Marre des tentatives d'intrusion en ssh dans vos log
Par KrysKool le lundi, décembre 1 2008, 23:13 - linux - Lien permanent
Si vous lisez régulièrement vos logs de vos serveurs, vous avez surement remarqué qu'il se remplissent de plus en plus souvent avec des tentatives de connexion en ssh (port 22), ce sont des bots qui essai de pénétrer votre serveur a l'aide de dictionnaire et de compte non sécurisé. Pour bloquer ses tentatives vous utilisez sans doute déjà Fail2Ban qui blacklist via IpTables l'ip qui a loupé ses tentatives (3 fois par défaut), d'ailleurs vous avez surement pester dessus les journées ou vous avez de gros doigts :), fail2ban a la facheuse tendance a envoyé un mail à chaque tentative, depuis quelques semaines il est surement devenu votre spammer favori, pourtant une autre solution existe, c'est de ne rendre le port ssh visible seulement après avoir exécuter un rituel, cela s'appelle le port knocking.
Voici la définition Wikipédia du port knocking
Le port-knocking est une méthode permettant de modifier le comportement d'un firewall en temps réel en provoquant l'ouverture de ports permettant la communication, grâce au lancement préalable d'une suite de connexions sur des ports distincts dans le bon ordre, à l'instar d'un code frappé à une porte.
Cette technique est notamment utilisée pour protéger l'accès au port 22 dédié au Secure shell (SSH), elle ne nécessite pas beaucoup de ressources et reste facile à mettre en œuvre. En 2008, cette technique n'est pas encore largement adoptée par la communauté informatique, mais elle a déjà été intégrée dans certains rootkits.
coté serveur
Pour cela il existe une service qui permet de faire du port knocking knockd
sous Debian et dérivé, faite juste un
# apt-get install knockd
editer le fichier /etc/knockd.conf et changer la séquence par défaut
redemarez le service via
# invoke-rc.d knockd restart
coté client
Pour vous connectez a votre serveur en ssh direct, cela sera impossible, car knockd veille au grain. il vous faut également installe knockd coté client, puis exécuter la ligne ci dessous.
$ knock mon_serveur 7000 8000 900
Vous changerez bien sur la séquence de port et mettrez celle que vous avez choisi. ensuite vous avez un laps de temps définit par la variable cmd_timeout pour vous connecter avec ssh. passer ce delai les nouvelles connexions ssh seront refusés, mais celle déjà établit resterons.