nginx下如何安装和配置modsecurity?


在尝试使用modsecurity来提高网站的安全性。网站是基于nginx的。

添加了一些nginx配置到 /etc/nginx/nginx

server {
    listen       80;
    server_name  localhost;

    location / {
        ModSecurityEnabled on;
        ModSecurityConfig modsecurity.conf;
    }
}

重启nginx,遇到错误:

nginx: [emerg] unknown directive "ModSecurityEnabled" in /etc/nginx/conf.d/nginx.conf:6
nginx: configuration file /etc/nginx/nginx.conf test failed

command nginx -V

nginx version: nginx/1.4.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables'

谢谢帮助

配置 path modsecurity nginx http 安全 安装 temp 网站 module

现实的杯子 9 years, 9 months ago

modsecurity是和apache配合的,起初并没有针对nginx。现在官方已放出针对nginx的版本,但是要使用,你需要重新编译nginx。 官方文档请 参考这里

下面大致介绍一下:

1. 准备文件:

源码包: nginx1.6, modsecurity2.8, apr-1.5.1, apr-util-1.5.3, apr-iconv1.2.1, httpd-2.2.-12, libxml2.7.2

规则文件: owasp-modsecurity-crs-master.zip: http://sourceforge.net/projects/mod-s...

2. 安装:

编译安装apr依赖库:

解压apr,apr-util,apr-iconv, libxml,依次执行./configure, make, make install;

安装apache:

configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all
make
make install

编译standalone module:

configure --enable-standalone-module
make 
make install

编译nginx:

configure --add-module=../mod_security/nginx/modsecurity
make 
make install

执行nginx,如果提示找不到apr*.so.0库,就将/usr/local/apr/lib/下的相应文件拷贝到/usr/lib(64位的拷贝到/usr/lib64)下,运行成功后进行规则文件配置.

将modsecurity目录下的modsecurity.conf-recommended,unicode.mapping拷贝到nginx/conf下,重命名为modsecurity.conf,将owasp-modsecurity-crs-master下的modsecuritycrs10setup.conf.example拷贝到nginx/conf下,重命名位modsecuritycrs10setup.conf

打开nginx.conf,在location / {} 里面加入:

ModSecurityEnable on;
ModSecurityConfig modsecurity.conf;
proxy_pass http://xxxx:xx;
proxy_read_timeout 180s;

打开modsecurity.conf, 在最上面引入规则文件路径:

Include /path/modsecurity-crs/modsecurity_crs_10_config.conf
Include /path/modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf
Include /path/modsecurity-crs/base_rules/modsecurity_crs_41_xss_attacks.conf

将SecRuleEngine设置位On

重启nginx, 在url后面加?and 1=1 测试,返回403,并在/var/log/modsecaudit.log产生攻击日志表示安装成功,规则文件可以根据自己需要引入baserules里的规则文件;

咆哮的肛门 answered 9 years, 3 months ago

天朝萌化大神 answered 9 years, 3 months ago

Your Answer