SEnginx安全相關模塊配置

jopen 9年前發布 | 16K 次閱讀 SEnginx Linux

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