denyhosts 正在阻止现有用户从未知(新)IP 地址登录

denyhosts 正在阻止现有用户从未知(新)IP 地址登录

我已经在 Ubuntu 12.04 上设置并运行了拒绝主机。它显然运作良好,但过于严格。

我可以从预先添加到hosts.allow 的任何IP 地址登录。我的 sshd_config 不允许密码登录,只能使用密钥登录。

但是,使用我的有效 RSA 密钥(适用于我已知的 IP 地址)从新 IP 地址登录时,服务器会在 /var/log/auth.log 中显示此消息:

6 月 23 日 19:16:31 MyServerName sshd[5949]:拒绝从 hostname.comcast.net (XXX.XXX.XXX.XXX) 连接

为了进行连接,我所要做的就是将新的 IP 地址添加到 /etc/hosts.allow 中。就是这样。然后我就可以登录了:

Jun 23 19:45:03 MyServerName sshd[6024]:接受来自 XXX.XXX.XXX.XXX 端口 61236 ssh2 的用户名公钥
6月23日 19:45:03 MyServerName sshd[6026]:pam_unix(sshd:session):会话打开对于用户用户名 (uid=0)

我没有更改任何默认的拒绝主机配置值,它工作得很好——只是它太严格了。

(或者是否有其他内容读取/etc/hosts.allow?)

我需要允许任何linux用户(其帐户已经存在于服务器上)从任何IP地址登录,而无需提前在服务器上进行更改(例如将IP添加到hosts.allow中)。

EvenBitTony 建议 denyhosts 应该允许这种行为。为了回应EightBitTony,我更改了这个问题和标题。

答案1

拒绝主机仅阻止失败的登录(在预定义的计数之后)。据我所知,它并没有先发制人地阻止人们。

答案2

您不能同时阻止较低级别 (IP) 上的访问并要求较高级别协议 (SSH) 覆盖该阻止 – 仅仅是因为永远不会到达较高级别(在阻止的情况下)。

您可以限制一般用户的登录主机,并只允许一个用户从任何地方登录。但这不是一个动态的解决方案。

您还可以运行两个sshd实例,一个使用 denyhosts,另一个仅可由该用户使用。不幸的是,似乎不可能在配置中禁用 libwrap,因此您可能必须sshd使用相应的选项进行编译或在虚拟机或容器中运行第二个实例。

答案3

我想我发现了问题。我的 /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 
...

相关内容