Icono de Terminal

Identificar puerto en ejecución

 
 

Introducción
En este artículo partimos de que conocemos nuestro sistema, es decir, conocemos los servicios que están ejecutándose, pero en nuestro ejemplo, veremos que tras escanear los puertos abiertos en nuestra máquina, vemos un puerto desconocido. Con el ejemplo siguiente descubriremos que aplicación está utilizando ese puerto.

Para el escaneo de puertos podemos utilizar herramientas como nmap, Angry IP Scanner u otros. En este caso utilizaremos el comando nmap para ver que puertos tenemos abiertos.
 
Escaneando puertos abiertos con nmap
En el siguiente ejemplo, nmap nos muestra que puertos UDP tenemos en ejecución. El proceso es válido para cualquier tipo de puerto, ya sea TCP, UDP o ICMP, solo hay que indicarle a nmap que tipo de puerto queremos escanear.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sudo nmap -sU -p1-65535 localhost
 
Starting Nmap 6.47 ( http://nmap.org ) at 2016-05-07 20:37 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000014s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 996 closed ports
PORT      STATE         SERVICE
68/udp    open|filtered dhcpc
111/udp   open          rpcbind
631/udp   open|filtered ipp
5353/udp  open|filtered zeroconf
10000/udp open|filtered unknownNmap done: 1 IP address (1 host up) scanned in 3.63 seconds

Encontramos el puerto 10000 abierto por un servicio desconocido y queremos saber que programa ha abierto dicho puerto.
Para identificar el programa que lo ha abierto hacemos lo siguiente:

En primer lugar ejecutamos el comando netstat con las siguientes opciones:

  • -l, –listening: Muestra los server sockets que están es modo escucha.
  • -p, –programs: Muestra PID o nombre del programa por cada socket.
  • -n, –numeric: No resuelve nombres en general.

 
Listar aplicaciones activas con el comando netstat
A continuación, listamos las aplicaciones activas con netstat. Utilizaremos una tubería para que el resultado de netstat lo procese grep y nos muestre, en este caso, aquellas líneas en la que aparezca el valor 10000 que es el puerto que queremos controlar.

$ sudo netstat -lpn | grep 10000
tcp        0      0 0.0.0.0:10000               0.0.0.0:*                   LISTEN      10768/perl
udp        0      0 0.0.0.0:10000               0.0.0.0:*                               10768/perl

 
Visualizar el estado de los procesos activos con el comando ps
A continuación, ejecutamos el comando ps con las siguientes opciones:

  • ax: Estas dos opciones conjuntamente, muestran todos los procesos incluyendo los de otros usuarios.
  • f: Muestra los procesos de forma jerárquica (bosque).
  • u: Muestra en formato orientado al usuario.

Utilizaremos una tubería para que el resultado de ps lo procese grep y nos muestre, en este caso, aquellas líneas en la que aparezca el valor 10768 que es el PID (última columna del comando anterior).

1
2
3
$ sudo ps axfu | grep 10768
root     11204  1.0  0.0   5564   744 pts/3    S+   10:42   0:00              \_ grep --color=auto 10768
root     10768  0.0  0.4  16188  9760 ?        Ss   10:18   0:00 /usr/bin/perl /usr/libexec/webmin miniserv.pl /etc/webmin/miniserv.conf

Ahora ya sabemos que el puerto 10000 está abierto por el programa webmin. Ahora, ya hemos identificado el programa que está utilizando dicho puerto.
 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
  Configuración de privacidad y de cookies.
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.