Esta pagina se ve mejor con JavaScript habilitado

Problemas de netstat con IPv4/6

 ·  🎃 kr0m

Hay herramientas como netstat que no están completamente adaptadas para operar en un pila dual IPv4/6, esta nos muestra información parcial si ha sido compilada sin soporte para IPv6 ocultándonos de este modo sockets mixtos que están escuchando tanto en IPv4 como IPv6.

Esto supone un problema para un administrador de sistemas ya que no es capaz de ver el estado de la red en su totalidad.

Compilamos net-tools sin soporte para IPv6:

USE="-ipv6" emerge -av sys-apps/net-tools

Comprobamos que sockets tenemos a la escucha:

netstat -nputa|grep LISTEN

tcp        0      0 0.0.0.0:32002           0.0.0.0:*               LISTEN      5451/sshd           
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4124/php-fpm: maste 
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      5653/python     

Ahora lo recompilamos con soporte para IPv6:

USE="ipv6" emerge -av sys-apps/net-tools

netstat -nputa|grep LISTEN
tcp        0      0 0.0.0.0:8001            0.0.0.0:*               LISTEN      20867/nginx: master 
tcp        0      0 0.0.0.0:32002           0.0.0.0:*               LISTEN      5451/sshd           
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4124/php-fpm: maste 
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      5653/python         
tcp6       0      0 :::8000                 :::*                    LISTEN      20062/apache2       
tcp6       0      0 :::18080                :::*                    LISTEN      11286/docker-proxy  
tcp6       0      0 :::32002                :::*                    LISTEN      5451/sshd           
tcp6       0      0 :::80                   :::*                    LISTEN      11370/docker-proxy  

Como podemos observar han aparecido sockets que antes no constaban, esto es debido a que el software en cuestión se bindea tanto en IPv6 como IPv4, son sockets mixtos.

Curiosamente con sys-apps/iproute2 esto NO ocurre, compilamos iproute2 sin soporte para IPv6:

USE="-ipv6" emerge -av sys-apps/iproute2

ss -lpunt|grep LISTEN

tcp     LISTEN   0        128              0.0.0.0:8001           0.0.0.0:*                                                                                     
tcp     LISTEN   0        128              0.0.0.0:32002          0.0.0.0:*                                                                                     
tcp     LISTEN   0        128            127.0.0.1:9000           0.0.0.0:*                                                                                     
tcp     LISTEN   0        5                0.0.0.0:5555           0.0.0.0:*      users:(("python",pid=5653,fd=3))                                               
tcp     LISTEN   0        128                    *:8000                 *:*                                                                                     
tcp     LISTEN   0        128                    *:18080                *:*                                                                                     
tcp     LISTEN   0        128                 [::]:32002             [::]:*                                                                                     
tcp     LISTEN   0        128                    *:80                   *:*                               

Podemos ver en rojo que muestra también los sockets mixtos.

Si compilamos con soporte para IPv6 la salida es exactamente la misma:

USE="ipv6" emerge -av sys-apps/iproute2

ss -lpunt|grep LISTEN

tcp     LISTEN   0        128              0.0.0.0:8001           0.0.0.0:*                                                                                     
tcp     LISTEN   0        128              0.0.0.0:32002          0.0.0.0:*                                                                                     
tcp     LISTEN   0        128            127.0.0.1:9000           0.0.0.0:*                                                                                     
tcp     LISTEN   0        5                0.0.0.0:5555           0.0.0.0:*      users:(("python",pid=5653,fd=3))                                               
tcp     LISTEN   0        128                    *:8000                 *:*                                                                                     
tcp     LISTEN   0        128                    *:18080                *:*                                                                                     
tcp     LISTEN   0        128                 [::]:32002             [::]:*                                                                                     
tcp     LISTEN   0        128                    *:80                   *:*                                                       

Por este motivo recomiendo utilizar herramientas como iproute2 antes que net-tools ya que si no lo hacemos un atacante con acceso como root podría llegar a ocultar conexiones maliciosas.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí