Cómo encontrar la lista de todos los puertos abiertos en Linux
En este artículo, hablaremos brevemente acerca de los puertos en las redes de computadoras y veremos cómo puede enumerar todos los puertos abiertos en Linux.
En redes de computadoras, y más definitivamente en términos de software, un puerto es una entidad lógica que actúa como un punto final de comunicación para identificar una aplicación o proceso dado en un sistema operativo Linux. Es un número de 16 bits ( 0 a 65535 ) que diferencia una aplicación de otra en los sistemas finales.
Los dos protocolos de transporte de Internet más populares, Protocolo de control de transmisión ( TCP ) y el Protocolo de datagramas de usuario ( UDP ) y otros protocolos menos conocidos utilizan números de puerto para las sesiones de comunicación (números de puerto de origen y destino junto con las direcciones IP de origen y destino).
Además, una combinación de una dirección IP, puerto y protocolo como TCP/UDP se conoce como socket, y cada servicio debe tener un socket único.
A continuación se presentan las diferentes categorías de puertos:
- 0-1023 – the Well Known Ports, also referred to as System Ports.
- 1024-49151 – the Registered Ports, also known as User Ports.
- 49152-65535 – the Dynamic Ports, also referred to as the Private Ports.
Puede ver una lista de diferentes aplicaciones y combinación de puerto/protocolo en el archivo /etc/services
en Linux usando el comando cat:
$ cat /etc/services OR $ cat /etc/services | less
# /etc/services: # $Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2009-11-10 # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports # are included, only the more common ones. # # The latest IANA port assignments can be gotten from # http://www.iana.org/assignments/port-numbers # The Well Known Ports are those from 0 through 1023. # The Registered Ports are those from 1024 through 49151 # The Dynamic and/or Private Ports are those from 49152 through 65535 # # Each line describes one service, and is of the form: # # service-name port/protocol [aliases ...] [# comment] tcpmux 1/tcp # TCP port service multiplexer tcpmux 1/udp # TCP port service multiplexer rje 5/tcp # Remote Job Entry rje 5/udp # Remote Job Entry echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users systat 11/udp users daytime 13/tcp daytime 13/udp qotd 17/tcp quote qotd 17/udp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp-data 20/udp # 21 is registered to ftp, but also used by fsp ftp 21/tcp ftp 21/udp fsp fspd ssh 22/tcp # The Secure Shell (SSH) Protocol ssh 22/udp # The Secure Shell (SSH) Protocol telnet 23/tcp telnet 23/udp
Para enumerar todos los puertos abiertos o en ejecución actualmente, incluidos TCP y UDP en Linux, usaremos netstat, es una herramienta poderosa para monitorear las conexiones de red y las estadísticas.
$ netstat -lntu Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 :::80 :::* LISTEN tcp 0 0 :::25 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:*
Dónde,
-l
– prints only listening sockets-n
– shows port number-t
– enables listing of tcp ports-u
– enables listing of udp ports
También puede usar el comando ss , una utilidad útil bien conocida para examinar sockets en un sistema Linux. Ejecute el siguiente comando para enumerar todos sus puertos TCP y UCP abiertos:
$ ss -lntu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:68 *:* tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 50 *:3306 *:* tcp LISTEN 0 128 :::80 ::* tcp LISTEN 0 100 :::25 :::* tcp LISTEN 0 100 *:25
Asegúrese de leer las páginas man de los comandos anteriores para obtener más información de uso.
En resumen, comprender el concepto de puertos en las redes de computadoras es muy vital para los administradores de sistemas y redes. También puede consultar esta guía de netstat con ejemplos sencillos, precisos y bien explicados.
Por último, pero no menos importante, póngase en contacto con nosotros compartiendo otros métodos para listar puertos abiertos en Linux o haciendo una pregunta a través del formulario de respuesta a continuación.