sshd se vincula a puertos con números bajos solo si se reinicia con bash -x /etc/init.d/sshd restart

sshd se vincula a puertos con números bajos solo si se reinicia con bash -x /etc/init.d/sshd restart

Agregué la línea "Puerto 110" en /etc/ssh/sshd_config justo debajo de la línea existente "Puerto 22" y luego esperaba /etc/init.d/sshd restartver sshd escuchando en ambos puertos (22 y 110). Sin embargo, netstat -anp mostró que sshd solo escuchaba en el puerto predeterminado (22).

¡Más tarde lo intenté bash -x /etc/init.d/sshd restarty me sorprendió ver que sshd se vinculaba al puerto 110 inmediatamente! Al emitir un segundo /etc/init.d/sshd restartnuevamente ignoró mi cambio. Al reiniciar también se ignora mi cambio, por lo que estoy atascado y completamente desconcertado.

ACTUALIZARaparece este extraño comportamientosólo en puertos bajos (<1024)

Esto está en un servidor CentOS 6.


Detalles

Aquí está mi modificación a /etc/ssh/sshd_config:

grep ^Port /etc/ssh/sshd_config
Port 22
Port 110

Salida de netstat despuésbash -x /etc/init.d/sshd restart

netstat -anp | grep -i listen|grep sshd|grep -v :::
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      7031/sshd           
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      7031/sshd     

Salida de netstat después/etc/init.d/sshd restart

netstat -anp | grep -i listen|grep sshd|grep -v :::
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      8962/sshd  

Otra forma de convencer a sshd de que se vincule al puerto 110 es ejecutándolo en modo de depuración con /usr/sbin/sshd -de (tenga en cuenta las listening on port 22,110líneas, pero también lo probé conectándome a ambos puertos):

/usr/sbin/sshd -de
debug1: sshd version OpenSSH_5.3p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-de'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 110 on 0.0.0.0.
Server listening on 0.0.0.0 port 110.
debug1: Bind to port 110 on ::.
Server listening on :: port 110.

Respuesta1

El sistema SELinux está restringiendo el enlace de puertos para puertos por debajo de 1024

semanage port -l | grep ssh
ssh_port_t                     tcp      22

Puedes agregar otro puerto

semanage port -a -t ssh_port_t -p tcp 110

Eso solucionaría su problema inmediato.

información relacionada