nginx環境安裝配置fail2ban屏蔽攻擊ip

 

安裝 fail2ban

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

設置 Nginx 的訪問日誌格式 

這個是設置 fail2ban 封禁的關鍵因素php

 
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;

4.png 

攻擊日誌的信息:nginx

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

5.png 

配置 fail2ban

CC 攻擊的 IP 會通過 Nginx和 lua 處理後,訪問狀態變爲 403,根據 Nginx的訪問日誌格式,設置 fail2ban 過濾這些 IP 和 403 狀態,加入黑名單攻擊的 IP 就被臨時封禁了sql

1) 新建 fail2ban 的規則文件 /etc/fail2ban/filter.d/nginx-403-CC.conf,這個和 nginx 的日誌 log_format 設置位置是吻合的,這個很關鍵:apache

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

3.png

2)  新建 fail2ban 的配置文件 /etc/fail2ban/jail.d/nginx-anti-403.conf。這裏配置的是封禁的規則相關的,日誌的路勁是自定義的,須要和當前的路勁是一致的:curl

 
# 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 (達到多少次就啓動屏蔽) ui

2.png

3) 修改 fail2ban 的防火牆相關的配置阿里雲

當前版本 fail2ban 在執行 iptables 命令時,會加上了 -w 參數防止規則衝突,iptables-1.4.20 之後纔有這個參數,而 CentOS 6 的 iptables 是1.4.7,致使 iptables 規則添加失敗,解決方法是刪除 iptables -common.conf 中的 執行以下命令便可無任何的返回就是成功的:lua

 

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

4) 啓動 fail2ban url

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

1.png 

攻防效果的演示

fail2ban 策略生效以前:spa

6.png

生效以後:

7.png

再看下防禦牆規則(這個規則是 fail2ban 自動添加的):

8.png

 

 

本文來自阿里雲文檔中心!!!

相關文章
相關標籤/搜索