Nous vous expliquerons comment utiliser Port Knocking sous Linux

Pour commencer, Port Knocking est un moyen de sécuriser un serveur en fermant les ports du pare-feu, même ceux que vous savez être utilisés. Ces ports sont ouverts à la demande si, et seulement si, la demande de connexion fournit le «hit secret».

Vous pouvez apprendre à utiliser les commandes de recherche Linux si vous êtes novice dans ce grand système d’exploitation. De cette façon, vous pouvez savoir tout ce dont vous avez besoin sur le terminal.

Port Knocking est un “succès secret”

Dans les années 1920, lorsque l’interdiction battait son plein, si vous vouliez vous enfoncer dans le speakeasy, vous deviez connaître le «coup secret», se référant au fait de frapper aux portes. Et vous deviez le faire correctement pour pouvoir entrer.

Port Knocking est un équivalent moderne. Si tu veux
les gens ont accès aux services sur votre ordinateur mais vous ne voulez pas
ouvrez votre pare-feu sur l’ensemble de l’internet, vous pouvez utiliser la substitution de port.

Cela vous permet de fermer les ports de votre pare-feu qui
autoriser les connexions entrantes et les ouvrir automatiquement lorsque
effectue un modèle prédéfini de tentatives de connexion. La séquence de
Les tentatives de connexion font office de «coup secret». Un autre coup secret se ferme
le port.

Port Knocking est quelque chose de nouveau de nos jours, mais il est important de savoir qu’il s’agit d’un exemple de sécurité dans l’obscurité et que ce concept est fondamentalement défectueux. Le secret de l’accès à un système est sécurisé car seuls les membres d’un groupe spécifique le connaissent.

Port Knocking peut être peu sûr

Mais une fois que ce secret est révélé, que ce soit parce que
révèle, est observé, deviné ou est résolu, sa sécurité est nulle. C’est mieux
pour protéger votre serveur par d’autres moyens plus forts, comme demander des démarrages
session basée sur des clés pour un serveur SSH.

Les approches les plus robustes de la cybersécurité sont
plusieurs couches, donc peut-être que Port Knocking devrait être l’un de ceux
couches. Plus il y a de couches, mieux c’est, bien sûr. Cependant, on pourrait dire que
«frapper à la porte» des ports n’ajoute pas beaucoup de sécurité, si
il y a une certaine sécurité, à un système sûr et correctement renforcé.

Pour cette raison, la cybersécurité est un vaste sujet et
compliqué, mais vous ne devez pas utiliser Port Knocking comme seul moyen
défense.

Installez le knockd

Pour vous donner un exemple de blocage de port, vous utiliserez ce guide pour contrôler le port 22, qui est le port SSH. Pour ce faire, vous utiliserez un outil appelé knockd.

Vous devez utiliser apt-get pour installer ce paquet sur votre système si vous utilisez Ubuntu ou une autre distribution basée sur Debian. Sur les autres distributions Linux, utilisez l’outil de gestion de packages par défaut. Vous devez maintenant écrire ce qui suit:

sudo apt-get install knockd

Vous avez probablement déjà installé le pare-feu iptables sur
votre système, mais vous devrez peut-être installer le package persistant de
iptables. Gérez le chargement automatique des règles iptables enregistrées dans votre
distribution et vous n’aurez donc aucun problème. Vous pouvez l’installer comme suit
façon:

sudo apt-get install iptables-persistent

Lorsque l’écran de configuration IPV4 apparaît,
Appuyez sur la barre d’espace pour accepter l’option “Oui”. Maintenant
vous devez appuyer à nouveau sur la barre d’espace dans l’écran de configuration
IPv6 pour accepter l’option “Oui” et continuer. Le suivant
commande indique à iptables de permettre aux connexions établies de continuer
et en cours.

Vous devez maintenant saisir une autre commande pour fermer le port SSH.
Si quelqu’un est connecté via SSH lorsque vous tapez cette commande, vous ne voulez pas
être coupé:

sudo iptables -A INPUT -m conntrack –ctstate
ÉTABLIE ET ​​ASSOCIÉE -j ACCEPTER

Cette commande ajoute une règle au pare-feu qui se lit comme suit:

-A – Ajoute la règle à la table de règles de pare-feu. C’est-à-dire,
ajoutez-le à la fin.

ENTRÉE: Il s’agit d’une règle concernant les connexions entrantes.

-m conntrack: les règles de pare-feu agissent sur le trafic
réseau, qui sont les paquets qui correspondent aux critères de la règle. Le paramètre
-m oblige iptables à utiliser des modules de correspondance de paquets supplémentaires. Dans
Dans ce cas, le soi-disant conntrack fonctionne avec les capacités de suivi de
connexion au réseau central.

–Ctstate ESTABLISHED, RELATED: spécifiez le type de connexion
auquel la règle s’appliquera, à savoir les connexions ÉTABLIES et ASSOCIÉES.
Une connexion établie est déjà en cours. Une connexion
lié est celui qui est effectué en raison d’une action d’une connexion
établie. Peut-être que quelqu’un qui est en ligne veut télécharger un fichier,
Cela peut se produire via une nouvelle connexion initiée par l’hôte.

-j ACCEPTER: si le trafic correspond à la règle, il saute vers la cible
OK sur le pare-feu. En d’autres termes, le trafic est accepté et autorisé
passer par le pare-feu. Vous pouvez maintenant écrire une commande pour fermer le
port:

