Pesquisar neste blog

quinta-feira, 30 de outubro de 2008

Prevenindo Ataques web com Apache - (Preventing Web Attacks with Apache)

Distro: CentOS 4.6
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=
f77b4da01d008ef668e4102a504d1300; path=/
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.br/
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.com/0321321286/ch10lev1sec15

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 RiskRecommend
Mod_proxyThis 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
Descubra a localização de quem está realizando um ataque:
http://www.maxmind.com/

Nenhum comentário: