Forum général.général ipv6/shorewall6: connexion faussement acceptée, où chercher?

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
0
11
mai
2017

Voilà, je suis en train de batailler avec un truc qui me semble assez simple, mais je dois manquer quelque chose de manière évidente donc ma question est un peu de l’ordre « où chercher ? ».

J’ai un simple serveur sur le net avec un préfixe /56 (l’ipv6 est statique mais le routage est obtenu avec dhcpv6).

ifconfig me sort quelque chose comme ça:

eth0      Link encap:Ethernet  HWaddr <HW_ADDR>
          inet adr:<IPV4_ADDR>  Bcast:<IPV4_BCAST>  Masque:255.255.255.0
          adr inet6: <IPV6_ADDR>/56 Scope:Global
          adr inet6: <fe80::ETC>/64 Scope:Lien

Initialement c’était beaucoup plus complexe avec plein de réseaux différents, des bridges etc. mais j’ai réduit au minimum pour débuguer mon problème : une interface, deux zones (net et fw).

Voici ma config shorewall6:

$ cat /etc/shorewall6/interfaces
?FORMAT 2
net  eth0  tcpflags,forward=1

$ cat /etc/shorewall6/policy
$FW  all  ACCEPT
all  all  DROP    info

$ cat /etc/shorewall6/rules
?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW
DNS(ACCEPT)  $FW  net
Ping(ACCEPT) net  $FW
ACCEPT:info  net  $FW  tcp  33

$ cat /etc/shorewall6/zones
fw  firewall
net ipv6

J’ai quasiment la même coté shorewall, modulo les ajustements ipv4/ipv6.

J’essaie donc d’accéder à un service sur le port 33 (sorti du chapeau), pour tester je lance un serveur ssh qui écoute sur ce port (ou bien un simple netcat en écoute), et j’essaie de faire une connexion ssh (ou bien un simple telnet) sur ce port.

Il est important de noter que tout fonctionne tant que je ne démarre pas shorewall6, ce qui indique que ma configuration ipv6 et mon service fonctionnent correctement.

Après avoir démarré shorewall et shorewall6,

Je tente une connexion en ipv4 (ssh -p 33 <IPV4_ADDR>) j’obtiens cela dans mes logs :

mai 11 16:14:16 box kernel: Shorewall:net-fw:ACCEPT:IN=eth0 OUT= MAC=<MAC> SRC=<IPV4_SRC> DST=<IPV4_ADDR> LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=42505 DF PROTO=TCP SPT=48164 DPT=33 WINDOW=29200 RES=0x00 SYN URGP=0

et ma connexion ssh se fait.

Je tente une connexion en ipv6 (ssh -p 33 <IPV6_ADDR>) j’obtiens cela dans mes logs :

mai 11 16:16:45 box kernel: Shorewall:net-fw:ACCEPT:IN=eth0 OUT= MAC=<MAC> SRC=<IPV6_SRC> DST=<IPV6_SRC> LEN=80 TC=0 HOPLIMIT=58 FLOWLBL=1016538 PROTO=TCP SPT=56320 DPT=33 WINDOW=28400 RES=0x00 SYN URGP=0

et ma connexion ne se fait pas.

Accessoirement, si je tente une connexion sur un port non autorisé (comme le port 34) j’obtiens :

mai 11 16:21:45 box kernel: Shorewall:net-fw:DROP:IN=eth0 OUT= MAC=<MAC> SRC=<IPV6_SRC> DST=<IPV6_ADDR> LEN=80 TC=0 HOPLIMIT=58 FLOWLBL=615549 PROTO=TCP SPT=45246 DPT=34 WINDOW=28400 RES=0x00 SYN URGP=0

comme attendu.

Si, au lieu d’un ssh je lance un netcat en écoute sur le serveur et un telnet sur le client, et que je tape quelque chose côté client, je ne reçois rien coté serveur, ce qui me confirme que ce n’est pas un problème dans le protocole ssh (négociation ou je sais pas quoi): absolument rien ne parvient, nada.

Comme vous le voyez la connexion est acceptée, mais le service ne reçoit rien. Bref, la configuration me semble tellement simpliste que je ne sais même pas où chercher. Une idée ?

Chose intéressante à savoir, quand je tombe shorewall6, la connexion ne se fait plus non-plus, donc le problème n’est probablement pas dans mes règles mais dans des configurations réseaux que shorewall6 fait implicitement.

Le truc intéressant à savoir est que ma configuration réseau est faite ainsi (/etc/network/interfaces):

auto eth0
iface eth0 inet static
    address     <IPV4_ADDR>
    netmask     255.255.255.0
    network     <IPV4_NETW>
    broadcast   <IPV4_BCAST>
    gateway     <IPV4_GW>

iface eth0 inet6 static
    address     <IPV6_ADDR>
    netmask     56
    accept_ra   1
    pre-up      sleep 2s
    pre-up      dhclient -cf /etc/dhcp/dhclient6.conf -pf /run/dhclient6.$IFACE.pid -6 -P -v $IFACE
    pre-down    dhclient -x -pf /run/dhclient6.$IFACE.pid

Si je fais un ifdown eth0; ifup eth0 après avoir démarré shorewall6, tout fonctionne (et il fait bien son affaire). C’est aussi pour cela que je suspecte Shorewall de toucher à quelques paramètres réseaux…

Une idée ?

  • # Tcpdump

    Posté par  (site web personnel) . Évalué à 3.

    Wireshark avec et sans le pare-feu, tu devrais y voir plus clair.

    Système - Réseau - Sécurité Open Source

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.