关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

fail2ban联动firewall防御CC攻击

发布时间:2021-03-22 12:40:03

准备工作

1、检查Firewalld是否启用

#如果您已经安装iptables建议先关闭

service iptables stop

#查看Firewalld状态

firewall-cmd --state

#启动firewalld

systemctl start firewalld

#设置开机启动

systemctl enable firewalld.service

启用Firewalld后会禁止所有端口连接,因此请务必放行常用的端口,以免被阻挡在外,以下是放行SSH端口(22)示例,供参考:

#放行22端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

#重载配置

firewall-cmd --reload

#查看已放行端口

firewall-cmd --zone=public --list-ports

2、安装fail2ban
fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

#CentOS内置源并未包含fail2ban,需要先安装epel源

yum -y install epel-release

#安装fial2ban

yum -y install fail2ban

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到,如果需要详细了解可自行搜索。

3、配置规则
新建jail.local来覆盖fail2ban的一些默认规则:

#新建配置

vi /etc/fail2ban/jail.local

#默认配置

[DEFAULT]

ignoreip = 127.0.0.1/8

bantime  = 86400

findtime = 600

maxretry = 5

#这里banaction必须用firewallcmd-ipset,这是fiewalll支持的关键,如果是用Iptables请不要这样填写

banaction = firewallcmd-ipset

action = %(action_mwl)s

参数说明:

ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔

bantime:屏蔽时间,单位为秒(s)

findtime:时间范围

maxretry:最大次数

banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口

 

防止CC攻击

这里仅以Nginx为例,使用fail2ban来监视nginx日志,匹配短时间内频繁请求的IP,并使用firewalld将其IP屏蔽,达到CC防护的作用。

#需要先新建一个nginx日志匹配规则

vi /etc/fail2ban/filter.d/nginx-cc.conf

#填写如下内容

[Definition]

failregex = <HOST> -.*- .*HTTP/1.* .* .*$

ignoreregex =

继续修改jail.local追加如下内容:

[nginx-cc]

enabled = true

port = http,https

filter = nginx-cc

action = %(action_mwl)s

maxretry = 20

findtime = 60

bantime = 3600

logpath = /usr/local/nginx/logs/access.log

上面的配置意思是如果在60s内,同一IP达到20次请求,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。

 

常用命令

#启动

systemctl start fail2ban

#停止

systemctl stop fail2ban

#开机启动

systemctl enable fail2ban

#查看被ban IP,其中sshd为名称,比如上面的[wordpress]

fail2ban-client status sshd

#删除被ban IP

fail2ban-client set sshd delignoreip 192.168.111.111

#查看日志

tail /var/log/fail2ban.log

 



/template/Home/Zkeys/PC/Static
翔云网络帮助中心