URL: https://linuxfr.org/users/khalahan/journaux/port-ferm%C3%A9-mais-accessible Title: Port fermé, mais accessible Authors: khalahan Date: 2004年05月29日T23:02:14+02:00 Tags: Score: 0 Vu que je n'arrivais pas à dormir à cause du chatton avant hier soir ([http://khalahan.hd.free.fr/photos(...)](http://khalahan.hd.free.fr/photos) pour ceux que ca interessent :p), j'ai cogité sur un outil qui pourrait être pratique pour sécuriser encore plus un ordinateur. Le but est d'ouvrir un port (pour un serveur FTP par exemple) seulement quand une personne en a besoin, à l'aide d'un code composé de par exemple 3 nombres allant de 1 à 65535 (ce qui correspond à des numéros de ports). Cette méthode s'applique uniquement pour des serveurs non publics, réservés à une liste de personnes définie, qui connaitrait la combinaison. Prenons un exemple concret : Le firewall, par défaut, bloque le port 21 sur lequel tourne le serveur FTP, ce qui empêche toute tentative de piratage, liée à une faille quelconque ou aux technique de "brut force" (essai de mots de passe au hasard). M. X, avec son ip 100.200.100.200 (au hasard) veut se connecter sur le serveur FTP de MrLinux qui a l'ip 200.100.200.100 (idem). Le port 21 étant fermé, il va avoir besoin de faire le code secret qui est de 3245, 4871 et 56 (au hasard aussi). M. X devra donc faire une tentative de connexion TCP (ou n'importe quoi d'autre que l'on décide, un ping, un paquet UDP, etc) sur le port 3245 puis 4871 puis 56. Le serveur va ensuite ouvrir le port 21, uniquement pour cette IP. Sous Linux, la configuration du firewall "iptables" permet de différencier une demande nouvelle connexion d'une connexion déjà établie. Cette particularité d'un bon firewall nous permet par exemple d'autoriser pendant 5mn une nouvelle connexion sur le port 21 venant de l'ip de M. X. Au bout des 5mn, M. X ne pourra plus se connecter au port 21 sans refaire la combinaison, mais pourra cependant continuer sa session FTP en cours sans aucun problème. De cette façon, le port 21 est de nouveau complêtement fermé. C'est utile dans le cas ou M. X, qui est sur le même réseau, et qui a donc la même IP n'aura pas besoin de faire la combinaison car le port est déjà ouvert ... Les délais peuvent être très réduit pour être encore plus "sécure". Il y 2 façons de mettre cela en oeuvre sur le serveur : - soit le port correspondant au premier code, à savoir 3245 dans cette exemple est déjà ouvert et lorsque que M. X se connecte dessus cela ouvre le port suivant (4871) ce qui ouvre ensuite le dernier port (56) pour enfin ouvrir le port 21 pour l'ip de M. X. Cette technique a le désavantage de laisser des ports ouverts, et peut être contournée en scannant les ports ouverts un par un, ce qui nécessiterait une protection en plus pour éviter les scans de ports intempsetifs. - soit tous les ports sont fermés (paquets rejetés), et le programme s'occupe de regarder le fichier de log (la configuration d'iptables pour loguer les ip + ports est très facile). Si le programme detecte que l'IP de M. X essaie de se connecter successivement sur les 3 ports correspondant aux combinaisons, le port 21 est ouvert aux nouvelles connexions pour cette IP pour x minutes (ou x secondes). Cette solution est beaucoup plus sécurisée, mais nécessite de loguer toutes les tentatives d'accès. Une autre option pour que ca soit encore plus sécurisé serait de faire varier la combinaison de ports, pour rendre plus sécurisé l'accès, et en particulier pour la 1ère implémentation qui laisse des ports ouverts. Les ports peuvent varier selon les variables suivantes : - jour de la semaine - jour du mois - mois - année (2 ou 4 chiffres) - ip du serveur (4 nombres différents) - ip du client (idem) - heure - minutes Par exemple : 1er code = Heure * 4 2eme code = Année_4_chiffres * 10 3eme code = 4eme nombre de l'ip du client (200) * 13 + 5 Qu'en pensez-vous ? connaissez-vous des programmes qui font des choses similaires ?

AltStyle によって変換されたページ (->オリジナル) /