Buscar

Introdução ao IP Tables

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução ao IP Tables  
1) Introdução:
  
O netfilter é um conjunto de mecanismos para filtragem e manipulação de pacotes implementados
diretamente no kernel do linux a partir da versão 2.4.x. Os mecanismos do netfilter são selecionados
através de três tabelas: 
 
FILTER: utilizada para filtrar pacotes 
MANGLE: utilizada para ações de marcação e manipulação de pacotes 
NAT: utilizada para as ações de tradução de endereços (NAT e NAPT) 
  
O iptables corresponde aos mecanismos utilizados para organizar as regras utilizadas pelo netfilter. O
iptables utiliza o conceito de chains para indicar para quais pacotes uma determinada regra deve ser
aplicada. As chains utilizadas pelo mecanismo de filtragem de pacotes são: 
  
INPUT: a regras se referem aos pacotes que entram por uma interface 
OUTPUT: as regras se referem ao que sai por uma interface 
FORWARD: as regras se aplicam aos pacotes que serão roteados, isto é, ao pacotes que não são
destinados ao próprio computador. 
  
A sintaxe para manipulação das regras do iptables segue a estrutura. Se a tabela não for especificada,
assume­se a tabela FILTER: 
iptables ­AID CHAIN N ­t TABLE MATCH ­j TARGET
A opção –A é usada para acrescentar uma regra ao fim da chain. A opção –I N é utilizada para inserir
uma regra na posição N. E a opção –D N para apagar a regra da posição N. As seguintes opções
complementam uma regra:
opção (short) opção (long) parâmetro significado
­s ­­src X.X.X.X/Y endereço de origem do pacote
­d ­­dst X.X.X.X/Y endereço de destino do pacote
­i ­­in­interface interface interface pela qual o pacote chegou
­o ­­out­interface interface interface pela qual o pacote vai sair
­p ­­protocol tcp, udp, icmp protocolo do pacote
­­sport ­­source­port porta[:porta] porta ou intervalo de portas de origem
­­dport ­­destination­port porta[:porta] porta ou intervalo de portas de destino
­ ­­icmp­type tipo/código pacote icmp (iptables ­p icmp ­h para info
­ ­­match ­ habilita o modo de opções extendido
Com a opção ­­p PROTOCOL ou ­­match, pode­se usar adicionalmente as seguintes opções:
opção parâmetro significado
­­limit X/time limita a média de matchs. Time pode ser /second,/minute, /hour ou /day
­­limit­ X
Número máximo inicial de matchs. Esse valor é
"recarregado" em 1 a cada intervalo de tempo em que
burst
X
o limite não foi alcançado, até o valor especificado.
Utilize essa opção para permitir rajadas.
­­mask X casa com um pacote "marcado" com o valor X.
­­state NEW,ESTABLISHED,RELATED, INVALID casa com o estado de uma conexão.
­­tcp­flags MASK FLAGS
Examina as flags "MASK" e casa com FLAGS.
Exemplo: SYN,ACK ACK = examina SYN e ACK e
casa com pacotes com SYN desligado e ACK ligado.
­­tos name casa com o campo Type of Service. User iptables ­mtos ­h para ver os nomes/valores
­­ttl valor casa com o valor do campo ttl do pacote
Para negar uma opção, utiliza­se !. Por exemplo: ­s !192.168.0.1/32 
As seguintes ações podem ser executadas na tabela FILTER:
 
Alvo opções significado
ACCEPT ­ Aceita um pacote
REJECT ­ Rejeita um pacote
REJECT ­­reject­withtype
Rejeita um pacote e envia um pacote ICMP type para a
origem
DROP ­ Descarta silencionsamente o pacote
LOG ­ Loga os headers do pacote
LOG ­­log­level X Loga utilizando o nível X (veja o arquivo syslog.conf)
LOG ­­log­prefix permite acrescentar um prefixo de 29 letras. É útil paraidentificar o tipo pacote/regra
Ambiente para Execução da Prática
Para realizar esta prática utilize a imagem VMWare "especLAB" disponível no
HD dos computadores do laboratório de Redes I. 
Para usar esta imagem, faça uma cópia do da pasta "especLAB" do diretório
Matrix para o discente (caso ainda não exista).
Na pasta, clique no icone "especlab". Caso questionado, responda que a
imagem foi copiada (e não movida).
Certifique­se que o ambiente VMWare está no modo Bridge (e não NAT).
Para simplificar a execução dos comandos, abra um terminal (Console) e
coloque o ambiente de interpretação de comandos em modo "root":
rss@espec: sudo bash
A senha é "pucpos".
Exercício 1: Crie regras bloqueando o envio de mensagem ICMP Echo (ping) para
o seu computador (VM Ubuntu).
a)    Verifique as regras instaladas no iptables
iptables ­L
b)    Se houver alguma regra, remova (flush).
iptables ­F [chain]
c)    Caso não estejam, mude a política default de todas as chain para ACCEPT
iptables ­P INPUT ACCEPT 
iptables ­P OUTPUT ACCEPT 
iptables ­P FORWARD ACCEPT 
d) Crie uma regra bloqueando o recebimento de ICMP, e em seguida efetue um  ping do ambiente
windows para o endereço IP  da máquina virtual. Identifique o endereço IP da máquina virtual
digitando ifconfig. 
iptables ­A INPUT ­p ICMP  ­j DROP       
iptables ­L (copie o conteudo da tabela para um arquivo texto que irá compor o relatório)
e)    Limpe a regra anterior, e crie uma nova regra de bloqueio, mas agora usando ao ação REJECT ao
invés de DROP. Repita o ping  do  windows para máquina virtual e observe o resultado. 
iptables ­F            
iptables ­A INPUT ­p ICMP  ­j REJECT
iptables ­L(copie o conteudo da tabela para um arquivo texto que irá compor o relatório)
 f) Verfique se a máquina virtual consegue pingar o abiente Windows. Em seguida, substitua a regra
