zoukankan      html  css  js  c++  java
  • 防止sshd服务被暴力破解

      方法有很多种,这里介绍两种。

    (1).配置安全的shhd设置

      不允许root用户直接登录到系统,添加一个普通用户,必要时再切换到root用户。

      修改默认端口号。

      不允许密码登录,只能通过密钥登录系统。

      root用户的密码足够复杂,足够长,可以包含大小写字母、数字和特殊符号。

      sshd配置信息详见:简单了解sshd_config配置文件

      sshd密钥登录详见:CentOS7做ssh免密登录

    (2).使用fail2ban来防护

    1)确认python的版本必须大于2.4

    [root@youxi1 ~]# python -V
    Python 2.7.5
    

    2)要有epel扩展源

    [root@youxi1 ~]# yum list installed | grep epel-release
    epel-release.noarch                   7-11                             @extras
    

    3)yum安装fail2ban

    [root@youxi1 ~]# yum -y install fail2ban

    4)修改配置文件

      说明:fail2ban的配置文件保存在/etc/fail2ban/目录下,其中主要的有action.d文件夹、fail2ban.conf文件与file2ban.d文件夹、filter.d文件夹、jail.conf和jail.d文件夹。action.d文件夹是动作文件夹,内含iptables和mail等动作配置。fail2ban.conf文件和fail2ban.d文件夹定义了日志级别、日志位置和sock文件位置。filter.d文件夹是过滤条件文件夹。jail.conf文件和jail.d文件夹是主要配置文件以及模块化。

    [root@youxi1 ~]# ls /etc/fail2ban/
    action.d       filter.d   paths-common.conf  paths-freebsd.conf
    fail2ban.conf  jail.conf  paths-debian.conf  paths-opensuse.conf
    fail2ban.d     jail.d     paths-fedora.conf  paths-osx.conf
    

      主要修改的就是/etc/fail2ban/jail.conf文件。这个配置文件中有许多模块,针对sshd服务需要修改的是[sshd]模块。初始的[sshd]模块只有三行:

    port    = ssh
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s
    

      在[sshd]模块中添加如下行:

    //激活sshd模块
    enabled = true
    //过滤条件,sshd是过滤条件,对应filter.d文件夹下的sshd.conf文件
    filter = sshd
    //动作,iptables是动作,对应action.d文件夹下的iptables.conf文件,并传递三个参数。如果ssh端口不是22,那么prot的值等于实际的端口号
    action = iptables[name=SSH,prot=ssh,protocol=tcp]
    //sendmail-whois是第二个动作,对应action.d文件夹下的sendmail-whois.conf文件,并传递四个参数
    //dest是接收邮箱,sender是发送邮箱,sendername是邮件标题
    sendmail-whois[name=SSH,dest=you@example.com,sender=fail2ban@example.com,sendername="Fail2Ban"]
    //日志文件地址
    logpath = /var/log/secure
    //禁止时间1小时
    bantime = 3600
    //指定规定时间为3分钟
    findtime = 180
    //规定时间内最大尝试次数
    maxretry = 3
    

    5)启动fail2ban并设置开机自启

    [root@youxi1 ~]# systemctl start fail2ban
    [root@youxi1 ~]# systemctl enable fail2ban
    Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.
    [root@youxi1 ~]# systemctl status fail2ban
    ● fail2ban.service - Fail2Ban Service
       Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
       Active: active (running) since 二 2019-05-14 15:59:01 CST; 28s ago
         Docs: man:fail2ban(1)
     Main PID: 12128 (fail2ban-server)
       CGroup: /system.slice/fail2ban.service
               └─12128 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/f...
    
    5月 14 15:59:01 youxi1 systemd[1]: Starting Fail2Ban Service...
    5月 14 15:59:01 youxi1 fail2ban-client[12125]: 2019-05-14 15:59:01,718 fail...7
    5月 14 15:59:01 youxi1 fail2ban-client[12125]: 2019-05-14 15:59:01,719 fail...e
    5月 14 15:59:01 youxi1 systemd[1]: Started Fail2Ban Service.
    Hint: Some lines were ellipsized, use -l to show in full.
    

    6)测试

      连续输错密码3次

    [root@youxi2 ~]# ssh 192.168.5.101
    The authenticity of host '192.168.5.101 (192.168.5.101)' can't be established.
    ECDSA key fingerprint is SHA256:l8MUM3o4X+Apo/ULW0VOVDhD0ylTANVQEIULquuH0AY.
    ECDSA key fingerprint is MD5:d2:4f:03:4d:34:67:2c:93:a6:29:ae:f3:cd:23:cf:de.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.5.101' (ECDSA) to the list of known hosts.
    root@192.168.5.101's password: 
    Permission denied, please try again.
    root@192.168.5.101's password: 
    Permission denied, please try again.
    root@192.168.5.101's password: 
    ^C
    [root@youxi2 ~]# ssh 192.168.5.101        
    ssh: connect to host 192.168.5.101 port 22: Connection refused
    

      另外在本地也可以使用iptables -nL查看被禁止的IP地址

    Chain f2b-SSH (1 references)
    target     prot opt source               destination         
    REJECT     all  --  192.168.5.102        0.0.0.0/0            reject-with icmp-port-unreachable
    RETURN     all  --  0.0.0.0/0            0.0.0.0/0 
    

      也可以使用fail2ban-client status查看。

    7)将被禁止的IP地址从黑名单中移除

      有可能手误被加到黑名单中了,但总不能等一小时吧。所以可以使用一下命令移除黑名单

    [root@youxi1 fail2ban]# fail2ban-client set sshd unbanip 192.168.5.102  //sshd对应的jail.conf中的模块名
    192.168.5.102
    

      fail2ban-client详细用法请看帮助说明

    8)注意

      iptables重启,那么fail2ban也需要重启。

      修改端口,fail2ban的jail.conf中[sshd]模块,iptables动作传递的port参数也需要修改,最后重启。

  • 相关阅读:
    Sqoop架构(四)
    为什么选择Sqoop?(三)
    Sqoop 是什么?(二)
    Sqoop 产生背景(一)
    Ambari是啥?主要是干啥的?
    Ambari架构及安装
    Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)
    Effective C++ -- 构造析构赋值运算
    pcduino v2安装opencv2.4.8
    Struts2 拦截器具体配置过程
  • 原文地址:https://www.cnblogs.com/diantong/p/10861861.html
Copyright © 2011-2022 走看看