fail2ban 防暴力破解

本文详细介绍在CentOS7系统中如何安装和配置Fail2Ban防火墙,通过设置SSH服务的登录失败次数限制,实现对恶意登录行为的自动封锁。包括使用yum安装Fail2Ban,编辑配置文件jail.conf,以及测试Fail2Ban的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本测试需要的环境:
1)系统: centos7
2) python 版本大于2.4
具体操作步骤:

  1. 编译安装fail2ban需要从官网下载包,解压安装即可
    2.使用yum安装fail2ban
    [root@zmedu63 ~]# yum -y install epel-release
    [root@zmedu63 ~]# yum -y install fail2ban
    3.相关主要文件说明
    /etc/fail2ban/action.d
    #动作文件夹,内含默认文件。iptables以及mail等动作配置。
    /etc/fail2ban/fail2ban.conf
    #定义了fai2ban日志级别、日志位置及sock文件位置。
    /etc/fail2ban/filter.d
    #条件文件夹,内含默认文件。过滤日志关键内容设置。
    /etc/fail2ban/jail.conf
    #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值。
  2. fail2ban测试
    一般情况下对于10分钟内120次单个IP对服务器密码登录验证失败,我们就认为是机器所谓,也就是暴力破解。
    但为了测试方便,我们按照下面的测试条件来进行测试:
    设置条件:SSH远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。
    因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用SSHD服务的日志分析,指定动作阀值即可。
    实例文件/etc/fail2ban/jail.conf及说明如下:
    [root@zmedu63 ~]# vim /etc/fail2ban/jail.conf
    [DEFAULT]
    #全局设置。
    ignoreip = 127.0.0.1/8
    #忽略的IP列表,不受设置限制。
    bantime = 600
    #屏蔽时间,单位:秒。
    findtime = 600
    #这个时间段内超过规定次数会被ban掉。
    maxretry = 60
    #最大尝试次数。
    backend = auto
    #日志修改检测机制(gamin、polling和auto这三种)。
    [sshd]
    #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
    port = ssh
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s
    #加入如下内容
    enabled = true
    #是否激活此项(true/false)修改成 true。
    filter = sshd
    #过滤规则filter的名字,对应filter.d目录下的sshd.conf。
    action = iptables[name=SSH, port=ssh, protocol=tcp] #动作的相关参数,对应action.d/iptables.conf文件。
    sendmail-whois[name=SSH,
    dest=you@example.com,
    sender=fail2ban@example.com, sendername=“Fail2Ban”]
    #触发报警的收件人。
    logpath = /var/log/secure
    #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath = /var/log/sshd.log 。
    #5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下。
    bantime = 3600
    #禁止用户IP访问主机1小时。
    findtime = 300
    #在5分钟内内出现规定次数就开始工作。
    maxretry = 3
    #3次密码验证失败。
  3. 启动服务
    [root@zmedu63 ~]# systemctl start fail2ban
    #启动fail2ban服务。
    [root@zmedu63 ~]# systemctl enable fail2ban
    #设置开机自动启动。
    6.测试
    [root@zmedu63 ~]# > /var/log/secure
    #清空日志内容。
    [root@zmedu63 fail2ban]# systemctl restart fail2ban
    #重启fail2ban服务。
    [root@zmedu63 ~]# iptables -L –n
    #在fail2ban服务启动后,iptables会多生成一个规则链
    7.测试:故意输入错误密码3次,再进行登录时,会拒绝登录。
    [root@zmedu64 ~]# ssh 192.168.1.63
    root@192.168.1.63’s password:
    #故意输入错误密码。
    Permission denied, please try again.
    root@192.168.1.63’s password:
    #故意输入错误密码。
    Permission denied, please try again.
    root@192.168.1.63’s password:
    #故意输入错误密码。
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    [root@zmedu64 ~]# ssh 192.168.1.63
    ssh: connect to host 192.168.1.63 port 22: Connection refused
    [root@zmedu63 ~]# iptables -L |tail -4
    #可以查看到192.168.1.64该IP被iptables禁止所有访问。
    Chain fail2ban-SSH (1 references)
    target prot opt source destination
    REJECT all – 192.168.1.64 anywhere
    RETURN all – anywhere anywhere
    [root@zmedu63 ~]# fail2ban-client status
    #配置好之后我们检测下fail2ban是否工作。
    Status
    |- Number of jail: 1
    - Jail list: sshd #具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。 [root@zmedu63 ~]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 |- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
    - Actions |- Currently banned: 1 |- Total banned: 1- Banned IP list: 192.168.1.64
  4. 查看fail2ban的日志能够看到相关的信息。
    [root@zmedu63 ~]# tail /var/log/fail2ban.log
    2019-4-07 16:11:01,476 fail2ban.actions [27932]: NOTICE [sshd] Ban 192.168.1.64
    需要注意的2点:
    (1)另外如果后期需要把iptables清空后或iptables重启后,也需要把fail2ban重启一下。
    (2)如果修改ssh默认端口22为2015后,配置fail2ban来监控SSHD服务需要修改配置文件
    例:
    [root@zmedu63 ~]# vim /etc/ssh/sshd_config
    改 17 #Port 22
    为 17 Port 2015
    [root@zmedu63 ~]# systemctl restart sshd
    [root@zmedu63 ~]# vim /etc/fail2ban/jail.conf
    #修改iptables动作中的端口号,默认为SSH,如图 1-11 所示。
    改:port=ssh
    为 port=2015
    修改fail2ban监听SSH端口
    重启服务即可
    [root@zmedu63 ~]# systemctl restart fail2ban
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值