fail2ban[防止linux服务器被暴力破解]
一 介绍fail2ban
fail2ban 可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH、 SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用、很 强大的软件!
功能和特性:
1、支持大量服务。如sshd,apache,qmail,proftpd,sasl等等
2、支持多种动作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等。
3、在logpath选项中支持通配符
4、需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具)
5、需要安装python,iptables,tcp-wrapper,shorewall,Gamin。如果想要发邮件,那必需安装postfix或sendmail
核心原理:
其实fail2ban就是用来监控,具体是调用iptables来实现。
二 试试
配置yum,安装服务
1 | [root @SeDion ~]# vim /etc/yum.repos.d/CentOS-Base.repo |
最后新增:
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms gpgcheck=1 enabled=1
yum装fail2ban(如果装过 就把它卸载了)
1 | [root @SeDion ~]# yum -y install fail2ban |
服务配置目录为:
rpm -ql fail2ban
/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
/etc/rc.d/init.d/fail2ban #启动脚本文件
查看主配置定义
1 | [root @SeDion ~]# cat /etc/fail2ban/fail2ban.conf |grep -v ^# |
#我们需要做的就是把这行改成 logtarget = /var/log/fail2ban.log,方便用来记录日志信息
查看主要配置文件
1 | [root @SeDion ~]# cat /etc/fail2ban/jail.conf |grep -v ^# |less |
[DEFAULT] #全局设置
ignoreip = 127.0.0.1 #忽略的IP列表,不受设置限制(白名单)
bantime = 600 #屏蔽时间,单位:秒
findtime = 600 #这个时间段内超过规定次数会被ban掉
maxretry = 3 #最大尝试次数
backend = auto #日志修改检测机制(gamin、polling和auto这三种)
[ssh-iptables] #针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置
enabled = true #是否激活此项(true/false)
filter = sshd #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp] #动作的相关参数
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] #触发报警的收件人
logpath = /var/log/secure #检测的系统的登陆日志文件
maxretry = 5 #最大尝试次数
三 应用
ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机
动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )是默认。
所以配置主要在jail.conf文件
1 | [root @SeDion ~]# vi /etc/fail2ban/jail.conf |
改为3.
启动服务:
1 | [root @SeDion ~]# service fail2ban start |
测试:
测试发现确实有一定的延迟。多进行几次
查看禁止ip:
1 2 3 4 5 | [root @SeDion ~]# iptables -L |tail - 4 Chain fail2ban-SSH ( 1 references) target prot opt source destination DROP all -- 192.168 . 2.5 anywhere RETURN all -- anywhere anywhere |
查看fail2ban记录文件:
1 | [root @SeDion ~]# vi /etc/fail2ban/jail.conf |
1 2 3 | 2014 - 01 - 11 20 : 26 : 02 , 453 fail2ban.actions: WARNING [ssh-iptables] Ban 192.168 . 2.5 2014 - 01 - 11 20 : 26 : 20 , 923 fail2ban.actions: WARNING [ssh-iptables] 192.168 . 2.5 already banned 2014 - 01 - 11 20 : 26 : 42 , 946 fail2ban.actions: WARNING [ssh-iptables] 192.168 . 2.5 already banned |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库