logo

Cómo comprobar puertos abiertos en Linux

Brevemente, describiremos los puertos dentro de la red de computadoras y, además, hablaremos sobre cómo podemos enumerar cada puerto abierto en Linux.

Un puerto se puede definir como una entidad lógica en términos de software y redes de computadoras.

Actúa como un punto final de comunicación para identificar un proceso o aplicación determinado en el sistema operativo linux . Un puerto es un 16 bits (o a 65535) Número que diferencia una sola aplicación de otras en varios sistemas finales.

Dos de los protocolos de transporte de Internet más famosos, Protocolo de datagramas de usuario (UDP) y Protocolo de control de transmisión (TCP) y otros protocolos aplican números de puerto para muchas sesiones de comunicación (números de puerto de origen y destino junto con las direcciones IP de origen y destino).

Una combinación de protocolo, puerto y dirección IP como TCP/UDP se llama un enchufe. Es necesario que todos los servicios dispongan de un enchufe específico.

base de datos de propiedades ácidas

Categorías de Puerto

Estos puertos se dividen en tres categorías para facilitar su uso porque la variedad de puertos es grande. Todas las categorías están etiquetadas como el rango de valores del puerto:

0-1023: Estos puertos son bien conocido y llamé 'Sistema' puertos. Están reservados para los procesos del sistema que proporcionan una amplia gama de servicios de red. Un proceso debe tener los privilegios de un superusuario para vincularse con cualquier 'Bien conocido' puerto.

1024-49151: Estos puertos son 'Registrado' y llamó al 'Usuario' puertos. Se designan mediante IANA para servicios únicos. Un proceso puede tener autenticación previa solicitud. No necesita ningún privilegio de superusuario para usar estos puertos en la mayoría de los casos.

49152-65535: Estos puertos son 'Dinámica' y llamó al 'Privado' puertos. No pueden registrarse con IANA. Este tipo de puertos están abiertos al uso para servicios personalizados y privados y también pueden asignarse como puertos efímeros (conocidos como efímero puertos aplicados por IP) automáticamente.

Hay muchas formas de comprobar los puertos abiertos en Linux. De forma predeterminada, un puerto se cerrará a menos que alguna aplicación lo esté aplicando. Se debe asignar un puerto a un proceso o servicio si está abierto.

Lista de puertos abiertos

Es más fácil saber qué puerto está en uso que qué puerto está abierto. Por lo tanto, la siguiente sección proporcionará métodos para enumerar todos los puertos que están en uso actualmente.

Hay varias herramientas presentes para esta tarea en Linux. La mayoría de ellos disponibles. incorporado en una distribución de Linux.

Saber qué puerto está abierto actualmente podría resultar útil en muchos escenarios. Es posible determinar un puerto dedicado para una aplicación asegurada. Un puerto abierto puede ser un fuerte indicio de intrusión dentro de la red.

Los métodos se utilizan en Ubuntu 20.04 LTS que se mencionan a continuación.

Enumere los puertos y protocolos abiertos usando el archivo /etc/services

El archivo, es decir, /etc/servicios contiene detalles sobre los servicios en ejecución (actualmente). Es un archivo grande.

 $cat /etc/services | less 

Cómo comprobar puertos abiertos en Linux

Listar puertos abiertos con netstat

El netstat La herramienta se puede describir como una utilidad para mostrar conexiones de red para tablas de enrutamiento, TCP y varias interfaces de red. Además, facilita las estadísticas del protocolo de red. Podríamos enumerar todos los puertos abiertos de un sistema utilizando la herramienta netstat.

Podemos ejecutar el siguiente comando:

 $ netstat -atu 

Cómo comprobar puertos abiertos en Linux

Expliquemos rápidamente el desglose de cada bandera que usamos en el comando anterior:

1. un: Esta bandera informa a netstat para mostrar cada socket.

2.t: Este indicador informa a netstat sobre la lista de puertos TCP.

3 en: Este indicador informa a netstat sobre la lista de puertos UDP.

El netstat El comando tiene otra variación que se menciona a continuación:

 $ netstat -lntu 

Cómo comprobar puertos abiertos en Linux

Dos indicadores son nuevos en el comando anterior que se explica a continuación:

1. yo: Este indicador informa a netstat para que imprima únicamente los sockets de escucha.

2. norte: Este indicador informa a netstat que muestre el número de puerto.

Podemos usar una bandera, es decir, '-pag' para mostrar el PID del proceso que está utilizando cualquier puerto.

 $ netstat -lntup 

Cómo comprobar puertos abiertos en Linux

Verifique los puertos abiertos localmente

El comando netstat está disponible en todos los sistemas operativos de computadora para monitorear las conexiones de red. El siguiente comando aplica netstat para mostrar cada puerto de escucha con el protocolo TCP:

 netstat -lt 

Cómo comprobar puertos abiertos en Linux

Definamos brevemente las banderas que están presentes en el comando anterior:

1. -l: Enumera los puertos de escucha.

2. -t: Especifica el protocolo TCP.

El resultado está bien ordenado en columnas que muestran el protocolo, amigable para los humanos, paquetes enviados y recibidos, estado del puerto, direcciones IP remotas y locales.

Si modificamos el protocolo TCP por el protocolo UDP, la salida mostrará solo los puertos abiertos. El resultado se mostrará sin describir el estado debido a la contradicción con el protocolo TCP.

 netstat -lu 

