linux – 在它遇到ssh日志之前,不应该/etc/hosts.deny拦截它吗?

我在我的ubuntu 10.04.04服务器上使用了/etc/hosts.deny和ufw的组合.大多数时候,我看到来自.com.cn域名机器的ssh尝试失败,报告如下:
Failed logins from:
112.114.63.139 (139.63.114.112.broad.km.yn.dynamic.163data.com.cn): 1 time

但是,在/etc/hosts.deny中,我有这个规则:

ALL: .com.cn

在它甚至击中ssh之前,这不应该阻止连接吗?我已经通过阻止我的家用机器对它进行了测试,它肯定在我得到登录提示之前立即拒绝了我的连接(是的,我已经移开了我的ssh键,因此没有涉及).

这是否按预期工作?

编辑:James Sneeringer促使我更仔细地查看日志,也许我明白为什么会这样.来自auth.log:

Nov  5 09:38:40 mymachine sshd[22864]: warning: /etc/hosts.deny,line 21: can't verify hostname: getaddrinfo(139.63.114.112.broad.km.yn.dynamic.163data.com.cn,AF_INET) Failed
Nov  5 09:38:44 mymachine sshd[22864]: reverse mapping checking getaddrinfo for 139.63.114.112.broad.km.yn.dynamic.163data.com.cn [112.114.63.139] Failed - POSSIBLE BREAK-IN ATTEMPT!
Nov  5 09:38:45 mymachine sshd[22864]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.114.63.139  user=root
Nov  5 09:38:47 mymachine sshd[22864]: Failed password for root from 112.114.63.139 port 37245 ssh2
Nov  5 09:38:47 mymachine sshd[22866]: Connection closed by 112.114.63.139

这对我来说意味着如果sshd不确定IP->名称查找,那么它会在谨慎方面出错,并且不会阻止该主机.是对的吗?

解决方法

这是sshd的预期,因为它直接链接到libwrap,所以sshd实际上是执行主机检查的.如果要在调用sshd之前阻止连接,则需要在其前面放置一些内容来处理连接尝试,然后再将其传递给sshd.有两种选择:

>在inetd(或xinetd)下运行sshd.这将允许您调用sshd作为tcpd的参数,而tcpd最终会执行实际的主机检查.
>在xinetd下运行sshd,它具有only_from和no_access服务选项,提供类似于/etc/hosts.allow和/etc/hosts.deny的功能.

但是,sshd手册页不鼓励这些方法

-i      Specifies that sshd is being run from inetd(8).  sshd is normally
         not run from inetd because it needs to generate the server key
         before it can respond to the client,and this may take tens of
         seconds.  Clients would have to wait too long if the key was
         regenerated every time.  However,with small key sizes (e.g. 512)
         using sshd from inetd may be feasible.

使用iptables或在服务器前放置防火墙似乎是一个不错的选择,但大多数都不执行任何名称解析,因此您只能通过IP地址控制访问.这不一定是坏事,但它对你想要完成的事情没有帮助.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...