首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/etc/hosts.deny并不是每次都生效

/etc/hosts.deny并不是每次都生效
EN

Server Fault用户
提问于 2014-10-12 13:13:57
回答 2查看 3.3K关注 0票数 0

首先,我的sshd中有libwrap.so,下面是检查结果:

代码语言:javascript
复制
root@FS9000:~# ldd sshd | grep libwrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x000000555e3fa000)
  1. 当我像这样配置/etc/hosts.deny (没有/etc/hosts.low):sshd:那么当尝试访问服务器时,任何IP都会被阻塞,它显然生效了。
  2. 当我像这样配置/etc/hosts.deny : sshd: 192.168.1.30时,我尝试从192.168.1.30访问服务器,并且登录成功,没有任何阻塞!

它似乎无法阻止指定的IP,这是非常奇怪的。问题是什么?

PS:我在嵌入式系统中尝试过,使用busybox(v1.22.1),sshd来自openssh6.3p1。

  1. 所有的测试都是在本地网络中进行的,下面是sshd连接的详细信息。192.168.1.30是一个linux客户端,192.168.1.212是嵌入式系统。否认所有: 192.168.1.30 root@FS9000:~# root@FS9000:~# SSH_CLIENT=192.168.1.30 36425 22 SSH _TTY=/dev/TTY/0 SSH_CONNECTION=192.168.1.30 36425 192.168.1.212 root@FS9000:~# netstat -antp活动因特网连接(服务器和已建立) Proto发送-q本地地址状态PID/程序名 tcp0 0 0.0.0.0:111 0.0.0.0:*聆听1726/portmap tcp 0 0 0.0.0.0:21 0.0.0.0:*聆听1770/vsftpd tcp 0 0.0.0.0:22 0.0.0.0:*听2359/sshd tcp 0 0 192.168.1.212:22 192.168.1.30:36425建立3256/0 tcp 0::22::*侦听2359/sshd tcp 0:23:23::23:*侦听2148/telnetd

4.当像这样配置/etc/hosts.deny时:

代码语言:javascript
复制
root@FS9000:~# cat /etc/hosts.deny
ALL:  ALL :\
       spawn (/bin/echo "%d connection to %N from %n[%a] denied" > /dev/pts/1)

pts/1 is one telnetd connection,telnetd doesn't support libwrap,so all telnetd connections won't be blocked. Then I tried access 1.212 from 1.30, it prints this(and of course it blocked successfully):

sshd connection to unknown from unknown[0.0.0.0] denied

当像这样配置/etc/hosts.deny时:

代码语言:javascript
复制
sshd: 192.168.0.0/24 127.0.0.1  [ffe0::]/10 [::1]

在192.168.0.0/24,192.168.1.30也可以访问它。

EN

回答 2

Server Fault用户

发布于 2014-10-12 14:08:39

也许您没有使用IP地址192.168.1.30连接到sshd。

您可以使用-b使(某些) ssh程序使用特定的接口

-b bind_address使用本地机器上的bind_address作为连接的源地址。只在有多个地址的系统上有用。

所以试试

代码语言:javascript
复制
ssh -b 192.168.1.30 user@remote.tld 
票数 1
EN

Server Fault用户

发布于 2014-10-12 17:49:46

如果您没有连接到本地网络上的主机,sshd所看到的地址将不是192.168.1.30,它不能通过因特网路由。如果您正在本地网络上的主机之间进行连接,大多数系统将首先尝试IPv6。IPv6并不像每台主机那样容易被阻止,因为主机通常被配置为使用隐私扩展并定期更改其IP地址。

如果这是一个您可以访问的主机,那么在使用ssh进行连接之后,检查正在连接的IP地址。sshd导出有关到环境的连接的信息。您可以使用命令env | grep SSH来查看这一点。

您可能希望实现一个大部分是封闭的配置。在测试时,请保持连接打开,同时配置/etc/hosts.deny以像这样阻止所有连接。

代码语言:javascript
复制
ALL:  ALL :\
       spawn (/bin/echo "%d connection to %N from %n[%a] denied" | \
      /usr/bin/mailx -s "Access Denied - %d" root@localhost)

然后允许通过服务和/或网络地址进行访问。您可以通过DNS、PTR、记录查找返回的名称以及地址范围进行阻塞。以下内容只允许从本地网络访问,但阻止路由器访问。

代码语言:javascript
复制
sshd:   192.168.0.0/24 127.0.0.1 \
        [ffe0::]/10 [::1] \
        EXCEPT 192.168.0.1

您也可以添加电子邮件通知以接受规则。如果不需要通知,可以删除它们。如果您的服务不记录访问,则可以通过向日志守护进程发送消息来使用类似的规则来记录访问。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/636423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档