Comprobación de puertos abiertos y en escucha en Linux mediante netstat y ss
Monitorizar los puertos abiertos y a la escucha en un sistema Linux es esencial para la seguridad, la resolución de problemas de red y la administración del sistema. Saber qué puertos están siendo utilizados y por qué servicios puede ayudar a detectar posibles vulnerabilidades o accesos no autorizados. Dos herramientas comunes utilizadas para este propósito son netstat y ss.
En este artículo, veremos cómo utilizar los comandos netstat y ss para comprobar los puertos abiertos y a la escucha en un sistema Linux.
1. Entendiendo los Puertos y sus Tipos
Antes de sumergirnos en las herramientas, es importante entender los tipos básicos de puertos que puedes encontrar:
- Puertos abiertos: Estos son los puertos en los que las aplicaciones están escuchando activamente para las conexiones.
- Puertos a la escucha: Son puertos a los que un servicio o aplicación se ha vinculado y está esperando activamente tráfico de red entrante.
- Protocolos comunes:
- TCP: Protocolo de Control de Transmisión (fiable, basado en conexiones).
- UDP: Protocolo de Datagramas de Usuario (sin conexión, menos fiable, pero más rápido).
2. Comprobación de puertos con netstat
¿Qué es netstat?
netstat es una herramienta clásica de línea de comandos que proporciona estadísticas de red e información sobre las conexiones de red, incluidos los puertos abiertos y a la escucha. Aunque ha quedado obsoleta en favor de herramientas más recientes como ss, sigue siendo muy utilizada.
Instalación de netstat
netstat forma parte del paquete net-tools. En las distribuciones modernas de Linux, es posible que tengas que instalarlo manualmente:
- Debian/Ubuntu:
- CentOS/RHEL:
Uso de netstat para comprobar los puertos abiertos y en escucha
Para comprobar todos los puertos de escucha de su sistema, incluidos TCP y UDP, utilice el siguiente comando:
- –t: Muestra los puertos TCP.
- –u: Mostrar puertos UDP.
- –l: Mostrar sólo puertos de escucha.
- –n: Mostrar direcciones numéricas en lugar de resolver nombres de host y servicios.
Ejemplo de salida:
- Dirección local: La IP y el puerto en el que está escuchando el servicio.
- Dirección externa: La IP y el puerto del cliente remoto (para conexiones activas).
- Estado: El estado de la conexión (por ejemplo, LISTEN para puertos abiertos).
Filtrado de puertos o servicios específicos con netstat
Puede filtrar la salida para centrarse en puertos o servicios específicos. Por ejemplo, para comprobar los puertos relacionados con HTTP (puerto 80):
Esto mostrará todos los servicios que escuchan en el puerto 80.
3. Comprobación de puertos con ss
¿Qué es ss?
ss es una utilidad moderna que ha sustituido a netstat en muchas distribuciones de Linux. Es más rápida y eficaz que netstat, sobre todo cuando se trata de un gran número de conexiones. ss puede mostrar los puertos abiertos, información sobre los conectores de red, etc.
Uso de ss para comprobar puertos abiertos y en escucha
La sintaxis de ss es bastante similar a la de netstat. Para comprobar todos los puertos TCP y UDP en escucha, utilice:
- –t: Mostrar sockets TCP.
- –u: Mostrar sockets UDP.
- –l: Mostrar sólo sockets de escucha.
- –n: Mostrar direcciones numéricas (no resolver nombres de host).
Ejemplo de salida:
Esta salida muestra todos los puertos de escucha y sus estados (similar a netstat).
Uso avanzado de ss
ss proporciona opciones más avanzadas para filtrar y mostrar conexiones basadas en diferentes criterios.
Mostrar sólo puertos TCP de escucha:
Muestra sólo los puertos UDP de escucha:
Muestra los puertos de escucha por ID de proceso (PID):
Para ver qué proceso está asociado a un puerto de escucha, utilice:
La opción p muestra el proceso que utiliza el puerto, lo que resulta útil para solucionar problemas.
4. Comparación de netstat y ss
Tanto netstat como ss sirven para propósitos similares, pero hay diferencias que vale la pena señalar:
- Velocidad y eficiencia: ss es más rápido que netstat y consume menos recursos. Puede gestionar un gran número de conexiones de forma más eficiente.
- Disponibilidad: ss está incluido por defecto en la mayoría de las distribuciones modernas de Linux, mientras que netstat requiere la instalación del paquete net-tools en algunos sistemas.
- Formato de salida: Ambos proporcionan información detallada sobre puertos y conexiones, pero ss tiene más opciones para filtrar y mostrar información específica.
Cuándo utilizar netstat:
- Cuando trabaje en sistemas Linux antiguos.
- Cuando estás familiarizado con la sintaxis de netstat y no quieres cambiar.
Cuándo usar ss:
- Cuando necesite un mejor rendimiento, especialmente en sistemas con un gran número de conexiones.
- Para un filtrado y análisis de red más avanzados.
5. Otras herramientas para comprobar puertos abiertos
Aparte de netstat y ss, hay otras herramientas que puedes utilizar para comprobar los puertos abiertos y a la escucha en Linux:
lsof lista los archivos abiertos, que pueden incluir sockets de red. Puedes usarlo para comprobar qué proceso está escuchando en un puerto específico
Esto muestra los procesos que utilizan el puerto 80.
nmap es una herramienta de escaneo de red que se puede utilizar para comprobar si hay puertos abiertos en un sistema.
Este comando escanea los puertos TCP en el localhost.
Conclusión
Monitorizar los puertos abiertos y a la escucha es una tarea esencial para los administradores de sistemas, y herramientas como netstat y ss facilitan esta tarea. Aunque netstat todavía se utiliza en sistemas antiguos, ss se ha convertido en la herramienta preferida debido a su velocidad y eficiencia. Ya sea que estés solucionando problemas de red o asegurando tu servidor Linux, estas herramientas te ayudarán a mantener un registro de los servicios activos y asegurar que tus puertos sean administrados apropiadamente.
Utiliza netstat si estás más familiarizado con él, o cambia a ss para una monitorización más rápida y eficiente de los puertos abiertos y a la escucha de tu sistema.
Avísame si necesitas más aclaraciones o ayuda