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, 19:31] – sidney_v | port-knocking [Le 27/11/2023, 14:39] (Version actuelle) – [Liens] Le site Portknoking a changé de propriétaire 86.107.127.8 | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| ---- | ---- | ||
| - | |||
| - | |||
| ====== Port Knocking : sécuriser l' | ====== 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' | + | 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' | Cette technique est notamment utilisée pour protéger l' | ||
| Ligne 13: | Ligne 11: | ||
| 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' | 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' | + | La méthode de port-knocking est considérée comme sécurisée étant donné qu' |
| ===== Pré-requis ===== | ===== Pré-requis ===== | ||
| - | Pour la suite des opérations, | + | Pour la suite des opérations, |
| * Disposer des [[: | * Disposer des [[: | ||
| * Disposer d'une connexion à Internet configurée et activée pour télécharger le logiciel ; | * Disposer d'une connexion à Internet configurée et activée pour télécharger le logiciel ; | ||
| - | * Avoir activé l' | + | * 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 | + | ===== 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 | ||
| + | |||
| + | 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' | ||
| - | La configuration du serveur est très simple puisqu' | ||
| - | Après avoir installé le paquet, [[: | ||
| - | 2 approches vont être présentées : | ||
| - | * La première est destinée aux connections qui ne nécessitent pas d' | ||
| - | * La seconde méthode à celles qui doivent l' | ||
| ==== Connexions non maintenues (no keep-alive) ==== | ==== Connexions non maintenues (no keep-alive) ==== | ||
| - | <code> | + | <file> |
| + | [options] | ||
| logfile = / | logfile = / | ||
| Ligne 45: | Ligne 48: | ||
| sequence | sequence | ||
| seq_timeout = 5 | seq_timeout = 5 | ||
| - | command | + | command |
| tcpflags | tcpflags | ||
| Ligne 52: | Ligne 55: | ||
| seq_timeout = 5 | seq_timeout = 5 | ||
| command | command | ||
| - | tcpflags | + | tcpflags |
| + | </file> | ||
| - | Nous avons définis | + | 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 | ||
| * **openHTTP** ouvre le port HTTP 80 si la séquence de ports 7000, 8000 et 9000 a été exécutée | * **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 | * **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 " | ||
| + | < | ||
| Ligne 64: | Ligne 77: | ||
| Ce deuxième exemple est un peu différent du précédent : | Ce deuxième exemple est un peu différent du précédent : | ||
| - | <code> | + | <file> |
| + | [options] | ||
| logfile = / | logfile = / | ||
| Ligne 70: | Ligne 84: | ||
| sequence | sequence | ||
| seq_timeout = 5 | seq_timeout = 5 | ||
| - | command | + | command |
| tcpflags | tcpflags | ||
| cmd_timeout | cmd_timeout | ||
| - | stop_command | + | stop_command |
| + | </file> | ||
| - | Il est recommandé de n' | + | Il est recommandé de n' |
| - | Explications | + | FIXME : Cette règle |
| - | * **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 | + | |
| - | * **command** | + | |
| - | * **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. | + | |
| - | Si un utilisateurs | + | Si un utilisateurs |
| + | ==== 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' | ||
| - | ==== Attention ==== | + | 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' | + | 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 | + | |
| + | Vous devez également changer la configuration par défaut dans le fichier | ||
| * pour que le service démarre automatiquement, | * pour que le service démarre automatiquement, | ||
| * pour que le service écoute sur des interfaces, adapter et décommenter la ligne // | * 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 : //sudo / | + | * 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 | + | Pour en savoir plus, exécutez dans un terminal la commande |
| C'est tout ! | C'est tout ! | ||
| + | |||
| ===== Côté client ===== | ===== Côté client ===== | ||
| - | Pour initier une séquence sur les différents ports, vous pouvez utiliser le client de votre choix : telnet, nc... | + | Pour initier une séquence sur les différents ports, vous pouvez utiliser le client de votre choix, |
| + | |||
| + | Ou bien utiliser un logiciel client spécifique au port-knocking comme //knock//, après avoir [[: | ||
| + | |||
| + | Pour l' | ||
| + | < | ||
| - | Ou bien utiliser un logiciel client spécifique au port-knocking comme //knock//, après avoir [[:tutoriel:comment_installer_un_paquet|installé le paquet]] //knockd// (sur le client cette fois-ci !) | + | Ou, si il est nécessaire de préciser dans la combinaison plusieurs protocoles |
| + | < | ||
| - | Pour l' | + | Ou, si la combinaisons n' |
| - | < | + | < |
| Pour en savoir plus, exécutez dans un terminal la commande //man knock// | Pour en savoir plus, exécutez dans un terminal la commande //man knock// | ||
| Ligne 115: | Ligne 138: | ||
| ===== Liens ===== | ===== Liens ===== | ||
| - | * [[http:// | + | * [[https:// |
| - | * [[http:// | + | * [[wpfr>Port_knocking|Page sur l' |
| * [[http:// | * [[http:// | ||
| + | * [[https:// | ||
| ---- | ---- | ||
| - | // | + | // |
