如何安装mod_security / mod_security2在SuSE Linux Enterprise Server 10(SLES10)
介绍
Apache模块mod_security是一个非常强大的安全模块。 结合预定义的规则,您可以关闭您的服务器上的许多安全性,由坏的书面php或perl应用程序打开。
不幸的是,mod_security不是SLES10分发的一部分。 要安装mod_security以安装一些第三方模块。 本指南可帮助您在SLES10上安装mod_security。 它还可以帮助您删除模块,通过构建您可以轻松卸载的RPM软件包。
安装Apache2
首先你必须安装apache2。 以下命令非常简单。
yast2 -i apache2
安装所需的构建包
需要一些模块来构建mod_security模块。 安装以下软件包:
yast2 -i libxml2-devel pcre-devel apache2-devel curl-devel gcc gcc-c++
apache2需要Apache2-devel。 curl-devel是可选的。
获取并安装checkinstall(用于打包)
为了跟踪安装的软件并使用户能够卸载和更新软件,checkinstall可以构建RPM,DEBIAN(DEB)和Slackware软件包。 而不是执行“make install”,只需运行“checkinstall”,并且checkinstall将捕获将由“make install”安装的所有文件。
从http://www.asic-linux.com.mx/~izto/checkinstall/download.php获取checkinstall 。
wget http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.1.tgz
make
make install
checkinstall
cp /usr/src/packages/RPMS/i386/checkinstall-1.6.1-1.i386.rpm .
rpm -ivh checkinstall-1.6.1-1.i386.rpm
获取并安装liblua
LUA编程语言被mod_security用于配置。 您必须将LUA编译为共享模块。
从http://www.lua.org/ftp/lua-5.1.3.tar.gz获取LUA。
wget http://www.lua.org/ftp/lua-5.1.3.tar.gz
tar -zxvf lua-5.1.3.tar.gz
cd lua-5.1.3
make linux
checkinstall
[...]
1 - Summary: [ The LUA programming language ]
2 - Name: [ lua ]
3 - Version: [ 5.1.3 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Development/Languages/Lua ]
7 - Architecture: [ i386 ]
8 - Source location: [ http://www.lua.org/ftp/lua-5.1.3.tar.gz ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ lua ]
[...]
cp /usr/src/packages/RPMS/i386/lua-5.1.3-1.i386.rpm ..
rpm -ivh ../lua-5.1.3-1.i386.rpm
现在您必须从liblua存档中构建一个共享库。
cd /usr/local/lib
gcc -shared -o liblua.5.1.3.so /usr/local/lib/liblua.a
ln -s liblua.5.1.3.so liblua.so
获取并安装mod_security
从http://www.modsecurity.org/download/direct.html获取mod_security 。
有关安装的文档可以在这里找到: http : //www.modsecurity.org/documentation/index.html 。
cd modsecurity-apache_2.5.2
cd apache2
./configure
make
checkinstall
...
1 - Summary: [ mod_security application level firewall ]
2 - Name: [ apache2-mod_security ]
3 - Version: [ 2.5.2 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Productivity/Networking/Web/Servers ]
7 - Architecture: [ i386 ]
8 - Source location: [ http://www.modsecurity.org/download/ ]
9 - Alternate source location: [ ]
10 - Requires: [ apache2 libxml2 ]
11 - Provides: [ mod_security ]
cp /usr/src/packages/RPMS/i386/apache2-mod_security-2.5.2-1.i386.rpm ../../
rpm -ivh ../../apache2-mod_security-2.5.2-1.i386.rpm
配置Apache2 for mod_security
# /etc/apache2/conf.d/mod_security.conf
LoadFile /usr/lib/libxml2.so
LoadFile /usr/local/lib/liblua.so
LoadModule security2_module /usr/lib/apache2/mod_security2.so
Include modsecurity/*.conf
LoadModule unique_id_module /usr/lib/apache2/mod_unique_id.so
提取和配置核心规则
获取http://www.modsecurity.org/download/modsecurity-core-rules_2.5-1.6.0.tar.gz的核心规则。
cd /etc/apache2
mkdir modsecurity
cd modsecurity
tar -zxvf ../modsecurity-core-rules_2.5-1.6.0.tar.gz
修改modsecurity_crs_10_config.conf
以满足您的配置文件的位置:
vi modsecurity_crs_10_config.conf
SecAuditLog=...
SecDebugLog=...
重新启动Apache并测试您的网页
首先重新启动apache以获取当前配置:
rcapache restart
要测试安装,请编写一个简单(不安全的)PHP脚本,如下所示:
<? # /srv/www/htdoc/index.php
file $text=$_GET['file'];
echo "Content of File $text";
echo `cat $text`;
?>
然后访问它来尝试打开不安全的文件:
http://ip.of.your.server.de/index.php?file=/etc/passwd
您应该在浏览器中获得ERROR 501,并且SecAuditLog文件应显示:
[...]
GET /index.php?file=/etc/passwd HTTP/1.1 ...
[...]
Message: Access denied with code 501 (phase 2). Pattern match "(?:\b(?:\.(?:ht(?:access|passwd|group
)|www_?acl)|global\.asa|httpd\.conf|boot\.ini)\b|\/etc\/)" at ARGS:file. [file "/etc/apache2/modsecu
rity/modsecurity_crs_40_generic_attacks.conf"] [line "114"] [id "950005"] [msg "Remote File Access A
ttempt"] [data "/etc/"] [severity "CRITICAL"] [tag "WEB_ATTACK/FILE_INJECTION"]
警告
- 通过IP访问服务器时,modsecurity_crs_21_protocol_anomalies.conf中的规则
将
拒绝。 编辑文件并查找“检查主机头不是IP地址”。
链接和参考
- mod_security主页: http : //www.modsecurity.org/
- LUA主页: http : //www.lua.org/
- Checkinstall主页: http : //www.asic-linux.com.mx/~izto/checkinstall/
- 作者主页: http : //www.elconas.de