daemon – ¿Cómo comprobar que un demonio está escuchando en qué interfaz?

Pregunta:

Ej .: un sshd está configurado para escuchar solo en wlan0. Entonces. Además de comprobar sshd_config, ¿cómo puedo comprobar que un demonio está escuchando en qué interfaz? netstat puede hacerlo? ¿Cómo? (SO: openwrt o linux científico o openbsd)

ACTUALIZAR:

Pensé que sshd podría limitarse a una interfaz … pero no … (192.168.1.5 está en wlan0 …)

# grep ^ListenAddress /etc/ssh/sshd_config 
ListenAddress 192.168.1.5:22
# 
# lsof -i -n -P
COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd      23952 root    3u  IPv4 1718551      0t0  TCP 192.168.1.5:22 (LISTEN)
#
# ss -lp | grep -i ssh
0      128              192.168.1.5:ssh                           *:*        users:(("sshd",23952,3))
# 
# netstat -lp | grep -i ssh
tcp        0      0 a.lan:ssh                   *:*                         LISTEN      23952/sshd          
#

Respuesta:

(es posible que deba instalar el paquete ip en openwrt (v12 / ajuste de actitud)

ifconfig / netstat, etc.se consideran obsoletos , por lo que debe usar (como root)

ss -nlput | grep sshd

para mostrar los sockets TCP / UDP en los que está escuchando un programa en ejecución que contiene la cadena sshd

  • -n
    sin puerto para la resolución de nombres
  • -l
    solo escucha enchufes
  • -p
    mostrar procesos escuchando
  • -u
    mostrar enchufes udp
  • -t
    mostrar enchufes tcp

Entonces obtienes una lista como esta:

tcp    LISTEN     0      128                    *:22                    *:*      users:(("sshd",3907,4))
tcp    LISTEN     0      128                   :::22                   :::*      users:(("sshd",3907,3))
tcp    LISTEN     0      128            127.0.0.1:6010                  *:*      users:(("sshd",4818,9))
tcp    LISTEN     0      128                  ::1:6010                 :::*      users:(("sshd",4818,8))

lo interesante es la quinta columna que muestra una combinación de dirección IP y puerto:

  1. *:22
    escuche en el puerto 22 en cada dirección IPv4 disponible
  2. :::22
    escuche en el puerto 22 en cada dirección IP disponible (no escribo IPv6, ya que IP es IPv6 según RFC 6540 )
  3. 127.0.0.1:6010
    escuchar en la dirección IPv4 127.0.0.1 (localhost / loopback) y el puerto 6010
  4. ::1:6010
    escuchar en la dirección IP :: 1 (0: 0: 0: 0: 0: 0: 0: 1 en notación completa, también localhost / loopback) y puerto 6010

Luego, desea saber qué interfaces tienen una dirección IPv4 (para cubrir 1.)

ip -4 a
# or "ip -4 address"
# or "ip -4 address show"

o una dirección IP (para cubrir 2.)

ip -6 a
# or "ip -6 address
# or "ip -6 address show

(si no agrega la opción para IP ( -6 ) o IPv4 ( -4 ) se muestran ambas)

También puede echar un vistazo a esa salida y buscar, por ejemplo, 127.0.0.1 o cualquier otra dirección IP / IPv4

# here a demo where i show all addresses of the device "lo" (loopback)
ip a show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

Las líneas que comienzan con inet e inet6 muestran que estas IP están vinculadas a esta interfaz, es posible que tenga muchas de estas líneas por interfaz:

he-ipv6: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN
    link/sit 192.0.2.1 peer 192.0.2.3
    inet6 2001:db8:12::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 2001:db8::2/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::1111:1111/128 scope link
       valid_lft forever preferred_lft forever

y en un guión:

address="127.0.0.1"
for i in $(grep ':' /proc/net/dev | cut -d ':' -f 1 | tr -d ' ') ; do
        if $(ip address show dev $i | grep -q "${address}") ; then
                echo "${address} found on interface ${i}"
        fi
done

(reemplace "127.0.0.1")

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım