Aquí, estoy tratando de lograr que se llame a un script Lua desde las reglas de seguridad de mods.
Hay 2 componentes: -
1.example.com (WAF)
2.test.com (aplicación web)
test.com contiene páginas: -
index.php
protectedpage.php
Si el usuario accede a http://example.com/protectedpage.php
, la regla carga el script lua y escribe datos en lua_output.txt.
Me he quedado atrapado aquí durante los últimos 2 días intentando varias variaciones.
Contenido de /etc/apache2/sites-enabled/example.com.conf
<VirtualHost *:80>
ServerAdmin [email protected]
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/
Contenido de /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
La regla se ejecuta. Pero el guión no lo es. No estoy seguro de si está encadenando o no. Por favor hazme saber como arreglar esto. Gracias,
Referencias hasta ahora: - 1. Documentación ModSecurity