У меня есть настроенный denyhosts и работающий над Ubuntu 12.04. Это, по-видимому, работает хорошо, кроме него слишком строго.
Я могу войти в систему от любого IP-адреса, который я добавил к hosts.allow заранее. Мой sshd_config не позволяет вход в систему пароля, только входит в систему с ключами.
Однако входя в систему от нового IP-адреса с моим допустимым ключом RSA (который работает от моих известных IP-адресов), сервер показывает это сообщение в /var/log/auth.log:
23 июня 19:16:31 MyServerName sshd [5949]: отказанное подключение из hostname.comcast.net (XXX.XXX.XXX.XXX)
Для соединения, все, что я должен сделать, добавляет новый IP-адрес к/etc/hosts.allow.Именно. Затем я могу войти в систему:
23 июня 19:45:03 MyServerName sshd [6024]: Принятый открытый ключ для имени пользователя от порта XXX.XXX.XXX.XXX 61 236 ssh2
23 июня 19:45:03 MyServerName sshd [6026]: pam_unix (sshd:session): сессия, открытая для пользовательского имени пользователя (uid=0)
Я не изменил ни одного значения по умолчанию denyhosts значения конфигурации, и оно работает действительно хорошо - за исключением того, что это слишком строго.
(Или что-то еще читает/etc/hosts.allow?)
Я должен позволить любому пользователю Linux (чья учетная запись уже существует на сервере) входить в систему от любого IP-адреса, не внося изменения на сервере заранее (такие как добавление IP к hosts.allow).
EightBitTony предлагает, чтобы denyhosts позволил это поведение. В ответ на EightBitTony я изменил этот вопрос и заголовок.
Denyhosts только блоки привел логины к сбою (после того, как предопределенное количество). Это не делает, о котором я знаю, заблаговременно люди блока.
Вы не можете одновременно блокировать доступ на более низком уровне (IP) и потребовать от протокола более высокого уровня (SSH) для переопределения блока – просто, потому что более высокий уровень никогда не достигается (в случае блока).
Можно ограничить хосты входа в систему к пользователям в целом и позволить всего одному пользователю входить в систему отовсюду. Но это не было бы динамическим решением.
Можно также работать два sshd
экземпляры, одно использование denyhosts, при этом другой - применим этим пользователем только. К сожалению, это, кажется, не возможно отключить libwrap в конфигурации, таким образом, необходимо было бы, вероятно, скомпилировать sshd
с соответствующими опциями или выполненный второй экземпляр в VM или контейнере.
Я думаю, что нашел проблему. Мой/etc/hosts.deny содержит эти две строки:
ALL: PARANOID
sshd: ALL
Это похоже на проблему?
Вот часть моего/etc/hosts.deny:
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#
# Example: ALL: some.host.name, .some.domain
# ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
ALL: PARANOID
sshd: ALL
ALL: 200.125.165.10
ALL: 203.144.65.53
ALL: 85.31.203.35
...