Apache: httpd 2.0.52
Módulo usado mod_proxy
Essa semana me deparei com uma série de acessos estranhos quando analisava os logs do cluster de servidores web. Porque ou que um tipo de conexão "CONNECT login.icq.com:443 HTTP/1.0" estaria sendo logada nos servidores web? Então fui-me a pesquisar na internet e me deparei com uma vulnerabilidade.
Alguém estava explorando uma vulnerabilidade dos servidores web, mais especificamente no módulo mod_proxy usado para habilitar um recurso de proxy reverso que permite que você conecte-se a outros servidores internos da sua rede usando um único endereço.
Abaixo vou mostrar como evitar isso e alguns exemplos (Antes e Depois)
Testar se as conexões estão sendo aceitas pelo proxy-reverso
[root@vmware01 scripts]# nc www.meuserverweb.com.br 80
CONNECT login.icq.com:443 HTTP/1.0
Host:login.icq.com:443
HTTP/1.0 200 Connection Established
Proxy-agent: Apache/2.0.52 (CentOS)
*}E
[root@vmware01 scripts]#
Se der a mensagem acima você está vulnerável, podem estar usando seu servidor web como
servidor proxy para navegar em outros sites, enviar spams, etc...
Configuração do apache antes
ProxyRequests On
ProxyPass /site1 http://10.1.2.1/site1
ProxyPass /site2 http://10.1.2.1/site2
ProxyPassReverse /site1 http://10.1.2.1/site1
ProxyPassReverse /site2 http://10.1.2.1/site2
ProxyVia On
Logs do apache antes
96.229.41.9 - - [28/Oct/2008:13:44:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:43 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:43 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:50 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:45:03 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:45:17 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
Configuração do apache depois
Altere o parametro ProxyRequests para Off evitando o uso pelos spammers
ProxyRequests Off
ProxyPass /site1 http://10.1.2.1/site1
ProxyPass /site2 http://10.1.2.1/site2
ProxyPassReverse /site1 http://10.1.2.1/site1
ProxyPassReverse /site2 http://10.1.2.1/site2
ProxyVia Off
Logs do Apache depois
96.229.41.9 - - [30/Oct/2008:06:20:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
96.229.41.9 - - [30/Oct/2008:06:20:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
96.229.41.9 - - [30/Oct/2008:06:20:28 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
96.229.41.9 - - [30/Oct/2008:06:20:28 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
Teste do acesso depois
[root@vmware01 scripts]# nc www.meuserverweb.com.br 80
CONNECT login.icq.com:443 HTTP/1.1
Host:login.icq.com:443
HTTP/1.1 302 Found
Date: Thu, 30 Oct 2008 07:53:30 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.4.7
Set-Cookie: PHPSESSID=
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
location: http://www.meuserverweb.com.
Content-Length: 0
Connection: close
Content-Type: text/html; charset=iso-8859-1
[root@vmware01 scripts]#
Conexão fechada
consulte os livros on-line de segurança
Fonte: http://my.safaribooksonline.
Comandos usados para filtrar e obter estatísticas top 10
>>Top Ten Attacker IP Addresses
# cat access_log | awk '{print $7}' | sort | uniq -c | sort -rn | head –10
# cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head –10
Extraindo os ips
# for f in `cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10 |
awk '{print $2}'`; do grep $f access_log | head –1 ; done
Serviços para checagem de proxy
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=proxy+check
http://www.checker.freeproxy.ru/checker/
http://www.ip-adress.com/Proxy_Checker/
Observações
Module Name | Description | Security Risk | Recommend |
---|
Mod_proxy | This module turns the apache web server into a web proxy server. | Care should be taken with the configuration of proxy servers, as if the intent is to facilitate internal organization access to external web sites, there is a risk that the reverse could be enabled, allowing Internet users to potentially browse internal web servers. | If this server is a normal web server, then this module is not required for the normal operation and it should be disabled. If this server is being used as a proxy or a reverse proxy, then this module must be enabled. |
Algumas informações sobre o módulo
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
http://www.maxmind.com/
Nenhum comentário:
Postar um comentário