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
Answers
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里的规则文件;