Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
port-knocking [Le 27/01/2008, 20:46] – sidney_v | port-knocking [Le 28/11/2019, 14:45] (Version actuelle) – [Liens] 178.237.98.24 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Port Knocking : sécuriser l' | ||
+ | |||
+ | Le **port-knocking** est une méthode permettant de modifier le comportement d'un firewall en temps réel pour provoquer l' | ||
+ | |||
+ | Cette technique est notamment utilisée pour protéger l' | ||
+ | |||
+ | En résumé, **le port knocking est donc une méthode simple pour autoriser un accès distant sur un port non constamment ouvert**. Cela permet d' | ||
+ | |||
+ | La méthode de port-knocking est considérée comme sécurisée étant donné qu' | ||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | Pour la suite des opérations, | ||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée pour télécharger le logiciel ; | ||
+ | * Avoir activé l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Paramétrage du serveur ==== | ||
+ | |||
+ | Le serveur doit donc avoir un pare-feu et exécuter le service //knockd//. Le service est donc en écoute d'une séquence spécifique (suite de ports associés a un protocole TCP ou UDP). Si la séquence est correcte, alors une commande est exécutée. Généralement, | ||
+ | |||
+ | La configuration du serveur est très simple puisqu' | ||
+ | |||
+ | Après avoir installé le paquet, [[: | ||
+ | |||
+ | Deux approches vont être présentées : | ||
+ | * la première est destinée aux connexions qui ne nécessitent pas d' | ||
+ | * la seconde méthode à celles qui doivent l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Connexions non maintenues (no keep-alive) ==== | ||
+ | |||
+ | < | ||
+ | [options] | ||
+ | logfile = / | ||
+ | |||
+ | [openHTTP] | ||
+ | sequence | ||
+ | seq_timeout = 5 | ||
+ | command | ||
+ | tcpflags | ||
+ | |||
+ | [closeHTTP] | ||
+ | sequence | ||
+ | seq_timeout = 5 | ||
+ | command | ||
+ | tcpflags | ||
+ | </ | ||
+ | |||
+ | Explications : | ||
+ | * **sequence** : la combinaison à matcher pour effectuer la ' | ||
+ | * **seq_timeout** : le temps en secondes pendant lequel la combinaison doit être effectuée, après quoi elle est annulée, et il faut recommencer la séquence depuis le début. | ||
+ | * **command** : représente la règle iptables qui sera ajoutée au firewall afin de permettre l' | ||
+ | * **tcpflags** : met en évidence les flags devant être positionnés dans les paquets reçus pour que le port soit pris en compte. Si une erreur survient, il faut recommencer le tout. | ||
+ | |||
+ | Nous avons donc défini 2 séquences : | ||
+ | * **openHTTP** ouvre le port HTTP 80 si la séquence de ports 7000, 8000 et 9000 a été exécutée | ||
+ | * **closeHTTP** ferme le port HTTP 80 si la séquence de ports 9000, 8000 et 7000 a été exécutée | ||
+ | |||
+ | Il est possible de préciser le protocole " | ||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | ==== Connexions maintenues (keep-alive) ==== | ||
+ | |||
+ | Ce deuxième exemple est un peu différent du précédent : | ||
+ | |||
+ | < | ||
+ | [options] | ||
+ | logfile = / | ||
+ | |||
+ | [SSH] | ||
+ | sequence | ||
+ | seq_timeout = 5 | ||
+ | command | ||
+ | tcpflags | ||
+ | cmd_timeout | ||
+ | stop_command | ||
+ | </ | ||
+ | |||
+ | Il est recommandé de n' | ||
+ | |||
+ | FIXME : Cette règle n'est pas présente par défaut ; il faudrait préciser comment la renseigner. (http:// | ||
+ | |||
+ | Si un utilisateurs « frappe » dans l' | ||
+ | |||
+ | |||
+ | ==== Attention ==== | ||
+ | |||
+ | Le site officiel du projet knockd (et le fichier de configuration installé par défaut) fait référence à la règle iptables **-A**. Comme vous pouvez le voir, nous utiliserons à la place **-I** pour insérer la règle au début du pare-feu (sinon la règle avec -A ne produit aucun effet puisqu' | ||
+ | |||
+ | FIXME : Tout dépend de la règle par defaut, si la décision est drop le -A fonctionnera, | ||
+ | |||
+ | Changez impérativement la séquence d' | ||
+ | * d' | ||
+ | * de mélanger pour chaque port les protocoles TCP et UDP | ||
+ | |||
+ | |||
+ | Vous devez également changer la configuration par défaut dans le fichier « / | ||
+ | * pour que le service démarre automatiquement, | ||
+ | * pour que le service écoute sur des interfaces, adapter et décommenter la ligne // | ||
+ | * pour que les modifications soient prises en compte, redémarrer le service knockd avec la commande : '' | ||
+ | |||
+ | Pour en savoir plus, exécutez dans un terminal la commande '' | ||
+ | |||
+ | C'est tout ! | ||
+ | |||
+ | |||
+ | |||
+ | ===== Côté client ===== | ||
+ | |||
+ | Pour initier une séquence sur les différents ports, vous pouvez utiliser le client de votre choix, comme **telnet** ou le 'swiss army knife' **nc**... | ||
+ | |||
+ | Ou bien utiliser un logiciel client spécifique au port-knocking comme //knock//, après avoir [[: | ||
+ | |||
+ | Pour l' | ||
+ | < | ||
+ | |||
+ | Ou, si il est nécessaire de préciser dans la combinaison plusieurs protocoles : | ||
+ | < | ||
+ | |||
+ | Ou, si la combinaisons n' | ||
+ | < | ||
+ | |||
+ | Pour en savoir plus, exécutez dans un terminal la commande //man knock// | ||
+ | |||
+ | ===== Liens ===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[wpfr> | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | // |