par tomtom » 27 Oct 2003 19:53
Bien sur, "ouvrir" des ports ne veut rien dire....
<BR>
<BR>il y a 2 options pour traduire ta phrase :
<BR>
<BR>Tu voudrais que des personnes se connectent chez toi en utilisant le port 1000 tcp par exemple.
<BR>-> tu dois avoir un programme qui "ecoute" sur ce port et qui sait repondre à la demande de connexion. Cele suffit sur linux pour que le port soit ouvert (on dit qu'il est en etat "listening", tu peux le controler avec netstat -anp)
<BR>
<BR>-> tu as deja un programme qui "ecoute" sur ce port. Mais les paquets envoyés par les clients n'arrivenet pas -> Il doit y avoir un firewall qui bloque ces paquets et les empeche d'arriver jusqu'à ton demon. Ce firewall peut être soit directement sur la machine "serveur", soit sur une autre machine située entre le client et le serveur.
<BR>Si tu poses la question, je supposerai alors qu'il s'agit du firewall integré à Linux, donc netfilter, sur la machine en question.
<BR>Pour connaitre les règles fixées par netfilter, on utilise la commande iptables.
<BR>Elle sert à manipuler les règles du firewall.
<BR>Dans le cas qui nous interresse, il s'agit d'une règle qui bloquerait les acces au firewall lui-même. Ces règles sont spécifiées dans une chaine appelée INPUT.
<BR>Pour visualiser las règles, tu vas utiliser la commande suivante :
<BR>
<BR>iptables -L -v
<BR>Dans le resultat qui va s'afficher, tu auras une partie correspondant à INPUT :
<BR>tekila:~# iptables -L -v
<BR>Chain INPUT (policy DROP 1390 packets, 81280 bytes)
<BR> pkts bytes target prot opt in out source destination
<BR> 2444 149K InOut all -- eth1 any anywhere anywhere
<BR> 94 8412 ICMPTable icmp -- any any anywhere anywhere
<BR> 0 0 ACCEPT all -- lo any anywhere anywhere
<BR> 1 48 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh flags:SYN,RST,ACK/SYN
<BR> 2498 224K SuiviConnexions all -- any any anywhere anywhere
<BR>
<BR>Voila un exemple de resultat...
<BR>Dans ces lignes, tu dois detecter ce qui se passe (il faut lire dans l'ordre).
<BR>Je traduis pour mon exemple :
<BR>
<BR>2444 149K InOut all -- eth1 any anywhere anywhere
<BR>
<BR>tous les paquets qui traversent cette table, quelles que soient leur destination et leur source (anywhere anywhere), pour toutes les interfaces (any), pour tous les protocoles (all), doivent aller voir la table InOut pour savoir si ca apsse ou non (InOut est une chaine perso ou j'ai mis d'autres règles).
<BR>
<BR>...
<BR>
<BR>En lisant toutes les lignes comme ceci, on peut savoir ce qui arrive à un paquet particulier.
<BR>Ton exemple : un paquet destiné au port tcp 1000 :
<BR>Il va donc aller dans la table InOut.. Si il en ressort, il n'ira pas dans la table Icmp (car le protocole n'est pas icmp mais tcp).
<BR>Il n'ira pas non plus dans la table accept en dessous, puisqu'il ne vient pas de l'interface lo
<BR>Il n'ira pas dans le accept suivant, car il n'est pas à destination du port ssh (22) mais du 1000
<BR>Il ira ensuite dans la chaine SuiviCOnnexion (ou il sera rejeté car il n'appartient pas à une session existante).
<BR>DOnc chez moi, ton paquet sera bloqué par le firewall.
<BR>
<BR>En fonction des règles chez toi, il sera ou non bloqué par le filtre. S'il est bloqué, il n'arrivera pas au serveur. S'il passe il sera remis au processus serveur qui ecoutait sur le port 1000.
<BR>
<BR>J'espère que ce micro cours de netfilter t'aura permis de comprendre la abse du firewalling.
<BR>
<BR>Pour que l'on t'aide plus, maintenant :
<BR>
<BR>- tu dois nous dire s'il y a un demon qui ecoute sur les ports dont tu parle
<BR>- tu dois nous dire ou se trouve le firewall (sur la machine elle-même ? Sur une autre machine ? Sur un modem-routeur ?
<BR>- Tu dois nous donner les règles de firewall de l'endroit ou il est : Si c'est sur linux, le resultat de la commande 'iptables -L -v' sera suffisant.
<BR>
<BR>
<BR>T.
<BR>
One hundred thousand lemmings can't be wrong...