设置SSH登录IP白名单,过滤非法IP密码登录请求
2020-01-08 本文已影响0人
上谷剑客
白名单的应用场景
当Linux服务器暴露在公网时,不可避免地会受到大量ssh登录请求,这些请求大多是黑客在尝试暴力破解ssh密码。笔者做过实验,将1台服务器暴露在公网,只开放ssh服务的22端口,一晚上收到了5000多次来自世界各地不同IP源地址的失败的登录尝试。为了应对SSH暴力破解的威胁,采取一定的防护措施是很有必要的。
在某些应用场景,登录Linux服务器进行操作的只有若干个固定IP地址,例如某公司有固定IP地址的企业专线,大家的电脑就会通过这些固定IP和公网交互,这时部署在公网的Linux服务器收到的ssh登录请求,源地址就是这些固定IP地址,这时就可以设置白名单,只允许特定的IP地址访问,来自其它IP地址的ssh登录请求会被驳回。
本文目标
- 设置SSH登录IP白名单,只允许特定IP用密码登录
操作步骤
- 修改 /etc/ssh/sshd_config 配置文件,找到 PasswordAuthentication 字段,将其改为
PasswordAuthentication no
这样在整体上关闭了密码登录; - 在 /etc/ssh/sshd_config 配置文件末尾,添加一句:
Match Address XXX.XXX.XXX.XXX
PasswordAuthentication yes
其中 XXX.XXX.XXX.XXX 是允许登录的特定的IP地址,也就是本文所指白名单,这句话是指,当登录IP匹配 XXX.XXX.XXX.XXX 的形式时,允许采用密码登录。
这里可以添加多个IP地址,可以使用通配符,例如:
Match Address 192.168.1.*,192.168.2.8,192.168.2.100
PasswordAuthentication yes - 重启sshd服务:
(RedHat) service sshd restart
(Ubuntu) systemctl restart sshd
注意事项
一定要再三确认自己使用的客户端计算机的公网IP地址,重启sshd服务后,除了在白名单上的IP,来自其余IP的密码登录均会被屏蔽。