Cómo comprobar puertos abiertos en Linux

Podemos ignorar la descripción de protocolos y aplicar solo la opción --listen o -l para obtener detalles sobre cada puerto que escucha libremente el protocolo:

 netstat --listen 

Cómo comprobar puertos abiertos en Linux

La opción anterior mostrará los detalles de los protocolos de socket Unix, UDP y TCP.

Cada ejemplo anterior muestra cómo imprimir los detalles a través de puertos de escucha sin conexiones autorizadas. Los siguientes comandos muestran cómo mostrar los puertos de escucha y las conexiones autorizadas.

nombres de ciudades estados unidos
 netstat -vatn 

Cómo comprobar puertos abiertos en Linux

Dónde:

1 en: Se utiliza para verbosidad.

2. -a: Muestra conexiones activas.

3. -t: Muestra conexiones tcp.

4. -norte: Muestra puertos (valor numérico).

Digamos que reconocemos un proceso sospechoso dentro de nuestro sistema y deseamos verificar los puertos relacionados con él. Podemos usar el comando lsof que se usa para enumerar archivos abiertos relacionados con procesos.

 lsof -i 4 -a -p 

Dónde,

1. -yo: Enumera los archivos que colaboran con Internet, los 6 opción está presente para IPv6, y el 4 La opción indica solo para imprimir. IPv4.

2. -a: Indica que el resultado sea Diste.

3. -p: Especifica el número PID del proceso que deseamos verificar.

Listar puertos abiertos con ss

El ss La herramienta se puede especificar como una utilidad para investigar el enchufe. El uso de esta herramienta es el mismo que el netstat dominio.

Podemos ejecutar el siguiente comando para enumerar los puertos abiertos:

 $ ss -lntu 

Cómo comprobar puertos abiertos en Linux

Las banderas anteriores son las mismas que las netstat dominio. Las funciones que describe la herramienta ss también son bastante similares.

1. yo: Este indicador informa a ss para que muestre los enchufes de escucha.

2. norte: Este indicador informa a ss que no intente concluir los nombres de los servicios.

3.t: Este indicador informa a ss para mostrar los sockets TCP.

4. en: Este indicador informa a ss sobre la visualización de sockets UDP.

Listar puertos abiertos con lsof

El comando lsof se puede utilizar para enumerar archivos abiertos. Pero también se puede utilizar para mostrar los puertos abiertos.

Podemos ejecutar el siguiente comando:

 $ lsof -i 

Cómo comprobar puertos abiertos en Linux

Para obtener los puertos abiertos de un protocolo en particular (UDP, TCP, etc.), especifíquelo después de usar el '-i' bandera, podemos ejecutar el siguiente comando:

 $ lsof -i 

Listar puertos abiertos con nmap

El comando nmap se puede definir como fuerte para escaneo de puertos/seguridad y exploración de redes. También puede informar cada puerto abierto dentro del sistema.

Podemos ejecutar el siguiente comando para enumerar los puertos TCP abiertos.

 $ sudo nmap -sT -p- localhost 

Cómo comprobar puertos abiertos en Linux

Hay dos secciones de este comando que se menciona anteriormente:

1. -st: Informa a la herramienta nmap para escanear. tcp puertos.

2. -p-: Informa a la herramienta nmap para escanear cada 65535 puertos. La herramienta nmap escaneará 1000 puertos solo de forma predeterminada si no se utilizan.

Si necesitamos enumerar los puertos abiertos de UDP, podemos ejecutar el siguiente comando:

 $ sudo nmap -sU -p- localhost 

Cómo comprobar puertos abiertos en Linux

También podemos ejecutar el siguiente comando para obtener los puertos UDP y TCP:

 $ sudo nmap -n -PN -sT -sU -p- localhost 

Cómo comprobar puertos abiertos en Linux

Listar puertos abiertos con netcat

La herramienta netcat puede describirse como una utilidad de línea de comandos para leer y escribir datos en muchas conexiones de red en los protocolos UDP y TCP. Además, se puede utilizar para enumerar los puertos abiertos. Esta herramienta puede implementar pruebas en un puerto particular o en una variedad de puertos.

El siguiente comando netcat se utiliza para escanear el puerto desde 1-1000. De forma predeterminada, implementará el escaneo a través del protocolo TCP:

 $ nc -z -v localhost 1-1000 

Cómo comprobar puertos abiertos en Linux

Además, se puede ampliar a toda la lista de determinados puertos:

 $ nc -z -v localhost 1-65535 

Cómo comprobar puertos abiertos en Linux

Analicemos rápidamente estas banderas.

1. de: Informa al comando netcat para escanear puertos abiertos únicamente, sin transferir ningún dato.

2. en: Informa al comando netcat para que se ejecute en modo detallado.

historia en java

Podemos filtrar el resultado con la ayuda de grep por un término. 'tuvo éxito' para obtener solo los puertos abiertos a través de esta lista.

 $ nc -z -v 127.0.0.1 20-80 | grep succeeded 

Cómo comprobar puertos abiertos en Linux

Si deseamos implementar el escaneo sobre el protocolo UDP, el archivo. Podemos incluir el '-en' bandera.

 $ nc -z -v -u localhost 0-65535 2>&1 | grep succeeded