$ grep ListenAddress /etc/ssh/sshd_config
ListenAddress 0.0.0.0
$
这只会在 IPv4 上监听。
但问题是:它如何才能仅在 10.0.0.0/8 和 172.16.0.0/12 和 192.168.0.0/16 上监听?
$ grep ListenAddress /etc/ssh/sshd_config
ListenAddress 0.0.0.0
$
这只会在 IPv4 上监听。
但问题是:它如何才能仅在 10.0.0.0/8 和 172.16.0.0/12 和 192.168.0.0/16 上监听?
ListenAddress
与 ssh 服务器将接受来自哪些客户端的地址无关,而是与 sshd 将在服务器机器的哪个地址上应答有关,或者换句话说,它可以通过哪些地址访问(当然忽略 NAT)。例如,如果您的服务器有 3 个网络接口,并且具有以下给定的 IPv4 接口:
使用
ListenAddress 0.0.0.0
(默认值)0.0.0.0
作为 INADDR_ANY IPv4 地址,它将通过其任何接口接受到任何本地地址的任何连接。使用
ListenAddress 127.0.0.1
,仅接受到环回接口上的 127.0.0.1 的连接。使用
ListenAddress 10.0.1.2
,仅接受到该地址的连接,但任何客户端均可接受,无论其自己的 IP 地址是什么。要根据客户端源 IP 地址进行过滤,您可以使用:
AllowUsers *@10.0.0.0/8 *@172.16.0.0/12 *@192.168.0.0/16
Match Host
,Match Address
用于更细粒度的规则/etc/hosts.{allow,deny}
pam_access
模块在 PAM 级别执行此操作,并且/etc/security/access.conf
但最安全的方法是,在主机防火墙级别进行此操作,这样连接就
sshd
根本无法到达。