没有输出的输入是不完整的

0%

restrict-iP-under-linux

本文将介绍通过ip白名单和黑名单限制SSH访问的方法。

版本说明:下面的 /etc/hosts.allow、/etc/hosts.deny 是历史 TCP Wrappers 用法,只适用于确实启用了 libwrap 的 sshd。上游 OpenSSH 从 6.7 起移除了这项支持,部分发行版曾保留补丁;不能仅凭 Linux 系统或文件存在就判断有效。现代系统请使用发行版防火墙,或按 sshd_config 的 AllowUsers USER@HOST 等配置限制 SSH 登录。

以下白名单和黑名单是两种独立策略,按需要选择一种。示例 IP 请替换成自己的地址。

  1. 白名单:只允许指定来源

在 /etc/hosts.allow 中配置允许的地址;单个 IP 与整个子网按需要选择:

1
2
3
4
5
# 允许单个 IP
sshd:216.64.87.126:allow

# 或允许整个子网
# sshd:216.64.87.0/255.255.255.0:allow

在 /etc/hosts.deny 中拒绝其他来源:

1
sshd:ALL:deny

仅写 hosts.allow 不够:TCP Wrappers 在两个文件都未命中时默认允许。

  1. 黑名单:只拒绝指定来源

先确认 /etc/hosts.allow 没有允许这些来源的规则,再在 /etc/hosts.deny 中配置:

1
2
3
4
5
# 拒绝单个 IP
sshd:216.64.87.126:deny

# 或拒绝整个子网
# sshd:216.64.87.0/255.255.255.0:deny

hosts.allow 优先于 hosts.deny,命中后就停止匹配,不能把同一地址同时写成允许和拒绝。

  1. 配置生效

支持 TCP Wrappers 的服务会在新连接时读取这些规则,一般不必为了修改这两个文件而重启 sshd。保持当前管理会话,并从第二个会话分别测试允许和拒绝的地址;确认有效后再退出。若 sshd 不支持 libwrap,重启也不会让这些文件生效。

  1. 参考链接