Distro: CentOS 4.6
Apache: httpd 2.0.52
Módulo usado mod_proxy
Visitando o blog do Marcos Abadi segue um post interessante :
Analisando os logs do cluster de servidores web foi visto um tipo de conexão “CONNECT login.icq.com:443 HTTP/1.0” que estaria logado nos servidores web? Então pesquisando na internet foi visto que era 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 conecte-se a outros servidores internos da rede usando um único endereço.
Abaixo como evitar e alguns exemplos (Antes e Depois)
Testar se as conexões estão sendo aceitas pelo proxy-reverso
[root@vmware01 scripts]# nc http://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 http://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
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/
fonte : http://marcosabadi.blogspot.com
Leia Também : killapache: DDOS tool that freezes Apache Web Server!