• Centos7配置fail2ban防止ssh被暴力破解


    Centos7配置fail2ban防止ssh被暴力破解

    2018年7月15日 
     原文链接:
    https://blog.whsir.com/post-3063.html

    当前系统centos7.5

    1、配置epel源

    2、安装fail2ban

    3、查看当前版本

    4、配置

    在最后添加以下内容

    maxretry表示最大尝试次数达到3次,bantime客户端300秒内禁止连接

    5、启动fail2ban服务

    6、验证

    启动后验证fail2ban是否正常运行

    正常响应内容为Server replied: pong

    7、测试

    连接当前主机,连续输错三次密码则会拒绝连接

    查看被禁止的IP

    此处ssh-iptables为jail.local的[ssh-iptables]名称

    可以在/var/log/fail2ban.log查看屏蔽日志

    5分钟后自动解除

    CentOS/RHEL 6:

    1
    sudo chkconfig fail2ban on

    Fedora 或 CentOS/RHEL 7:

    1
    sudo systemctl enable fail2ban

    ---------------------------

    虽然SSH作为连接服务器的协议是非常安全的,但是一直暴露在公网中的SSH端口可能会遭受hacker的暴力破解。任何公网上的服务器都是潜在的被攻击对象。

    Fail2ban是一个开源的入侵保护框架,它会监控对应的系统日志,并根据检测的可疑行为从而厨房相应的防御动作。Fail2ban可疑根据SSH登陆错误次数,在防火墙iptables中临时增加一条规则,从而防止恶意登陆,达到恶意登陆的目的。

    CentOS 7 安装Fail2ban

    因为 Fail2ban 在 EPLE (Extra Packages for Enterprise Linux)中不在官方软件仓库中,所以需要先安装 eple-release

    1
    2
    yum update
    yum install epel-release

    安装 Fail2ban

    1
    yum install fail2ban

    安装完成后启动 Fail2ban

    1
    systemctl enable fail2ban

    设置 Fail2ban 开机启动

    CentOS/RHEL 6:

    1
    sudo chkconfig fail2ban on

    Fedora 或 CentOS/RHEL 7:

    1
    sudo systemctl enable fail2ban

    配置 Fail2ban

    Fail2ban 的配置文件是 /etc/fail2ban/jail.conf,可以通过配置该文件创建自己的拦截规则。但是因为在升级软件包的过程中会覆盖掉这个文件,所以建议新建一个/etc/fail2ban/jail.local文件而非直接编辑默认配置文件。

    1
    vim /etc/fail2ban/jail.local

    写入如下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [DEFAULT]

    #### 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名
    #### 用于指定哪些地址可以忽略 fail2ban 防御
    ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24

    #### 客户端主机被禁止的时长(秒)
    bantime = 86400

    #### 客户端主机被禁止前允许失败的最大次数
    maxretry = 5

    #### 查找失败次数的时长(秒)
    findtime = 600

    #### 覆写 `/etc/fail2ban/jail.d/00-firewalld.conf`
    banaction = iptables-multiport

    #### 开启sshd

    [sshd]
    enabled = true

    重启 Fail2ban

    1
    systemctl restart fail2ban

    查看 Fail2ban 状态

    1
    2
    3
    4
    5
    # fail2ban-client status

    Status
    |- Number of jail: 1
    `- Jail list: sshd

    验证 Fail2ban 运行正常,通过 ping 参数运行 fail2ban-client 命令。如果 Fail2ban 正常,则如下所示:

    1
    2
    # sudo fail2ban-client ping
    Server replied: pong

    查询某个特定 jail 的状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #### sudo fail2ban-client status sshd
    Status for the jail: sshd
    |- Filter
    | |- Currently failed: 6
    | |- Total failed: 12
    | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
    `- Actions
    |- Currently banned: 1
    |- Total banned: 1
    `- Banned IP list: 8.8.8.8 #被屏蔽的IP

    如果错误的屏蔽了某个 IP 可以使用下列命令:

    1
    # sudo fail2ban-client set ssh-iptables unbanip 8.8.8.8

    Fail2ban 其它命令:

    1
    2
    3
    4
    5
    6
    7
    8
    #### 最近一次启动日志
    journalctl -b -u fail2ban

    #### fail2ban日志
    tail -F /var/log/fail2ban.log

    #### 显示防火墙规则
    iptables -L -n

    Fail2ban 不仅可以屏蔽 SSH 暴力破解,还可应用于 Web 服务器、SMTP、FTP、DNS 等服务器监控。

  • 相关阅读:
    mysql 分库分表
    策略模式
    JAVA NIO 选择器
    有关于web server架构的一个小疑问
    Android 吸入动画效果详解
    android中设置TextView/Button 走马灯效果
    浅谈Jquery的使用上篇
    ORA-00376:file x cannot be read at this time
    用VBA宏从一个工作薄复制内容到另一个工作薄
    ovirt node的安装简介
  • 原文地址:https://www.cnblogs.com/zafu/p/14395719.html
Copyright © 2020-2023  润新知