Boîte des astuces: Accès discret à l'ordinateur avec knockd
Le problème avec des ports ouverts
Il est le même problème: Quand vous ouvrez un chemin d'accès quelque part pour
accéder la destination en question, vous allez ouvrir une porte d'entrée pour
des malfaiteurs, parce que chaque chose qu'on peut utiliser, peut
malheureusement être abusée aussi. Il est donc nécessaire de sanctuariser ces
points d'accès pour rendre tout abus plus difficile.
Ces protections sont normalement établies par des différents procédés de login
qu'accordent l'accès aux personnes autorisées et aussi sanctuarisent la
connexion contre l'écoute. Mais ces protections d'accès sont constamment
attaquées des plusieurs directions et il n'est qu'une question de temps quand
un attaquant a du succès. Il est donc nécessaire à sanctuariser les portes
soi-mêmes contre des connexions non autorisées.
Lorsque vous avez implémenté des
mesures particulières dans le
pare-feu, vous avez déjà rendu plus difficile pour des attaquants à faire
des bêtises – mais les ports en question sont en général encore publiquement
accessible.
Fermé – et enfermé dehors...
Il est plus facile à dire qu'à faire lorsqu'on veut fermer des ports. Il serait
comparativement très facile à faire lorsqu'on connecterait d'une seule adresse
IP à un ordinateur, mais il n'est pas le cas dans la plupart de temps. Il est
plutôt la norme qu'on connecte à l'Internet par un des nombreux FAIs et
lorsqu'on n'a pas une ligne dédiée, une nouvelle adresse IP est assigné à vous
à toute nouvelle connexion si bien qu'il faut débloquer un entier segment de
réseau assigné au FAI en question, parce qu'on pourrait connecter de n'importe
quelle adresse IP contenue là-dedans.
La situation devient plus mauvaise lorsqu'il faut connecter par des différents
FAIs à des endroits différents, parce qu'il faut débloquer plusieurs segments
de réseau, soit au moins un nouveau segment pour tout FAI – que va
potentialiser le problème.
Il y est encore possible à lancer des attaques de chaque adresse débloquée
comme cela qu'on ne peut pas bloquer. En théorie il faudrait complètement
bloquer le port pour enfermer touts attaquants dehors – mais ça va aussi
enfermer vous dehors et vous n'avez rien gagné.
Veuillez frapper et entrer!
Pour éviter ce problème il faut un mécanisme qui commande le pare-feu à ouvrir
un passage pour que vous obteniez l'accès même si les autres sont enfermés
dehors. Touts attaquants qui veulent forcer d'accès par force du poignet
rebondent sur le pare-feu, mais quelqu'un qui est assez poli de frapper en un
premier temps va gagner l'accès.
On peut donc généralement bloquer des passages, mais d'abord on a concilié un
signal secret que fait le pare-feu ouvrir un passage pour votre point d'origine
pour que vous puissiez connecter. C'est exactement ce signal que
knockd attendra.
La meilleure part de ceci: Pour que knockd
fonctionne il n'est pas du tout nécessaire à ouvrir des ports auxquels il faut
frapper. knockd perçoit des éventuelles activités
à la couche sous le
pare-feu et donc peut réagir même si le pare-feu est fermé!
Préparations
A l'avance il faut installer le logiciel nécessaire pour que le serveur puisse réagir à vous frapper.
- Connectez-vous à votre serveur comme root.
- Démarrez YaST.
- Lancez le module Installer et supprimer des logiciels.
- Donnez le terme knockd dans le champs de recherche et appuyez sur Entrée.
- Sélectionnez le paquet présenté knockd.
- Cliquez sur Ok.
YaST va installer le paquet choisi, et s'il a fini vous pouvez configurer votre gardien d'accès. Ensuite il faut mettre une faculté pour transmettre le signal concilié au serveur à votre disposition sur votre propre ordinateur. Il y faut installer un particulier logiciel là que va vous décharger de ce travail:
- Connectez-vous comme root.
- Démarrez YaST.
- Lancez le module Installer et supprimer des logiciels.
- Donnez le terme knock dans le champs de recherche et appuyez sur Entrée.
- Sélectionnez le paquet knock.
- Cliquez sur Ok.
Ça va installer le pendant de konckd sur votre ordinateur local que permet vous à transmettre le signal concilié à votre serveur.
en hautLa configuration
- Changez (comme root) au répertoire /etc.
- Chargez le fichier knockd.conf dans votre éditeur.
- Travaillez ce fichier appropriément.
Vous pouvez facilement signaler knockd les signals auxquels il doit attendre et comment il faut réagier ensuite. Il y sont quelques ajustages nécessaire.
Veuillez observer d'accorder les valeurs données à la réalité de votre serveur
si nécessaire. Échangez p. ex. le marqueur de l'interface réseau contre lequel
qui spécifie la carte réseau pointé vers l'Internet. Il faut aussi modifier les
ports nécessaires pour frapper et les ajuster en accord de votre conception
(des autres et plus des ports auxquels il faut frapper pour ouvrir le port en
question).
N'utilisez jamais en outre des ports déjà assignés pour éviter confondre
knockd et toujours spécifiez des différents
séquences de ports pour ouvrir et fermer aussi bien que des différents ports
pour éviter des collisions ou des effets secondaires indésirables.
Cas 1: Des différents séquences de ports pour ouvrir et fermer des ports
Cas 2: Une séquence de ports pour ouvrir, temps de débouclement pour fermer des ports
Le point commun des deux cas est que knockd veille
à l'activité sur des ports entièrement arbitraires et effectue une commande au
pare-feu si nécessaire que va ouvrir le port désiré. La méthode de l'action
est la seule différence.
Dans le premier cas il est par exemple nécessaire à donner la séquence de ports
5000, 6000 et 7000 – exactement en cet ordre – pour ouvrir le port 22 (Secure
Shell). L'activation d'iptables est formée à une
façon que permet l'accès seulement pour l'adresse IP dont le signal en frappant
aux ports s'origine bien qu'il est encore fermé pour chaque autre adresse.
Mais dans cet exemple il est encore nécessaire de donner la séquence 7500, 6500
et 5500 après finir ses travails pour fermer le port 22. Mais le hic, c'est
qu'il oublie la fermeture quelqu'un qui obient la même adresse IP a posterioir
pourrait découvrir le port 22 qu'est encore ouvert pour cette adresse IP et,
posé d'assez de malveillance, pourrait lancer une attaque.
Mais la deuxième variante est tout trouvée pour rémedier à ce problème. Comme
dans le cas 1 il faut seulement frapper la séquence de 5000, 6000 et 7000 –
mais il faut faire attention à quel protocole est nécessaire (dans cet exemple
ils sont le port UDP 5000, le port TCP 6000 et au fin le port UDP 7000) – pour
ouvrir le port 22. Dans cet exemple le port est ouvert pour 20 secondes avant
qu'il soit automatiquement fermé encore une fois par
knockd. Il est possible de connecter à son système
pendant cette fenêtre de lancement, et même si le port est fermé au terme de
ce temps de portillonage, des séances déjà ouvertes ne seront pas touchées.
Pour déclencher le signal vous simplement lancez le logiciel
knock sur votre ordinateur local et donnez la
séquence des ports demandée. Dans le premier exemple le lancement sera
knock <serveur> 5000 6000 7000.
Lorsque vous avez donné cette commande, vous pouvez connecter à votre serveur
et travailler là normalement. Mais n'oubliez pas de fermer le port avec
knock <serveur> 7500 6500 5500!
Dans le deuxième exemple il est seulement nécessaire de donner la séquence pour
ouvrir le port (soit 5000:udp, 6000:tcp et 7000:udp); au terme du temps de
portillonage il est automatiquement fermé, donc on ne peut pas oublier par
mégarde de le fermer.
Lorsque vous voulez rendre ce fait plus facile, vous pouvez définir un alias
que lance knock avec des ports conciliés. Il est
recommandé pour des numéros arbitraires du port ou des séquences plus long
comme on pourrait le confondre facilement.
Il faut donner touts ports dans la fenêtre de lancement pour qu'ils soient acceptés, comme la séquence commencée sera rejetée autrement et il faut le commencer encore une fois. Il faut donc choisir une fenêtre de lancement assez longue pour qu'on puisse frapper à touts ports même si la charge sur le réseau est haussée, mais encore assez courte pour que des essais de contact par hasard ne soient pas reconnus comme une séquence valide et donc ouvrent le port protége. A l'usage dix secondes s'ont montré comme suffisant. Il le faut changer seulement en cas d'une voie de transmission très chargée ou brouillée.
A la fin il faut seulement activer knockd. Simplement lancez les deux commandes systemctl enable knckd.service et systemctl start knockd.service. Ce faisant knockd est lancé immédiatement et en plus il est placé dans la séquence de démarrage, donc il est lancé automatiquement toute fois quand le serveur est redémarré.
en hautContrecarrer des poses d'écoutes
Pour les enièrement paranoïdes et ceux qui sont concernés par un nombre écrasant d'attaques il y a une variante que prennent des poses d'écoutes à contre-pied. Même si quelconque attaquant essayerait découvrir la séquence de ports par enregistrer le train de données, il lui ne vaut rien, parce qu'il faut donnner une séquence entièrement différente la prochaine fois. Il y est donc nécessaire d'enregistrer les séquences de portss dans un fichier qu'il faut présenter au knockd et dont le logiciel peut obtenir l'actuelle séquence. Il est désirable que ce fichier est sauvegardé sur l'ordinateur local ou est disponible comme une version imprimée pour qu'il ne faille pas deviner ce qu'il faut entrer...
Cas 3: Liste des séquences des ports à utiliser une seule fois, temps de débouclement pour fermer des ports
Contrasté avec les deux premiers exemples qui permettent obtenir des séquences
des ports pour ouvrir et si nécessaire pour fermer le port par des poses
d'écoutes, il n'est plus possible du tout dans ce cas lorsqu'on définissait des
séquences des ports suffisamment disjointes que spécifient des ports
apparemment totalement définis par hasard (soient des discontinuités avec des
entièrement différentes directions et distances pour qu'un attaquant ne puisse
pas déduire des séquences encore disponibles, p. ex. par changer le port de
départ et appliquer les mêmes discontinuités).
Ceci est la méthode la plus sécure, mais aussi la plus sophistiqué, pour
enfermer des attaquants dehors. Dépendant sur la condition de menace il serait
recommandable de configurer knockd en accord de
cette façon.
S'enfermé dehors – et maintenant?
On peut bien sûr encourir ce malheur à terme lorsqu'on mise sur des listes
noires pour rendre la vie plus difficile pour des éventuels attaquants. On va
souhaiter qu'on etablît une autre voie pour gagner l'accès au serveur au plus
tard si on se colle à ses propres mesures de défense.
Lorsqu'on ne veut pas établir un tunnel IPsec que serve comme une rocade pour
se connecter par Telnet au serveur si nécessaire, on pourrait mésuser
knockd créativement pour établir une exception en
cas de besoin pour se connecter même si on a s'enfermé dehors. Il y est
nécessaire d'établir une autre chaîne outre des chaînes de règles décrits
au sujet pare-feu dans
laquelle knockd peut mettre ses exceptions. Le bloc
devrait apparaître comme suivant (en cas de besoin vous pouvez échanger les
appels de SSH_KNOCKD et
SSH_BAN si vous voulez donner précédence à la
liste noire):
Modifier exemple 2 en accord de ces modifications, on obtient cette configuration pour knockd.
On peut encore se connecter normalement comme ça, mais si on se colle à ses propres mesures de sécurité contre toute attente, on peut tout même gagner l'accès au serveur par frapper aux ports – bien que des personnes qui ne savent pas la séquence de ports sont encore et toujours enfermés dehors.
en haut