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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!