2.2.8. Cómo verificar los puertos que están escuchando

Después de configurar los servicios de red, es importante prestar atención a los puertos que están escuchando en las interfaces de red del sistema. Cualquier puerto abierto puede ser evidencia de una intrusión.
Existen dos métodos básicos para listar los puertos que escuchan en la red. El método menos fiable es la solicitud de la pila de redes mediante comandos tales como netstat -an o lsof -i. Este método es menos confiable, ya que los programas no se conectan a la máquina desde la red, sino que chequean cuál está en ejecución en el sistema. Por esta razón, estas aplicaciones son objetos frecuentes de remplazo para los agresores. Los crackers intentan cubrir sus rastros al abrir puertos de red no autorizadas remplazando a netstat y lsof por sus propias versiones modificadas.
La forma más confiable para revisar los puertos que están escuchando en la red es mediante el uso de un escáner tal como nmap.
El comando a continuación emitido desde la consola determina cuáles puertos están escuchando para conexiones TCP desde la red:
nmap -sT -O localhost
La salida de este comando aparece así:
Starting Nmap 4.68 ( http://nmap.org ) at 2009-03-06 12:08 EST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1711 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh 
25/tcp    open  smtp
111/tcp   open  rpcbind
113/tcp   open  auth
631/tcp   open  ipp
834/tcp   open  unknown
2601/tcp  open  zebra
32774/tcp open  sometimes-rpc11
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.17 - 2.6.24
Uptime: 4.122 days (since Mon Mar  2 09:12:31 2009)
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.420 seconds
Esta salida muestra que el sistema está ejecutando portmap debido a la presencia del servicio sunrpc. Sin embargo, también hay un servicio misterioso en el puerto 834. Para verificar si el puerto está asociado con la lista de servicios conocidos, escriba:
cat /etc/services | grep 834
Este comando no retorna salida para el puerto 834. Debido al formato del comando, la salida para los puertos (1834, 2834 y 3834) se mostrará. Esto indica que mientras el puerto 834 está en el rango reservado (es decir entre 0 y 1023) y requiere acceso de root para abrir, no se asocia con un servicio conocido.
Luego, verifique la información sobre el puerto mediante netstat o lsof. Para revisar el puerto 834 mediante netstat, use el siguiente comando:
netstat -anp | grep 834
El comando retorna la siguiente salida:
tcp   0    0 0.0.0.0:834    0.0.0.0:*   LISTEN   653/ypbind
La presencia del puerto abierto en netstat es tranquilizante puesto que un cracker que abre un puerto subrepticiamente en un sistema pirateado no es probable que le permita ser revelado a través de este comando. También, la opción [p] revela el ID del proceso (PID) del servicio que abrío el puerto. En este caso, el puerto abierto pertenece a ypbind (NIS), el cual es un servicio RPC manejado junto con el servicio portmap.
El comando lsof revela informaición simitar netstat puesto que también puede conectar los puertos abiertos a los servicios:
lsof -i | grep 834
La porción importante de la salida de este comando es la siguiente:
ypbind      653        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      655        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      656        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      657        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
Estas herramientas revelan sobre el estatus de los servicios que se ejecutan en una máquina. Son herramients flexibles y pueden proporcionar una gran cantidad de información sobre servicios de red y configuración. Consulte las páginas de manual de lsof, netstat, nmap y services para obtener más información.