SEnginx安全相关模块配置

jopen 8年前

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;              ...          }      }  }

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

转载请注明出处,也欢迎偶尔逛逛我的小站,谢谢 :)