sudo iptables -A INPUT -p tcp –dport 22 -j REJECT

Cette commande ajoute une règle au pare-feu qui dit:

-A: ajoutez la règle à la table des règles de pare-feu,
disons, ajoutez-le à la fin.

ENTRÉE: Cette règle concerne les connexions entrantes.

-p tcp: cette règle s’applique au trafic qui utilise le
Protocole de contrôle de transmission (TCP).

-dport 22: cette règle s’applique spécifiquement au trafic
TCP va au port 22, qui est le port SSH.

-j REJET: si le trafic correspond à la règle, passez à la cible
REJETER sur le pare-feu De cette façon, si le trafic est rejeté, il n’est pas autorisé
aucune connexion via le pare-feu.

Nous devons démarrer le démon persistant de netfilter. Vous pouvez
faites-le facilement avec cette commande:

sudo systemctl start netfilter-persistent

Vous devez faire en sorte que persistant netfilter passe par un cycle
enregistrer et recharger, afin qu’il charge et contrôle les règles iptable. À
Vous devez écrire les commandes suivantes:

sudo netfilter-persistent save

rechargement persistant de sudo netfilter

Vous avez maintenant installé les utilitaires et le port SSH est
fermé. Avec un peu de chance, sans rejeter ou couper la connexion d’un autre utilisateur. Maintenant
Il est temps de configurer le “coup secret”.

Port Knocking: vous devez configurer l’utilitaire knockd

Il y a deux fichiers que vous devez modifier pour configurer knockd. Le
le premier est le fichier de configuration knockd ci-dessous:

sudo gedit /etc/knockd.conf

L’éditeur gedit s’ouvre avec le fichier de configuration
knockd chargé. Vous devez éditer ce fichier pour l’adapter à vos besoins. Le
Les sections qui vous intéressent sont “openSSH” et “closeSSH”. Le
Les quatre entrées suivantes se trouvent dans chaque section:

séquence: la séquence de ports que quelqu’un doit
entrez pour ouvrir ou fermer le port 22. Les ports par défaut sont
7000, 8000 et 9000 pour l’ouvrir. Et 9000, 8000 et 7000 pour le fermer. Tu peux
les modifier ou ajouter plus de ports à la liste. Aux fins du présent
Par exemple, vous allez assister aux valeurs par défaut du fichier.

seq_timeout: est la période de temps au cours de laquelle quelqu’un
vous devez accéder aux ports pour activer leur ouverture ou leur fermeture.

commande: la commande est-elle envoyée au pare-feu iptables
lorsque l’action d’ouverture ou de fermeture est activée. Ces commandes ajoutent une règle
au pare-feu pour ouvrir le port ou le supprimer pour fermer le port.

tcpflags – C’est le type de paquet que chaque port doit
recevoir dans la séquence secrète. Un paquet SYN (sync) est le premier à
une demande de connexion TCP, appelée «message d’accueil à trois».

La section “openSSH” peut être lue comme “se
vous devez faire une demande de connexion TCP aux ports 7000, 8000 et 9000, sur
cet ordre et en 5 secondes, de sorte que la commande pour ouvrir le port 22 est
envoyer au pare-feu ».

La section “closeSSH” peut être lue comme “se
vous devez faire une demande de connexion TCP aux ports 9000, 8000 et 7000, sur
cet ordre et en 5 secondes, afin que la commande de fermeture du port 22 soit envoyée
au pare-feu ».

Jetez un œil aux règles du pare-feu

Les entrées “commande” dans les sections openSSH
et closeSSH restent les mêmes, à l’exception d’un paramètre. Voilà comment ils sont
composés:

-A: entrez la règle à la fin de la liste des règles du
pare-feu pour la commande openSSH.

-D: supprime la commande de la liste des règles de pare-feu
pour la commande closeSSH.

ENTRÉE: Cette règle fait référence au trafic entrant provenant du réseau.

-s% IP%: l’adresse IP du périphérique demandant un
connexion.

-p: protocole réseau; dans ce cas, c’est le protocole TCP.

–Dport: le port de destination; dans cet exemple que nous vous avons donné,
est le port 22.

-j ACCEPTER: accéder à la cible d’acceptation dans le pare-feu.
En d’autres termes, laissez le paquet passer par le reste des règles sans
agir en conséquence.

Port Knocking: modifications du fichier de configuration knockd

Vous allez d’abord étendre le “seq_timeout” à 15
secondes. C’est un temps lâche, mais si quelqu’un tire manuellement sur le
les demandes de connexion, cela peut prendre un peu plus de temps.

Dans la section “openSSH”, modifiez l’option -A
(ajouter) à -I (insérer). Cette commande insère une nouvelle règle de pare-feu dans
en haut de la liste des règles de pare-feu. Si vous laissez l’option -A,
ajoutez la liste des règles de pare-feu et mettez-la en bas.

Le trafic entrant est testé avec chaque règle de pare-feu dans
la liste de haut en bas. Vous avez déjà une règle qui ferme le port 22.
Donc, si le trafic entrant est testé par rapport à cette règle avant de voir le
règle autorisant le trafic, la connexion est rejetée. Maintenant, si le trafic voit
cette nouvelle règle d’abord, la connexion est autorisée.

La commande Fermer supprime la règle ajoutée par openSSH
des règles de pare-feu. Le trafic SSH est à nouveau géré par la règle
préexistant “port 22 est fermé”. Après avoir joué
ces modifications, vous devez enregistrer le fichier de configuration et c’est tout.