• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Apache下ModSecurity的安装启用与配置

    ModSecurity 是一个强大的包过滤工具,将检查每一个进入web服务器的包。它将根据内部规则,比较每一个包,并且确定是否需要禁止这个包或继续发送给web服务器。

    1、下载

    modsecurity-apache: http://sourceforge.net/projects/mod-security/files/modsecurity-apache/
    modsecurity-crs: http://sourceforge.net/projects/mod-security/files/modsecurity-crs/0-CURRENT/

    2、安装

    1)启用 mod_unique_id 模块
    2)验证服务器安装了最新版本libxml2函数库
    3)停止Apache httpd

    4)解压

    gzip -d modsecurity-apache_2.6.3.tag.gz
    tar xvzf modsecurity-apache_2.6.3.tar
    gzip -d modsecurity-core-rules_2.6.tar.gz
    tar xvzf modsecurity-core-rules_2.6.tar.gz

    5)配置

    ./configure

    6)编译并测试ModSecurity

    make
    make test

    7)安装

    make install

    修改 http.conf,启用ModSecurity,在httpd.conf文件添加:

    LoadFile /usr/lib/libxml2.so
    LoadModule security2_module modules/mod_security2.so

    8)重启apache

    到这里已经安装了ModSecurity,你可以查看配置指令文档:http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual

    ubuntu上安装Apache2+ModSecurity及自定义WAF规则

    虽然VPS使用了云WAF功能,但还是有点小担心,为了双重保险,决定使用modsecurity来定制规则,以下介绍如何为apache服务器配置ModSecurity防护罩(modsecurity目前也支持Nginx,IIS) 。

    本次选择使用包管理器来安装,因为每次使用源码包的安装方式,都会被诡异的库依赖错误弄得发型都抓乱。

    安装环境:

    OS:Ubuntu 14.04.1 LTS
    Apache: Apache/2.4.7 (Ubuntu)

    第一步:安装apache

    我建议安装Apache最好用apt-get安装,这样就可以少很多的库支持!!!!如果不嫌麻烦的话可以用源码安装

    输入apt-get install apache2

    如果提示没有这个软件包就更新一下软件包 apt-get install update

    这步安装好了以后apache就可以提供服务了,输入127.0.0.1就可以访问本地网站了

    第二步:安装modsecurity

    这个也和上边的一样,使用

    apt-get install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache2-modsecurity

    安装好了以后就可以查看你的modsecurity的版本号是多少,使用

    dpkg -s libapache2-modsecurity | grep Version

    第三步 配置modsecurity

    service apache2 reload

    该命令生效后,会在/var/log/apache2/目录下生成modsecurity的日志文件modsec_audit.log

    使用modsecurity核心规则集

    将我们想起用的规则集放置在以下目录下

    cd /usr/share/modsecurity-crs/activated_rules/

    选择启用base规则集

    for f in $(ls ../base_rules/); do ln -s ../base_rules/$f; done

    修改apache模块配置,启用规则集

    注意:modsecurity 2.7版本与2.6版本的配置文件有些区别

    (1)2.7版本

    vim /etc/apache2/mods-available/security2.conf
    修改

    <IfModule security2_module>
    # Default Debian dir for modsecurity's persistent data
    SecDataDir /var/cache/modsecurity
    # Include all the *.conf files in /etc/modsecurity.
    # Keeping your local configuration in that directory
    # will allow for an easy upgrade of THIS file and
    # make your life easier
    IncludeOptional /etc/modsecurity/*.conf
    IncludeOptional /usr/share/modsecurity-crs/*.conf
    IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
    </IfModule>

    (2)2.6版本

    ‍‍vim /etc/apache2/mods-available/mod-security.conf‍‍
    修改

    Include /etc/modsecurity/*.conf
    Include /usr/share/modsecurity-crs/*.conf
    Include /usr/share/modsecurity-crs/activated_rules/*.conf

    第四步:启用modsecurity模块

    a2enmod headersa2enmod security2 (版本2.6: a2enmod mod-security)service apache2 restart

    第五步:测试真实的攻击payload

    看是否能拦截

    http://www.tanjiti.com/?case=archive&act=orders&aid[typeid`%3D1%20and%20ord(mid((select/**/concat(username,0x3a,password)%20from%20cmseasy_user),1,1))%3C49%23]=1
    我们发现请求包被403拦截了,

    可以查看modsecurity日志文件看具体的拦截情况

    tail /var/log/apache2/modsec_audit.log
    message: Access denied with code 403 (phase 2). Pattern match "(/\\*!?|\\*/|[&#039;;]--|--[\\s\\r\\n\\v\\f]|(?:--[^-]*?-)|([^\\-&])#.*?[\\s\\r\\n\\v\\f]|;?\\x00)" at ARGS_NAMES:aid[typeid`=1 and ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))
    <49#].
    [file "/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "49"] [id "981231"] [rev "2"] [msg "SQL Comment Sequence Detected."] [data "Matched Data: /* found within ARGS_NAMES:aid[typeid`=1 and ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))<49#]: aid[typeid`=1 and ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))<49#]"] [severity "CRITICAL"] [ver "OWASP_CRS/2.2.8"] [maturity "8"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"] [tag "WASCTC/WASC-19"] [tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/CIE1"] [tag "PCI/6.5.2"]

    可以看到是被base规则集的modsecurity_crs_41_sql_injection_attacks.conf文件的规则981231拦截,命中了SQL注释语句。
    对于网站结构比较了解的站长们,完全可以自定义规则,特别是白名单规则来防护我们的网站。

    第六步:自定义WAF规则

    规则语法快速入门参考 ModSecurity SecRule cheatsheets

    WAF规则实例1:上传文件名白名单,只允许上传图片文件

    vim /usr/share/modsecurity-crs/activated_rules/MY.conf
    添加规则

    SecRule FILES "!\\.(?i:jpe?g|gif|png|bmp)$" "deny,tag:'WEB_ATTACK/FILEUPLOAD',msg:'upload no-picture file',id:0000001,phase:2"
    测试,上传php文件

    (http的使用参照HTTP发包工具 -HTTPie)
    http www.tanjiti.com filename@a.php
    我们可以看到请求包被拦截,查看modsecurity日志

    more /var/log/apache2/modsec_audit.log
    可以看到命中了规则0000001

    Message: Access denied with code 403 (phase 2). Match of "rx \\.(?i:jpe?g|gif|png|bmp)$" against "FILES:filename" required. [file "/usr/share/modsecurity-crs/activated_rules/MY.conf"] [line "1"] [id "0000001"] [msg "upload no-picture file"] [tag "WEB_ATTACK/FILEUPLOAD"]
    WAF规则实例2: 上传文件名中包含%00进行阻断

    vim /usr/share/modsecurity-crs/activated_rules/MY.conf
    添加规则

    SecRule FILES "@contains %00" "deny,tag:&#039;WEB_ATTACK/FILEUPLOAD',msg:'filename has null character',id:0000002,phase:2"
    测试,上传文件名包含%00的文件

    http www.tanjiti.com filename@a.php%00.jpeg
    我们可以看到请求包被拦截,查看modsecurity日志

    more /var/log/apache2/modsec_audit.log
    可以看到命中了规则0000002

    Message: Access denied with code 403 (phase 2). String match "%00" at FILES:filename. [file "/usr/share/modsecurity-crs/activated_rules/MY.conf"] [line "2"] [id "0000002"] [msg "filename has null character"] [tag "WEB_ATTACK/FILEUPLOAD"]
    非常简单吧,下一步,计划介绍一下nginx服务器的防护。

    注意!!!!!!!!!!!!!!
    一旦这样修改了以后,使用IP地址就显示403错误!!!!!!为了这个错误,搞了一天,在网上搜各种403错误就是不行,为什么呢????
    查看errol.log 就可以发现,是modsecurity里面禁止了使用IP访问!!!!!!使用localhost就可以正常访问了。。。
    所以,看日志是一个很重要的事儿

    上一篇:解决nginx/apache静态资源跨域访问问题详解
    下一篇:详解centos7中配置keepalived日志为别的路径
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Apache下ModSecurity的安装启用与配置 Apache,下,ModSecurity,的,安装,