yzhnet 2025-03-04 10:36 采纳率: 71.4%
浏览 10
已结题

modsecurity自定义规则如何生效

操作系统:全新纯净的-Ubuntu 20.04

安装了modsecurity,访问apache2的默认页面时加参数会403拦截http://1.1.1.1/?exec=/bin/bash%E3%80%82

现在期望自己定义规则,网上的教程都是怎么配置,但是没有指导怎么生效。 想添加任意一条简单的规则如:拦截参数中存在script的URL,比如1.1.1.1?a=script 则拦截

已做工作:

cat /usr/share/modsecurity-crs/activated_rules/my_rules.conf
SecRule REQUEST_METHOD "GET" "phase:1,t:none,deny,status:403,log,msg:'Blocked GET request',id:1000000,severity:2,tag:'BLOCK_GET_REQUESTS'"

cat /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 /etc/modsecurity/*.conf include /usr/share/modsecurity-crs/activated_rules/my_rules.conf
        
        # Include OWASP ModSecurity CRS rules if installed
        IncludeOptional /usr/share/modsecurity-crs/*.load
        IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
</IfModule>

修改完规则每次重启systemctl restart apache2,但是配置后并未生效。如我本次的规则应该是默认拦截GET请求的,直接在URL访问apache2默认地址也不拦截

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-03-12 12:42
    关注
    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!

    在 Ubuntu 20.04 上配置 ModSecurity 自定义规则并使其生效,通常需要以下几个步骤。根据你的描述,你已经完成了一部分工作,但可能有一些细节需要调整。以下是详细的步骤和可能的解决方案:

    1. 确保 ModSecurity 和 CRS 已正确安装

    首先,确保 ModSecurity 和 OWASP Core Rule Set (CRS) 已正确安装并启用。

    sudo apt update
    sudo apt install libapache2-mod-security2 modsecurity-crs
    

    2. 启用 ModSecurity 模块

    确保 ModSecurity 模块已启用:

    sudo a2enmod security2
    

    3. 配置 ModSecurity

    你已经修改了 /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
    
        # Include your custom rules
        IncludeOptional /usr/share/modsecurity-crs/activated_rules/my_rules.conf
    
        # Include OWASP ModSecurity CRS rules if installed
        IncludeOptional /usr/share/modsecurity-crs/*.load
        IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
    </IfModule>
    

    4. 创建自定义规则文件

    确保你的自定义规则文件 /usr/share/modsecurity-crs/activated_rules/my_rules.conf 存在,并且内容正确。例如:

    SecRule ARGS_NAMES "@contains script" "id:1000001,phase:2,deny,status:403,log,msg:'Blocked request with script parameter'"
    

    这个规则会拦截任何包含 script 参数的请求。

    5. 检查 Apache 配置

    确保 Apache 配置中没有语法错误:

    sudo apachectl configtest
    

    如果输出 Syntax OK,说明配置没有问题。

    6. 重启 Apache

    重启 Apache 以使配置生效:

    sudo systemctl restart apache2
    

    7. 测试规则

    访问 http://1.1.1.1/?a=script,应该会被拦截并返回 403 状态码。

    8. 检查日志

    如果规则没有生效,检查 Apache 的错误日志和 ModSecurity 的审计日志,以获取更多信息:

    sudo tail -f /var/log/apache2/error.log
    sudo tail -f /var/log/apache2/modsec_audit.log
    

    9. 确保规则引擎已启用

    确保 ModSecurity 的规则引擎已启用。你可以在 /etc/modsecurity/modsecurity.conf 中检查以下配置:

    SecRuleEngine On
    

    10. 确保规则文件被正确加载

    确保你的自定义规则文件被正确加载。你可以在 Apache 的配置中添加一些调试信息,或者在规则文件中添加一些日志规则来确认规则是否被加载。

    总结

    通过以上步骤,你应该能够成功配置并启用自定义的 ModSecurity 规则。如果仍然遇到问题,建议逐步检查每个步骤,确保配置正确无误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月4日