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.