Servidor Proxy HTTP
Os servidores proxy são usados tanto para fins legais e ilegais. Na empresa, um servidor proxy é usado para facilitar a segurança, serviços de controle ou de cache administrativos, entre outros fins. Em um contexto de computação pessoal, servidores proxy são usados para ativar a privacidade do usuário e navegação anônima. Os servidores proxy pode também ser utilizado para a finalidade contrária: monitorizar o tráfego e prejudicar a privacidade do usuário .
Para o usuário, o servidor proxy é invisível; todos as requisições para a Internet e respostas parece ser diretamente com o servidor Internet. (O proxy não é realmente invisível, normalmente seu endereço IP tem de ser especificado como uma opção de configuração para o navegador ou outro programa de protocolo.)
Este trabalho tem a finalidade de trazer o conhecimento do mecanismo de funcionamento do proxy.
Fluxo do trabalho:
- Configurar o servidor proxy
- No browser :
- Acessar um site
- No servidor TCP
- Aceita conexão do browser
- cria uma thread com a conexão do browser
- Na thread:
- Recebe requisição HTTP (do browser)
- armazena a requisição em um bloco de Bytes.
- Verifica se contem “monitorando”
- se sim: devolve pagina padrão com código HTML com mensagem de proibição
- finaliza conexão com o Browser
- Finaliza thread.
- senão:
- extrai o endereço do servidor requisitado(pelo browser).
- abre uma conexão com o servidor requisitado
- Repassa a requisição para o servidor
- Recebe a resposta do servidor
- envia a resposta do servidor para Browser.
- quando fechar a conexão com o servidor finaliza conexão com o Browser
- Finaliza thread.
O trabalho deve:
- Usar Sockets TCP Multi-thread
- Cliente e Servidor
- Receber requisições HTTP do Cliente
- Colocar no browser o servidor proxy como endereço onde roda o proxy (127.0.0.1 - local host)
- Enviar as requisições para o servidor
- Receber as resposta do servidor e repassar para o cliente
- Caso o nome do objeto requisitado contenha a palavra “monitorando” deve ser devolvido uma Pagina HTML com a mensagem “Acesso não autorizado!” - e mensagem deve ser gravada em um servidor SysLog em outra maquina (diferente da local Host)
- Fazer verificação de integridade do código.
- apresentar no proxy e no SysLog as informações:
- endereço IP do cliente e do servidor de cada requisição
- Código da resposta (Ex: 200 OK)
- Este trabalho deverá ser defendido para o professor nas aulas definidas para este propósito para validar a nota.
- O aluno deve usar a biblioteca SysLog para armazenar paginas acessadas e negadas.
- Servidor SysLog deve estar em outra maquina.
- O aluno deve fazer uma verificação de integridade antes do proxy executar e guardar armazenar no servidor SysLog.
- Para agilizar a verificação de integridade são utilizadas somas de verificação (checksums) ou resumos criptográficos como o MD5 e SHA.
<HTML> <HEAD> <TITLE>Título da página</TITLE> </HEAD> <BODY> Conteúdo da página </BODY> </HTML>
GET /pagina.html HTTP/1.0 Host: www.UTFPR.edu.br Accept: text/plain; text/html Accept-Language: en-gb Connection: Keep-Alive Host: localhost Referer: http://localhost/ch8/SendDetails.htm User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Content-Length: 33 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate
Respostas HTTP:
HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Mon, 3 Jan 2016 17:13:34 GMT Content-Type: text/html Last-Modified: Mon, 11 Jan 2016 17:24:42 GMT Content-Length: 112
<html> <head> <title>Exemplo de resposta HTTP </title> </head> <body> Acesso não autorizado! </body> </html>