SEnginx安全相關模塊配置
SEnginx是nginx的一個變種版本,即在nginx的基礎上增強了安全特性。鑒于國內相關配置文章不全,故補齊詳細相關配置說明。SEnginx官方主頁http://www.senginx.org
http {
#nginx原有配置
#定義一個10MB的內存用于SEnginx訪問統計
statistics_zone 10m;
#開啟全局IP黑名單
ip_blacklist on;
#存儲的IP數量
ip_blacklist_size 10240;
#IP在黑名單保留時間(秒)
ip_blacklist_timeout 120;
#名單保存在SEnginx內部
ip_blacklist_mode local;
#定義一個容量10MB的令牌空間,每個地址每秒只能請求10次(每秒補充10個令牌)
limit_req_zone $binary_remote_addr zone=mudoom:10m rate=10r/s;
#定義一個容量10MB的行為識別空間,最小有效請求數量是10個,采樣周期是2秒
ip_behavior_zone zone=brand:10m sample_base=10 sample_cycle=2s;
#定義IP白名單
geo $ip_wl {
#使用以地址段的形式定義地址
ranges;
default 0;
127.0.0.1-127.0.0.1 1;
}
#定義UA白名單,忽略常用網絡爬蟲
whitelist_ua $ua_wl {
#忽略大小寫
caseless;
"Baiduspider" ".*\.baidu\.com";
"Baidu-YunGuanCe-SLABot" ".*\.baidu\.com";
"Googlebot" ".*\.google\.com";
"360Spider" ".*\.360\.cn";
"360JK" ".*\.360\.cn";
"Sosospider" ".*\.soso\.com";
"Sogou web spider" ".*\.sogou\.com";
"bingbot" ".*\.bing\.com";
}
server{
#原有server配置
#定義一個虛擬server名,用于SEnginx訪問統計顯示
virtual_server_name www.mudoom.com;
#在當前server上開啟ip識別空間brand并進行敏感url訪問行為識別。
ip_behavior zone=brand type=sensitive_url;
#開啟機器人挑戰
location @process { #將全局IP白名單和User-Agent白名單作為機器人挑戰白名單
robot_mitigation_global_whitelist ua_var_name=ua_wl ip_var_name=ip_wl ip_var_value=1;
#開啟Robot Mitigation模塊(機器人緩解)
robot_mitigation on;
#機器人挑戰模式(JS)
robot_mitigation_mode js;
#黑名單失敗次數上限
robot_mitigation_blacklist 50;
#挑戰成功后的有效時間(秒)
robot_mitigation_timeout 600;
#關閉挑戰ajax類型的請求
robot_mitigation_challenge_ajax off;
#php-fpm等原有配置
fastcgi_pass 127.0.0.1:9000;
...
}
#請求可查看當前黑名單,安全起見需限定為內部訪問
location /blacklist_show { allow 127.0.0.1;
deny all;
ip_blacklist_show;
}
#請求可清空黑名單列表,安全起見需限定為內部訪問
location /blacklist_flush {
allow 127.0.0.1;
deny all;
ip_blacklist_flush;
} #請求可顯示SEnginx訪問統計,安全起見需限定為內部訪問
location /stats {
allow 127.0.0.1;
deny all;
statistics;
} #用于阻斷的location
location /RequestDenied {
return 403;
}
#使用安全模塊控制的location配置
location /mudoom {
#敏感資源標識
ip_behavior_sensitive;
#原有令牌100枚,超出則觸發機器人挑戰
limit_req zone=mudoom burst=100 forbid_action=@process condition=$cond;
#當請求非敏感資源的占比小于30%時觸發機器人挑戰
ifall ($insensitive_percent >= 0) ($insensitive_percent < 30) {
set $cond 1;
}
#將全局IP白名單和User-Agent白名單作為cookie防篡改白名單
cookie_poisoning_whitelist ua_var_name=ua_wl ip_var_name=ip_wl ip_var_value=1;
#cookie防篡改功能
cookie_poisoning off;
#指定發現cookie被篡改時執行的動作 block阻斷、pass放行 、remove刪除被篡改的cookie值
cookie_poisoning_action block;
#阻斷超過5次后加入黑名單
cookie_poisoning_action blacklist,5; #發現攻擊時,是否向error log中寫入log
cookie_poisoning_log on;
#將全局IP白名單和User-Agent白名單作為Naxsi白名單
naxsi_whitelist ua_var_name=ua_wl ip_var_name=ip_wl ip_var_value=1;
#啟動學習模塊
LearningMode;
#安全規則激活
#SecRulesEnabled;
#安全規則規避
#SecRulesDisabled;
#安全規則觸發行為
DeniedUrl "/RequestDenied"; #安全規則
CheckRule "$XSS >= 4" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 8" BLOCK;
CheckRule "$UPLOAD >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$SQL >= 8" BLOCK;
#php-fpm等原有配置
fastcgi_pass 127.0.0.1:9000;
...
}
}
}</pre>
SEnginx訪問統計返回部分變量說明:
|
變量 |
說明 |
|
traffic |
訪問量統計 |
|
cur_req |
當前請求數 |
|
req |
總相應請求數 |
|
res_2xx |
2xx請求數 |
|
res_3xx |
3xx請求數 |
|
res_4xx |
4xx請求數 |
|
res_5xx |
5xx請求數 |
|
sent |
發送數據量 |
|
recvd |
接受數據量 |
|
attack |
攻擊統計 |
|
sql |
SQL注入 |
|
xss |
XSS |
|
rfi |
遠程文件包含 |
|
dt |
目錄穿透 |
|
evade |
Evading tricks |
|
fu |
文件上傳 |
|
cp |
cookie篡改 |
|
wd |
網頁篡改 |
|
rm |
機器人挑戰 |
|
other |
其他 |
注意:SEnginx訪問統計保存在內存中,故每次nginx關閉后統計清零
源地址:https://www.mudoom.com/Article/show/classify_id/1/id/32.html By佐柱
轉載請注明出處,也歡迎偶爾逛逛我的小站,謝謝 :)
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!