___ ___ ____ ___ __ _______ __ __ ______ | | | | | ; | | | |___ | |___ | | | .------. | | .- ---' , '-----'------'-----'--- ----'------- - -- - - - - ' _|________|__ ¦ | mkd.06 Heille fait la file comme tout le monde : aka 'ta gueule minable, j'connais l'portier' ' _ ___ __ ____ : | | '-----.------- .-----.------.-----| |----- - ------- - - - ---- - - - ____| |____ |______| ____| |____ | | | | |___ _ ________ ___|___ ____|_________ _______ | Nombreuse sont les ocasions ou un hacker, ou voire meme peu etre vous, doit accedez sont reseau a distance. Pour ce faire de nombreuse technologie existe afin de faciliter la tache, en partant du classic sshd ouvrant les entrailles de votre linux ou de votre cygwin au monde exterieur, au client graphique telle que VNC, Windows remote desktop ou encore cytrix metaframe pour les plus hardcore dentre vous. Par contre, cest programme si merveilleux soit-il ouvre une porte de plus su votre ordi. Une porte souvent solide, mais parfois tout de meme enfoncable. Qui ne coure pas le risque doublier de faire un update de securiter un soir ou 10 suedoise soffre a vous ? Et puis, pour quel raison c'est service devrais t'il etre ouvert a tous 24h/24? Il n'y a effectivement aucune raison pour laquel un service du genre devrait etre ouvert sur votre machine alors meme que vous travaillez en local dessus. plusieur solution soffre a vous. 1) la methode hardi bucherons il sagit de fermer soit meme les serveurs de nos application et de les reouvrir lorsquon croit que l'on risque de peu etre en avoir pour une raison quelqu'onque besoin. Cette solution n'est pas tres efficace, puisque tot ou tard, les statistiques et murphy sont la pour le dire, vous aurrez besoin d'un service qui n'est pas lancer. 2) La methode, jmen calisse, jreste a Quebec Solution la plus simple, misee sur les statistiques, en vous basant que votre box est un ip nowhere dans l'ocean Internet. que personne care vraiment a vous hacker anyway, Et que si ca arrive, ben Life, ques-tu veux ?.... Si par contre vous desirez une vrai solution, Il est temps de penser au Port Knocking. Comme la plus par des solutions possiblement envisagable pour un probleme donner, il y a 2 facon darriver a notre fin, la facon compliquer et la facon simple. La methode decrite dans cette article s'inscrit dans la philosophie "des solutions cheap pour les moyens du bord". et peu etre appliquer par nimporte qui qui possede des talents moderer en programation et dans l'utilisation dun systeme linux. bref the average joe sur un channel de hack et peu etre meme vous. La theorie sur le port knocking est tres simple, il sagit meme d'une idee vieille comme le monde, celle de fraper avant dentrer, plus particulierement dans le cas present, de fraper d'une facon predeterminer a la porte afin que celle ci reconnaissant l'intru le laisse entrer, et seulement lui. En langage simple, un socket en mode listening qui attend un code particulier (qui peu etre une serie de connection TCP et/ou UDP a different port dans un ordre different), ou encore une connection simple TCP ou UDP etablie selon un protocole unique et particulier. Le reste de la job se voulant de modifier le firewall afin de laisser penetrer l'intru (sont ip) a une serie de port predeterminer ou determinable (si supporter par le protocole du port knocker). Encore une foi il existe une facon complexe et une facon simple d'y arriver, et evidament nous etudirons la facon simple. celle de modifier les regles de iptables grace a un system call utilisant la commande iptables suivit d'un set d'instruction qui permettra d'effectuer les modifications souhaiter au firewall. c'est bien beau tout ca, mais voir concretement comment fonctionne un vrai port knocker qui, ca pourrais etre interressant,(et peu etre meme pratique). Et bien comme si vous ne vous y en attendiez pas c'est ce que vous offre cette article, un vrai port knocker detailler et expliquer. Vous aurez besoin pour l'utiliser des items lister si dessous. Pre-requis php linux iptables un support reseau TCP/IP based Tout ca semble bien complique mais en une vingtaine de lignes php ont peu parvenir a construire un port knocker tres simplet. Evidament pour rendre un code aussi petit on doit couper dans les procedures de verification. mais comme ici on naccepte que une seul entrer, et que toute les modification sont deja hardcoder (bref on est sur de squi va se passer), elles ne sont pas necessaire, evidament les fonctionnaliter de se code sont bien minime. mais un coup que l'on a access a ssh, on peu faire ce qu'on veut. well, ne vous inquietez pas je ne me defile pas tout de suite, vous aurrez plus loin une version plus pragmatique de se code. comme vous voyez, il est relativement facile de faire un portknocker de base a partir du code d'un hello world standard au niveau des sockets. puisque dans cette example, un socket est mi en ecoute d'une clef, (hello dans a l'occurence), lorsque cette clef lui est passer, elle ne fait que repondre le ip du demandant et ajute le firewall en concequence. voyons comment cela fonctionne en vrai. Bon tout le test cest effectuer en local, mais ca ne change rien dutout aux resultats obtenu qui demontre un parfais fonctionnement du software. [root@localhost wyzeman]# /sbin/iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- anywhere 192.168.1.230 tcp dpt:ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination [root@localhost wyzeman]# telnet 192.168.1.230 9999 Trying 192.168.1.230... Connected to 192.168.1.230 (192.168.1.230). Escape character is '^]'. hello 192.168.1.230^] telnet> quit Connection closed. [root@localhost wyzeman]# /sbin/iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- anywhere 192.168.1.230 tcp dpt:ssh ACCEPT tcp -- 192.168.1.1 192.168.1.230 tcp dpt:ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination Bien sympatique n'est-ce pas, mais on aimerais mieu utiliser la technique de la serie de port que du mots de passe cucu, (apres tout, cest presque plus dur a sniffer). Et aussi ya un truc qui suck dans se soft la, le firewall reste fermer ad vitam eternam c'est plutot sucky. Le code qui suit contien les modifications requise, pour ouvrir le port ssh dans iptables, on doit se connecter successivement sur les port 9999 6666 et 3333 de notre serveur et envoyer un point (.) suivie d'un enter sur chaque, pour refermer le firewall il suffit de refaire le meme truc. evidament se connecter 3x de suite sur des ports differents pour faire .enter ce n'est pas tres amusant, c'est pourquoi la majoriter des gens qui utilise un portknocker de se type le font en conjonction avec un programme client qui produit l'algorythme desirer. Pour le client rien de bien compliquer n'est requis, il ne fait apres tout que automatiser une seul tache simple. Pour cette article nous arreterons ici. l'essentiel aura ete dit. Pour ce qui est du port knocker. Jajouterais quelque fonction pour le rendre dynamique ainsi qu'un menu pour modifier iptables aux gres sans avoir se connecter ulterieurement par ssh pour faire les changements a la main. Cette version fini sera releaser sur le site web en tant venu. .----------------------------------------------- - - --- - --- | Wyzeman [Wyzeman at mindkind dot org] www.mindkind.org '------ -- ----------- -- - - ---------- - - -- - - -- ----- - - - - -