Ubuntu 16.04 安装ModSecurity
2020-04-29 15:58 hn3ya 阅读(650) 评论(0) 编辑 收藏 举报1.前提条件
apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev
2.下载ModSecurity
Git克隆ModSecurity,检出并构建libmodsecurity
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 make make install
2.1执行make时报错
/usr/bin/ld: cannot find -llua5.2 collect2: error: ld returned 1 exit status
2.1.1需要先安装lua5.1,然后查看locate lua是否有liblua5.2.so.0 然后做软连接 ln -s liblua5.2.so.0 liblua5.2.so
2.1.2然后再编译
Git克隆Modsecurity-nginx连接器
cd /opt/ git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
3.下载nginx和配置nginx
./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx make make install
我们之前下载的ModSecurity源代码包含一些示例modsecurity.conf文件,其中包含一些推荐的设置。 将此文件复制到具有Nginx配置文件的文件夹
cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
从/ usr / local / nginx / sbin / nginx创建一个符号链接到/ bin / nginx
ln -s /usr/local/nginx/sbin/nginx /bin/nginx
制作conf / nginx.conf文件的备份副本
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak
通过删除“#”前缀,如果禁用,确保它设置为用户“www-data”而不是默认的“nobody”,启用“user”指令,如下所示:
user www-data;
Git克隆并复制当前版本的OWASP规则集并配置为Nginx
cd /opt/ git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git cd owasp-modsecurity-crs/ cp -R rules/ /usr/local/nginx/conf/ cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf
使用OWASP ModSecuirty核心规则集配置Nginx
编辑/usr/local/nginx/conf/modsecurity.conf
vi /usr/local/nginx/conf/modsecurity.conf
在文件末尾粘贴以下内容:
#Load OWASP Config Include crs-setup.conf #Load all other Rules Include rules/*.conf #Disable rule by ID from error message #SecRuleRemoveById 920350
4.在nginx.conf文件中启用
$ vim /usr/local/nginx/conf/nginx.conf # 放在server下的话,就是全局,如果只要某一个的话,可以放在location中 modsecurity on; modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf; $ nginx -t nginx: [emerg] "modsecurity_rules_file" directive Rules error. File: /usr/local/nginx/conf/modsecurity.conf. Line: 237. Column: 17. Failed to locate the unicode map file from: unicode.mapping Looking at: 'unicode.mapping', 'unicode.mapping', '/usr/local/nginx/conf/unicode.mapping', '/usr/local/nginx/conf/unicode.mapping'. in /usr/local/nginx/conf/nginx.conf:73 方法一: 如果有如上错误的话,可以修改 /usr/local/nginx/conf/modsecurity.conf 搜索mapping,将SecUnicodeMapFile unicode.mapping 20127 注释掉 方法二: 将unicode.mapping复制到modsecurity.conf同一目录下。 $ cp /usr/local/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/ $ nginx -t $ systemctl restart nginx
5.查看日志:tail -f /var/log/modsec_audit.log
6.modsecurity配置解释
1.SecRuleEngine:是否接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。SecRuleEngine On:将在服务器上激活ModSecurity防火墙,它会检测并阻止该服务器上的任何恶意攻击。SecRuleEngine Detection Only:如果设置这个规则它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。SecRuleEngine Off:这将在服务器上上停用ModSecurity的防火墙。 2.SecRequestBodyAccess:它会告诉ModSecurity是否会检查请求,它起着非常重要的作用。它只有两个参数ON或OFF。 3.SecResponseBodyAccess:如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数ON和Off,我们可以根据求要进行设置。 4.SecDataDir:定义ModSecurity的工作目录,该目录将作为ModSecurity的临时目录使用。
7。测试网站
模拟sql注入
日志