zoukankan      html  css  js  c++  java
  • 配置服务器SSH PAM防止暴力破解

    正常机器如果开启ssh可能会被暴力破解用户密码,可以配置ssh的pam限制登录失败时可以锁定用户一段时间,就算密码输入正确也无法登录,等恢复之后才可以再次进入,对于不同的发行版配置可能略有不同,对于redhat/centos/fedora系统是依赖pam_faillock.so模块来实现,位置在/usr/lib64/security/pam_faillock.so,对于debian/ubuntu则是依赖pam_tally2.so模块来实现,debian位置可能在/usr/lib/x86_64-linux-gnu/security/pam_tally2.so,而ubuntu可能在:/lib/x86_64-linux-gnu/security/pam_tally2.so,对于centos 7既有pam_faillock.so又有pam_tally2.so都在/usr/lib64/security下,那么下面是分别对于这两类系统的配置。

    1.pam_faillock redhat/centos/fedora

    具体的pam配置在/etc/pam.d下,对ssh服务的位置是:/etc/pam.d/sshd,打开第一行就可以发现引入了password-auth:

    然后可以直接编辑/etc/pam.d/password-auth,添加3行内容:

    注意上面标出的这3行内容添加的位置,顺序不能错,否则将登录不上去,最好提前开一个会话不要断开防止登录失败,第一行位置在pam_env.so下面,第二行在sufficient下面,第三行在account required pam_unix.so下面,这3行内容文本如下:

    auth        required                                     pam_env.so
    # 添加的第一行
    auth  required  pam_faillock.so preauth silent audit even_deny_root deny=6 unlock_time=180
    # ....
    auth        sufficient                                   pam_unix.so nullok try_first_pass
    # 添加的第二行
    auth  [default=die] pam_faillock.so authfail audit even_deny_root deny=6 unlock_time=180
    # ...
    
    account     required                                     pam_unix.so
    # 添加的第三行
    account required pam_faillock.so
    # ...

    注意启动even_deny_root表示对root用户也适用,否则只有普通用户有限制,修改完成之后保存并重启ssh服务生效:

    systemctl restart sshd

    重启后可以登录尝试,按照上面的限制如果超过6次登录错误会限制用户180秒,也就是3分钟,超过3分钟并且有用户登录成功错误数会被清零重新计数,使用faillock可以查看登录失败的统计信息:

    # root用户
    faillock --user root

    可以看到存在两次登录失败的记录,如果此时登录成功,那么记录会自动清除,管理员也可以手动reset:

    faillock --user root --reset
    # 再次查看就没有了
    faillock --user root

    这样被禁用的用户也可以再次登录了。

    2.pam_tally2  debian/ubuntu

    查看/etc/pam.d/sshd内容会看到引入了common-auth:

    所以编辑对应的配置:/etc/pam.d/common-auth,直接在最头部添加下面内容:

    auth  required  pam_tally2.so  deny=6 unlock_time=300 even_deny_root root_unlock_time=300

    同样even_deny_root表示root用户也会限制,后面要单独配置root_unlock_time,这里都是300秒,可以看到这种方式配置比较简单,现在保存后,重启sshd服务即可生效:

    systemctl restart sshd

    查看登录失败统计和清除次数同样使用下面的命令:

    pam_tally2 --user root
    # 或者简写-u
    pam_tally2 -u root
    # 清除次数
    pam_tally2 --user root --reset

    上面的用法和faillock基本上一样。

    另外centos 7.x同时支持faillock和pam_tally2的方式配置,正常只配置1种即可,注意配置的位置都是在/etc/pam.d/password-auth,按照pam_tally2方式配置也是在password-auth中配置,但是只在头部添加上面这1行内容即可,配置比较简单。

    综上,就是faillock和pam_tally2这两种方式的配置,总体看pam_tally2这种方式比较简单好用,faillock比较严格一些,比如对于centos 7这两种方式都支持,那么正常按照pam_tally2配置就可以了,因为比较简单。
    注意上面的配置都是对ssh登录方式前提下进行限制,如果是本地使用tty登录不影响,正常使用tty攻击方式也比较少见,如果配置需要通过/etc/pam.d/login来限制,这里不再详细叙述。
     
    另外ssh还有个通用的配置就是连续尝试几次密码登录失败的话,可以直接断开数据包,这样也可以防止连接一次后不断尝试,编辑配置文件:/etc/ssh/sshd_config,修改下面配置:
    MaxAuthTries 3

    表示最大重试次数为3,超过就会断开连接,同样保存后重启ssh服务即可生效,再次尝试超过3次连接就会被断开了:

    以上就是ssh安全防护方面常用到的一些配置。

  • 相关阅读:
    进程与线程
    Socket函数编程(二)
    socket编程
    subprocess 模块
    异常处理
    模块与包
    【Java基础】String源码分析
    【MySQL】 执行计划详解
    【MySQL】performance schema详解
    【Spring Cloud-Open Feign】使用OpenFeign完成声明式服务调用
  • 原文地址:https://www.cnblogs.com/freeweb/p/14755518.html
Copyright © 2011-2022 走看看