在8.04 server中安装Mod Security 2

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
布衣
帖子: 54
注册时间: 2008-02-22 16:20

在8.04 server中安装Mod Security 2

#1

帖子 布衣 » 2008-07-29 8:59

这两天在安装LAMP,论坛里相关的帖子看了不少,特别是firehare兄弟的打造Ubuntu下的SLAMP,读后受益匪浅。

以下的安装方法参考了英文原帖How to install Mod Security 2,有兴趣的朋友可以直接去看看。

系统安装的是Ubuntu 8.04 LTS server版,在安装时因为考虑到是否需要自己编译安装lamp所以没有选择自动安装lamp,基本的系统装好后,想来想去还是用apt自动安装算了。所以用

代码: 全选

sudo tasksel install lamp-server
等待一段时间后,要求输入mysql的初始root密码,很快装完。

到系统服务里看一看,apache和mysql都赫然在列了。按照firehare兄弟的帖子做一些安全设置,做到有关Mod-Security的部分时,用apt-get无法安装libapache2-mod-security,不知道是否有别的源内还有这个包,如果有兄弟知道请明示,那样会方便许多。

跑去官方网站下载,有source包和debian的deb包,deb包是分成好几个部分的,互相之间有依赖关系,而且似乎也还有一个包需要自己编译,干脆就用source包了。

下载modsecurity-apache_2.5.5.tar.gz
解压

代码: 全选

tar zxvf modsecurity-apache_2.5.5.tar.gz
进入解开的目录

代码: 全选

cd modsecurity-apache_2.5.5
再进入里面的apache2子目录

代码: 全选

cd apache2
先做预配置

代码: 全选

./configure
这里有几个问题要注意一下:
1、自动安装的apache2不会帮你安装apxs,而mod-security的编译要求apxs支持,解决的办法是用apt安装apache2-dev包,这是一个虚拟包,建议根据apache2的版本选择是

代码: 全选

sudo apt-get install apache2-threaded-dev
还是

代码: 全选

sudo apt-get install apache2-prefork-dev
,可以用

代码: 全选

apache2 -l
来查看,默认的一般都是prefork版。装好以后在/usr/bin/下会发现apxs2,此时可以直接再回到mod-security里运行预配置,脚本会自动检测到apxs2,也可以用

代码: 全选

./configure --with-apxs=/usr/bin/apxs2
来指定
2、configure如果报缺失libxml2,可以用

代码: 全选

sudo apt-get install libxml2 libxml2-dev
来解决
3、configure如果报缺失liblua,可以用

代码: 全选

sudo apt-get install liblua5.1-0 liblua5.1-0-dev
来解决
4、configure如果报缺失libcurl,可以用

代码: 全选

sudo apt-get install libcurl3 libcurl3-dev
来解决
配置成功当然就是编译了

代码: 全选

make
可以选择是否作个测试

代码: 全选

make test
可以选择是否要编译ModSecurity Log Collector,如果编译此项,最后会给出一个文件路径指示用户如何安装此项

代码: 全选

make mlogc
安装

代码: 全选

sudo make install
到此为止,mod-security已经安装完毕,接下来需要作配置
首先要编辑这个模块的load文件

代码: 全选

sudo gedit /etc/apache2/mods-available/mod_security2.load
需要写入如下三行,官方的安装说明上明确一定要先装载libxml2和liblua5.1再装载modsecurity模块

代码: 全选

LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so
然后是激活模块

代码: 全选

sudo ln -s /etc/apache2/mods-available/mod_security2.load /etc/apache2/mods-enabled
官方的安装说明开篇就要求apache2上包含mod_unique_id,也要把它激活

代码: 全选

sudo ln -s /etc/apache2/mods-available/unique_id.load /etc/apache2/mods-enabled
然后为apache2新增modsecurity的配置文件

代码: 全选

sudo gedit /etc/apache2/conf.d/modsecurity2.conf
写入如下内容

代码: 全选

<ifmodule mod_security2.c>
Include /etc/modsecurity/*.conf
</ifmodule>
其中的/etc/modsecurity目录需要我们来创建

代码: 全选

sudo mkdir /etc/modsecurity
sudo mkdir /etc/modsecurity/logs
sudo touch /etc/modsecurity/logs/modsec_audit.log
sudo touch /etc/modsecurity/logs/modsec_debug.log
然后我们回到解压出来的modsecurity-apache_2.5.5目录,里面有个rules子目录,到里面把所有的rule文件拷贝到/etc/modsecurity

代码: 全选

sudo cp *.conf /etc/modsecurity
编辑其中的modsecurity_crs_10_config.conf

代码: 全选

sudo gedit /etc/modsecurity/modsecurity_crs_10_config.conf
把其中的

代码: 全选

SecDebugLog logs/modsec_debug.log
换为

代码: 全选

SecDebugLog /etc/modsecurity/logs/modsec_debug.log
把其中的

代码: 全选

SecAuditLog logs/modsec_audit.log
换为

代码: 全选

SecAuditLog /etc/modsecurity/logs/modsec_audit.log
大功告成,重新启动apache2

代码: 全选

sudo /etc/init.d/apache2 restart
你可以用

代码: 全选

cat /var/log/apache2/error.log | grep "ModSecurity for"
来检查mod security 2是否已经正常运行
如果是,你会看到如下结果

代码: 全选

"[Tue Jul 29 07:41:46 2008] [notice] ModSecurity for Apache/2.5.5 (http://www.modsecurity.org/) configured."
gnuser
帖子: 17
注册时间: 2006-10-06 11:37

如何配置??

#2

帖子 gnuser » 2008-08-05 16:15

安装完后,重启
http://127.0.0.1
400 error

代码: 全选

#cat /var/log/apache2/error/log
[Tue Jul 29 15:43:17 2008] [error] [client 127.0.0.1] ModSecurity: Access denied with code 400 (phase 2). Pattern match "^[\\d\\.]+$" at REQUEST_HEADERS:Host. [file "/etc/modsecurity/modsecurity_crs_21_protocol_anomalies.conf"] [line "60"] [id "960017"] [msg "Host header is a numeric IP address"] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/IP_HOST"] [hostname "127.0.0.1"] [uri "/info.php"] [unique_id "yw63yH8AAQEAAEQ9AVkAAAAB"]

无奈,找到规则,注释掉.
/etc/modsecurity/modsecurity_crs_21_protocol_anomalies.conf:

代码: 全选

#SecRule REQUEST_HEADERS:Host "^[\d\.]+$" "phase:2,t:none,deny,log,auditlog,status:400,msg:'Host header is a numeric IP address', severity:'2',id:'960017',tag:'PROTOCOL_VIOLATION/IP_HOST'"
头像
pizza
帖子: 152
注册时间: 2007-10-19 19:20
联系:

#3

帖子 pizza » 2008-08-22 10:26

desktop版也需要这样麼?
回复