阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7安装fail2ban + Firewalld防止爆破与CC攻击

592次阅读
没有评论

共计 3257 个字符,预计需要花费 9 分钟才能阅读完成。




fail2ban 可以监视你的系统日志,然后匹配日志的错误信息执行相应的屏蔽动作。网上大部分教程都是关于 fail2ban + iptables 组合,考虑到 CentOS 7 已经自带 Firewalld,并且使用 Firewalld 作为网络防火墙更加简单方便,分享下 fail2ban + Firewalld 使用方法。

检查 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

安装 fail2ban

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

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

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

配置规则

新建 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 屏蔽端口

防止 SSH 爆破

如果您还在使用默认 SSH 端口(22),可能每天都会被扫描,强烈建议先参考《Linux 服务器之登录安全》加强服务器防护,或者可以使用 fail2ban 将恶意 IP 屏蔽。

继续修改 jail.local 这个配置文件,在后面追加如下内容:

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure
  • [sshd]:名称,可以随便填写
  • filter:规则名称,必须填写位于 filter.d 目录里面的规则,sshd 是 fail2ban 内置规则
  • port:对应的端口
  • action:采取的行动
  • logpath:需要监视的日志路径

到这一步,我们 jail.local 的规则看起来可能像下面这样子:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure

上面的配置意思是如果同一个 IP,在 10 分钟内,如果连续超过 5 次错误,则使用 Firewalld 将他 IP ban 了。输入 systemctl start fail2ban 启动 fail2ban 来试试效果。

使用另一台服务器不断尝试连接 SSH,并且不断的将密码输入错误,你会发现连续超过 5 次后直接连不上,说明 IP 被 ban 了,可以输入:fail2ban-client status sshd查看被 ban 的 IP,如下截图。

防止 CC 攻击

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

# 需要先新建一个 nginx 日志匹配规则
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填写如下内容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =

继续修改 vi /etc/fail2ban/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 日志路径。

防止 Wordpress 爆破

如果您经常分析日志会发现有大量机器人在扫描 wordpress 登录页面wp-login.php,虽然对方可能没成功,但是为了避免万一还是将他 IP 干掉为好。

# 需要先新建一个 nginx 日志匹配规则
vi /etc/fail2ban/filter.d/wordpress.conf
#填写如下内容
[Definition]
failregex = ^<HOST> -.* /wp-login.php.* HTTP/1\.."
ignoreregex =

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

[wordpress]
enabled = true
port = http,https
filter = wordpress
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log

当然,别忘记输入 systemctl restart fail2ban 重启 fail2ban 使其生效。

常用命令

# 启动
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
#如果上述命令出错,可尝试执行
fail2ban-client set sshd unbanip 192.168.111.111
#查看日志
tail /var/log/fail2ban.log

总结

fail2ban 已经内置很多匹配规则,位于 filter.d 目录下,包含了常见的 SSH/FTP/Nginx/Apache 等日志匹配,如果都还无法满足您的需求,您也可以自行新建规则来匹配异常 IP。使用 fail2ban + Firewalld 来阻止恶意 IP 是行之有效的办法,可极大提高服务器安全。

此文部分内容参考了:CentOS 7 安装 Fail2ban 防御暴力破解密码(配合 FirewallD)

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3257字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992604
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...