Mudanças entre as edições de "Projeto Integrador - 2010.1 - Dicas de GAR"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 107: Linha 107:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* Criação de script para redirecionamento das requisições HTTP:
+
* Criação de script para redirecionamento das requisições HTTP: arquivo <tt>/etc/init.d/nat</tt>.
<syntaxhighlight lang=bash>
+
#!/bin/sh
vi
+
 
</syntaxhighlight>
+
# Interfaces
#!/bin/sh
+
IFACE_INTERNA="eth0"
 +
IFACE_EXTERNA="eth1"
 +
 
 +
# NAT
 +
iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE
 
   
 
   
# Interfaces
+
# Redirecionamento para o Analisador de Conteúdo
IFACE_INTERNA="eth0"
+
iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \
IFACE_EXTERNA="eth1"
+
-j REDIRECT --to-port 8080
 
   
 
   
# NAT
+
# Bloqueio para acesso direto ao Proxy
iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE
+
iptables -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP
+
 
# Redirecionamento para o Analisador de Conteúdo
+
exit 0
iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \
+
</syntaxhighlight>
-j REDIRECT --to-port 8080
 
 
# Bloqueio para acesso direto ao Proxy
 
iptables -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP
 
  
 
===Analisador de Conteúdo===
 
===Analisador de Conteúdo===

Edição das 19h38min de 14 de junho de 2010

Organização

<graphviz>

digraph Serviços { splines = true

subgraph clusterRede { label = "Rede" DHCP }

subgraph clusterAplicacao { label = "Aplicação" DNS HTTP MySQL SMTP IMAP }

DHCP -> DNS -> HTTP MySQL -> HTTP -> MySQL DNS -> SMTP -> HTTP DNS -> IMAP -> HTTP }

</graphviz>

Modificação de Conteúdo Web

Uma das formas de se alterar dinamicamente uma página Web, antes de entregá-la ao cliente que a solicitou, é através de proxies. Com eles, é possível ler a requisição antes mesmo de consumir recurso de rede, além da possibilidade de modificar o conteúdo (payload) após o processamento da página no servidor Web.

Componentes

No exemplo abaixo foram utilizados os seguintes componentes:

  • Cliente Web: sem qualquer configuração adicional. Ferramenta utilizada: qualquer navegador com suporte a HTTP versão 1.1 (Firefox, Chrome, etc.).
  • Firewall: através de regras de modificação dos pacotes IP, redirecionará, de forma transparente, os pedidos para o Analisador de Conteúdo. Ferramenta utilizada: netfilter, popularmente conhecido como iptables.
  • Analisador de Conteúdo: filtra e modifica conteúdo (payload) da camada de Aplicação, como páginas HTML, imagens e outros. Ferramenta utilizada: Dansguardian.
  • Proxy: elemento intermediário nas requisições e respostas na camada de Aplicação, podendo atuar como filtro de conteúdo. Ferramenta utilizada: Squid.
  • Servidor Web: monta dinamicamente as páginas HTML usando programação interpretada e banco de dados. Ferramenta utilizada: servidor Web Apache versão 2.2 com suporte à linguagem de programação PHP e banco de dados MySQL.

Fluxograma dos pacotes

<graphviz>

digraph Navegacao {

Firewall [shape=plaintext] subgraph clusterCliente { label=Cliente Socket_C [label=Navegador,shape=Mrecord] } subgraph clusterAnalisador { label=Analisador Socket_A [label=Servidor,shape=Mrecord] Socket_AA [label=Cliente,shape=Mrecord] Filtragem_A [label=Filtragem,shape=Mrecord] Modificação_A [label=Modificação,shape=Mrecord] } subgraph clusterProxy { label=Proxy Socket_P [label=Servidor,shape=Mrecord] Socket_PP [label=Cliente,shape=Mrecord] Filtragem_P [label=Filtragem,shape=Mrecord] } subgraph clusterSite { label=Site Socket_S [label=Socket,shape=Mrecord] Montagem_S [label="Montagem do conteúdo dinâmico",shape=Mrecord] }

Socket_C -> Firewall -> Socket_A [label=1,color=red] Socket_A -> Filtragem_A [label=2,color=red] Filtragem_A -> Socket_AA [label=3,color=red] Socket_AA -> Socket_P [label=4,color=red] Socket_P -> Filtragem_P [label=5,color=red] Filtragem_P -> Socket_PP [label=6,color=red] Socket_PP -> Socket_S [label=7,color=red] Socket_S -> Montagem_S [label=8,color=red] Montagem_S -> Socket_S [label=9,color=blue] Socket_S -> Socket_PP [label=10,color=blue] Socket_PP -> Filtragem_P [label=11,color=blue] Filtragem_P -> Socket_P [label=12,color=blue] Socket_P -> Socket_AA [label=13,color=blue] Socket_AA -> Filtragem_A [label=14,color=blue] Filtragem_A -> Modificação_A [label=15,color=blue] Modificação_A -> Socket_A [label=16,color=blue] Socket_A -> Firewall -> Socket_C [label=17,color=blue] }

</graphviz>

Instalação e Configuração do Cenário

Como no nosso cenário não é possível

Firewall

  • Instalação do netfilter:
aptitude install iptables
  • Ativação do roteamento
sed -i s/.*net.ipv4.ip_forward.*/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
  • Criação de script para redirecionamento das requisições HTTP: arquivo /etc/init.d/nat.
  1. !/bin/sh
  1. Interfaces

IFACE_INTERNA="eth0" IFACE_EXTERNA="eth1"

  1. NAT

iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE

  1. Redirecionamento para o Analisador de Conteúdo

iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \ -j REDIRECT --to-port 8080

  1. Bloqueio para acesso direto ao Proxy

iptables -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP

exit 0 </syntaxhighlight>

Analisador de Conteúdo

Proxy

Bibliografia



Voltar para Página principal do Projeto