Mudanças entre as edições de "Projeto Integrador - 2010.1 - Dicas de GAR"
Linha 196: | Linha 196: | ||
* MORIMOTO. C. [http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap5-18 Redes e Servidores: usando o DansGuardian para barrar páginas impróprias]. GDH Press. ed. 2. cap. 5. 2009. Acessado em: 14/06/2010. | * MORIMOTO. C. [http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap5-18 Redes e Servidores: usando o DansGuardian para barrar páginas impróprias]. GDH Press. ed. 2. cap. 5. 2009. Acessado em: 14/06/2010. | ||
− | =Gerência de Rede | + | =Gerência de Rede? Monitoramento e Contabilização= |
O [http://cacti.net Cacti] é um gerente de rede baseado em SNMP. | O [http://cacti.net Cacti] é um gerente de rede baseado em SNMP. | ||
Edição das 21h01min de 14 de junho de 2010
Organização
- Usem mapas mentais ou grafos direcionados (dígrafos) para ver/compreender a relação entre camadas e serviços de rede. Exemplo:
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 encaminhá-la ao servidor Web - economizando recurso de rede - além da possibilidade de modificar o conteúdo (payload) após o processamento e resposta do mesmo servidor.
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
digraph Navegacao {
Firewall [shape=plaintext] subgraph clusterCliente { label=Cliente Socket_C [label=Navegador,shape=Mrecord] } subgraph clusterAnalisador { label="Analisador de Conteúdo" 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 é interessante configurar os clientes HTTP dos usuários, seja pela dificuldade técnica bem como esforço da equipe de T.I., é preciso uma solução transparente para modificar o conteúdo das páginas - para adicionar a propaganda do estabelecimento comercial. Para tanto, segue abaixo uma proposta de solução desse problema.
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/alteração de script para redirecionamento das requisições HTTP: arquivo /etc/init.d/nat.
#!/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
exit 0
Garanta que o script iniciará junto com o sistema, de preferência o mais cedo possível. No caso abaixo, o script nat iniciará em primeiro lugar (01) nos níveis de execução 2 a 5 (2 3 4 5).
update-rc.d nat start 01 2 3 4 5 .
Analisador de Conteúdo
- Instalação do DanGuardian:
aptitude install dansguardian
As configurações "de fábrica" assumem que firewall, analisador de conteúdo e proxy rodam na mesma máquina. No nosso caso, isso também acontece. Portanto, não será preciso alterar a configuração geral do DansGuardian, exceto alguns detalhes do pacote específico para Debian/Ubuntu. No arquivo /etc/dansguardian/dansguardian.conf, deve-se comentar essa linha:
UNCONFIGURED
e, se achar interessante, alterar as mensagens para português do Brasil:
portuguese = 'ptbrazilian'
- Aqui, um exemplo de configuração do modificador de conteúdo (content) baseado em uma lista de expressões regulares (regular expression list):
vi /etc/dansguardian/lists/contentregexplist
com a seguinte adição de uma linha ao final do arquivo:
"(<body[^>]*[^>]*>)"->"\1
<img src=""/>
"
</syntaxhighlight>
Essa linha acima, por exemplo, adiciona o logo do IF-SC no início da página, após a marcação <body>; ou seja, no topo da página.
Proxy
- Instalação do proxy Squid versão 3:
aptitude install squid3
- Como no analisador de conteúdo, a configuração "de fábrica" atende às nossas necessidades, exceto pelo fato de que haverá proxy em modo transparente; ou seja, o usuário não precisa configurá-lo em seu sistema (nem saber que há um proxy :-). No arquivo /etc/squid3/squid.conf, basta adicionar ao final do arquivo:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Aplicando...
Para testar o cenário, é preciso aplicar todas as configurações em ordem inversa - por questões de dependência. Primeiro, parando os serviços:
/etc/init.d/dansguardian stop
/etc/init.d/squid3 stop
e depois iniciando-os novamente:
/etc/init.d/dansguardian start
/etc/init.d/squid3 start
/etc/init.d/nat
sysctl -w net.ipv4.ip_forward=1
Por último, o teste: com um navegador sem qualquer configuração de proxy, devem aparecer todas as páginas com o logo no topo das páginas. Caso haja algum problemas, acompanhe os registros (logs) dos serviços:
- /var/log/dansguardian/access.log
- /var/log/squid/access.log
e o tráfego da rede na interface local (loopback) e portas:
- 80/TCP
- 3128/TCP
- 8080/TCP
A ferramenta Wireshark é mais que apropriada para tal - com o filtro:
tcp.port == 80 or tcp.port == 3128 or tcp.port == 8080
para evitar "pontos de fuga"...
Bibliografia
- DansGuardian Team. DansGuardian Documentation Wiki: pattern_matching. Acessado em 14/06/2010.
- KIRACOFE, D. Transparent Proxy with Linux and Squid mini-HOWTO. 2002. Acessado em: 14/06/2010.
- MORIMOTO. C. Redes e Servidores: usando o DansGuardian para barrar páginas impróprias. GDH Press. ed. 2. cap. 5. 2009. Acessado em: 14/06/2010.
Gerência de Rede? Monitoramento e Contabilização
O Cacti é um gerente de rede baseado em SNMP.
Componentes
Fluxograma dos Pacotes
Instalação e Configuração do Cenário
Agentes
Gerente
Aplicando...
Bibliografia