当前位置: > Linux服务器 > nginx >

SEnginx安全相关模块配置

时间:2015-10-06 22:33来源:www.it.net.cn 作者:IT
 SEnginx是nginx的一个变种版本,即在nginx的基础上增强了安全特性。鉴于国内相关配置文章不全,故补齐详细相关配置说明。



SEnginx官方主页http://www.senginx.org

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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;
            ...
        }
    }
}

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

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容