• 1
  • 2
  • 3
  • 4
  • 5
阿里云主机ECS 首 页  »  帮助中心  »  云服务器  »  阿里云主机ECS
ECS Linux云服务器tengine环境fail2ban屏蔽攻击ip的方法
发布日期:2016-1-11 17:1:44

  基于tengine环境的web环境遭遇了cc攻击可通过类似ngx_lua_waf的方式拦截攻击,生成一些类似403或302的状态码,这些防御避免了业务被持续攻击,但还是会消耗服务器资源一旦达到一定数量级,也会严重影响到系统的性能,因此通过分析nginx的访问日志彻底屏蔽这些ip

  此处给出一个案例tengine环境结合fail2ban实现自动封禁http状态码为403的访问者ip地址

  tengine的环境配置和ngx_lua_waf的设置这里不再赘述,重点描述fail2ban的安装和配置

  1.安装fail2ban:

  yum install -y epel-release

  yum install -y fail2ban

  2.设置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 - - - - - -

  

  3.配置fail2ban

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

  3.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 =

  

  3.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

  

  时间和频率参数注释:

  bantime (屏蔽攻击ip的时间为多少秒)

  findtime(检测多少秒内的日志)

  maxretry (达到多少次就启动屏蔽)

  3.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

  3.4 启动fail2ban

  # /etc/init.d/fail2ban start

  Starting fail2ban: [ OK ]

  

  4.攻防效果的演示

  fail2ban策略生效之前

  

  生效之后

  

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