Algumas regras do mod_security não estão sendo aplicadas

1

Temos visto muitos spam de referência em um de nossos servidores, então decidi adicionar algumas regras personalizadas de modsecurity para tentar parar pelo menos algumas delas.

Adicionei várias regras, por exemplo:

SecRule REQUEST_HEADERS:User-Agent "/\byourekillingme.org\b/" \
    "phase:1,log,deny,status:503,msg:'Referer spam1',id:101"

SecRule REQUEST_HEADERS:User-Agent "/\bahrefs.com/robot\b/" \
    "phase:1,log,deny,status:503,msg:'Referer spam2',id:102"

SecRule REQUEST_HEADERS:User-Agent "/\bsemrush.com/bot\b/" \
    "phase:1,log,deny,status:503,msg:'Referer spam6',id:106"

mas como você pode ver na saída do log, enquanto a regra de ahrefs (id 102 acima) está sendo aplicada, as outras não são (existem outras, mas a ahrefs é a única que está funcionando):

107.180.120.23 - - [23/Nov/2017:11:08:00 +0000] "GET /tri-levlen-28-side-effects-3f1 HTTP/1.1" 200 50965 "http://www.mydomain.co.uk/tri-levlen-28-side-effects-3f1#elephant" "WordPress/4.9; http://yourekillingme.org"

51.255.65.42 - - [23/Nov/2017:10:40:51 +0000] "GET /pink-viagra-price-52c HTTP/1.1" 503 315459 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)"

46.229.168.73 - - [23/Nov/2017:11:07:50 +0000] "GET /viagra-for-sale-online-cheap-52c HTTP/1.1" 200 51060 "-" "Mozilla/5.0 (compatible; SemrushBot/1.2~bl; +http://www.semrush.com/bot.html)"

Eu também verifiquei /usr/local/apache/logs/modsec_audit.log para confirmar que é a minha regra que está causando o 503 e não outra regra em algum outro lugar, e isso mostra muitas entradas para:

Message: Access denied with code 503 (phase 1). Pattern match "/\bahrefs.com/robot\b/" at REQUEST_HEADERS:User-Agent. [file "/usr/local/apache/conf/modsec2.myrules.conf"] [line "8"] [id "102"] [msg "Referer spam2"]

indicando que minha regra modsec está parando.

Alguém pode ver por que minhas outras regras não estão sendo aplicadas?

    
por Keith Langmead 23.11.2017 / 12:28

1 resposta

1

São as barras. Expressões regulares no ModSecurity não são limitadas por barras, então elas são interpretadas como uma parte literal da expressão regular.

Todas as suas expressões são URLs correspondentes, portanto, a primeira barra corresponde à barra final na parte http:// do URL, mas apenas a URL AHrefs tem uma barra final, sendo a única que acaba correspondendo a essas expressões regulares .

Não sei se o \b está fazendo algo útil também. Parece corresponder a esses três no . ou no / ou no final da sequência. Se for realmente entendido pelo ModSecurity, isso pode fazer com que expressões futuras de outros bots não correspondam quando você espera que elas correspondam.

    
por 23.11.2017 / 13:37