Implementação de servidor proxy inteligente [RESOLVIDO]

1. Implementação de servidor proxy inteligente [RESOLVIDO]

michael
micdoug

(usa Sabayon)

Enviado em 13/09/2012 - 10:30h

Pessoal, venho a algum tempo pesquisando sobre a implementação de um servidor proxy.
Após conhecer como funciona e quais são os tipos eu estabeleci uma meta para implantar em uma empresa. Um servidor proxy transparente com controle de tráfego http e https com regras baseadas em ips.
O problema inicial estava em capturar a tela inicial do usuario, devem existir jeitos melhores de se fazer isso, mas eu fiz o seguinte: levantei um servidor web apache e coloquei ele escutando conexões nas portas 81, 82 e 443. Fiz uma regra de firewall que inicialmente redireciona todos os acessos à Internet para as portas 82 (http) e 443 (https). Nas portas 82 e 443 eu apliquei uma regra no apache que reescreve a url que tentou acessá-lo redirecionando para uma pagina na porta 81 que contem uma pagina indicando os termos de uso do proxy e contem um botao aceito que chama um script php que libera o acesso à Internet, e abre uma popup que quando fechada ativa o redirecionamento para 82 e 443 novamente.
Pretendo melhorar este metodo mas por enquanto ele esta me atendendo. O problema agora está em controlar o tráfego https pelo proxy transparente, seu que não é possível, então pensei o seguinte: eu poderia redirecionar todo o tráfego com destino a porta 443 para uma página (semelhante ao que acontece com a pagina inicial) que contem uma explicação que o uso de sites https estaria desativado por padrao, e que para usá-lo a pessoa teria que configurar o proxy no navegador.
Configurando no navegador, mesmo se o proxy estiver configurado como transparente ele responde ao trafego https e consegue controlá-lo. Só que pensei também em construir um aplicativo em c++ e qt que configure o proxy nos clientes, e disponibilizar o download nesta página, porém não sei como eu poderia implementar a configuração do proxy neste aplicativo, pensei em chamar um comando via função system() mas não encontrei comando que configure o proxy no windows desta maneira, para linux seria mais tranquilo.
Alguém tem uma sugestão ou está com problema semelhante ao meu e quer compartilhar da minha solução e me ajudar a melhorá-la. Desde já obrigado.


  


2. Re: Implementação de servidor proxy inteligente [RESOLVIDO]

Alex
alexhctp

(usa Linux Mint)

Enviado em 13/09/2012 - 12:34h

Boa tarde,

Vamos por partes!

Primeiro:
Parabéns pela criatividade, sua solução vai me ajudar em um sistema que to projetando para um cliente. Obrigado ;)

Segundo:
Leia o artigo a seguir para te ajudar na filtragem de conteúdo HTTPS(ssl na porta 443):
http://www.vivaolinux.com.br/artigo/Filtragem-de-paginas-SSL-(443)-no-Squid-transparente/

Terceiro:
Se você quiser, tenho dois scripts (vbScrip) que adicionam ou removem o proxy. Seguem abaixo:

Primeiro Script
########## Inicio do script - CONFIGURA PROXY ###########

'http://www.visualbasicscript.com/m26837.aspx
' * VBScript to change the IE Proxy Server, by directly editing the registry
' * Version: 2.1
' *
' * Enjoy!

Option Explicit

' * Proxy Server

Dim proxy
proxy = "192.168.0.1:3128"

' * Application Title

Dim Title
Title = "Troca automática de proxy"

' * Welcome Message

Dim Welcome_Text
Welcome_Text = "você deseja trocar o endereço proxy para " & proxy & "?"

Call Welcome()

Sub Welcome()
Dim GO
GO = MsgBox(Welcome_Text, 36, Title)
If GO = 7 Then
WScript.Quit
End If
End Sub

' * Warning Message

Dim Warning_Text
Warning_Text = "Atenção todas as janelas do internet explorer serão fechadas automaticamente." & Chr(10) _
& Chr(10) _
& "você deseja continuar?"

Call Warning()

Sub Warning()
Dim GO
GO = MsgBox(Warning_Text, 36, Title)
If GO = 7 Then
WScript.Quit
End If
End Sub

' * WSHShell

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

' * Kill IE (and consequently WE as well)

Call Kill_IE()

Sub Kill_IE()
While WSHShell.AppActivate("Internet Explorer")
WSHShell.SendKeys "%{F4}"
WScript.Sleep 500 ' Impedes a traffic jam
WEnd
End Sub

' * Regedits

WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 1, "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer", proxy
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", ""
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\DisablePasswordCaching", 1, "REG_DWORD"

' * Confirmation

