Je vais donner mon opinion.
Apparemment ( Selon GNU linux, car c'est en effet par sa faute que j'ai connu le concept), il faut installer le demon knockd.
Si tu n'as pas ouvert de ports (pour une maintenance par l'extérieur), pas besoin de cacher des ports ouverts.
Quand on rajoute un démon, on rajoute un risque avant même de considérer si c'est contrebalancé par une protection supérieure dans un domaine particulier.
A la place de se poser la question 'Me faut-il du port-knocking sur tel port que j'ai ouvert à l'extérieur?', ne faut-il pas d'abord se poser la question 'Ai-je réellement besoin d'ouvrir ce port?'
Je conçois que la réponse à la question 'Ai-je réellement besoin d'ouvrir ce port?' soit de temps en temps 'oui' pour des questions de facilité de maintenance même si tout le monde sait que ce n'est pas nécessairement recommandé.
Après avoir considéré ce préalable, il y a grosso-modo 4 moyens de protection :
- le port-knocking (cacher les ports ouverts)
- fail2ban (repérer dans les logs les tentatives de connexion et agir avec des règles Iptables)
- simplement utiliset l'extension recent d'Iptables du genre (pas vérifié que c'est la syntaxe exacte qui marche en noyau 2.4, adapté au port SSH d'IPCop)
iptables -A INPUT -p tcp --syn --dport 222 -m recent --update --seconds 300 --hitcount 2 --name SSH -j DROP
iptables -A INPUT -p tcp --syn --dport 222 -m recent --set --name SSH -j ACCEPT
Cela drope pendant 300 s le trafic d'une IP si la troisième tentative de connexion n'a pas dépassé l'état syn.
- snort (plus guardian), c'est la grosse artillerie qui nécessite 80M de mémoire par interface pour son fonctionnement
Disons que la troisième solution me parait la plus intéressante pour le cas général, en terme de résultat/coût parce que utilisant un minimum de ressources.
Il n'y a pas de démon supplémentaire en fonctionnement ou de parcours permanent des logs (avec fail2ban). Le ban est temporaire, ce qui limite la possibilité de DOS (tant que l'attaque n'est pas permanente). Pour IPCop, il faudrait juste rajouter une case à cocher enable et une boite pour saisir la valeur de la durée du ban.
Le port-knocking n'est pas un système intrinsèquement sûr, c'est de la sécurité par obscurité en masquant des ports ouverts.
Le système distant transmettant en clair le signal sur les ports à frapper avant d'entrer, quiconque peut écouter le trafic entrant lors d'une connexion fructueuse connait le secret et peut le répliquer.
Je suis d'accord que la plupart du temps, le script-kiddies n'a pas cette capacité d'écouter le trafic et donc de ce fait, le port-knocking permet au moins d'avoir des logs plus légers.
Apparement il existe une évolution du port-knocking qui serait plus sùre (voir le détail dans
http://www.cipherdyne.org/fwknop/docs/SPA.html ) fwknop devrait être disponible sur Fedora 10.