首先,我的sshd中有libwrap.so,下面是检查结果:
root@FS9000:~# ldd sshd | grep libwrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x000000555e3fa000)它似乎无法阻止指定的IP,这是非常奇怪的。问题是什么?
PS:我在嵌入式系统中尝试过,使用busybox(v1.22.1),sshd来自openssh6.3p1。
4.当像这样配置/etc/hosts.deny时:
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时:
sshd: 192.168.0.0/24 127.0.0.1 [ffe0::]/10 [::1]在192.168.0.0/24,192.168.1.30也可以访问它。
发布于 2014-10-12 14:08:39
也许您没有使用IP地址192.168.1.30连接到sshd。
您可以使用-b使(某些) ssh程序使用特定的接口
-b bind_address使用本地机器上的bind_address作为连接的源地址。只在有多个地址的系统上有用。
所以试试
ssh -b 192.168.1.30 user@remote.tld 发布于 2014-10-12 17:49:46
如果您没有连接到本地网络上的主机,sshd所看到的地址将不是192.168.1.30,它不能通过因特网路由。如果您正在本地网络上的主机之间进行连接,大多数系统将首先尝试IPv6。IPv6并不像每台主机那样容易被阻止,因为主机通常被配置为使用隐私扩展并定期更改其IP地址。
如果这是一个您可以访问的主机,那么在使用ssh进行连接之后,检查正在连接的IP地址。sshd导出有关到环境的连接的信息。您可以使用命令env | grep SSH来查看这一点。
您可能希望实现一个大部分是封闭的配置。在测试时,请保持连接打开,同时配置/etc/hosts.deny以像这样阻止所有连接。
ALL: ALL :\
spawn (/bin/echo "%d connection to %N from %n[%a] denied" | \
/usr/bin/mailx -s "Access Denied - %d" root@localhost)然后允许通过服务和/或网络地址进行访问。您可以通过DNS、PTR、记录查找返回的名称以及地址范围进行阻塞。以下内容只允许从本地网络访问,但阻止路由器访问。
sshd: 192.168.0.0/24 127.0.0.1 \
[ffe0::]/10 [::1] \
EXCEPT 192.168.0.1您也可以添加电子邮件通知以接受规则。如果不需要通知,可以删除它们。如果您的服务不记录访问,则可以通过向日志守护进程发送消息来使用类似的规则来记录访问。
https://serverfault.com/questions/636423
复制相似问题