配置Modsecurity实现Web应用防护系统,OWASP规则 nginx apache



https://www.modsecurity.org/

https://www.modsecurity.org/download.html

https://github.com/SpiderLabs/ModSecurity

https://github.com/SpiderLabs/ModSecurity/wiki

https://modsecurity.org/crs/

https://github.com/SpiderLabs/owasp-modsecurity-crs

https://coreruleset.org/installation/

https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

http://f2ex.cn/nginx-installed-configuration-modsecurity-waf/

https://www.netnea.com/cms/nginx-tutorial-6_embedding-modsecurity/


yum -y install mod_security
service httpd restart
yum -y install pcre pcre-devel libxml2-devel apr apr-devel apr-util apr-util-devel 
#wget http://www.lua.org/ftp/lua-5.3.4.tar.gz  && make linux tes
wget https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.2/modsecurity-2.9.2.tar.gz
tar -xzvf modsecurity-2.9.2.tar.gz

apache 安装:
cd modsecurity-2.9.2
./configure && make && make install
cp /usr/local/modsecurity/lib/mod_security2.so /usr/local/apache/modules/mod_security2.so
service httpd restart

nginx 安装: 

nginx -V
libModSecurity
yum install gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
yum install ftp://195.220.108.108/linux/fedora/linux/updates/23/x86_64/b/bison-3.0.4-3.fc23.x86_64.rpm
make
make install
nginx connector
# ensure env vars are set
export MODSECURITY_INC="/opt/ModSecurity/headers/"
export MODSECURITY_LIB="/opt/ModSecurity/src/.libs/"
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity-nginx
wget http://nginx.org/download/nginx-1.9.2.tar.gz
tar -xvzf nginx-1.9.2.tar.gz
cd /opt/nginx-1.9.2
cp /root/ModSecurity/src/.libs/libmodsecurity.so /usr/local/nginx/modules
/bin/cp -f /usr/sbin/nginx /usr/sbin/nginx_original_bkp
./configure --add-module=/opt/ModSecurity-nginx 
make
make install

mv /usr/local/nginx/conf/crs/rules/REQUEST-910-IP-REPUTATION.conf /usr/local/nginx/conf/crs/rules/REQUEST-910-IP-REPUTATION.conf.bak  # 异常,去除.
vi /usr/local/nginx/conf/nginx.conf
worker_processes auto;
...
load_module modules/ngx_http_modsecurity_module.so;
...
#Enable ModSecurity
modsecurity on;
modsecurity_rules '
    SecRuleEngine On
    SecRequestBodyAccess On
    SecAuditLogType Concurrent
    SecAuditLogDirMode 0777
    SecAuditLogFileMode 0550
    SecAction "id:900110,phase:1,pass,nolog,\
    setvar:tx.inbound_anomaly_score_threshold=5,\
    setvar:tx.outbound_anomaly_score_threshold=5"
    SecAction "id:900000,phase:1,pass,nolog,\
    setvar:tx.paranoia_level=1"
    Include /usr/local/nginx/conf/crs/crs-setup.conf
    Include /usr/local/nginx/conf/crs/rules/*.conf
';
...

service nginx restart

https://raw.githubusercontent.com/SpiderLabs/ModSecurity/master/modsecurity.conf-recommended


(apache)-OWASP规则-OWASP ModSecurity Core Rule Set (CRS)


cd /usr/local/apache/conf

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

mv owasp-modsecurity-crs   crs

cd crs

cp crs-setup.conf.example  crs-setup.conf

vi /usr/local/apache/conf/httpd.conf
# ModSecurity
LoadModule security2_module modules/mod_security2.so
<IfModule mod_security2_module>
 Include conf/crs/crs-setup.conf
 Include conf/crs/rules/*.conf
</IfModule>
# Whitelist file to control ModSec 
<IfModule mod_security2.c> 
SecRuleEngine On 
SecRequestBodyAccess On  
SecResponseBodyAccess On 
SecDataDir /tmp 
</IfModule>

service httpd restart

1.SecRuleEngine
是接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。
SecRuleEngine On: 将在服务器上激活ModSecurity防火墙。它会检测并阻止该服务器上的任何恶意攻击。
SecRuleEngine Detection Only: 如果这个规则是在whitelist.conf文件中设置的,它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。
SecRuleEngine Off:: 这将在服务器上上停用ModSecurity的防火墙。
2.SecRequestBodyAccess: 它会告诉ModSecurity是否会检查请求。它起着非常重要的作用,当一个Web应用程序配置方式中,所有的数据在POST请求中。它只有两个参数,ON或OFF。我们可以根据需求设置。
3.SecResponseBodyAccess: 在whiltelist.conf文件,如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数,ON和Off。我们可以根据求要进行设置。
4.SetDataDirectory: 在本文中,我们定义的ModSecurity的工作目录。该目录将作为ModSecurity的临时目录使用。

如果在服务器上已经平配置ModSecurity,服务器会根据配置阻止XSS攻击,以及生成错误日志。
我们可以检查ModSecurity的错误日志文件。
在/var/log/httpd/error_log
我们可以通过下面的命令来检查文件的最后更新的行。
tail –f /var/log/httpd/error_log

Christian Folini’s tutorials on installing ModSecurityconfiguring the CRS and handling false positives provide in-depth information on these topics.

ModSecurity核心规则集(CRS)提供以下类别的保户来防止攻击。

◆HTTP Protection (HTTP防御) - HTTP协议和本地定义使用的detectsviolations策略。 
◆Real-time Blacklist Lookups(实时黑名单查询) -利用第三方IP信誉。 
◆HTTP Denial of Service Protections(HTTP的拒绝服务保护) -防御HTTP的洪水攻击和HTTP  Dos 攻击。  
◆Common Web Attacks Protection(常见的Web攻击防护) -检测常见的Web应用程序的安全攻击。  
◆Automation Detection(自动化检测) -检测机器人,爬虫,扫描仪和其他表面恶意活动。  
◆Integration with AV Scanning for File Uploads(文件上传防病毒扫描) -检测通过Web应用程序上传的恶意文件。  
◆Tracking Sensitive Data(跟踪敏感数据) -信用卡通道的使用,并阻止泄漏。  
◆Trojan Protection(木马防护) -检测访问木马。  
◆Identification of Application Defects (应用程序缺陷的鉴定)-应用程序的错误配置警报。  
◆Error Detection and Hiding(错误检测和隐藏) -伪装服务器发送错误消息。


(nginx)-OWASP规则-OWASP ModSecurity Core Rule Set (CRS)

cd /usr/local/nginx/conf

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

mv owasp-modsecurity-crs   crs

owasp-modsecurity-crs下有很多存放规则的文件夹,例如base_rules、experimental_rules、optional_rules、slr_rules,里面的规则按需要启用,需要启用的规则使用Include进来即可。

vi /usr/local/nginx/conf/nginx.conf

...
#Enable ModSecurity
modsecurity on;
modsecurity_rules '
    SecRuleEngine On
    SecRequestBodyAccess On
    SecAuditLogType Concurrent
    SecAuditLogDirMode 0777
    SecAuditLogFileMode 0550
    SecAction "id:900110,phase:1,pass,nolog,\
    setvar:tx.inbound_anomaly_score_threshold=5,\
    setvar:tx.outbound_anomaly_score_threshold=5"
    SecAction "id:900000,phase:1,pass,nolog,\
    setvar:tx.paranoia_level=1"
    Include /usr/local/nginx/conf/crs/crs-setup.conf
    Include /usr/local/nginx/conf/crs/rules/*.conf
';
...


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回