do iptables da máquina virtual pela regra abaixo, e verifique a possibilidade de enviar ping nos dois
sentidos (do Ubuntu para o Windows e do Windows para o Ubuntu).
iptables ­F
iptables ­A INPUT ­p ICMP  ­­icmp­type echo­request ­j REJECT
iptables ­L(copie o conteudo da tabela para um arquivo texto que irá compor o relatório)
RELATÓRIO PARTE 1:  Inclua as tabelas do IP tables obtidas nos passos d), e) e
f). E responda:
A) Qual a diferença entre as ações DROP e REJECT
B) Por que o Ubuntu não foi capaz de pingar o Windows com  a regra e), mas foi capaz de pingá­lo
com a regra f).
Exercício 2: Crie regras para que seu computador possa acessar apenas sites
HTTP pela Internet.
Para este exercicio, crie um "script shell" para facilitar a execução e manutenção dos comandos. O
script é um arquivo texto, que deve ser modificado para ter a opção de execução.
Para esta prática anote o endereço IP do primeiro DNS que será consultado pelo seu computador para
acessar a internet digitando o comando abaixo:
 
more /etc/resolv.conf
 
Você precisará substituir a variável ip_dns_server do script abaixo pelo endereço IP encontrado no
resolv.conf.
 
Modelo para o script (exercicio2.sh)
 
#!/bin/bash ­x
 
# a) Remover regras anteriores (flush).
 
iptables –F [chain]
 
# b) Alterar a política default de todas as chain para DROP
  
iptables –P INPUT DROP
 iptables –P OUTPUT DROP
 iptables –P FORWARD DROP
 
# c) Criar regras permitindo que seu computador consulte servidores DNS
 
iptables ­A INPUT ­p UDP ­s ip_dns_server ­­sport 53 ­j ACCEPT
 iptables ­A OUTPUT ­p UDP ­d ip_dns_server ­­dport 53 ­j ACCEPT
 
Feche o arquivo exercicio2.sh. Após criar o script conforme as instruções acima, digite o comando
abaixo para torná­lo exercutável:
chmod +x exercicio2.sh
 ./exercicio2.sh
 
Verifique se consegue consultar o DNS da PUCPR. Para isso, digite:
 
dig www.pucpr.br
 
Crie as regras permitindo que seu computador consulte qualquer servidor HTTP na internet,
incluindo­as no script exercicio2.sh.
 
iptables ­A INPUT ­p TCP ­s 0.0.0.0/0 ­­sport 80 ­j ACCEPT
 iptables ­A OUTPUT ­p TCP ­d 0.0.0.0/0 ­­dport 80 ­j ACCEPT
 
Execute o script novamente, e verifique se consegue acessar o servidor www.pucpr.br através do
browser.
 
Inclua as regras para acessar o proxy da PUCPR no script.
 
iptables ­A INPUT ­p TCP ­s virtualproxy.cwbdis.pucpr.br ­­sport 3128 ­j ACCEPT
 iptables ­A OUTPUT ­p TCP ­d  virtualproxy.cwbdis.pucpr.br ­­dport 3128 ­j ACCEPT­
 
