我正在运行Ubuntu 13.10
(不是 LTS,我知道……)。我已经denyhosts
安装了。我有/etc/hosts.deny
和/etc/hosts.allow
。我已将 2 个 IP 添加到hosts.allow
(家庭 + 工作)。但是,每当我从这些 IP 登录时,我都会收到一封电子邮件,告诉我发生了可疑登录。
我尝试hosts.allow
用两种不同的方法格式化我的文件。但似乎都没有用。
首先:
...
sshd: iii.i.i.iii : allow
sshd: iii.i.i.iii : allow
第二:
...
sshd: iii.i.i.iii
sshd: iii.i.i.iii
我不知道这是否相关,但如果我注意到了某些我无法解释的事情。
如果我跑
$ sudo service denyhosts restart
* Stopping DenyHosts denyhosts [ OK ]
/etc/init.d/denyhosts: 44: test: /etc/hosts.deny: unexpected operator
* Starting DenyHosts denyhosts
但是如果我在 hosts.deny 或 hosts.allow 中搜索错误,则找不到任何错误:
sudo test -e /etc/hosts.allow
sudo test -e /etc/hosts.deny
在我忘记之前,我的/etc/denyhosts.conf
文件:
...
# Most operating systems:
HOSTS_DENY = /etc/hosts.deny
#
# Some BSD (FreeBSD) Unixes:
HOSTS_DENY = /etc/hosts.allow
...
正如评论所说,/etc/hosts.allow 显然在某些 BSD Unix 上使用。这是问题吗?在我读过的一些 Ubuntu 指南中,显然不是这样。
编辑:
文件/etc/init.d/denyhosts
运行:
HOSTS_DENY=$(grep ^HOSTS_DENY $CONFIG | cut -d = -f 2)
在我的例子中它同时hosts.allow
返回hosts.deny
。
答案1
你没有注释掉这两个,所以这让我相信denyhosts正在使用/etc/hosts.allow
。注释掉第二HOSTS_DENY
行,然后重新启动denyhosts。
如果您仍然收到电子邮件,则需要将其添加SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS = NO
到您的denyhosts.conf文件中。这需要DenyHosts 0.6或更高版本。请参阅这了解详情。
您还需要创建一个allowed-hosts
包含受信任 IP 地址的文件,每行一个。该文件位于WORK_DIR
配置中定义的同一文件夹中。
答案2
您需要注释掉HOSTS_DENY = /etc/hosts.allow
行,因为您使用的是 Ubuntu 而不是 BSD 系统。
然后,您需要了解hosts.(allow|deny)
文件的处理方式。使用这些文件的服务始终在第一次匹配hosts.allow
之前进行检查hosts.deny
并在第一次匹配时停止。因此,如果您在hosts.allow
文件中授予 IP 地址访问权限,则无论 的内容如何,都将授予访问权限hosts.deny
。您无需关心 Denyhosts 是否向该文件添加更多地址。hosts.allow
文件基本上允许您将 IP 地址列入白名单。
请参阅hosts_access(5)
手册页以了解更多信息。
答案3
有时 sshd 编译时不支持 hosts.allow 和 hosts.deny(tcp-wrappers 支持)。在我安装的 Ubuntu 18.04 LTS 上就出现了这种情况。要检查您的 sshd 版本是否支持它,请运行以下命令:
- 哪个 sshd
- 字符串 /usr/sbin/sshd | egrep'hosts.(allow|deny)'
上面的第 1 行用于检查 sshd 的具体安装位置(例如,在我的 RedHat 机器上它是 /sbin/sshd,而 Ubuntu 是 /usr/sbin/sshd),因此请相应地修改第 2 行。
如果不支持 hosts.deny + hosts.allow,则第 2 行的输出为空。在这种情况下,您需要从 openssh.com 下载源代码并重建它:
./configure --with-libwrap
make
sudo make install