Fail2ban防止网站CC

Fail2ban可以通过日志监控操作防火墙规则,来达到屏蔽IP的功能,可以很好的避免SSH暴力破解和网站流量攻击。
安装Fail2ban前,可以先配置Nginx限制IP访问,具体操作请看我的另一篇博客:https://www.jianshu.com/p/3cb4c82633d1

安装Fail2ban:

yum -y install epel-release
yum repolist
yum -y install fail2ban

Fail2ban 结构

/etc/fail2ban ## fail2ban 服务配置目录
/etc/fail2ban/action.d ## iptables 、mail 等动作文件目录
/etc/fail2ban/filter.d ## 条件匹配文件目录,过滤日志关键内容
/etc/fail2ban/jail.conf ## fail2ban 防护配置文件
/etc/fail2ban/fail2ban.conf ## fail2ban 配置文件,定义日志级别、日志、sock 文件位置等

fail2ban.conf 默认配置(无需修改)

[Definition]

loglevel = 3 ## 定义日志级别,默认

logtarget = /var/log/fail2ban.log ## 定义 fail2ban 日志文件

socket = /var/run/fail2ban/fail2ban.sock ## sock 文件存放位置,默认

pidfile = /var/run/fail2ban/fail2ban.pid ## pid 文件存放位置,默认

jail.conf 防护配置(无需修改)

[DEFAULT] ## 全局设置,优先级最小

ignoreip = 127.0.0.1/8 ## 不受限制的 IP ,多组用空格分割

bantime = 600 ## 非法 IP 被屏蔽时间(秒),-1 代表永远封锁

findtime = 600 ## 设置多长时间(秒)内超过 maxretry 限制次数即被封锁

maxretry = 3 ## 最大尝试次数

backend = auto ## 日志修改检测机制(gamin 、polling 、auto 三种)

usedns = warn

[ssh-iptables] ## 分类设置(基于 SSHD 服务的防护)

enabled = true ## 是否开启防护,false 为关闭

filter = sshd ## 过滤规则 filter 名称,对应 filter.d 目录下的 sshd.conf

action = iptables[name=SSH, port=ssh, protocol=tcp] ## 动作参数
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] ## 邮件通知参数
                          ## 收件人地址           ## 发件人地址 
logpath = /var/log/secure ## 检测系统登陆日志文件

maxretry = 5 ## 最大尝试次数

filter.d目录下新建http-get-dos.conf

[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =

编辑 vi jail.local

[DEFAULT]
# Ban hosts for one hour:
bantime = 600
findtime = 60
maxretry = 3
backend = auto

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure
maxretry = 3
bantime = 60

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

# 此处引用刚才新建的http-get-dos.conf
[http-get-dos]
enabled = true
port = http
filter = http-get-dos
logpath = /home/wwwlogs/access.log
maxretry = 5
findtime = 60
bantime = 300
action = iptables[name=HTTP,port=http,protocol=tcp]

[sshd]
enabled = true

Fail2ban操作(如果重启 iptables ,必须重启 fail2ban):

# 如果配置出错,请用此条命令启动,可以看到错误日志
/usr/bin/fail2ban-client -x start
# 启动
service fail2ban start
# 重启
service fail2ban restart
# 停止
service fail2ban stop
# 查看状态
fail2ban-client status 
# 以行数方式显示防火墙规则
iptables -L -n --line-numbers
# 删除指定规则
iptables -D INPUT 5
# 显示防火墙规则
iptables -nL 
# 查看拦截日志
tail -1 /var/log/fail2ban.log
# 系统登陆日志
cat /var/log/secure 
# centos7可以用如下命令重启服务
systemctl restart fail2ban.service
sudo systemctl restart fail2ban

如果提示拦截日志不存在,请修改日志路径:

vi fail2ban.conf
loglevel = WARNING
logtarget = /var/log/fail2ban.log

解除屏蔽:

# 显示防火墙规则列表,并显示行号
iptables -L -n --line-numbers
# 删除指定规则的某行
iptables -D f2b-sshd 1
# fail2ban删除屏蔽IP
iptables -D f2b-HTTP -s 117.174.26.150 -j REJECT
fail2ban-client set http-get-dos unbanip 117.174.26.150

定时清理日志:

vi /root/del_cc_log.sh
#! /bin/bash
cat /dev/null > /home/wwwlogs/access.log
cat /dev/null > /var/log/fail2ban.log

授权

chmod 755 del_cc_log.sh

定时任务:

crontab -e
30 3 * * 0 sh /root/del_cc_log.sh

开启crontab:

/etc/init.d/crond start
chkconfig --list|grep crond

配置用例:

--屏蔽ssh探测
vi /etc/fail2ban/jail.conf

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure 
maxretry = 10 
bantime = 144000

Copy其他规则:

cd /etc/fail2ban/filter.d
cp apache-badbots.conf nginx-badbots.conf
vim nginx-badbots.conf

规则校验:

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-badbots.conf

创建jail规则:

vim /etc/fail2ban/jail.d/nginx.local

例如:

例如:

[nginx-badbots]

enabled  = true
port     = http,https
filter   = nginx-badbots
logpath  = /home/wwwlogs/access.log
           /home/wwwlogs/www.sijitao.net.log
maxretry = 3

邮件支持

yum install sendmail

启动

service sendmail start
如果遇到“ 没有目录/ var / run / fail2ban包含套接字文件/var/run/fail2ban/fail2ban.sock ”的错误,请手动创建目录:
mkdir /var/run/fail2ban

配置邮件:

vi jail.conf
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] ## 邮件通知参数
                          ## 收件人地址           ## 发件人地址 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值