如何安装mod_security / mod_security2在SuSE Linux Enterprise Server 10(SLES10)

如何安装mod_security / mod_security2在SuSE Linux Enterprise Server 10(SLES10) Apache模块mod_security是一个非常强大的安全...

如何安装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地址”。