
Decidí publicar esta pregunta a pesar de que hay muchas preguntas similares, pero ninguna respondió la mía.
- Compruebo periódicamente los puertos que escucha mi servidor.
- Mi sistema operativo ubuntu por la salida de
lsb_relase -a
:
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
- Ejecuto el comando
netstat -tulpn4
y el resultado muestra un puerto desconocido:
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 580/systemd-resolve
tcp 0 0 0.0.0.0:62176 0.0.0.0:* LISTEN 900/sshd: /usr/sbin
tcp 0 0 0.0.0.0:1122 0.0.0.0:* LISTEN 1158/sshd: username
tcp 0 0 0.0.0.0:3333 0.0.0.0:* LISTEN 1158/sshd: username
udp 0 0 0.0.0.0:51820 0.0.0.0:* -
udp 0 0 127.0.0.53:53 0.0.0.0:* 580/systemd-resolve
udp 0 0 X.X.X.X:1194 0.0.0.0:* 870/openvpn
- He utilizado muchas herramientas y guías para descubrir por qué mi servidor escucha en el puerto
51820
sin encontrar una respuesta. - Yo he tratado:
sudo lsof -i :51820
- y obtuve una salida vacía.sudo netstat -ltnp | grep -w ':51820'
- y obtuve una salida vacía.sudo fuser 51820/udp
- y obtuve una salida vacía.sudo netstat -peanut | grep ":51820"
- la salida es:
udp 0 0 0.0.0.0:51820 0.0.0.0:* 0 26262 -
udp6 0 0 :::51820 :::* 0 26263 -
sudo ss -nlp | grep 51820
la salida es:
udp UNCONN 0 0 0.0.0.0:51820 0.0.0.0:*
udp UNCONN 0 0 [::]:51820 [::]:*
- He mirado las siguientes respuestas y no encontré una solución:
Después de buscar en la web sobre el puerto, 51820
descubrí que es el "wireguard" que instalé el que está escuchando en ese puerto, pero la pregunta sigue siendo la misma, ya que en cualquier comando que probé no pude descubrirlo.
Respuesta1
Está ejecutando un sistema operativo que implementa Wireguard como un módulo del kernel. Su kernel está escuchando en este puerto y, dado que no hay ningún proceso que posea ese socket, no se informa ningún PID netstat
.
Respuesta2
General:
Después de una búsqueda de dos días sobre el problema, descubrí, como Michael Hampton y Peter Zhabin, que no existe ninguna solución que muestre una identificación de proceso del kernel a través de un puerto de escucha.
Además, durante esos dos días busqué también algunas commands
combinaciones que pudieran dar la respuesta deseada y no encontré ninguna forma sencilla o conveniente de hacerlo.
La solución que creé es preliminar y estoy seguro de que los miembros de la comunidad pueden mejorarla.
Descuentos por localizar el proceso
- El proceso se ejecuta en el nivel del kernel o en cualquier otro nivel que evite que el proceso tenga una identificación (PID).
- La identificación del proceso o el programa del proceso no se encontró en la salida de los comandos dados:
lsof
,netstat
,ss
,fuser
. - Encontramos un puerto de escucha a partir del resultado de los comandos anteriores, pero no podemos configurar el programa o el pid que provoca la escucha.
Acerca de grep
:
Usaremos grep
para encontrar más información sobre el puerto abierto.
grep
- imprimir líneas que coincidan con los patrones.
Desde grep
la página de manual mediante man grep
comando.
DESCRIPTION
grep searches for PATTERNS in each FILE. PATTERNS is one or more
patterns separated by newline characters, and grep prints each line
that matches a pattern. Typically PATTERNS should be quoted when grep
is used in a shell command.
- AquíEs un gran tema sobre cómo utilizar el comando de forma correcta y eficaz.
Cómo localizar el PID o el programa que utiliza el puerto dado a través de grep
:
En mi caso, la ejecución sudo grep --exclude-dir={sys,proc} -rnw / -e 51820 | grep -i port
resolvió el problema y mostró mucha información sobre el programa que usa el puerto.
La salida dada:
iptables.service:6:ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 51820 -j ACCEPT
/home/username/wireguard-install.sh:238: read -p "Port [51820]: " port
/home/username/wireguard-install.sh:241: read -p "Port [51820]: " port
/home/username/wireguard-install.sh:243: [[ -z "$port" ]] && port="51820"
/usr/share/doc/netplan/examples/wireguard.yaml:9: port: 51820
/etc/wireguard/wg0.conf:8:ListenPort = 51820
/etc/systemd/system/wg-iptables.service:6:ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 51820 -j ACCEPT
/etc/systemd/system/wg-iptables.service:10:ExecStop=/usr/sbin/iptables -D INPUT -p udp --dport 51820 -j ACCEPT
La razón de tantos indicadores es que otras combinaciones que he probado tenían una gran cantidad de resultados no deseados.
grep
Qué significan los argumentos de mando:
--exclude-dir
- Omita cualquier directorio de línea de comandos con un sufijo de nombre que coincida con el patrón.
sys
Y proc
directorios e ignorancia específicos.en nuestro caso específico es evitar resultados no deseados.
Ejemplo: grep --exclude-dir={dir1,dir2}
evitará dir1 y dir2 durante la búsqueda.
-r
o-R
es recursivo.-n
es el número de línea.-w
significa coincidir con la palabra completa./
representa el directorio "más alto" para iniciar la búsqueda de arriba a abajo.-e
- es el patrón utilizado durante la búsqueda.51820
en nuestro caso específico es el número de puerto que encontró uno de los comandos de monitoreo de red anteriores.|
- es la tubería para redirigir la salida de la primera parte del comando a la segunda.
En nuestro caso: redirigir sudo grep --exclude-dir={sys,proc} -rnw / -e 51820
la salida al siguiente comandogrep -i port
-i
- Ignore las distinciones entre mayúsculas y minúsculas en patrones y datos de entrada, de modo que los caracteres que difieren sólo en mayúsculas y minúsculas coincidan entre sí.port
- Encontrado con el fin de acotar los resultados al propósito para el que realizamos la búsqueda, encontrando más información sobre el puerto específico que se definió después de la-e
bandera.
Consejos:
- Haga que el escaneo sea lo más grande posible en los primeros pasos comenzando desde el
/
directorio y usando indicadores mínimos para filtrar la salida, para asegurarse de que no se pierda ningún detalle que podamos lograr. - Después de encontrar el resultado deseado o de tener problemas para encontrar el resultado deseado debido a una gran cantidad de resultados no deseados, comience a agregar indicadores uno por uno.
- Especifique el número de puerto como patrón; después de todo, este es nuestro punto de partida y nuestro objetivo final.
- Utilice comandos dobles
grep
que redirijan el primer escaneo alport
filtro de patrón, puede identificarnos y acelerar la solución; después de todo, estamos buscando un número como patrón y esto puede generar muchos resultados no deseados. - Si no puede llegar a conclusiones con el resultado proporcionado, realice una búsqueda en la web con las palabras clave elegidas que haya encontrado.