系统运维

Fail2ban结合Firewalld防御实践

温馨提示:本文最后更新于2022-06-27 09:58:25,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光 · 6月27日 · 2022年 本文2046个字,预计阅读6分钟 4621次已读

一、Fail2ban介绍

Fail2Ban 是入侵检测软件框架,保护计算机免受暴力破解。Fail2ban由Python语言开发,Fail2ban可以监视系统日志,然后根据配置里的规则执行对应的屏蔽操作,例如你的Linux服务器有人尝试暴力破解SSH登入,则可以通过Fail2ban调用Firewalld进行屏蔽。

Fail2ban结合Firewalld防御实践-浅时光

二、场景说明解释

最近进行改造自己的小破站时,登入到服务器发现执行一些命令特别卡顿,刚开始以为是自己的网络问题,发现不是网络问题后,又开始查看系统内存、CPU、磁盘IO等发现没有任何问题,后面就想到是不文章来源(Source):浅时光博客是自己的服务器有人在疯狂扫描呢?然后我通过下面的命令查看到居然有人尝试SSH登入我的服务器几万次

  • 查看尝试登录失败最多的ip
lastb | awk '{ print $3}' | sort | uniq -c | sort -n 
  • 然后我就通过iptables进行屏蔽拉黑,但是后面想一想每次去文章来源(Source):浅时光博客手动屏蔽不太现实,然后我就想到了Fail2ban这个软件程序,下面我就演示下这个软件如何使用。

三、Fail2ban安装

#包含在epel-release源中,所以需要首先安装epel-release源
yum install epel*

#CentOS安装
yum install fail2ban

#Ubuntu
apt-get install fail2ban
文章来源(Source):https://www.dqzboy.com
  • 安装成功后 Fail2ban 配置文件位于 /etc/fail2ban,其中 jail.conf 为主配置文件,相关的匹配规则位于filter.d目录

四、Fail2ban配置

1、防火墙配置

  • 我使用的是CentOS 7默认是firewalld,所以我这里需要放通必要的访问端口
#查看状态
firewall-cmd --state
#启动
systemctl start firewalld
#设置自动启动
systemctl enable firewalld

#开启一些必要的端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

#查看已经放通的端口
firewall-cmd --list-all

2、配置规则

文章来源(Source):浅时光博客
  • 新建 jail.local 来覆盖 Fail2ban 的一些默认规则
~]# vim /etc/fail2ban/jail.local 
[DEFAULT]
# 指定哪些地址可以忽略 fail2ban 屏蔽
ignoreip = 127.0.0.1/8
# 客户端IP被封禁时长
bantime  = 24h
# 在多长时间内允许尝试
findtime = 10m
# 允许客户端尝试失败的次数
maxretry = 5
# 屏蔽IP所使用的方法
banaction = firewallcmd-ipset
action = %(action_mwl)s

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

3、启动程序

systemctl start fail2ban.service 
systemctl enable fail2ban.service 
systemctl status fail2ban.service

五、Fail2ban测验

  • 为了方便测试,我们需要将上面规则策略时间和次数调整下,配置成客户端在10秒内尝试SSH连接失败3次则进行防御,接下来我们进行测试
  • 测试之前查看Fail2ban sshd的情况
~]# fail2ban-client status sshd
Fail2ban结合Firewalld防御实践-浅时光
  • 现在通过ssh客户端工具连接然后连续故意输错3次密码来查看效果
Fail2ban结合Firewalld防御实践-浅时光
  • 登入文章来源(Source):浅时光博客到Fail2ban服务器上查看已经封禁的IP
~]# fail2ban-client status sshd
Fail2ban结合Firewalld防御实践-浅时光
  • 解锁被Ban IP,可以使用下面命令删除
[root@localhost ~]# fail2ban-client set sshd delignoreip

[root@localhost ~]# fail2ban-client set sshd unbanip 192.168.66.61
1
[root@localhost ~]# 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:	0
   |- Total banned:	1
   `- Banned IP list:	

Fail2ban还可以配合Nginx这些去做防御;对于防御最好关闭Root远程登入,更改SSH的远程访问端口等




关注本站官方微信公众号『精彩程序人生』

扫描左侧二维码关注我们的微信公众帐号,在微信公众帐号中回复【资料】即可获取各类互联网技术学习资料。
关注博主不迷路~


本文作者:浅时光
原文链接:https://www.dqzboy.com/9412.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息
免责声明:本站发布的内容(图片、视频和文字)以及一切破解补丁、注册激活和软件解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。访问和下载本站内容,说明您已同意上述条款!


0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

    本站已稳定运行: | 耗时 0.230 秒 | 查询 74 次 | 内存 10.78 MB