Iptables, un port reste ouvert

Bonjour,

Voila, j’ai un petit souci avec iptables, c’est trois fois rien, mais c’est assez ennervant (surtout le fait de pas savoir le résoudre).

Donc, la situation, c’est que j’ai trois interfaces réseau (ethernet eth0, wifi eth1 et virtualbox vboxnet0), et je gère mon pare feu directement avec iptables (par un script qui crée les règles comme il faut).

J’ai également plusieurs services sur ma machine, dont un serveur ssh, vpn, dns, un serveur mpd, un stream mpd, que je choisi d’ouvrir sur certaines toutes les interfaces ou seulement sur certaines.

Pour la plupart des services, ça va bien, mais pour le stream mpd, sur le port 8000, je n’arrive pas à le limiter à certaines interfaces.

Voila mes règles iptables sur INPUT de la table filter :

root@imrryr laurent # /sbin/iptables -t filter -L -v -n Chain INPUT (policy DROP 47624 packets, 5312K bytes) pkts bytes target prot opt in out source destination 839K 957M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 80 4592 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 12 656 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5900 13 1604 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 17339 988K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT udp -- eth1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6600 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8000 45 2892 ACCEPT udp -- vboxnet0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 1 52 ACCEPT tcp -- vboxnet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53

Comme on le voit le port 8000 n’est ouvert que pour eth1, pourtant lorsque je fais un nmap sur les autres interfaces, je vois toujours ce port ouvert, mais je ne peux effectivement acceder au stream que depuis eth1.

Quelqu’un y comprend quelque chose ?

Tu exécutes bien nmap sur une autre machine connectée à l’interface considérée, et non sur la machine elle-même ?

En fait non, je n’en ai pas la possibilité, mais quand je ferme un port par iptables, comme le 53 sur une interface et pas l’autre, et que je nmap les interfaces, sur l’une je vois bien le port ouvert, sur l’autre je le vois fermé, j’ai donc toutes les raisons de croire que ça n’a pas d’influence, mais je me trompe peut-être.

Nmap ne scanne pas une interface mais une adresse. Or avec Linux il y a très peu de lien entre les adresses et les interfaces. A peu près n’importe quelle adresse de la machine est utilisable et joignable sur n’importe quelle interface (exceptions notables : les adresses de loopback et link-local).

De même un service écoute généralement sur une adresse, pas sur une interface (exceptions notables : les services “bas niveau” comme dhcpd ou radvd). Adresse qui est joignable via n’importe quelle interface comme indiqué ci-dessus.

Si on lance nmap depuis la machine cible elle-même, alors les paquets passent par l’interface de loopback, lo, comme toute communication locale. Or ton jeu de règles iptables accepte tout en entrée sur cette interface.

Pour tester un jeu de règles de filtrage en entrée basé sur les interfaces, il faut impérativement lancer nmap depuis des machines extérieures connectées directement ou indirectement aux interfaces à tester. Donc j’ai un gros doute sur ton affirmation concernant le port 53. Ce qui est possible en revanche est que ton serveur DNS n’écoute pas sur toutes les adresses de la machine.

Ah ben oui. Quand je disais que je nmappais les interfaces, je voulais bien sur dire que je nmappais l’ip attachée à l’interface, et effectivement, mon dns n’écoute que sur les plage d’eht1 et vboxnet0. Si je ferme les ports vpn ou ssh, ils apparaissent toujours ouverts, donc c’est bien raté.

Va falloir que je nmap d’ailleurs, mais je peux pas pour l’instant, donc on va laisser le sujet en non résolu pour l’instant et je metrais à jour plus tard.

Merci en tous cas.