sshd привязывается к портам с низкими номерами только при перезапуске с помощью bash -x /etc/init.d/sshd restart

sshd привязывается к портам с низкими номерами только при перезапуске с помощью bash -x /etc/init.d/sshd restart

Я добавил строку "Port 110" в /etc/ssh/sshd_config сразу под существующей строкой "Port 22", а затем сделал ожидание /etc/init.d/sshd restartувидеть sshd, прослушивающий оба порта (22 и 110). Однако netstat -anp показал, что sshd прослушивает только порт по умолчанию (22).

Позже я попробовал bash -x /etc/init.d/sshd restartи был поражен, увидев, что sshd немедленно привязался к порту 110!!! Повторный запуск /etc/init.d/sshd restartпроигнорировал мои изменения. Перезагрузка также игнорирует мои изменения, так что я застрял и совершенно озадачен.

ОБНОВЛЯТЬэто странное поведение кажетсятолько на низких портах (<1024)

Это на сервере CentOS 6.


Подробности

Вот мои изменения в /etc/ssh/sshd_config:

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

Вывод netstat послеbash -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     

Вывод netstat после/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  

Другой способ заставить sshd привязаться к порту 110 — запустить его в режиме отладки с помощью /usr/sbin/sshd -de (обратите внимание на listening on port 22,110строки, но я также тестировал, подключаясь к обоим портам):

/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.

решение1

Система SELinux ограничивает привязку портов для портов ниже 1024

semanage port -l | grep ssh
ssh_port_t                     tcp      22

Вы можете добавить еще один порт

semanage port -a -t ssh_port_t -p tcp 110

Это немедленно решит вашу проблему.

Связанный контент