ModSecurity no Apache (Debian Wheezy), log de autenticação

5

Eu sou novo no ModSecurity, ele funciona muito bem no servidor, mas eu gostaria de controlar a maneira como ele registra as coisas. Por exemplo, como eu estou solucionando meu site, a fim de whitelist ou corrigir problemas de codificação php para que eu possa ter um limpo modsec_audit.log quando tudo está funcionando corretamente, me deparei com o seguinte.

Sempre que eu solicitar uma URL protegida por senha por basic ou htdigest authentication, o ModSecurity registrará isso em modsec_audit.log da seguinte forma:

Autenticação htdigest:

--838e7b1b-A--
[17/Nov/2013:19:13:51 +0200] Uoj5T8CoAWQAABfMVE0AAAAA xxx.xxx.xxx.xxx XXXXX xxx.xxx.xxx.xxx XXXXX
--838e7b1b-B--
GET / HTTP/1.1
Host: XXX.XXX.com:XXXX
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive

--838e7b1b-F--
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Digest realm="Members Only", nonce="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", algorithm=MD5, qop="auth"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 290
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

--838e7b1b-H--
Stopwatch: 1384708431494144 2002 (- - -)
Stopwatch2: 1384708431494144 2002; combined=32, p1=0, p2=0, p3=0, p4=0, p5=32, sr=0, sw=0, l=0, gc=0
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache

--838e7b1b-Z--

ou

Autenticação básica:

--b8248f7a-A--
[17/Nov/2013:19:28:11 +0200] Uoj8q8CoAWQAABgxs7kAAAAM xxx.xxx.xxx.xxx XXXXX xxx.xxx.xxx.xxx XXXXX
--b8248f7a-B--
GET / HTTP/1.1
Host: XXX.XXX.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Connection: keep-alive

--b8248f7a-F--
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic realm="Members Only"
Content-Encoding: gzip
Vary: Accept-Encoding,User-Agent
Cache-Control: no-cache, private, no-transform, must-revalidate, proxy-revalidate, post-check=300, pre-check=300, max-age=300
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

--b8248f7a-H--
Apache-Handler: x-httpd-suphp
Stopwatch: 1384709291811105 152463 (- - -)
Stopwatch2: 1384709291811105 152463; combined=54, p1=0, p2=0, p3=0, p4=0, p5=54, sr=0, sw=0, l=0, gc=0
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache

--b8248f7a-Z--

O registro acima ocorre logo após a solicitação, não estou mostrando o que acontece em uma senha com falha ou com sucesso.

A minha pergunta é se existe alguma maneira de impedir que isso seja registrado. Eu tentei whitelist meu IP, mas não teve nenhum resultado. Não tenho certeza se é uma boa idéia impedi-lo de registrar uma coisa dessas ou não, mas acho que isso só inundará o /var/log/apache2/modsec_audit.log de tais informações sempre que "eu" solicitar uma URL protegida por senha.

Mais algumas informações sobre o meu servidor:

# apt-cache show libapache-mod-security | grep Version
Version: 2.6.6-6+deb7u1

Eu usei as seguintes regras até agora:

/usr/share/modsecurity-crs/base_rules/

.. e modsecurity.conf-recomendado como modsecurity.conf

Obrigado antecipadamente. Felicidades

EDITAR:

Acho que encontrei uma solução alternativa que resolve o problema.

Para excluir o status 401 de ser registrado, alterei o SecAuditLogRelevantStatus regex em modsecurity.conf deste:

SecAuditLogRelevantStatus "^(?:5|4(?!04))"

para isso:

SecAuditLogRelevantStatus "^(?:5|4\d[^41])"

Também fiz uma alteração adicional, não tenho certeza se é relevante, mas alterei SecDefaultAction em modsecurity_crs_10_setup.conf disso:

SecDefaultAction "phase:2,deny,log"

para isso:

SecDefaultAction "phase:2,deny,log,noauditlog"

Após testar em um URL protegido por senha, agora não obtenho nada em modsec_audit.log , que é exatamente o que eu queria. Não tenho certeza se havia uma maneira muito mais inteligente de fazer isso, mas isso funciona. Quaisquer comentários apreciados.

    
por durduvakis 17.11.2013 / 19:29

1 resposta

0

1) Certifique-se de que sua regra da lista de desbloqueio passe na fase 1 e seja a mais alta entre a regra mais alta do seu conjunto de regras.

Aqui está uma regra de exemplo:

SecRule REMOTE_ADDR "^111.222.333.444" phase:1,nolog,allow,ctl:ruleEngine=off

O aviso ignora a fase 1 e não continua em nenhuma outra parte do processo de verificação, está configurado para permitir, não registrar em log e não está sujeito ao mecanismo de regras.

2) HTTP 401 é um código de erro de duas pontas. O acesso ao recurso de URL requer autenticação do usuário 1) que ainda não foi fornecida ou 2) que foi fornecido, mas falhou nos testes de autorização. Isso é importante para ações corretivas em tentativas de invasão, como logins de força bruta.

3) A data desses registros é realmente de novembro de 2013? Pode ser necessário atualizar sua data / hora no seu dispositivo.

    
por 16.06.2015 / 03:08