Serviços de Redes
Roteamento (IPTABLES) e Proxy (Squid)
ifconfig
• ifconfig Usado para exibir e configurar uma interface de rede.
• Uso:– ifconfig– ifconfig argumentos
Exemplos do uso do ifconfig
• Ifconfig
• ifconfig eth0 down
• ifconfig eth0 192.168.0.111 netmask 255.255.0.0 broadcast 192.168.255.255 up
route
• route Usado para exibir e configurar a tabela de roteamento.
• Uso:– route– route argumentos
Exemplos do uso do route
• Route
• route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
• route add default gw 192.168.1.200
• route -n
Configurando o arquivo interfaces
• Inclua uma entrada como essa:
iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
DNS no interfaces• Se você tiver o resolvconf instalado então
pode adicionar linhas que especifiquem informação de DNS. Por exemplo:iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
dns-search meudominio.org
dns-nameservers 195.238.2.21 195.238.2.22
Configurando uma interface usando DHCP
• iface eth0 inet dhcp
• É necessário que um clientes DHCP esteja instalado, como:– dhcp3-client (versão 3, Internet Software
Consortium)
• As interfaces virtuais permitem configurar uma única placa Ethernet para ser uma interface para várias redes.
• Seu sistema está em uma rede 192.168.0.x/24 e você quer usar um endereço IP provido via DHCP usando a mesma placa Ethernet existente. Editando o /etc/network/interfaces :iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
iface eth0:0 inet dhcp
Configurando Interfaces Virtuais
ifup e ifdown
• ifup “Levanta” o dispositivo especificadoifup dispositivo
• ifdown “Derruba” o dispositivo especificadoifdown dispositivo
• Na inicialização o script /etc/rcS.d/S40networking executa o comando ifup -a. Isso levanta todas as interfaces físicas listadas em entradas auto no etc/network/interfaces.
• Na maioria dos casos se deseja que pelo menos a interface de loopback lo seja levantada na inicialização.
• Assim, certifique-se de que o /etc/network/interfaces inclua as seguintes entradas.
auto loiface lo inet loopback
Configuração da Rede durante a Inicialização
Fim Endereçamento Fim Endereçamento
• O primeiro endereço em uma rede IP é o endereço da própria rede.
• O último endereço é o endereço de broadcast da rede.
• Todos os outros endereços podem ser alocados a sistemas na rede. – Desses, o primeiro ou o último endereço
normalmente é alocado para o gateway de Internet para a rede.
Fundamentos
Definições
• Para que um pacote que está em uma rede local, com um determinado endereço, possa ir para um outra rede, ele precisa ser convertido para o endereçamento externo.
• Esta troca de rede, ocorre graças a um equipamento que tem acesso as duas redes.
Gateway
Definição
Equipamento responsável pela conversão de protocolo
ou mídia ou aplicativo.
Gateway
No caso de IPTABLES ou Proxy
Equipamento responsável pela conversão de redes (endereçamento e/ou protocolo).
Exemplo
Responsável por encaminhar o pacote de uma rede interna para a externa.
Gateway
Rede Local
Rede Remota
Compartilhamento de Conexão
Compartilhamento
IPTables
Software responsável pela filtragem e encaminhamento de pacotes.
Trabalha a nível de redes, portanto consegue pegar pacotes da rede interna e encaminha para rede externa.
IPTables•Um firewall, ou filtro de pacotes, é utilizado para proteger máquinas ou rede através da filtragem dos pacotes de dados. •No Linux esse recurso é implementado diretamente no kernel e recebe, nas versões de kernel >2.4, o nome de netfilter.
•O netfilter é capaz de manipular campos dos cabeçalhos de pacotes, fazer a tradução de endereços de rede (NAT), "marcar“ pacotes e fazer o acompanhamento de conexões e filtragem. •Estes recursos faz com o que o netfilter seja um firewall capaz de reconhecer o "estado" de uma conexão.
IPTables (Tabelas)
• Tabela é o local utilizado para armazenar regras de filtragem.
• Existem três tabelas: – Filter (utilizada para aceitar ou rejeitar pacotes)– mangle (manipular alguns campos do cabeçalho IP –
TOS e TTL)– Nat (utilizada para fazer Traduções de Endereços de
Rede)
IPTables (Chains)• chain conjunto de regras aplicadas sobre os
pacotes. Existem dois tipos:
– chains do kernel • PREROUTING, INPUT, FORWARD, OUPUT e POSTROUTING
– estão ligadas a pontos especiais no caminho que os pacotes
precorrem ao entrar e sair da máquina.
– chains criadas pelo usuário.• Não estão ligadas a ponto algum, logo, é necessário que uma
chain do kernel tenha como alvo uma chain de usuário para
que os pacotes percorram essa chain.
IPTables (Chains)• PREROUTING é usada pelos pacotes que chegam à
interface de rede.
• INPUT quando o pacotes entra na máquina
• FORWARD quando pacote é enviado a outra máquina.
• OUTPUT quando o pacote está saindo da máquina.
• POSTROUTING chain consultada após a tomada de decisão de roteamento, quando os pacotes estão prestes a sair da máquina.
• A filtragem de pacotes é feita em basicamente 3 lugares: – chains INPUT e OUTPUT para pacotes com origem e destino na
máquina local– chain FORWARD para pacotes que atravessam o roteador.
IPTables (Chains)Quando um pacote "entra" numa chain, cada regra
é avaliada, de maneira seqüencial, até que o pacote
case com uma regra, ou o pacote atinja o final da
chain. Quando um pacote atinge o final de uma
chain sem que tenha casado com alguma regra, é
aplicada então a política padrão da chain. Por
padrão a política padrão da chain é "ACCEPT“, mas
isso pode ser alterado.
IPTablesCriando e Removendo Regras• A sintaxe geral para se criar ou remover uma regra é a
seguinte:
# iptables -[AID] CHAIN [N] [-t TABLE] MATCH -j TARGET
• -A é usada para se fazer o "append" de uma regra à uma
chain
• -I é usada para se inserir uma regra
• -D é usada para se deletar uma regra.
IPTablesExemplos I:
• Dropa tudo que chegue ao roteador com destino ao host 192.168.0.3:
# iptables -A FORWARD -d 192.168.0.3/32 -j DROP
• Bloqueia o acesso a porta 23 da máquina local de acessos vindos pela interface eth0:
# iptables -A INPUT -i eth0 -p tcp --dport 23 -j REJECT
IPTables
• # iptables –L Lista as regras
• # iptables –X remove regras de usuário
• #iptables - F chain -t table remove todas as regras de uma chain
IPTablesMascaramento• O tráfico destinado de sua rede privada para a Internet deve ser
manipulado para obter respostas da máquina que fez o pedido, como em uma rota invertida.
• Para fazer isto, o kernel do Linux deve modificar o endereço IP da fonte de cada pacote e retornar respostas a ele, antes que o endereço privado IP faço o pedido de resposta, que é impossível através da Internet. O Linux usa Connection Tracking (conntrack) para acompanhar que conexões pertence a que máquinas e desviar cada pacote de retorno correspondente.
• O tráfico originado em sua rede privada é assim "mascarado" como tendo originado de seu gateway.
Isto Chama-se compartilhamento de conexão.
Ativa gerencia do módulo iptable nat no kernel do Linux
IPTables
Compartilhamento com IPTables
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Habilita o iptable a realizar o roteamento NATHabilita o roteamento a realizar pelo Kernel do Linux
IPTables Compartilhamentoiptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Na tabela NAT (-t nat) adicionar a regra (-A) após o roteamento (POSTROUTING) para todos os pacotes saindo por ppp0 (-o ppp0), mascarar a conexão.
Proxy
Proxy (squid) x IPTables
Aplicação
Transporte
Inter-Rede
Interface de Rede
Intra-Rede
TCP/IP
IPTables
Squid
Proxy
• Servidor Proxy é intermediário entre a rede interna e a rede externa
• Utilizado para realizar armazenamento de dados de certos tipos de serviços.
• Um servidor proxy pode realizar vários serviços, entre ele NAT, Caching e compartilhamento de conexão.
Proxy
Proxy
• Um proxy é um aplicativo trabalhando na camada de Aplicação.
• Trabalha com protocolos TCP/IP
• No proxy são definidas regras de encaminhamento de pacotes.
• Armazena página Web e arquivos FTP temporariamente
• Quanto maior a cahce maior o desempenho
Proxy
Client Server
Internet
1º) Client pede acesso a uma Home Page
2º) Server verifica se tem a Home Page na sua Cache
3º) Se tem envia ao cliente, senão, faz NAT para Internet o pedido do Client
4º) Recebe a resposta e repassa ao Client
Proxy
Para garantir que as páginas Web não
estejam desatualizadas, os dados do cache
expiram após um determinado tempo. No
squid, esta configuração é chamada de
tempo de renovação de objeto.
ProxyUm dos benefícios dos servidores proxy é que o administrador do proxy pode acrescentar regras para filtrar conteúdo.
Proxy
Vantagens
1. Custo reduzido com largura de banda
2. Melhor desempenho da rede
3. Melhor desempenho de rede nos picos
4. Equilíbrio de carga
5. Armazenamento de pedidos abortados
6. Funciona quando a conexão com a Internet
cai
ProxyTradução de endereços de rede (NAT)
NAT permite que o endereço interno de uma empresa seja ocultado da Internet.
Squid• Proxy-cache de alta performance para clientes web.
• Mantém meta dados e especialmente objetos armazenados na RAM, cacheia buscas de DNS.
• Suporta SSL, listas de acesso complexas e logging completo.
• Squid consiste em um programa principal - squid -, um sistema de busca e resolução de nomes - dnsserver - e alguns programas adicionais para reescrever, fazer autenticação e gerenciar ferramentas de clientes.
• Podemos executar o Squid nas principais plataformas do mercado, como Linux, Unix e Windows.
SquidInstalação
• Red Hat# rpm -ivh squid.x.y.z.rpm
• Debian# apt-get install squid3
• Free BSD# cd /usr/ports/www/squid3/ # make # make all install
Squid
Localização do squid.conf
O arquivo de configuração do squid é o squid.conf,
normalmente ele se encontra em
/etc/squid/squid.conf ou em
/usr/local/squid/etc/squid.conf.
Squid
tag http_port
• Configura a porta HTTP onde o Squid ouve os clientes proxy.
• Porta padrão 3128 ou 8080
http_port 3128
Squid
tag acl
• Define a lista de controle de acesso que pode conter:– Endereço IP– Endereço URL– Endereço de rede
Squid
tag http_access
• Permite ou nega o acesso ao squid.http_access allow manager
http_access deny manager
http_access deny palavra
http_access deny block_site
http_access allow unblock_site
http_access allow mynetwork
http_access allow localhost