У меня есть этот контент в hosts.deny
(с новой строкой в конце):
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd : ALL
И это в hosts.allow
:
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
sshd: our.ip.add.ress: allow
Затем мы выполнили этот фрагмент кода для перезапуска SSH:
/etc/init.d/sshd restart
И снова, вот новая строка в конце. Но мы все еще можем подключиться к службе SSH с другого сервера и попытаться войти в систему. Что мы делаем не так?
Вам не нужен : allow
в hosts.allow
. Это должно выглядеть так:
sshd: 192.168.2.200
Если у вас есть доступ к консоли, вы можете попробовать заблокировать все, что использует tcpwrappers, на случай, если это проблема с именем службы:
hosts.deny
:
ALL: ALL
hosts.allow
:
ALL: 192.168.2.200
Ваш /etc/hosts.deny, я думаю, у вас синтаксическая ошибка. Между sshd и двоеточием не должно быть пробелов. Итак, он должен читать:
sshd: ALL
На стороне "разрешить" у меня есть строки вроде:
sshd: 192.168.1.1
После IP-адреса нет конечного текста.
Стоит ли проверять, действительно ли поддержка tcp-wrappers была скомпилирована в используемый вами sshd?
Он должен быть скомпилирован с одним из вариантов --with-libwrap или --with-tcp-wrappers, согласно книге о'рейли улиток.
(Я не уверен, включает ли это большинство дистрибутивов по умолчанию или какой параметр времени компиляции по умолчанию используется для открытого ssh).
Я только что проверил свой, выполнив:
ldd /usr/sbin/sshd | egrep 'wrap'
который указал
libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ba50fa9c000)
(ч / т до этот вопрос об обмене стеками)