安装 fail2ban

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

设置 Nginx 的访问日志格式

这个是设置 fail2ban 封禁的关键因素

 
log_format  main  '$remote_addr $status $request $body_bytes_sent [$time_local]  $http_user_agent $http_referer  $http_x_forwarded_for $upstream_addr $upstream_status $upstream_cache_status $upstream_response_time';
access_log logs/access.log main;

攻击日志的信息:

 
42.120.74.xxx 403 GET /ethnicity.php?id=../opt/nginx/conf/nginx.conf HTTP/1.1 2090 [03/Dec/2015:04:19:57 +0800]  curl/7.29.0 -  - - - - -

配置 fail2ban

CC 攻击的 IP 会经过 Nginx和 lua 处理后,访问状态变为 403,根据 Nginx的访问日志格式,设置 fail2ban 过滤这些 IP 和 403 状态,加入黑名单攻击的 IP 就被临时封禁了

1) 新建 fail2ban 的规则文件 /etc/fail2ban/filter.d/nginx-403-CC.conf,这个和 nginx 的日志 log_format 设置位置是吻合的,这个很关键:

 
# cat /etc/fail2ban/filter.d/nginx-403-cc.conf
[Definition]
failregex =403.(GET|POST)*.*HTTP/1.*$
ignoreregex =

2)  新建 fail2ban 的配置文件 /etc/fail2ban/jail.d/nginx-anti-403.conf。这里配置的是封禁的规则相关的,日志的路劲是自定义的,需要和当前的路劲是一致的:

 
# cat /etc/fail2ban/jail.d/nginx-anti-403.conf
[nginx-anti-403]
enabled = true
port = http
filter = nginx-403-cc
logpath = /opt/nginx/logs/access.log
findtime = 6
bantime = 900
maxretry = 9

时间和频率参数注释:
findtime(检测多少秒内的日志)
bantime (屏蔽攻击ip的时间为多少秒)
maxretry (达到多少次就启动屏蔽)

3) 修改 fail2ban 的防火墙相关的配置

当前版本 fail2ban 在执行 iptables 命令时,会加上了 -w 参数防止规则冲突,iptables-1.4.20 以后才有这个参数,而 CentOS 6 的 iptables 是1.4.7,导致 iptables 规则添加失败,解决方法是删除 iptables -common.conf 中的 执行如下命令即可无任何的返回就是成功的:

 
#sed -i 's/iptables = iptables/iptables = iptables/' /etc/fail2ban/action.d/iptables-common.conf 

4) 启动 fail2ban

 
# /etc/init.d/fail2ban start
Starting fail2ban: [ OK ]

攻防效果的演示

fail2ban 策略生效之前:

生效之后:

再看下防护墙规则(这个规则是 fail2ban 自动添加的):

本文来自阿里云文档中心!!!

nginx环境安装配置fail2ban屏蔽攻击ip的更多相关文章

  1. Linux Nginx环境安装配置redmine3.1

    作者博文地址:https://www.cnblogs.com/liu-shuai/ 环境: CentOS-6.5+Nginx-1.8.0+Redmine-3.1.1+Ruby-2.0 1.配置环境 1 ...

  2. nginx初级安装配置

    nginx初级安装配置 转自:(lykyl原创)http://www.cnblogs.com/lykyl/archive/2012/11/21/2781077.html 实验环境:系统 CENTOS5 ...

  3. nginx php-fpm安装配置 CentOS编译安装php7.2

    CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...

  4. Linux下xampp集成环境安装配置方法 、部署bugfree及部署禅道

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非 ...

  5. [转载]SharePoint 2013测试环境安装配置指南

    软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...

  6. nginx+tomcat安装配置

    nginx+tomcat安装配置 # nginx+tomcat安装配置 #创建网站目录 mkdir -p /www/wwwroot cd /www #安装配置 wget http://mirrors. ...

  7. Nginx的安装配置和tomcat负载均衡

    Nginx简介 什么是nginx? Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试ngi ...

  8. Nginx+nagios安装配置

    Nginx+nagios安装配置 [root@Nagios ~]# vi /etc/nginx/nginx.conf server { listen ; server_name localhost; ...

  9. 基准测试-jmeter压力测试activeMQ之一环境安装配置

    jmeter压力测试activeMQ 摘要:linux(CentOS)单机activeMQ安装.window(2008Server)Jmeter配置activeMQ包.Jmeter配置linux监控 ...

随机推荐

  1. ReentrantLock和condition源码浅析(二)

    转载请注明出处... 接着上一篇的ReentrantLock和condition源码浅析(一),这篇围绕着condition 一.condition的介绍 在这里为了作对比,引入Object类的两个方 ...

  2. npm、webpack、vue-cli 快速上手版

    Node.js   npm 什么是Node.js  以及npm 简单的来说 Node.js 就是运行在服务端的JavaScript,基于Chrome V8 引擎的. npm 是Node.js 的包管理 ...

  3. Redis自学笔记:2.准备

    第2章:准备 '纸上得来终觉浅,绝知此事要躬行'--陆游 2.2启动和停止redis 表2-1 redis可执行文件说明 文件名 说明 redis- server redis服务器 redis-cli ...

  4. BZOJ.5286.[AHOI/HNOI2018]转盘(线段树)

    BZOJ LOJ 洛谷 如果从\(1\)开始,把每个时间\(t_i\)减去\(i\),答案取决于\(\max\{t_i-i\}\).记取得最大值的位置是\(p\),答案是\(t_p+1+n-1-p=\ ...

  5. 潭州课堂25班:Ph201805201 django 项目 第五课 静态页面转为模板 (课堂笔记)

    一.分析静态页面   1.静态vs动态 条目 静态页面 动态页面 网站内容 固定不变 经常变动 浏览器加载速度 更快(无需向服务器发起请求) 更慢 改变网站内容 很难(修改或者创建新的html页面) ...

  6. BZOJ4167 : 永远的竹笋采摘

    首先枚举出所有可能成为区间最小差值的点对$(j,i)$. 枚举每个位置作为右端点$i$,假设$a[j]>a[i]$. 找到第一个这样的$j$,那么可以将下一个$a[j]$的范围缩小到$(a[i] ...

  7. Making the Grade [POJ3666] [DP]

    题意: 给定一个序列,以最小代价将其变成单调不增或单调不减序列,代价为Σabs(i变化后-i变化前),序列长度<=2000,单个数字<=1e9 输入:(第一行表示序列长度,之后一行一个表示 ...

  8. c++ 引用犯的一个错

    void cal(int * &a) { ................ } int main() { int x=1; int *p=x; cal( &x );//出错 cal( ...

  9. Selenium Java环境配置

    Selenium Java环境配置 上次配置的是C#的环境,今天主要来配置一下Java环境. 首先,对于java环境配置最基础的JDK和JRE 先前我做过配置,这里就不重述了,网上的教程超级多.在基础 ...

  10. “百度杯”CTF比赛 九月场---123

    右键查看源代码 然后构造user.php,显示空白,源码也是空白,既然上边说用户名,密码了,参考大佬的博客,放文件user.php.bak这是备份文件,一打开上边全是用户名,有戏,爆破 添加字典,也就 ...