mod_security官方的文档有一些问题,亲手装了一遍,现将问题记录如下
Windows xampp版本
假设xampp安装在D:/xampp
1 下载mod_security-2.5.9-win32.zip,解压缩
2 将libxml2.dll拷贝到D:/xampp/apache/bin下面
3 将mod_security2.so拷贝到D:/xampp/apache/modules/mod_security2下面,当然先建立mod_security2目录
4 将modsecurity-2.5.9/rules下的9个conf文件拷贝到D:/xampp/apache/conf/modsecurity下面
5 安装vcredist_x86.exe
6 编辑D:/xampp/apache/conf/httpd.conf
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule security2_module modules/mod_security2/mod_security2.so
<IfModule security2_module>
Include etc/modsecurity/*.conf
</IfModule>
7 修改D:/xampp/apache/conf/modsecurity/modsecurity_crs_10_config.conf,将下面三个/tmp改成D:/xampp/tmp
SecUploadDir /tmp
SecDataDir /tmp
SecTmpDir /tmp
为了性能考虑,将审计日志和调试日志都关闭
SecAuditEngine Off
SecDebugLogLevel 0
8 重启Apache,可以看到D:/xampp/apache/logs下面多了modsec_audit.log和modsec_debug.log两个文件,即安装成功。
RHEL4下安装Linux版本
1 下载modsecurity-apache_2.5.9.tar.gz,传到root目录下,tar xvzf modsecurity-apache_2.5.9.tar.gz解压
2 xampp要安装开发包xampp-linux-devel-1.7.1.tar.gz,解压方式tar xvfz xampp-linux-devel-1.7.2.tar.gz -C /opt
3 到http://www.pcre.org/下载pcre-7.9.tar.gz,传到root目录下解压,解压缩,进入编译
./configure
make
make install
4 进入/root/modsecurity-apache_2.5.9/apache2
./configure --with-apxs=/opt/lampp/bin/apxs --with-apr=/opt/lampp/bin/apr-1-config --with-apu=/opt/lampp/bin/apu-1-config
make
make install
会提示/opt/lampp/modules/mod_security2.so安装成功!
5 将/root/modsecurity-apache_2.5.9/rules/下所有.conf文件拷贝到/opt/lampp/etc/modsecurity/下,先建立modsecurity目录
6 编辑/opt/lampp/etc/httpd.conf
打开 LoadModule unique_id_module modules/mod_unique_id.so
在modules段的最下面加入
LoadModule security2_module modules/mod_security2.so
在最下面加入
<IfModule security2_module>
Include etc/modsecurity/*.conf
</IfModule>
7 重启apache /opt/lampp/lampp reloadapache,这是应该看见/opt/lampp/logs下面有modsec_audit.log和modsec_debug.log两个文件
======================================================
安装mod_evasive_1.10.1.tar.gz防DDOS攻击
1 将文件传到root目录下并解压缩。
/opt/lampp/bin/apxs -i -a -c mod_evasive20.c
编译成功后会生成
/opt/lampp/modules/mod_evasive20.so
并且在httpd.conf中自动加入
LoadModule evasive20_module modules/mod_evasive20.so
在这句话后面加入
<IfModule evasive20_module>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
重启apache即可
测试效果 D:/xampp/apache/bin/ab.exe -n 1000 -c 50 http://www.xxx.com:80/
======================================================
安装mod-cband-0.9.7.5.tgz限制连接带宽
此模块的流量限制功能不是很准确,实际使用效果不理想,最终我并没有使用。
1 将文件传到root目录下解压。
./configure --with-apxs=/opt/lampp/bin/apxs
make
make install
此时模块已经编译好,传至/opt/lampp/modules/mod_cband.so
并且httpd.conf文件中也添加了
LoadModule cband_module modules/mod_cband.so
在下面加入
<IfModule cband_module>
CBandRandomPulse On
</IfModule>
在虚拟主机配置段中NameVirtualHost *:80下加入
<IfModule cband_module>
<CBandUser xxx>
CBandRemoteSpeed 200kb/s 10 10
</CBandUser>
</IfModule>
在每一个virtualhost中加入
<VirtualHost *:80>
ServerAdmin webmaster@xxx.com
DocumentRoot /opt/lampp/htdocs/
ServerName www.xxx.com
ErrorLog "|/opt/lampp/bin/rotatelogs /opt/lampp/logs/www.xxx.com_%Y-%m-%d_error_log 86400"
CustomLog "|/opt/lampp/bin/rotatelogs /opt/lampp/logs/www.xxx.com_%Y-%m-%d_access_log 86400" common env=!dontlog
php_admin_value open_basedir "/opt/lampp/htdocs/:/opt/lampp/phpmyadmin:/tmp"
<IfModule cband_module>
CBandUser xxx
</IfModule>
</VirtualHost>
表示每个IP200kb/s的带宽 10个请求和10个连接数。但实际并不准确
关于流量单位的说明:
* transfer speeds:
o kbps, Mbps, Gbps - multiples of "bits per second", respectively: 1024, 1024*1024 and 1024*1024*1024 bps
o kb/s, Mb/s, Gb/s - multiples of "bytes per second", respectively: 1024, 1024*1024 and 1024*1024*1024 b/s
o defaults to kbps
此模块使用/opt/lampp/lampp reloadapache重启时,日志中会报下面两个错误。如果用stopapache,startapache就不会了。
[Tue Sep 15 10:59:24 2009] [warn] Duplicate command 'CBandRandomPulse'
[Tue Sep 15 10:59:24 2009] [warn] Duplicate command 'CBandRemoteSpeed' for localhost:0