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 97: Linha 97:
  
 
===''Firewall''===
 
===''Firewall''===
aptitude install iptables
+
* Instalação do netfilter:
 +
<syntaxhighlight lang=bash>
 +
aptitude install iptables
 +
</syntaxhighlight>
 +
 
 +
* Ativação do roteamento
 +
<syntaxhighlight lang=bash>
 +
sed -i s/.*net.ipv4.ip_forward.*/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
 +
</syntaxhighlight>
 +
 
 +
* Criação de script para redirecionamento das requisições HTTP:
 +
<syntaxhighlight lang=bash>
 +
vi
 +
</syntaxhighlight>
 +
#!/bin/sh
 +
 +
# Interfaces
 +
IFACE_INTERNA="eth0"
 +
IFACE_EXTERNA="eth1"
 +
 +
# NAT
 +
iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE
 +
 +
# Redirecionamento para o Analisador de Conteúdo
 +
iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \
 +
-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 19h37min 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:
vi
#!/bin/sh

# Interfaces
IFACE_INTERNA="eth0"
IFACE_EXTERNA="eth1"

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

# Redirecionamento para o Analisador de Conteúdo
iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \
-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

Proxy

Bibliografia



Voltar para Página principal do Projeto