设置SSH登录IP白名单,过滤非法IP密码登录请求

白名单的应用场景

  当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的密码登录均会被屏蔽。

你可能感兴趣的:(设置SSH登录IP白名单,过滤非法IP密码登录请求)