使用modsecurity规则调用Lua脚本

时间:2018-08-08 10:24:27

标签: apache lua mod-security2

在这里,我正在尝试从modsecurity规则中完成对Lua脚本的调用。

有2个组成部分:-

1.example.com(WAF)

2.test.com(网络应用程序)

test.com包含以下页面:-

index.php
protectedpage.php

如果用户访问http://example.com/protectedpage.php,则规则将加载lua脚本并将数据写入lua_output.txt。

过去2天,我一直被困在这里,尝试几种变化。

  

/etc/apache2/sites-enabled/example.com.conf的内容

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyRequests Off

    LoadModule security3_module /home/testuser/spiderlabs/ModSecurity-apache/src/.libs/mod_security3.so
    <IfModule security3_module>
            modsecurity_rules 'SecRuleEngine On'
            modsecurity_rules 'SecRequestBodyAccess On'
            modsecurity_rules 'SecResponseBodyAccess On'
            modsecurity_rules_file "/etc/apache2/modsecurity.d/include.conf"
            modsecurity_rules 'SecAuditLogFormat JSON'
    </IfModule>

    #Access to /getprotected 
    modsecurity_rules 'SecRule REQUEST_FILENAME "^/getprotected.php$" "phase:2, t:none, t:normalisePath, t:lowercase, t:urlDecodeUni, chain, deny, log, id:1301"'
    modsecurity_rules 'SecRuleScript /etc/apache2/lua/checkaccess.lua \
    "id:400,Phase:2"'

    ProxyPass /getprotected.php !
    ProxyPass /getpassword.php !
    ProxyPass / http://test.com:8080/
    ProxyPassReverse / http://test.com:8080/

  

/etc/apache2/lua/checkaccess.lua的内容

   #!/usr/bin/lua

    function main()
        local f = assert(io.open('/etc/apache2/lua/lua_output.txt','a'))
        f:write("--- Hello world ---\n")
    end

执行规则。但是脚本不是。我不确定它是否链接。 请让我知道如何解决此问题。 谢谢,

到目前为止的参考资料: 1. ModSecurity Documentation

  1. Lua scripting blog 1

  2. blog 2

0 个答案:

没有答案