Verifique se consegue acessar servidores http na INTERNET
 
RELATÓRIO PARTE 2:  Incluaem seu relatório:
A) O Script completo para geração das regras
B)  O resultado do comando iptables ­L com as regras já configuradas
Exercício 3 ­ Avaliação do Spoofing de porta:
Baixe e compile os programas encontrados no seguinte endereço.
gcc stcp.c ­o stcp
gcc ctcp.c ­o ctcp
gcc sudp.c ­o sudp
gcc cudp.c ­o cudp
  
Execute o programa TCP em seu computador (porta 9090) e verifique se é possível acessa­lo de outra
maquina:
no seu computador: execute ./stcp (porta local 9090)
em outro computador (solicite auxilio a um colega): execute ./ctcp (porta local (qualquer valor acima
de 1024, por exemplo 5678), porta destino 9090, endereço IP do computador que executa o stcp).
Repita o procedimento, mas agora faça com que o computdor cliente utilize a porta 80:
em outro computador (solicite auxilio a um colega): execute ./ctcp (porta local 80, porta destino 9090,
endereço IP do computador que executa o stcp).
RELATÓRIO PARTE 3:  Responda:
Identifique qual regra do seu script foi explorada para fazer o spoofing de porta.
2)     Usando os flags TCP
A sintaxe para utilizar os flags TCP é a seguinte:
iptables –A CHAIN –p tcp –tcp­flags FLAGS_EXAMINADOS FLAGS_SETADOS
Exemplo 1: a seguinte regra se aplica a pacotes com os flag SYS setado e os flags ACK,FIN e RST
restados
iptables ­A FORWARD ­p tcp ­­tcp­flags SYN,ACK,FIN,RST SYN
Exemplo 2: a seguinte regra se aplica a pacotes que não tem nenhum flag setado.
iptables ­A FORWARD ­p tcp ­­tcp­flags ALL NONE
Exercício 4: Modifique as regras dos exercícios 2 e 3 de maneira a evitar o
problema de spoofing de portas TCP
iptables –A INPUT–p tcp ­­sport 80 ­­tcp­flags ACK ACK –j ACCEPT
Verifique a nova configuração:
no seu computador: execute ./stcp (porta local 9090)
em outro computador (solicite auxilio a um colega): execute ./ctcp (porta local 80, porta destino 9090,
endereço IP do computador que executa o stcp).
RELATÓRIO PARTE 4:  Inclua em seu relatório:
A) O Script completo para geração das regras
B)  O resultado do comando iptables ­L com as regras já configuradas
3)   Recursos de firewall stateful:
O iptables utiliza possui alguns recursos limitados para criação de regras com estado. As regras com
controle de estado permitem estabelecer critérios semelhantes ao TCP para protocolos que não
suportam conexão como o UDP e o ICMP.
As regras com controle de estado são habilitadas através da opção –m state. Os seguintes estados
podem ser controlados:
NEW: refere­se a pacotes que criam uma nova conexão
ESTABLISHED: refere­se aos pacotes trocados uma conexão já estabelecida
RELATED: refere­se a pacotes relacionados a uma comunicação, mas que não fazem parte
diretamente do fluxo de dados da comunicação. Por exemplo, mensagens de erro ICMP ou
pacotes de criação de conexão FTP.
INVALID: refere­se a pacotes que não se encaixam a nenhum dos casos anteriores, como
pacotes ICMP com opções inválidas.
Exercício 5:
a)    Modifique as regras de maneira a evitar o ataque por spoofing de porta TCP
iptables –A INPUT –m state –p tcp ­­sport 80 ­­state ESTABLISHED,RELATED –j ACCEPT
iptables –A OUTPUT –m state –p tcp ­­port 80 ­­state NEW,ESTABLISHED,RELATED –j ACCEPT
b) Repita o procedimento de teste, e veja se é possível acessar ao servidor, mesmo fazendo spoofing
de porta.
c) Tente executar o mesmo comando para UDP, corrigindo possíveis problemas de ataque utilizando
as regras de DNS. Para testar as regras UDP:
no seu computador: execute ./sudp (porta local 9090)
em outro computador (solicite auxilio a um colega): execute ./cudp (porta local 53, porta destino
9090, endereço IP do computador que executa o sudp).
 
RELATÓRIO PARTE 5:  Inclua em seu relatório:
A) O Script completo para geração das regras
B)  O resultado do comando iptables ­L com as regras já configuradas

Continue navegando