Port Knocking: la meilleure sécurité que vous pouvez avoir sur votre ordinateur ou serveur (déploiement + configuration)

Ports frappants (en anglais frapper au port) est sans aucun doute une pratique que tous ceux qui gèrent des serveurs devraient connaître, ici j'explique en détail ce que c'est et comment l'implémenter et le configurer 😉

À l'heure actuelle, ceux d'entre nous qui gèrent un serveur ont un accès SSH à ce serveur, certains nous changeons le port par défaut de SSH et il n'utilise plus le port 22 et d'autres le laissent simplement comme ça (ce qui n'est pas recommandé), mais le serveur a activé l'accès SSH via un port et c'est déjà une «vulnérabilité».

Avec Frappe du port nous pouvons réaliser ce qui suit:

1. L'accès SSH n'est activé par aucun port. Si nous avons SSH configuré pour le port 9191 (par exemple), ce port (9191) sera fermé pour tout le monde.
2. Si quelqu'un veut accéder au serveur par SSH, évidemment, il ne le pourra pas, puisque le port 9191 est fermé ... mais, si nous utilisons une combinaison `` magique '' ou secrète, ce port sera ouvert, par exemple:

1. Je telnet au port 7000 du serveur
2. Je fais un autre telnet au port 8000 du serveur
3. Je fais un autre telnet au port 9000 du serveur
4. Le serveur détecte que quelqu'un a fait la combinaison secrète (touchez les ports 7000, 8000 et 9000 dans cet ordre) et ouvrira le port 9191 afin que la connexion soit demandée par SSH (il ne l'ouvrira que pour l'IP à partir de laquelle la combinaison a été faite numéro de port satisfaisant).
5. Maintenant, pour fermer SSH, je viens de Telnet sur le port 3500
6. Je vais faire un autre telnet sur le port 4500
7. Et enfin un autre telnet sur le port 5500
8. L'exécution de cette autre combinaison secrète détectée par le serveur fermera à nouveau le port 9191.

En d'autres termes, expliquer cela encore plus simplement ...

Avec Frappe du port notre serveur peut avoir certains ports fermés, mais lorsque le serveur le détecte X IP la combinaison de ports correcte a été faite (configuration préalablement définie dans un fichier de configuration) exécutera évidemment certaines commandes sur lui-même (comando également défini dans le fichier de configuration).

N'est-ce pas compris? 🙂

Comment installer un démon pour Port Knocking?

Je le fais avec le paquet Kockd, ce qui nous permettra de manière très, très simple et rapide d'implémenter et de configurer Frappe du port.

Installez le package: knockd

Comment configurer Port Knocking avec knockd?

Une fois installé, nous continuons à le configurer, pour cela nous éditons (en tant que root) le fichier /etc/knockd.conf :

nano /etc/knockd.conf

Comme vous pouvez le voir dans ce fichier, il existe déjà une configuration par défaut:

 Expliquer les paramètres par défaut est vraiment simple.

- Premier, UtiliserSyslog signifie que pour enregistrer l'activité (journal), nous utiliserons / var / log / syslog.
- Deuxièmement, dans la section [ouvrirSSH] C'est là que vont évidemment les instructions pour ouvrir SSH, nous avons d'abord la séquence de ports (la combinaison secrète) qui est configurée par défaut (port 7000, port 8000 et enfin port 9000). Evidemment les ports peuvent être modifiés (en fait je le recommande) car ils ne doivent pas forcément être 3, ils peuvent être plus ou moins, cela dépend de vous.
- Troisième, seq_timeout = 5 signifie le temps d'attente pour que la combinaison de ports secrets ait lieu. Par défaut, il est réglé sur 5 secondes, cela signifie qu'une fois que nous commençons à effectuer le cliquetis de port (c'est-à-dire lorsque nous telnet au port 7000) nous avons un maximum de 5 secondes pour terminer la séquence correcte, si 5 secondes passent et que nous n'avons pas terminé port frappant alors ce sera simplement comme si la séquence était invalide.
- Quatrième, commander cela n'a pas besoin de beaucoup d'explications. Ce sera simplement la commande que le serveur exécutera lorsqu'il détectera la combinaison définie ci-dessus. La commande qui est définie par défaut ce qu'elle fait est d'ouvrir le port 22 (changer ce port pour votre port SSH) uniquement à l'adresse IP qui a fait la bonne combinaison de ports.
- Cinquième, tcpflags = syn Avec cette ligne, nous spécifions le type de paquets que le serveur reconnaîtra comme valides pour le port de frappe.

Ensuite, il y a la section pour fermer le SSH, que la configuration par défaut n'est rien de plus que la même séquence de ports ci-dessus mais dans l'ordre inverse.

Voici une configuration avec quelques modifications:

 Comment démarrer le démon knockd?

Pour le démarrer, nous devons d'abord modifier (en tant que root) le fichier / etc / default / knockd:

nano /etc/default/knockd

Là, nous changeons la ligne numéro 12 qui dit: «START_KNOCKD = 0»Et changer ce 0 en 1, on aurait:«START_KNOCKD = 1«

Une fois que cela est fait maintenant, nous le démarrons simplement:

service knockd start

Et voila, il est configuré et fonctionne.

Port Knocking avec knockd en marche!

Comme vous pouvez le voir dans la configuration précédente, si un coup de port est effectué sur le port 1000, puis sur 2000 et enfin sur 3000 puis le port 2222 (mon SSH) s'ouvrira, eh bien ici un autre ordinateur exécutant un coup de port:

Une fois que j'appuie sur [Entrée] sur Knock n ° 1, sur n ° 2 et enfin sur n ° 3, le port s'ouvrira, voici le journal:

Comme vous pouvez le voir, en frappant le port 1000, l'étape 1 a été enregistrée, puis à 2000, ce sera l'étape 2 et enfin à 3 avec 3000, en faisant cela, la commande que j'ai déclarée dans le .conf est exécutée et c'est tout. .

Ensuite pour fermer le port il ne s'agirait que de frapper 9000, 8000 et enfin 7000, voici le log:

Et bien ici l'explication de l'utilisation se termine 😀

Comme vous pouvez le voir, Port Knocking est vraiment intéressant et utile, car bien que nous ne voulions pas simplement ouvrir un port après une certaine combinaison de ports, la commande ou l'ordre que le serveur exécutera peut varier, c'est-à-dire ... au lieu d'ouvrir un port, nous pouvons déclarer tuer un processus, arrêter un service comme apache ou mysql, etc ... la limite est votre imagination.

Le cliquetis de port ne fonctionne que lorsque vous avez un serveur physique ou lorsque le serveur virtuel est de la technologie KVM. Si votre VPS (serveur virtuel) est OpenVZ, alors Port Knocking, je ne pense pas que cela fonctionne pour vous car vous ne pouvez pas manipuler directement iptables

Eh bien et pour l'instant l'article ... Je ne suis pas de loin un expert en la matière mais je voulais partager avec vous ce processus intéressant.

Salutations 😀


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   erunamoJAZZ dit

    Excellent article, c'est assez intéressant et je ne savais pas qu'il existait ... ce serait génial si vous continuez à publier des articles pour les administrateurs système débutants et que 😀

    Salutations et merci ^ _ ^

    1.    KZKG ^ Gaara dit

      Merci pour le commentaire.
      Oui ... c'est qu'avec les articles sur le DNS de FICO, je ne veux pas être laissé pour compte LOL !!!

      Rien de sérieux. Il y a plusieurs mois, j'ai entendu quelque chose à propos de Port Knocking et cela a immédiatement attiré mon attention, mais comme je pensais que cela allait être très complexe à l'époque, je n'ai pas décidé de m'y mettre, hier encore en passant en revue certains paquets du repo que j'ai découvert et j'ai décidé de l'essayer, et voici le tutoriel.

      J'ai toujours aimé mettre des articles techniques, certains peuvent ne pas être assez intéressants mais… j'espère que d'autres le sont 😉

      salutations

    2.    Mario dit

      Bonjour, je sais que cet article existe depuis un certain temps mais je lance ma requête pour voir si quelqu'un peut le résoudre pour moi.
      Le fait est que j'ai implémenté le port cognant sur ma framboise pour essayer d'améliorer la sécurité lorsque je me connecte depuis l'extérieur du réseau local. Pour que cela fonctionne, j'ai dû ouvrir la plage de ports sur le routeur 7000-9990 en direction de la machine. Est-il sûr d'ouvrir ces ports sur le routeur ou, au contraire, en essayant d'avoir plus de sécurité, est-ce que je fais le contraire?

      Salutations et merci.

  2.   déjà dit

    Super, je suis administrateur système depuis des années et je ne le connaissais pas.
    Une question ... comment faites-vous les "coups"?
    Avez-vous telnet contre ces ports? Que vous répond telnet? Ou y a-t-il une commande de vague "frapper"?
    Super cool est l'article. Spectaculaire. Merci beaucoup

    1.    KZKG ^ Gaara dit

      J'ai fait le test avec telnet et tout a fonctionné à merveille ... mais, curieusement, il y a une commande 'knock', faites un l'homme frappe pour que vous puissiez voir 😉

      Le telnet ne me répond pas vraiment du tout, iptables avec la politique DROP ne le fait pas du tout répondre et le telnet reste là en attendant une réponse (qui n'arrivera jamais), mais le démon knockd reconnaîtra le coup même si personne ne répond 😀

      Merci beaucoup pour ton commentaire, c'est un plaisir de savoir que mes articles aiment toujours ^ _ ^

  3.   st0rmt4il dit

    Ajouté aux favoris! : RÉ!

    Merci!

    1.    KZKG ^ Gaara dit

      Merci

  4.   chasseur dit

    Ahh sécurité, cette sensation agréable de sécuriser le PC pour l'aplomb, puis des jours / semaines plus tard en essayant de se connecter à partir d'un endroit distant auquel nous ne pouvons pas accéder car le pare-feu est en mode "personne pour personne", cela s'appelle rester à l'extérieur du château en termes d'administrateurs système. 😉

    C'est pourquoi cet article est si utile, avec knockd, vous pouvez accéder de n'importe où qui peut envoyer un paquet à votre réseau local, et les attaquants perdent leur intérêt lorsqu'ils voient que le port ssh est fermé, je ne pense pas qu'ils frapperont force brute pour ouvrir le port.

  5.   Manuel dit

    Hé, l'article est génial.

    Une chose: sert-il à se connecter depuis l'extérieur du réseau local?

    Je dis cela parce que j'ai le routeur avec les ports fermés moins celui qui correspond au ssh qui est redirigé vers le serveur.

    J'imagine que pour que cela fonctionne de l'extérieur du réseau local, il sera nécessaire d'ouvrir les ports du routeur correspondant à Port Knocking et de les rediriger également vers le serveur.

    Mmm…

    Je ne sais pas dans quelle mesure il est sécuritaire de le faire.

    Qu'en pensez vous?

    1.    KZKG ^ Gaara dit

      Je ne suis pas vraiment sûr, je n'ai pas fait le test mais je pense que oui, vous devriez ouvrir les ports sur le routeur car sinon vous ne pourrez pas frapper le serveur.

      Faites le test sans ouvrir les ports sur le routeur, si cela ne fonctionne pas pour vous c'est dommage, car je suis d'accord avec vous, il n'est pas conseillé d'ouvrir ces ports sur le routeur.

      1.    Manuel dit

        En effet, nous devons ouvrir les ports et les rediriger vers l'ordinateur que nous appelons.

        Pitié.

  6.   rabba08 dit

    Super, merci beaucoup! Je viens de commencer à étudier la carrière de réseautage et ces tutoriels sont parfaits pour moi! merci d'avoir pris le temps de partager les connaissances

    1.    KZKG ^ Gaara dit

      J'ai beaucoup appris au fil des ans avec la communauté Linux mondiale ... depuis quelques années je voulais aussi contribuer, c'est précisément pour cela que j'écris 😀

  7.   janvier981 dit

    Merci beaucoup, vous ne savez pas comment cela m'aide, je suis sur le point de mettre en place un serveur et cela va très bien pour moi.

    salutations

    1.    KZKG ^ Gaara dit

      C'est pour ça que nous sommes, pour aider 😉

  8.   Jean ventura dit

    Excellent article! Je n'avais aucune connaissance de cela et cela m'aide beaucoup (j'utilise RackSpace qui utilise KVM, donc ça me va comme un gant!). Ajouté aux favoris.

    1.    KZKG ^ Gaara dit

      Merci d'avoir commenté 🙂

  9.   Albigeois dit

    Comme toujours DesdeLinux nous apporte d'excellents articles avec des tutoriels vraiment utiles à mettre en œuvre, merci pour le partage !! 🙂

    1.    KZKG ^ Gaara dit

      Merci pour ton commentaire 🙂
      Oui, nous essayons toujours de satisfaire cette soif de savoir que nos lecteurs ont 😀

  10.   Timbleck dit

    Intéressant, ne connaissait pas l'option.
    Allez directement engraisser ma bibliothèque de côtelettes.
    Merci!

    1.    KZKG ^ Gaara dit

      Un plaisir pour moi 😀
      salutations

  11.   Frédéric. A. Valdés Toujague dit

    Salutations KZKG ^ Gaara !!! Vous avez serré. Article formidable pour sécuriser les serveurs. Aucune idée @% * & ^ qu'une telle chose existe. Je vais l'essayer. Je vous remercie

  12.   Collier ^ blanc dit

    c'est bien…. ^ - ^

  13.   LearnLinux dit

    Bonjour, pourriez-vous expliquer comment l'installer dans CentOS 5.x?

    J'ai téléchargé le rpm:
    http://pkgs.repoforge.org/knock/knock-0.5-3.el5.rf.x86_64.rpm

    Installée:
    rpm -i knock-0.5-3.el5.rf.x86_64.rpm

    Configurez le fichier de configuration avec 15 secondes de temps et le port que j'utilise pour me connecter par ssh à mon vps

    Le démon commence:
    / usr / sbin / knockd &

    Je telnet et rien le port ne ferme pas, par défaut le port est ouvert, mais il ne se ferme pas.

    Est-ce que je fais quelque chose de mal?

  14.   Salut dit

    Mmmm, les requêtes telnet à ces ports pourraient être apprises par l'administrateur de notre réseau local, ou par notre fournisseur de services, non? Cela bloquerait les personnes externes mais pas eux, donc s'ils veulent activer notre port, ils pourraient le faire parce que Voir les demandes que nous faisons, mmm disons que ça protège mais pas à 100%

    1.    Roberto dit

      C'est possible, mais je ne pense pas qu'ils vont imaginer que certains telnet exécutent l'action X. À moins qu'ils ne voient que les mêmes modèles telnet sont suivis.

  15.   Pablo Andrés Diaz Aramburo dit

    Article intéressant, j'ai une question. Je pense qu'il y a une erreur dans l'image du fichier de configuration, car si vous analysez bien, dans les deux lignes de la commande, vous utilisez ACCEPT dans Iptables. Je pense que l'un devrait être ACCEPTER et un autre devrait être REJETER.

    Sinon, excellente initiative. Merci beaucoup d'avoir pris le temps d'expliquer vos connaissances aux autres.

    salutations