Esta orden se utiliza para visualizar el estado de diversas estructuras de datos
del sistema de red, desde las tablas de rutado hasta el estado de todas las
conexiones a y desde nuestra máquina, pasando por las tablas ARP, en
función de los parámetros que reciba.
En temas referentes a la seguridad, netstat se suele utilizar, aparte de
para mostrar las tablas de rutado de ciertos sistemas (con la opción -r,
como hemos visto antes), para mostrar los puertos abiertos que escuchan
peticiones de red y para visualizar conexiones a nuestro equipo (o desde él)
que puedan salirse de lo habitual. Veamos un ejemplo de información mostrada
por netstat:
anita:/# netstat -P tcp -f inet -a
TCP
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -------
*.* *.* 0 0 0 0 IDLE
*.sunrpc *.* 0 0 0 0 LISTEN
*.* *.* 0 0 0 0 IDLE
*.32771 *.* 0 0 0 0 LISTEN
*.ftp *.* 0 0 0 0 LISTEN
*.telnet *.* 0 0 0 0 LISTEN
*.finger *.* 0 0 0 0 LISTEN
*.dtspc *.* 0 0 0 0 LISTEN
*.lockd *.* 0 0 0 0 LISTEN
*.smtp *.* 0 0 0 0 LISTEN
*.8888 *.* 0 0 0 0 LISTEN
*.32772 *.* 0 0 0 0 LISTEN
*.32773 *.* 0 0 0 0 LISTEN
*.printer *.* 0 0 0 0 LISTEN
*.listen *.* 0 0 0 0 LISTEN
*.32774 *.* 0 0 0 0 LISTEN
*.* *.* 0 0 0 0 IDLE
*.6000 *.* 0 0 0 0 LISTEN
*.32775 *.* 0 0 0 0 LISTEN
localhost.32777 localhost.32775 32768 0 32768 0 ESTABLISHED
localhost.32775 localhost.32777 32768 0 32768 0 ESTABLISHED
localhost.32780 localhost.32779 32768 0 32768 0 ESTABLISHED
localhost.32779 localhost.32780 32768 0 32768 0 ESTABLISHED
localhost.32783 localhost.32775 32768 0 32768 0 ESTABLISHED
localhost.32775 localhost.32783 32768 0 32768 0 ESTABLISHED
localhost.32786 localhost.32785 32768 0 32768 0 ESTABLISHED
localhost.32785 localhost.32786 32768 0 32768 0 ESTABLISHED
localhost.32789 localhost.32775 32768 0 32768 0 ESTABLISHED
localhost.32775 localhost.32789 32768 0 32768 0 ESTABLISHED
localhost.32792 localhost.32791 32768 0 32768 0 ESTABLISHED
localhost.32791 localhost.32792 32768 0 32768 0 ESTABLISHED
localhost.32810 localhost.6000 32768 0 32768 0 ESTABLISHED
localhost.6000 localhost.32810 32768 0 32768 0 ESTABLISHED
anita.telnet luisa.2039 16060 0 10136 0 ESTABLISHED
anita.telnet bgates.microsoft.com.1068 15928 0 10136 0 ESTABLISHED
localhost.32879 localhost.32775 32768 0 32768 0 TIME_WAIT
*.* *.* 0 0 0 0 IDLE
anita:/#
Por un lado, en este caso vemos que hay bastantes puertos abiertos, esto es,
escuchando
peticiones: todos los que presentan un estado LISTEN, como telnet,
finger o smtp (si es un servicio con nombre en /etc/services
se imprimirá este nombre, y si no simplemente el número de puerto).
Cualquiera puede conectar a este servicio (como veremos en el siguiente punto)
y, si no lo evitamos mediante TCP Wrappers, utilizarlo para enviarle
peticiones.
Aparte de estos puertos a la espera de conexiones, vemos otro gran número de
conexiones establecida entre nuestro sistema y otros (como antes hemos dicho,
desde nuestro equipo o hacia él); casi todas las establecidas (estado ESTABLISHED) son de nuestra máquina contra ella misma, lo que a priori no
implica consecuencias de seguridad. Otra de ellas es desde un equipo de la
red local contra nuestro sistema, lo que también es bastante normal y no
debe hacernos sospechar nada14.4; sin embargo, hay una conexión que sí puede
indicar que alguien ha accedido a nuestro sistema de forma no autorizada: si
nos fijamos, alguien conecta por telnet desde la máquina bgates.microsoft.com. Es raro que tengamos a un usuario allí, por lo
que deberíamos monitorizar esta conexión y las actividades que esta
persona realice; es muy probable que se trate de alguien que ha aprovechado la
inseguridad de ciertos sistemas para utilizarlos como plataforma de ataque
contra nuestros Unix.
© 2002 Antonio Villalón Huerta