Apache 安装配置 ModSecurity
               ----ourren 2012.8.2
1、安装 LAMP 和编译环境

安装 apache+php+mysql

   #yum -y install httpd php mysql mysql-server php-mysql

apache 版本




Mysql 版本




Centos 版本




安装编译环境

   #yum install gcc make
   #yum install libxml2 libxml2-devel httpd-devel pcre-devel curl-devel

启动服务测试

   #service httpd start
   #service mysqld start

注意:需要 iptables 允许所有 IP 访问 80 端口
2、安装 mod_security

  从官方下载源码、编译并安装。

  //sourceforge fuck gwf
  #wget http://www.modsecurity.org/download/modsecurity-apache_2.6.6.tar.gz
  # tar xzf modsecurity-apache_2.6.6.tar.gz
  # cd modsecurity-apache_2.6.6
  # ./configure
  # make install
  # cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
3、规则配置

      需要配置一些规则防范未知漏洞和扫描,采用 Modsecurity 推荐规则和 OWASP_CRS 两个

规则进行组合,如下:


      详细规则采用 OWASP_CRS:

http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0-CURRENT/modsecurity-crs_2.2.5.tar.gz


      基本规则设置采用 Modsecurity 推荐规则:

http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-recommended


      使用的时候将 Modsecurity 推荐规则文件内容加在 modsecurity_crs_10_config.conf 的前

面,并把 SecRuleEngine DetectionOnly 改为 SecRuleEngine On 即可(因为需要的不仅仅是检

测,需要防御)。

# cd /etc/httpd/
# wget http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0-CURRENT/modsecurity-crs_2.2.5.tar.gz
# tar xzf modsecurity-crs_2.2.5.tar.gz
# mv modsecurity-crs_2.2.5 modsecurity-crs
# cd modsecurity-crs
# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf
# vi /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf
4、加载模块

Apache 加载 mod_security 模块,注意要修改的时候需要关闭 apache。

   # vi /etc/httpd/conf/httpd.conf

在其中找到 LoadModule 并在下面添加下面的代码:

   #LoadModule security2_module modules/mod_security2.so
   #LoadModule unique_id_module modules/mod_unique_id.so




然后添加模块的配置文件

   <IfModule security2_module>
        Include /etc/httpd/modsecurity-crs/modsecurity_crs_10_config.conf
        Include /etc/httpd/modsecurity-crs/base_rules/*.conf
   </IfModule>




重启 apache

   # service httpd restart
5、功能测试

创建数据库

  #CREATE TABLE user (id int(5),username VARCHAR(20), password CHAR(1));

php 测试代码




数据库结构




插入数据

  # insert user(id,username,password) values(1,'admin','adminpass');
测试网页




可以看到用 Havij 成功爆出了数据库和数据




加载 mod_security 模块后,正常访问看看效果:




可以看到现在无法用 Havij 爆出数据信息,其日志信息中有提示,
                                “Please register to enable

mod_security bypass”,但是当开启这个功能后,发现还是不能注入。
看 modsec_audit 日志是发现有注入的,并且利用了注释来绕过防火墙。
6、总结

    通过上面的安装和测试,发现 modsecurity 可以防御一些攻击,同时用户可以根据需求

自定义规则,从功能方面来看还是很不错的,不过规则配置相对比较复杂,实际应用的话需

要深入研究才行。



参考资料

http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-f
edora/
http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-reco
mmended
http://blog.secaserver.com/2011/10/install-mod_security-apache2-easiest/

Apache安装配置mod security

  • 1.
  • 2.
    1、安装 LAMP 和编译环境 安装apache+php+mysql #yum -y install httpd php mysql mysql-server php-mysql apache 版本 Mysql 版本 Centos 版本 安装编译环境 #yum install gcc make #yum install libxml2 libxml2-devel httpd-devel pcre-devel curl-devel 启动服务测试 #service httpd start #service mysqld start 注意:需要 iptables 允许所有 IP 访问 80 端口
  • 3.
    2、安装 mod_security 从官方下载源码、编译并安装。 //sourceforge fuck gwf #wget http://www.modsecurity.org/download/modsecurity-apache_2.6.6.tar.gz # tar xzf modsecurity-apache_2.6.6.tar.gz # cd modsecurity-apache_2.6.6 # ./configure # make install # cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
  • 4.
    3、规则配置 需要配置一些规则防范未知漏洞和扫描,采用 Modsecurity 推荐规则和 OWASP_CRS 两个 规则进行组合,如下: 详细规则采用 OWASP_CRS: http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0-CURRENT/modsecurity-crs_2.2.5.tar.gz 基本规则设置采用 Modsecurity 推荐规则: http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-recommended 使用的时候将 Modsecurity 推荐规则文件内容加在 modsecurity_crs_10_config.conf 的前 面,并把 SecRuleEngine DetectionOnly 改为 SecRuleEngine On 即可(因为需要的不仅仅是检 测,需要防御)。 # cd /etc/httpd/ # wget http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0-CURRENT/modsecurity-crs_2.2.5.tar.gz # tar xzf modsecurity-crs_2.2.5.tar.gz # mv modsecurity-crs_2.2.5 modsecurity-crs # cd modsecurity-crs # cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf # vi /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf
  • 5.
    4、加载模块 Apache 加载 mod_security模块,注意要修改的时候需要关闭 apache。 # vi /etc/httpd/conf/httpd.conf 在其中找到 LoadModule 并在下面添加下面的代码: #LoadModule security2_module modules/mod_security2.so #LoadModule unique_id_module modules/mod_unique_id.so 然后添加模块的配置文件 <IfModule security2_module> Include /etc/httpd/modsecurity-crs/modsecurity_crs_10_config.conf Include /etc/httpd/modsecurity-crs/base_rules/*.conf </IfModule> 重启 apache # service httpd restart
  • 6.
    5、功能测试 创建数据库 #CREATETABLE user (id int(5),username VARCHAR(20), password CHAR(1)); php 测试代码 数据库结构 插入数据 # insert user(id,username,password) values(1,'admin','adminpass');
  • 7.
    测试网页 可以看到用 Havij 成功爆出了数据库和数据 加载mod_security 模块后,正常访问看看效果: 可以看到现在无法用 Havij 爆出数据信息,其日志信息中有提示, “Please register to enable mod_security bypass”,但是当开启这个功能后,发现还是不能注入。
  • 9.
  • 10.
    6、总结 通过上面的安装和测试,发现 modsecurity 可以防御一些攻击,同时用户可以根据需求 自定义规则,从功能方面来看还是很不错的,不过规则配置相对比较复杂,实际应用的话需 要深入研究才行。 参考资料 http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-f edora/ http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-reco mmended http://blog.secaserver.com/2011/10/install-mod_security-apache2-easiest/