Dim confirm
confirm = MsgBox("PO internet explorer usará o seguinte endereço proxy" & proxy & ". Enjoy.", 64, Title)

' * Open IE

WSHShell.run "iexplore.exe http://www.google.com.br";

###### Fim do script - CONFIGURA PROXY ##############


Segundo script
###### Inicio do script - REMOVE PROXY ###########
' * VBScript to change the IE Proxy Server, by directly editing the registry
' * Version: 2.1
' *
' * Enjoy!

Option Explicit

' * Proxy Server

Dim proxy
proxy = "192.168.0.1:3128"

' * Application Title

Dim Title
Title = "Troca automática de proxy"

' * Welcome Message

Dim Welcome_Text
Welcome_Text = "o internet explorer será configurado para navegar sem proxy"

Call Welcome()

Sub Welcome()
Dim GO
GO = MsgBox(Welcome_Text, 36, Title)
If GO = 7 Then
WScript.Quit
End If
End Sub

' * Warning Message

Dim Warning_Text
Warning_Text = "Atenção todas as janelas do internet explorer serão fechadas automaticamente." & Chr(10) _
& Chr(10) _
& "você deseja continuar?"

Call Warning()

Sub Warning()
Dim GO
GO = MsgBox(Warning_Text, 36, Title)
If GO = 7 Then
WScript.Quit
End If
End Sub

' * WSHShell

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

' * Kill IE (and consequently WE as well)

Call Kill_IE()

Sub Kill_IE()
While WSHShell.AppActivate("Internet Explorer")
WSHShell.SendKeys "%{F4}"
WScript.Sleep 500 ' Impedes a traffic jam
WEnd
End Sub

' * Regedits

WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 0, "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer", proxy
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", ""
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\DisablePasswordCaching", 1, "REG_DWORD"

' * Confirmation

Dim confirm
confirm = MsgBox("o internet explorer foi configurado para não usar proxy" , 64, Title)

' * Open IE

WSHShell.run "iexplore.exe http://www.google.com.br";

###### Fim do script - REMOVE PROXY ##############

Os script acima foram feitos com base no post do fórum de VBScrip conforme link a seguir:
http://www.visualbasicscript.com/m26837.aspx

Espero ter ajudado!!!


3. Re: Implementação de servidor proxy inteligente [RESOLVIDO]

michael
micdoug

(usa Sabayon)

Enviado em 14/09/2012 - 14:05h

alexhctp, obrigado pela ajuda. Pude ver a sua resposta só agora. Vou começar a implantar aqui hoje e depois posto os resultados. Valeu!!!



4. Re: Implementação de servidor proxy inteligente [RESOLVIDO]

Alex
alexhctp

(usa Linux Mint)

Enviado em 15/09/2012 - 11:35h

Ok amigo, aguardamos a sua resposta informando o resultado!!!


5. Re: Implementação de servidor proxy inteligente [RESOLVIDO]

michael
micdoug

(usa Sabayon)

Enviado em 27/09/2012 - 13:22h

Bom, analisando a situação deixando os acessos abertos na porta 443 após desvio no firewall, e bloqueei sites https que não são desejados acessos um a um via regras no iptables. Bloqueei facebook, twitter, meebo, entre outros. A medida em que forem aparecendo mais sites para bloqueio basta criar regras para bloqueá-los também. Não gostei muito deste modelo do squid interceptar acesso https pelo modo transparente, em muitos sites dá erro, provavelmente é algum erro de configuração que eu cometi, então por enquanto pretendo deixar assim. Muito obrigado pela ajuda, e foi mal demorar para responder, as coisas estão muito corridas ultimamente. Final de semana agora pretendo escrever um tutorial em forma de artigo e publicar aqui explicando como tudo foi feito. Até mais.


6. Re: Implementação de servidor proxy inteligente [RESOLVIDO]

Alex
alexhctp

(usa Linux Mint)

Enviado em 27/09/2012 - 14:02h

Opa... que bom que você conseguiu implementar uma solução alternativa que atendeu a sua necessidade. Vamos aguardar ansiosos pelo seu artigo onde tu explica como conseguiu, certamente será útil para mim e para os outros companheiros.

Sobre o programa em C++ que tu pensou em desenvolver pra configurar o proxy nos clientes, como ficou essas parte do projeto???

Grande abraço!


7. Re: Implementação de servidor proxy inteligente [RESOLVIDO]

michael
micdoug

(usa Sabayon)

Enviado em 27/11/2012 - 17:36h

Cara acabei adiando um pouco a criação do programa aqui. Agora nas férias devo mexer um pouco. Vou fechar o tópico e assim que puder eu retorno. Foi mal ficar este tempo sem responder, é que acabei mudando de emprego e as coisas estavam meio fora do lugar. Até mais.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts