### Test the SecStatusEngine
# On
{
type => "misc",
comment => "Setting SecStatusEngine to On",
conf => qq(
SecRuleEngine On
SecStatusEngine On
),
match_log => {
error => [ qr/ModSecurity: StatusEngine call successfully sent/, 1],
-error => [ qr/Status engine is currently disabled, enable it by set SecStatusEngine to On/, 1],
},
match_response => {
status => qr/^200$/,
},
request => new HTTP::Request(
POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
[
"Content-Type" => "application/x-www-form-urlencoded",
],
"arg1=val1&arg2=val2",
),
},
# Off
{
type => "misc",
comment => "Setting SecStatusEngine to Off",
conf => qq(
SecRuleEngine On
SecStatusEngine Off
),
match_log => {
-error => [ qr/ModSecurity: StatusEngine call successfully sent/, 1],
error => [ qr/Status engine is currently disabled, enable it by set SecStatusEngine to On/, 1],
},
match_response => {
status => qr/^200$/,
},
request => new HTTP::Request(
POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
[
"Content-Type" => "application/x-www-form-urlencoded",
],
"arg1=val1&arg2=val2",
),
},
# On and SecServerSignature
{
type => "misc",
comment => "SecStatusEngine On using SecServerSignature",
conf => qq(
SecRuleEngine On
SecServerSignature "SpiderServer v0.1a"
SecStatusEngine On
),
match_log => {
error => [ qr/ModSecurity: StatusEngine call successfully sent/, 1],
-error => [ qr/StatusEngine call: .*SpiderServer v0.1a.*/, 1],
},
match_response => {
status => qr/^200$/,
},
request => new HTTP::Request(
POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
[
"Content-Type" => "application/x-www-form-urlencoded",
],
"arg1=val1&arg2=val2",
),
},
# On and SecServerSignature
{
type => "misc",
comment => "SecStatusEngine On/SecServerSignature - checking signature",
conf => qq(
SecRuleEngine On
SecServerSignature "SpiderServer v0.1a"
SecStatusEngine On
),
match_log => {
error => {
apache => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,Apache/, 1],
nginx => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,nginx/, 1],
}
},
match_response => {
status => qr/^200$/,
},
request => new HTTP::Request(
POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
[
"Content-Type" => "application/x-www-form-urlencoded",
],
"arg1=val1&arg2=val2",
),
},
# On and SecServerSignature
{
type => "misc",
comment => "SecStatusEngine On - checking signature",
conf => qq(
SecStatusEngine On
),
match_log => {
error => {
apache => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,Apache/, 1],
nginx => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,nginx/, 1],
}
},
match_response => {
status => qr/^200$/,
},
request => new HTTP::Request(
POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
[
"Content-Type" => "application/x-www-form-urlencoded",
],
"arg1=val1&arg2=val2",
),
},