Centos7 install fail2ban
@ 安惪坔 · Tuesday, Jun 16, 2020 · 2 分钟阅读 · 更新于 Jun 16, 2020

在 Centos7 上配置 fail2ban 防止 cc 攻击

参考

1. 启动防火墙

# 启动firewalld
systemctl start firewalld
# 设置开机启动
systemctl enable firewalld.service

# 放行必要的端口(一个或多个)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port={22,80,443}/tcp  --permanent
# 重载配置
firewall-cmd --reload
# 查看已放行端口
firewall-cmd --zone=public --list-ports

2. 安装 fail2ban

# CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
# 安装fial2ban
yum -y install fail2ban

3. 配置 fail2ban, 路径(/etc/fail2ban)

# 新建jail.local来覆盖fail2ban的一些默认规则:
vim /etc/fail2ban/jail.local
# 默认配置
[DEFAULT]
# IP白名单,白名单中的ip不会屏蔽,可以填多个以英文(,)逗号隔开
ignoreip = 127.0.0.1/8
# 屏蔽时间,单位为秒
bantime = 86400
# 时间范围
findtime = 600
# 最大次数
maxretry = 5
# 这是屏蔽IP所用的方法,这里使用firewalld屏蔽端口,这里banaction必须用firewallcmd-ipset,这是firewalld支持的关键,如果是iptables则不能这么写
banaction = firewallcmd-ipset
action = %(action_mwl)s

3.1 防止 ssh 爆破

作用: 如果同一个 IP 在 10 分钟内,连续超过 5 次密码错误,则使用 Firewalld 将它的 IP ban 了。

vim /etc/fail2ban/jail.local 追加以下内容
# 名称,可以随便写
[sshd]
enable = true
# 规则名称,必须填写位于filter.d目录中的规则,sshd是fail2ban内置规则
filter = sshd
# docker中的容器,否则不起作用,非docker部署则不需要(因为docker走的chain与默认的不同)
chain = DOCKER-USER
# 端口号
port = 22
# 采取措施
action = %(action_mwl)s
# 日志路径
logpath = /var/log/secure

3.2 防止 cc 攻击

以 Nginx 为例,使用 fail2ban 来监视 nginx 日志,匹配短时间内频繁请求的 IP,并使用 firewalld 将其 IP 屏蔽,达到 CC 防护的作用。 作用:如果 60s 内,同一 IP 达到 30 次请求,将其 IP ban1 小时。

# 因fail2ban没有内置,需先新建一个nginx日志匹配规则
vim /etc/fail2ban/filter.d/nginx-cc.conf
# 写入以下内容
[Definition]
failregex = -.*- .*HTTP/1.* .* .*$
ignoreregex =

# 追加jail.local
vim /etc/fail2ban/jail.local
[nginx-cc]
enabled = true
port = http, https
# docker中的容器,否则不起作用,非docker部署则不需要(因为docker走的chain与默认的不同)
chain = DOCKER-USER
filter = nginx-cc
action = %(action_mwl)s
maxretry = 30
findtime = 60
bantime = 3600
logpath = /var/log/nginx/access.log

4. 常用命令

# 查看配置状态
fail2ban-client status

#查看被ban IP,其中sshd为名称,比如上面的[nginx-cc]
fail2ban-client status sshd

# 解锁ip
fail2ban-client set sshd unbanip IPADDRESS(eg:10.0.0.2)

# 查看登录失败日志
cat /var/log/secure | grep 'Failed password'

#查看日志
tail /var/log/fail2ban.log

感谢

如果觉得我恰好对你有帮助,可以请我吃辣条!

wechat

It is better to attach some information or leave a message so that I can record the donation 📝, thank you very much 🙏.

关于我

一只肥宅,丑女,又宅又丑…

毕业院校: 白马书院

家庭住址: 大荒山无稽崖斜月三星洞