网站挂马 屏蔽站长的ip网站设计怎么收费
预备知识
 Nginx概述
     Nginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器,也是一个 IMAP/POP3/SMTP服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 
Modsecurity概述
     ModSecurity是一个入侵侦测与防护引擎,它主要是用于Web 应用程序,所以也被称为Web应用程序防火墙。 它可以作为Apache Web服务器的模块或是单独的应用程序来运作。ModSecurity的功能是增强Web application的安全性和保护Web application以避免遭受来自已知与未知的攻击。其防护的概念如下图所示:
     
     ModSecurity计划是从2002年开始,后来由Breach Security Inc.收购,但Breach Security Inc.允诺ModSecurity仍旧为open source,并开放源代码给大家使用。最新版的ModSecurity(一个开源的Web应用防火墙,即WAF)开始支持核心规则集(Core Rule Set,即CRS,可用于定义旨在保护Web应用免受零日及其他安全攻击的规则)了。ModSecurity团队发布的2.5.10 版以后还包含了其他一些特性,如并行文本匹配、Geo IP解析和信用卡号检测等,同时还支持内容注入、自动化的规则更新和脚本等内容。可以通过ModSecurity手工创建安全过滤器、定义攻击并实现主动的安全输入验证。此外,它还提供了一个面向Lua语言的新的API,为开发者提供一个脚本平台以实现用于保护Web应用的复杂逻辑。
     ModSecurity的运作设计有以下的基础概念:
     1、让使用者可以做任何想做的事情(Empower users to do what they want)
     2、 使用者设定的动作才会执行(Don’t do anything implicitly)
     3、 预设是不做任何动作(Be passive)
ModSecurity的部署架构
     1、 与Web Server结合 。
     2、 与Apache/nginx结合部署为网关,当作一个反向代理。
总结:
     ModSecurity是一个Web应用防火墙(WAF)。当前已经有超过70%的攻击发生在网络应用层,各级组织急需要能够保证他们的系统安全性的帮助。WAF系统的部署,可以为web应用增加一个外部安全层来检测或防止攻击。针对一系列的攻击,ModSecurity为web应用提供了强大的保护,并对HTTP流量进行监测和实时分析。
     软件下载地址:
     Nginx:http://nginx.org/en/download.html
     ModSecurity:https://www.modsecurity.org/download.html
     OWASP规则集:https://github.com/SpiderLabs/owasp-modsecurity-crs
实验目的
 1)Install Nginx with ModSecurity
 2)Configure ModSecurity with Nginx
 3)启用OWASP规则
实验环境
 操作系统:Server:Centos 7 Client:Windows xp
 网络拓扑见下图:
 服务端IP:10.1.1.56,客户端IP随机
 所用软件:Nginx 1.9.15 ; modsecurity-2.9.1
PS:本实验指导书中涉及的软件路径均可以根据你自己所需设定,不必完全按照实验指导书中的配置而设定。
实验步骤一
 Install Nginx with ModSecurity
 1、安装Nginx和ModSecurity依赖的包和其他必须的软件包
     yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel zlib zlib-devel openssl openssl-devel apr apr-util-devel apr-devel -y
 2、下载Nginx和ModSecurity源码
     wget http://nginx.org/download/nginx-1.9.15.tar.gz
     wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
 3、编译modsecurity
     先解压:
     cd /opt
     gunzip -c modsecurity-2.9.1.tar.gz | tar xvf –
     进入解压后目录执行:
     ./autogen.sh
     ./configure --enable-standalone-module --disable-mlogc
     make
     make install
 4、编译nginx并添加modsecurity模块
     先解压:
     cd /opt
     进入解压后目录执行如下命令,编译nginx:
     ./configure --add-module=/opt/modsecurity-2.9.1/nginx/modsecurity/ --prefix=/usr/src/nginx
     make && make install
实验步骤二
 Configure ModSecurity with Nginx
 1、复制modsecurity.conf-recommended & unicode.mapping文件到nginx的conf目录下:
     可以使用find命令查找这个两个文件在哪
     find / -name modsecurity.conf-recommended
     find / -name unicode.mapping
   
     复制文件:
     cp /opt/modsecurity-2.9.1/modsecurity.conf-recommended /usr/src/nginx/conf/
     cp /opt/modsecurity-2.9.1/unicode.mapping /usr/src/nginx/conf/
 
 2、配置
     改名:
     mv modsecurity.conf-recommended modsecurity.conf
   
     修改nginx配置文件:
     cp nginx.conf nginx.conf.bak (备份nginx配置文件)
     在需要启用modsecurity的主机的在location下面加入下面两行即可:
     ModSecurityEnabled on;
     ModSecurityConfig modsecurity.conf;
     保存配置。
     至此,Nginx已经集成了ModSecurity,现在重启Nginx试试。
     检查配置文件:
     /usr/src/nginx/sbin/nginx -t
     启动nginx:
     /usr/src/nginx/sbin/nginx
  
     检查ModSecurity是否正常启动的两种办法:
     第一种:/usr/src/nginx/sbin/nginx -V
 
     第二种查看nginx错误日志:
     cat /usr/src/nginx/logs/error.log
  
实验步骤三
 启用OWASP规则
 1、下载OWASP ModSecurity CRS:
     cd /opt
     wget 'https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/master.zip'
 2、解压到/usr/src/nginx/conf/
     cp master.zip /usr/src/nginx/conf/
     cd /usr/src/nginx/conf/
     unzip master.zip
 3、添加OWASP规则
     进入/usr/src/nginx/conf/目录,复制规则配置文件到/usr/src/nginx/conf/目录:
     cp owasp-modsecurity-crs-master/modsecurity_crs_10_setup.conf.example  modsecurity_crs_10_setup.conf
     打开modsecurity.conf, 在最上面引入规则文件路径。
     Include /usr/src/nginx/conf/modsecurity_crs_10_setup.conf
     Include /usr/src/nginx/conf/owasp-modsecurity-crs-master/base_rules/modsecurity_crs_41_sql_injection_attacks.conf
  
     将SecRuleEngine设置为On
    
 4、php环境下测试:
     我们启用了xss和sql注入的过滤,不正常的请求会直接返回403。以php环境为例,在/var/www/html目录下新建一个index.php内容为:
     修改nginx配置文件为如下:
   
     保存配置。重启nginx即可
     /usr/src/nginx/sbin/nginx -s reload
     切换到client客户端,在浏览器中访问:
     http://serverip/index.php?id=1 正常显示
     http://serverip/index.php? id=1 and 1=1  返回403
     http://serverip/index.php? search=<script>alert('xss');</script>  返回403
     说明sql注入和xss已经被过滤了
   
     当然还可以在/var/log/modsec_audit.log中看到攻击日志   
     至此表示安装成功
部分实验截图如下图所示;






 



 


