SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
Firewall Iptables - Filter
Prof. Andrei Carniel
Universidade Tecnológica Federal do Paraná – UTFPR
E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com
Firewall Iptables (1/4)
• O IPTables é uma versão robusta, completa e tão estável quanto seus
antecessores IPFWADM e IPCHAINS, implementados nos Kernels
Linux 2.0 e 2.2 respectivamente.
• IPTables é um firewall muito conhecido na comunidade Linux que foi
incorporado ao mesmo em 1999.
• Principais características:
 Filtro de Pacotes (Foco dessa aula)
 NAT
 QoS sobre tráfego
 Redirecionamento de endereços e portas
 Detecção de fragmentos
 Bloqueio de ataques
 Entre outros.
2
Firewall Iptables (2/4)
• Surgiu com o objetivo de proteger as máquinas de acessos ou tráfego
indesejado.
• Proteger serviços que estejam rodando na máquina.
• Bloquear a passagem de algo que não deseja receber (por exemplo:
conexões vindas da Internet).
• Foi introduzido no kernel 2.4 do Linux.
• É um firewall em nível de pacotes, com funcionamento baseado em
endereço e porta de origem/destino, prioridade, entre outros.
• Seu funcionamento é baseado na comparação de regras para saber se
um pacote pode ou não passar.
3
Firewall Iptables (3/4)
• Pode ser usado para:
▫ Monitorar e/ou modificar tráfego de rede, efetuar NAT (masquerading,
source NAT, destination NAT);
▫ Redirecionamento de pacotes;
▫ Marcação de pacotes;
▫ Modificação de prioridade dos pacotes de entrada/saída;
▫ Contagem de bytes;
▫ Divisão de tráfego;
▫ Proteção anti-spoofing (pacotes com IP falsificado);
▫ Proteção contra syn flood (forma de negação de serviço);
▫ Proteção contra DoS (forma de negação de serviço);
▫ Etc.
4
Firewall Iptables (4/4)
• Não funciona de forma automática, ou seja, somente instalar e esperar
que ele faça o resto.
• É necessário pelo menos conhecimentos básicos em redes TCP/IP e
roteamento e portas.
• Esses conhecimentos são necessários para criar regras de segurança.
• Lembre-se:
▫ A segurança do sistema depende do conjunto de regras que serão criados
por você;
▫ 95% das invasões de sucesso são devido a falhas humanas na configuração;
• Trabalharemos principalmente com a função Filtro de Pacotes que é a
mais utilizada no IPTables, bloqueando e permitindo serviços em uma
rede.
5
Filter
6
Chains – Lista de regras
• Basicamente para filtragem de pacotes existem basicamente três tipos
de chains, são elas:
▫ INPUT --> Refere-se a todos os pacotes destinados à máquina filtro.
▫ OUTPUT --> Refere-se a todos os pacotes gerados na máquina filtro.
▫ FORWARD --> Refere-se a todos os pacotes oriundos de uma máquina e
destinados a outra. São pacotes que atravessam a máquina filtro, mas não
são destinados a ela.
7
Chains – Lista de regras
• Para verificar as regras em nas CHAINS, digite:
▫ # iptables -L
• O resultado deve ser algo como:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
8
Chains – Lista de regras
• Note que não existem regras em qualquer das CHAINS, mas o policy
padrão é ACCEPT, ou seja, aceite qualquer pacote de qualquer
origem/destino.
• Outra observação importante aqui é que o comando acima nos
mostrou a as 3 tabelas disponíveis.
• Sempre que formos inserir uma nova regra podemos utilizar a opção
-t filter para especificar a tabela, mas essa opção não é
obrigatória.
9
Manipulando Chains
• O Iptables trabalha com uma tabela de regras que é analisada uma a
uma até que a última seja processada.
• Por padrão, se uma regra tiver qualquer erro, uma mensagem será
mostrada e ela descartada.
• O pacote não conferirá e a ação final (se ele vai ser aceito ou rejeitado)
dependerá das regras seguintes.
• Agora que sabemos a existência das três CHAINS, devemos usar
comandos para adicionar regras:
10
Manipulando Chains
Principais comandos para inclusão e exclusão de chains!
11
Manipulando Chains
• Sintaxe padrão:
▫ #iptables -[COMANDO] [CHAIN] [TARGET]
• Exemplo:
▫ #iptables –P INPUT DROP
• Todos os pacotes por default serão rejeitados.
12
Manipulando Chains – Inclusão e Exclusão (1/5)
• -P --> Policy (política). Altera a política da chain. A política
inicial de cada chain é ACCEPT.
• Isso faz com que o filtro, inicialmente, aceite qualquer INPUT,
OUTPUT ou FORWARD.
• A política pode ser alterada para DROP, que irá negar o serviço da
chain, até que uma opção -A entre em vigor.
• O -P não aceita REJECT ou LOG. Exemplos:
▫ #iptables -P FORWARD DROP
▫ #iptables -P INPUT ACCEPT
13
Manipulando Chains – Inclusão e Exclusão (2/5)
• -A --> Append (anexar). Acresce uma nova regra à chain.
• Tem prioridade sobre o -P.
• Geralmente, como buscamos segurança máxima, colocamos todas as
chains em política DROP, com o -P e, depois, abrimos o que é
necessário com o -A.
• Exemplos:
▫ #iptables -A OUTPUT -d 172.20.5.10 -j ACCEPT
▫ #iptables -A FORWARD -s 10.0.0.1 -j DROP
▫ #iptables -A FORWARD -d www.chat.com.br -j DROP
14
Manipulando Chains – Inclusão e Exclusão (3/5)
• -D --> Delete (apagar). Apaga uma regra.
• A regra deve ser escrita novamente, trocando-se a opção para -D.
Exemplos:
• Para apagar as regras anteriores, usa-se:
▫ #iptables -D OUTPUT -d 172.20.5.10 -j ACCEPT
▫ #iptables -D FORWARD -s 10.0.0.1 -j DROP
▫ #iptables -D FORWARD -d www.chat.com.br -j DROP
15
Manipulando Chains – Inclusão e Exclusão (4/5)
• Também é possível apagar a regra pelo seu número de ordem.
• Pode-se utilizar o -L para verificar o número de ordem.
• Verificado esse número, basta citar a chain e o número de ordem.
Exemplo:
▫ #iptables -D FORWARD 4
• Isso deleta a regra número 4 da chain FORWARD.
16
Manipulando Chains – Inclusão e Exclusão (5/5)
• -L --> List (listar). Lista as regras existentes. Exemplos:
▫ #iptables -L
▫ #iptables -L FORWARD (Lista apenas da Chain FORWARD)
• -F --> Flush (esvaziar). Remove todas as regras existentes.
No entanto, não altera a política (-P). Exemplos:
▫ #iptables -F
▫ #iptables -F FORWARD (Remove apenas regras da Chain FORWARD)
17
Manipulando Chains – Inclusão e Exclusão (6/6)
• -I --> Insert(inserir). Insere uma nova regra no início da
lista. Exemplos:
▫ #iptables –I OUTPUT –d 200.200.2 –j ACCEPT
• -N --> New(nova). Adiciona uma nova chain.
▫ #iptables -N internet
• Para adicionar uma regra na chain:
▫ #iptables -A internet -d 127.0.0.1 -j DROP
• Para deletar uma chain:
▫ #iptables -X internet
18
Manipulando Chains
Principais comando para manipulação de
origem e destino!
19
Manipulando Chains – Origem e Destino (1/4)
• -s --> Source (origem). Estabelece a origem do pacote.
• Geralmente é uma combinação do endereço IP com a máscara de sub-
rede, separados por uma barra. Exemplo:
▫ #-s 172.20.0.0/255.255.0.0
• No caso, vimos a sub-rede 172.20.0.0. Para hosts, a máscara sempre
será 255.255.255.255. Exemplo:
▫ #-s 172.20.5.10/255.255.255.255
20
Manipulando Chains – Origem e Destino (2/4)
• Agora vimos o host 172.20.5.10. Ainda no caso de hosts, a máscara
pode ser omitida.
• Caso isso ocorra, o Iptables considera a máscara como
255.255.255.255. Exemplo:
▫ #-s 172.20.5.10
• Isso corresponde ao host 172.20.5.10. Há um recurso para simplificar a
utilização da máscara de sub-rede.
• Basta utilizar a quantidade de bits 1 existentes na máscara. Assim, a
máscara 255.255.0.0 vira 16. A utilização fica assim:
▫ #-s 172.20.0.0/16
21
Manipulando Chains – Origem e Destino (3/4)
• Outra possibilidade é a designação de hosts pelo nome. Exemplo:
▫ #-s www.chat.com.br
• Para especificar qualquer origem, utilize a rota default, ou seja,
0.0.0.0/0.0.0.0, também admitindo 0/0.
• Exemplo Geral:
▫ #iptables -A INPUT -s 200.200.200.0/24 -j DROP
• Bloqueia o tráfego vindo da rede 200.200.200.*.
22
Manipulando Chains – Origem e Destino (4/4)
• -d --> Destination (destino). Estabelece o destino do
pacote.
• Funciona exatamente como o -s, incluindo a sintaxe.
• Exemplo Geral:
▫ #iptables -A OUTPUT -d 10.1.2.3 -j DROP
• Bloqueia conexões com o destino 10.1.2.3:
23
Manipulando Chains – Protocolos
• -p --> Protocol (protocolo). Especifica o protocolo a ser
filtrado.
• O protocolo IP pode ser especificado pelo seu número (vide
/etc/protocols) ou pelo nome. Os protocolos mais utilizados são
udp, tcp e icmp. Exemplo:
▫ #-p icmp
• Exemplo:
▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp -j DROP
• Bloqueia qualquer pacote com destino para 200.200.200.20 via
protocolo TCP.
24
Manipulando Chains – Interface de Rede (1/3)
• -i --> In-Interface (interface de entrada). Especifica a
interface de entrada.
• As interfaces existentes podem ser vistas com o comando #ifconfig.
• Exemplo:
▫ #-i ppp0
• O -i não pode ser utilizado com a chain OUTPUT.
25
Manipulando Chains – Interface de Rede (2/3)
• O sinal + pode ser utilizado para simbolizar várias interfaces.
• Exemplo:
▫ #-i eth+
• eth+ refere-se à eth0, eth1, eth2 e etc.
• Exemplo geral:
▫ #iptables -A FORWARD -i eth0 -j ACCEPT
• Os pacotes que entrarem pela interface eth0 serão aceitos.
26
Manipulando Chains – Interface de Rede (3/3)
• -o --> Out-Interface (interface de saída). Especifica a
interface de saída.
• Similar a -i, inclusive nas flexibilidades.
• O -o não pode ser utilizado com a chain INPUT.
• Exemplo:
▫ #iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
• Todos os pacotes que saírem pela interface ppp0 (modem) serão
mascarados. Isso dá um nível de segurança elevado à rede que está
atrás da ppp0. É uma boa regra para navegação na Internet.
27
Manipulando Chains – Portas (1/2)
• --sport --> Source Port. Porta de origem.
• Só funciona com as opções -p udp e -p tcp. Exemplo:
▫ #-p tcp --sport 80
• Refere-se à porta 80 sobre protocolo TCP.
• Exemplo:
▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp --sport
100:1023 -j DROP
• Bloqueia qualquer pacote com destino a 200.200.200.20, que utiliza
protocolo TCP e se originou na faixa de portas 100 a 1023.
28
Manipulando Chains – Portas (2/2)
• --dport --> Destination Port. Porta de destino.
• Só funciona com as opções -p udp e -p tcp.
• Similar a --sport.
• Exemplo:
▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp --dport
100:1023 -j DROP
• Bloqueia qualquer pacote com destino a 200.200.200.20, que utiliza
protocolo TCP e tem como destino qualquer porta da faixa de 100 a
1023.
29
Manipulando Chains – Exclusão (1/2)
• ! --> Exclusão. Utilizado com -s, -d, -p, -i, -o e outros,
para excluir o argumento.
• Funciona para muitos parâmetros, como o endereço de
origem/destino, protocolo, porta, mensagens ICMP, fragmentos, etc...
podem ser precedidos pelo sinal “!” que significa exceção
• Exemplo:
▫ #-s ! 10.0.0.1
• Isso refere-se a qualquer endereço de entrada, exceto o 10.0.0.1.
▫ #-p ! tcp
• Todos os protocolos, exceto o TCP.
30
Manipulando Chains – Exclusão (2/2)
• Exemplos:
▫ #iptables -A INPUT ! -s 200.200.200.10 -p tcp -j DROP
• Diz para rejeitar todos os pacotes EXCETO os que vem do
endereço 200.200.200.10 .
▫ #iptables -A INPUT -s 200.200.200.10 ! -p tcp -j DROP
• Bloqueia todos os pacotes vindos de 200.200.200.10, EXCETO os do
protocolo TCP.
31
Manipulando Chains
• O alvo (-j) é o destino que um pacote terá quando conferir com as
condições de uma regra.
32
Manipulando Chains – Jump Target
• Isto especifica o alvo da regra, isto é, o que fazer se o pacote
corresponde a ele.
• O alvo pode ser uma cadeia definida pelo usuário, um dos alvos
embutidos especiais, que decidem o destino do pacote imediatamente,
ou uma extensão.
• Se esta opção for omitido em regra, a regra não é usada, então a regra
de correspondência não irá ter qualquer efeito sobre o destino do
pacote, mas os contadores na regra será incrementado.
33
Manipulando Chains – Jump Target
• ACCEPT --> Aceitar. Permite a passagem do pacote normalmente.
• DROP --> Abandonar. Não permite a passagem do pacote, ele será
descartado. Não avisa a origem sobre o ocorrido.
• REJECT --> Igual ao DROP, mas avisa a origem sobre o ocorrido
(envia pacote icmp unreachable).
• LOG --> Cria um log referente à regra, em /var/log/messages.
Usar antes de outras ações¹.
¹ : LOG é uma extensão não terminal, ou seja, mesmo que seja validado em uma regra
ele continuará a ser avaliado pelas regras subsequentes. Portanto se quiser descartar o
pacote terá que criar uma mesma regra mas com a target DROP ou REJECT, ou colocar
a política default como DROP.
34
Manipulando Chains – Jump Target
• Caso seja necessário criar uma regra onde seja efetuado o LOG de um
determinado pacote e logo após a exclusão dele, deve-se configurar da
seguinte maneira:
▫ #iptables -A INPUT -s 200.200.200.1 -i eth0 -j LOG
• Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela
interface eth0.
▫ #iptables -A INPUT -s 200.200.200.1 -i eth0 -j REJECT
• Para efetuar o bloqueio. Note que no exemplo anterior a regra que
registra o pacote (-j LOG) deve aparecer antes da regra que REJEITA
(-j REJECT), caso contrário a regra nunca funcionará.
35
Manipulando Chains
• Manipulação de pacotes para iniciar conexão (pacotes syn).
36
Manipulando Chains – Pacotes SYN
• Pacotes syn são usados para iniciarem uma conexão.
• O uso da opção --syn serve para especificar estes tipos de pacotes.
Desta maneira é possível bloquear somente os pacotes que iniciam
uma conexão, sem afetar os pacotes restantes.
• Para que uma conexão ocorra é necessário que a máquina obtenha a
resposta a pacotes syn enviados, caso ele seja bloqueado a resposta
nunca será retornada e a conexão não será estabelecida.
▫ #iptables -A INPUT -p tcp --syn --dport 23 -i eth1 -j
DROP
• A regra acima bloqueia (-j DROP) qualquer tentativa de conexão
(--syn) vindas da interface eth1 ao telnet (--dport 23) da
máquina local. A opção --syn somente pode ser especificada para o
protocolo TCP.
37
Lógica de Regras
• Funcionamento das regras.
38
Lógica das Regras (1/5)
• Observe os próximos exemplos:
• Exemplo A:
▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT
▫ #iptables -A INPUT -p ICMP -j DROP
• Podemos concluir o seguinte:
• Exemplo A: todos os pings da máquina 10.0.0.10 serão aceitos, os
outros pings serão deletados.
39
Lógica das Regras (2/5)
• Exemplo B:
▫ #iptables -A INPUT -p ICMP -j DROP
▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT
• Podemos concluir o seguinte:
• Exemplo B: todos os pings serão deletados, até mesmo os da máquina
10.0.0.10.
• Ou seja: a ordem da regras importam!
• Obs.: no caso do LOG, a regra mesmo que executada, passará para a
próxima condição.
40
Lógica das Regras (3/5)
• Impasses e ordem de processamento
• Se houver impasse entre regras, sempre valerá a primeira. Assim,
entre as regras:
▫ #iptables -A FORWARD -p icmp -j DROP
▫ #iptables -A FORWARD -p icmp -j ACCEPT
• Valerá:
▫ #iptables -A FORWARD -p icmp -j DROP
41
Lógica das Regras (4/5)
• Impasses e ordem de processamento
• Já entre as regras:
▫ #iptables -A FORWARD -p icmp -j ACCEPT
▫ #iptables -A FORWARD -p icmp -j DROP
• Valerá:
▫ #iptables -A FORWARD -p icmp -j ACCEPT
42
Lógica das Regras (5/5)
• Essas situações ocorrem porque as regras são processadas na ordem
em que aparecem.
• Depois do processamento da regra, pode haver continuidade de
processamento ou não.
• Isso irá depender da ação:
▫ ACCEPT --> Para de processar regras para o pacote atual;
▫ DROP --> Para de processar regras para o pacote atual;
▫ REJECT --> Para de processar regras para o pacote atual;
▫ LOG --> Continua a processar regras para o pacote atual;
43
Regras Comentadas
• Exemplo de funcionamento das regras.
44
Regras comentadas (1/6)
• Regras:
▫ #iptables -L
• Lista todas as regras existentes.
▫ #iptables -F
• Apaga todas as regras sem alterar a política.
▫ #iptables -P FORWARD DROP
• Estabelece uma política de proibição padrão para a passagem de
pacotes entre sub-redes.
45
Regras comentadas (2/6)
▫ #iptables -A FORWARD -j DROP
• Todos os pacotes oriundos de qualquer sub-rede e destinados a
qualquer sub-rede deverão ser descartados.
▫ #iptables -A FORWARD -j ACCEPT
• Todos os pacotes oriundos de qualquer sub-rede e destinados a
qualquer sub-rede deverão ser aceitos.
▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j
DROP
• Os pacotes oriundos da sub-rede 10.0.0.0 (máscara 255.0.0.0) e
destinados aos hosts cujos endereços IP respondem pelo nome
www.chat.com.br deverão ser descartados. Note que se a máquina
possuir domínios virtuais, todos esses serão bloqueados.
46
Regras comentadas (3/6)
▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j
REJECT
• Os pacotes oriundos da sub-rede 10.0.0.0 (máscara 255.0.0.0) e
destinados aos hosts cujos endereços IP respondem pelo nome
www.chat.com.br deverão ser descartados. Deverá ser enviado um
ICMP avisando à origem.
▫ #iptables -A FORWARD -d www.chat.com.br -j DROP
• Os pacotes oriundos de qualquer lugar e destinados aos hosts cujos
endereços IP respondem pelo nome www.chat.com.br deverão ser
descartados.
47
Regras comentadas (4/6)
▫ #iptables -A FORWARD -d 10.0.0.0/8 -s www.chat.com.br -j
DROP
• Os pacotes destinados à sub-rede 10.0.0.0 (máscara 255.0.0.0) e
oriundos aos hosts cujos endereços IP respondem pelo nome
www.chat.com.br deverão ser descartados.
▫ #iptables -A FORWARD -s www.chat.com.br -j DROP
• Os pacotes oriundos aos hosts cujos endereços IP respondem pelo
nome www.chat.com.br e destinados a qualquer lugar deverão ser
descartados.
▫ #iptables -A FORWARD -s 200.221.20.0/24 -j DROP
• Os pacotes oriundos da sub-rede 200.221.20.0 (máscara
255.255.255.0) e destinados a qualquer lugar deverão ser descartados.
48
Regras comentadas (5/6)
▫ #iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP
• Os pacotes icmp oriundos do host 10.0.0.5 e destinados a qualquer
lugar deverão ser descartados.
▫ #iptables -A FORWARD -i eth0 -j ACCEPT
• Os pacotes que entrarem pela interface eth0 serão aceitos.
▫ #iptables -A FORWARD -i ! eth0 -j ACCEPT
• Os pacotes que entrarem por qualquer interface, exceto a eth0, serão
aceitos.
49
Regras comentadas (6/6)
▫ #iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80 -j
LOG
• O tráfego de pacotes TCP oriundos da porta 80 do host 10.0.0.5 e
destinados a qualquer lugar deverá ser gravado em log. No caso,
/var/log/messages.
▫ #iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
• Os pacotes TCP destinados à porta 25 de qualquer host deverão ser
aceitos.
50
Dúvidas?
51
Exercícios
• Responda os exercícios assumindo que sua máquina irá assumir a
posição do host informado no exercício.
52
Exercícios
• Responda os exercícios de acordo com a seguinte topologia:
53
Exercícios
• 1 - Algumas regras para o roteador “R”:
a) Não permita que a rede 192.168/16 envie pings para o servidor “S”.
b) Não permita que a máquina “B” envie pacotes UDP para a máquina “Y”.
54
Exercícios
• 2 - Algumas regras para o servidor “S”:
a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e opera na
porta 23) no servidor.
b) A máquina “B” está proibida de acessar TFTP no servidor.
c) A rede 172.29/16 está proibida de enviar e-mails pelo servidor. E se
alguém tentar, registrar em log.
55
Exercícios
• 3 - Algumas regras para a máquina “A”:
a) Só será permitido resolver DNS pelo servidor “S”.
b) A única página web que se permite acessar é a que está no servidor “S”.
Bloquear e registrar em log outras tentativas.
56
Respostas
57
Exercício 1
• 1 - Algumas regras para o roteador “R”:
a) Não permita que a rede 192.168/16 envie pings para o servidor “S”.
 (policy = ACCEPT)
 #iptables -A FORWARD -p ICMP -s 192.168.0.0/16 -d
200.143.81.25 -j REJECT
b) Não permita que a máquina “B” envie pacotes UDP para a máquina “Y”.
 #iptables -A FORWARD -p UDP -s 172.29.0.3 -d
192.168.0.5 -j DROP
58
Exercício 2
• 2 - Algumas regras para o servidor “S”:
a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e opera na
porta 23) no servidor.
 (policy = ACCEPT)
 #iptables -A INPUT -s 192.168.0.4 -p TCP --dport 23 -j
ACCEPT
 #iptables -A INPUT -p TCP --dport 23 -j DROP
b) A máquina “B” está proibida de acessar TFTP no servidor.
 #iptables -A INPUT -s 172.29.0.3 -p UDP --dport 69 -j DROP
c) A rede 172.29/16 está proibida de enviar e-mails pelo servidor. E se
alguém tentar, registrar em log.
 #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 25 -j LOG
 #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 25 -j
DROP
 #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 587 -j
LOG
 #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 587 -j
DROP
59
Exercício 3
• 3 - Algumas regras para a máquina “A”:
a) Só será permitido resolver DNS pelo servidor “S”.
 (policy = ACCEPT)
 #iptables -A OUTPUT -d 200.143.81.25 -p UDP --dport 53
-j ACCEPT
 #iptables -A OUTPUT -p UDP --dport 53 -j DROP
b) A única página web que se permite acessar é a que está no servidor “S”.
Bloquear e registrar em log outras tentativas.
 #iptables -A OUTPUT -d 200.143.81.25 -p TCP --dport 80
-j ACCEPT
 #iptables -A OUTPUT -p TCP --dport 80 -j LOG
 #iptables -A OUTPUT -p TCP --dport 80 -j DROP
60
Outras Dúvidas?
61
Firewall Iptables - Filter
Prof. Andrei Carniel
Universidade Tecnológica Federal do Paraná – UTFPR
E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com

Más contenido relacionado

La actualidad más candente

Seguranca da Informação - VPN
Seguranca da Informação - VPNSeguranca da Informação - VPN
Seguranca da Informação - VPN
Luiz Arthur
 
Redes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LANRedes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LAN
Mauro Tapajós
 

La actualidad más candente (20)

Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e Threads
 
Servidor dns
Servidor dnsServidor dns
Servidor dns
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Comunicaçao de dados
Comunicaçao de dados Comunicaçao de dados
Comunicaçao de dados
 
Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall
 
Seguranca da Informação - VPN
Seguranca da Informação - VPNSeguranca da Informação - VPN
Seguranca da Informação - VPN
 
Camada De Aplicação
Camada De AplicaçãoCamada De Aplicação
Camada De Aplicação
 
Redes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LANRedes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LAN
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Servidor proxy
Servidor proxy Servidor proxy
Servidor proxy
 
Comando basico switch
Comando basico switchComando basico switch
Comando basico switch
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01
 
Vantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidoresVantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidores
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de Rede
 
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
Segurança de Dados e Informações - Aula 5 - Firewall | IptablesSegurança de Dados e Informações - Aula 5 - Firewall | Iptables
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
 
Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 

Destacado

Seguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptablesSeguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptables
Luiz Arthur
 
SENAI - Segurança firewall
SENAI - Segurança   firewall SENAI - Segurança   firewall
SENAI - Segurança firewall
Carlos Melo
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
elliando dias
 
Prova segurança de redes
Prova segurança de redesProva segurança de redes
Prova segurança de redes
Carlos Melo
 

Destacado (20)

Tutorial sobre iptables
Tutorial sobre iptablesTutorial sobre iptables
Tutorial sobre iptables
 
Aula 8.2 - Iptables Impasses e Scripts
Aula 8.2 - Iptables Impasses e ScriptsAula 8.2 - Iptables Impasses e Scripts
Aula 8.2 - Iptables Impasses e Scripts
 
Seguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptablesSeguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptables
 
Iptables Completo Oliver
Iptables   Completo   OliverIptables   Completo   Oliver
Iptables Completo Oliver
 
Iptables Básico
Iptables BásicoIptables Básico
Iptables Básico
 
Servidor proxy Squid
Servidor proxy SquidServidor proxy Squid
Servidor proxy Squid
 
SENAI - Segurança firewall
SENAI - Segurança   firewall SENAI - Segurança   firewall
SENAI - Segurança firewall
 
Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)
 
Aula 8.0 - Segurança
Aula 8.0 - SegurançaAula 8.0 - Segurança
Aula 8.0 - Segurança
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
 
Trabalho sobre Proxy
Trabalho sobre ProxyTrabalho sobre Proxy
Trabalho sobre Proxy
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
 
Squid
SquidSquid
Squid
 
Configurando servidor web https no apache2 ed
Configurando servidor web https no apache2 edConfigurando servidor web https no apache2 ed
Configurando servidor web https no apache2 ed
 
Prova segurança de redes
Prova segurança de redesProva segurança de redes
Prova segurança de redes
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Dropbox
DropboxDropbox
Dropbox
 
Google drive - Planilhas
Google drive - PlanilhasGoogle drive - Planilhas
Google drive - Planilhas
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
 

Similar a Aula 8.1 - Iptables tabela Filter

Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1
Matheus Araújo
 
Rct 17 - camada de rede - endereçamento ip
Rct   17 - camada de rede - endereçamento ipRct   17 - camada de rede - endereçamento ip
Rct 17 - camada de rede - endereçamento ip
Universal.org.mx
 

Similar a Aula 8.1 - Iptables tabela Filter (20)

Apostila firewall-consulta
Apostila firewall-consultaApostila firewall-consulta
Apostila firewall-consulta
 
Firewall no linux
Firewall no linuxFirewall no linux
Firewall no linux
 
Firewall - Introducao.pdf
Firewall - Introducao.pdfFirewall - Introducao.pdf
Firewall - Introducao.pdf
 
IPTables na prática
IPTables na práticaIPTables na prática
IPTables na prática
 
Unidade3 seg perimetral
Unidade3 seg perimetralUnidade3 seg perimetral
Unidade3 seg perimetral
 
Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1Workshop iptables uern_stacruz_14_dez2010_v1
Workshop iptables uern_stacruz_14_dez2010_v1
 
Configuração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosConfiguração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandos
 
Atividade acl extendida
Atividade acl extendidaAtividade acl extendida
Atividade acl extendida
 
Rct 17 - camada de rede - endereçamento ip
Rct   17 - camada de rede - endereçamento ipRct   17 - camada de rede - endereçamento ip
Rct 17 - camada de rede - endereçamento ip
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
 
02-Flowspec_GTER29
02-Flowspec_GTER2902-Flowspec_GTER29
02-Flowspec_GTER29
 
Netfilter + Iptables
Netfilter + IptablesNetfilter + Iptables
Netfilter + Iptables
 
Firewall em Linux
Firewall em LinuxFirewall em Linux
Firewall em Linux
 
Curso redes seed
Curso redes seedCurso redes seed
Curso redes seed
 
Ntop
NtopNtop
Ntop
 
Redes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxRedes prática - Enderecamento I Plinux
Redes prática - Enderecamento I Plinux
 
Redes de Computadores 2 - Aula 2 - Protocolo TCP/IP
Redes de Computadores 2 - Aula 2 - Protocolo TCP/IPRedes de Computadores 2 - Aula 2 - Protocolo TCP/IP
Redes de Computadores 2 - Aula 2 - Protocolo TCP/IP
 
Entendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalEntendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoal
 
Como montar uma rede cabeada
Como montar uma rede cabeadaComo montar uma rede cabeada
Como montar uma rede cabeada
 
Livro cisco
Livro ciscoLivro cisco
Livro cisco
 

Último

Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Último (20)

Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 

Aula 8.1 - Iptables tabela Filter

  • 1. Firewall Iptables - Filter Prof. Andrei Carniel Universidade Tecnológica Federal do Paraná – UTFPR E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com
  • 2. Firewall Iptables (1/4) • O IPTables é uma versão robusta, completa e tão estável quanto seus antecessores IPFWADM e IPCHAINS, implementados nos Kernels Linux 2.0 e 2.2 respectivamente. • IPTables é um firewall muito conhecido na comunidade Linux que foi incorporado ao mesmo em 1999. • Principais características:  Filtro de Pacotes (Foco dessa aula)  NAT  QoS sobre tráfego  Redirecionamento de endereços e portas  Detecção de fragmentos  Bloqueio de ataques  Entre outros. 2
  • 3. Firewall Iptables (2/4) • Surgiu com o objetivo de proteger as máquinas de acessos ou tráfego indesejado. • Proteger serviços que estejam rodando na máquina. • Bloquear a passagem de algo que não deseja receber (por exemplo: conexões vindas da Internet). • Foi introduzido no kernel 2.4 do Linux. • É um firewall em nível de pacotes, com funcionamento baseado em endereço e porta de origem/destino, prioridade, entre outros. • Seu funcionamento é baseado na comparação de regras para saber se um pacote pode ou não passar. 3
  • 4. Firewall Iptables (3/4) • Pode ser usado para: ▫ Monitorar e/ou modificar tráfego de rede, efetuar NAT (masquerading, source NAT, destination NAT); ▫ Redirecionamento de pacotes; ▫ Marcação de pacotes; ▫ Modificação de prioridade dos pacotes de entrada/saída; ▫ Contagem de bytes; ▫ Divisão de tráfego; ▫ Proteção anti-spoofing (pacotes com IP falsificado); ▫ Proteção contra syn flood (forma de negação de serviço); ▫ Proteção contra DoS (forma de negação de serviço); ▫ Etc. 4
  • 5. Firewall Iptables (4/4) • Não funciona de forma automática, ou seja, somente instalar e esperar que ele faça o resto. • É necessário pelo menos conhecimentos básicos em redes TCP/IP e roteamento e portas. • Esses conhecimentos são necessários para criar regras de segurança. • Lembre-se: ▫ A segurança do sistema depende do conjunto de regras que serão criados por você; ▫ 95% das invasões de sucesso são devido a falhas humanas na configuração; • Trabalharemos principalmente com a função Filtro de Pacotes que é a mais utilizada no IPTables, bloqueando e permitindo serviços em uma rede. 5
  • 7. Chains – Lista de regras • Basicamente para filtragem de pacotes existem basicamente três tipos de chains, são elas: ▫ INPUT --> Refere-se a todos os pacotes destinados à máquina filtro. ▫ OUTPUT --> Refere-se a todos os pacotes gerados na máquina filtro. ▫ FORWARD --> Refere-se a todos os pacotes oriundos de uma máquina e destinados a outra. São pacotes que atravessam a máquina filtro, mas não são destinados a ela. 7
  • 8. Chains – Lista de regras • Para verificar as regras em nas CHAINS, digite: ▫ # iptables -L • O resultado deve ser algo como: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 8
  • 9. Chains – Lista de regras • Note que não existem regras em qualquer das CHAINS, mas o policy padrão é ACCEPT, ou seja, aceite qualquer pacote de qualquer origem/destino. • Outra observação importante aqui é que o comando acima nos mostrou a as 3 tabelas disponíveis. • Sempre que formos inserir uma nova regra podemos utilizar a opção -t filter para especificar a tabela, mas essa opção não é obrigatória. 9
  • 10. Manipulando Chains • O Iptables trabalha com uma tabela de regras que é analisada uma a uma até que a última seja processada. • Por padrão, se uma regra tiver qualquer erro, uma mensagem será mostrada e ela descartada. • O pacote não conferirá e a ação final (se ele vai ser aceito ou rejeitado) dependerá das regras seguintes. • Agora que sabemos a existência das três CHAINS, devemos usar comandos para adicionar regras: 10
  • 11. Manipulando Chains Principais comandos para inclusão e exclusão de chains! 11
  • 12. Manipulando Chains • Sintaxe padrão: ▫ #iptables -[COMANDO] [CHAIN] [TARGET] • Exemplo: ▫ #iptables –P INPUT DROP • Todos os pacotes por default serão rejeitados. 12
  • 13. Manipulando Chains – Inclusão e Exclusão (1/5) • -P --> Policy (política). Altera a política da chain. A política inicial de cada chain é ACCEPT. • Isso faz com que o filtro, inicialmente, aceite qualquer INPUT, OUTPUT ou FORWARD. • A política pode ser alterada para DROP, que irá negar o serviço da chain, até que uma opção -A entre em vigor. • O -P não aceita REJECT ou LOG. Exemplos: ▫ #iptables -P FORWARD DROP ▫ #iptables -P INPUT ACCEPT 13
  • 14. Manipulando Chains – Inclusão e Exclusão (2/5) • -A --> Append (anexar). Acresce uma nova regra à chain. • Tem prioridade sobre o -P. • Geralmente, como buscamos segurança máxima, colocamos todas as chains em política DROP, com o -P e, depois, abrimos o que é necessário com o -A. • Exemplos: ▫ #iptables -A OUTPUT -d 172.20.5.10 -j ACCEPT ▫ #iptables -A FORWARD -s 10.0.0.1 -j DROP ▫ #iptables -A FORWARD -d www.chat.com.br -j DROP 14
  • 15. Manipulando Chains – Inclusão e Exclusão (3/5) • -D --> Delete (apagar). Apaga uma regra. • A regra deve ser escrita novamente, trocando-se a opção para -D. Exemplos: • Para apagar as regras anteriores, usa-se: ▫ #iptables -D OUTPUT -d 172.20.5.10 -j ACCEPT ▫ #iptables -D FORWARD -s 10.0.0.1 -j DROP ▫ #iptables -D FORWARD -d www.chat.com.br -j DROP 15
  • 16. Manipulando Chains – Inclusão e Exclusão (4/5) • Também é possível apagar a regra pelo seu número de ordem. • Pode-se utilizar o -L para verificar o número de ordem. • Verificado esse número, basta citar a chain e o número de ordem. Exemplo: ▫ #iptables -D FORWARD 4 • Isso deleta a regra número 4 da chain FORWARD. 16
  • 17. Manipulando Chains – Inclusão e Exclusão (5/5) • -L --> List (listar). Lista as regras existentes. Exemplos: ▫ #iptables -L ▫ #iptables -L FORWARD (Lista apenas da Chain FORWARD) • -F --> Flush (esvaziar). Remove todas as regras existentes. No entanto, não altera a política (-P). Exemplos: ▫ #iptables -F ▫ #iptables -F FORWARD (Remove apenas regras da Chain FORWARD) 17
  • 18. Manipulando Chains – Inclusão e Exclusão (6/6) • -I --> Insert(inserir). Insere uma nova regra no início da lista. Exemplos: ▫ #iptables –I OUTPUT –d 200.200.2 –j ACCEPT • -N --> New(nova). Adiciona uma nova chain. ▫ #iptables -N internet • Para adicionar uma regra na chain: ▫ #iptables -A internet -d 127.0.0.1 -j DROP • Para deletar uma chain: ▫ #iptables -X internet 18
  • 19. Manipulando Chains Principais comando para manipulação de origem e destino! 19
  • 20. Manipulando Chains – Origem e Destino (1/4) • -s --> Source (origem). Estabelece a origem do pacote. • Geralmente é uma combinação do endereço IP com a máscara de sub- rede, separados por uma barra. Exemplo: ▫ #-s 172.20.0.0/255.255.0.0 • No caso, vimos a sub-rede 172.20.0.0. Para hosts, a máscara sempre será 255.255.255.255. Exemplo: ▫ #-s 172.20.5.10/255.255.255.255 20
  • 21. Manipulando Chains – Origem e Destino (2/4) • Agora vimos o host 172.20.5.10. Ainda no caso de hosts, a máscara pode ser omitida. • Caso isso ocorra, o Iptables considera a máscara como 255.255.255.255. Exemplo: ▫ #-s 172.20.5.10 • Isso corresponde ao host 172.20.5.10. Há um recurso para simplificar a utilização da máscara de sub-rede. • Basta utilizar a quantidade de bits 1 existentes na máscara. Assim, a máscara 255.255.0.0 vira 16. A utilização fica assim: ▫ #-s 172.20.0.0/16 21
  • 22. Manipulando Chains – Origem e Destino (3/4) • Outra possibilidade é a designação de hosts pelo nome. Exemplo: ▫ #-s www.chat.com.br • Para especificar qualquer origem, utilize a rota default, ou seja, 0.0.0.0/0.0.0.0, também admitindo 0/0. • Exemplo Geral: ▫ #iptables -A INPUT -s 200.200.200.0/24 -j DROP • Bloqueia o tráfego vindo da rede 200.200.200.*. 22
  • 23. Manipulando Chains – Origem e Destino (4/4) • -d --> Destination (destino). Estabelece o destino do pacote. • Funciona exatamente como o -s, incluindo a sintaxe. • Exemplo Geral: ▫ #iptables -A OUTPUT -d 10.1.2.3 -j DROP • Bloqueia conexões com o destino 10.1.2.3: 23
  • 24. Manipulando Chains – Protocolos • -p --> Protocol (protocolo). Especifica o protocolo a ser filtrado. • O protocolo IP pode ser especificado pelo seu número (vide /etc/protocols) ou pelo nome. Os protocolos mais utilizados são udp, tcp e icmp. Exemplo: ▫ #-p icmp • Exemplo: ▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp -j DROP • Bloqueia qualquer pacote com destino para 200.200.200.20 via protocolo TCP. 24
  • 25. Manipulando Chains – Interface de Rede (1/3) • -i --> In-Interface (interface de entrada). Especifica a interface de entrada. • As interfaces existentes podem ser vistas com o comando #ifconfig. • Exemplo: ▫ #-i ppp0 • O -i não pode ser utilizado com a chain OUTPUT. 25
  • 26. Manipulando Chains – Interface de Rede (2/3) • O sinal + pode ser utilizado para simbolizar várias interfaces. • Exemplo: ▫ #-i eth+ • eth+ refere-se à eth0, eth1, eth2 e etc. • Exemplo geral: ▫ #iptables -A FORWARD -i eth0 -j ACCEPT • Os pacotes que entrarem pela interface eth0 serão aceitos. 26
  • 27. Manipulando Chains – Interface de Rede (3/3) • -o --> Out-Interface (interface de saída). Especifica a interface de saída. • Similar a -i, inclusive nas flexibilidades. • O -o não pode ser utilizado com a chain INPUT. • Exemplo: ▫ #iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE • Todos os pacotes que saírem pela interface ppp0 (modem) serão mascarados. Isso dá um nível de segurança elevado à rede que está atrás da ppp0. É uma boa regra para navegação na Internet. 27
  • 28. Manipulando Chains – Portas (1/2) • --sport --> Source Port. Porta de origem. • Só funciona com as opções -p udp e -p tcp. Exemplo: ▫ #-p tcp --sport 80 • Refere-se à porta 80 sobre protocolo TCP. • Exemplo: ▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp --sport 100:1023 -j DROP • Bloqueia qualquer pacote com destino a 200.200.200.20, que utiliza protocolo TCP e se originou na faixa de portas 100 a 1023. 28
  • 29. Manipulando Chains – Portas (2/2) • --dport --> Destination Port. Porta de destino. • Só funciona com as opções -p udp e -p tcp. • Similar a --sport. • Exemplo: ▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp --dport 100:1023 -j DROP • Bloqueia qualquer pacote com destino a 200.200.200.20, que utiliza protocolo TCP e tem como destino qualquer porta da faixa de 100 a 1023. 29
  • 30. Manipulando Chains – Exclusão (1/2) • ! --> Exclusão. Utilizado com -s, -d, -p, -i, -o e outros, para excluir o argumento. • Funciona para muitos parâmetros, como o endereço de origem/destino, protocolo, porta, mensagens ICMP, fragmentos, etc... podem ser precedidos pelo sinal “!” que significa exceção • Exemplo: ▫ #-s ! 10.0.0.1 • Isso refere-se a qualquer endereço de entrada, exceto o 10.0.0.1. ▫ #-p ! tcp • Todos os protocolos, exceto o TCP. 30
  • 31. Manipulando Chains – Exclusão (2/2) • Exemplos: ▫ #iptables -A INPUT ! -s 200.200.200.10 -p tcp -j DROP • Diz para rejeitar todos os pacotes EXCETO os que vem do endereço 200.200.200.10 . ▫ #iptables -A INPUT -s 200.200.200.10 ! -p tcp -j DROP • Bloqueia todos os pacotes vindos de 200.200.200.10, EXCETO os do protocolo TCP. 31
  • 32. Manipulando Chains • O alvo (-j) é o destino que um pacote terá quando conferir com as condições de uma regra. 32
  • 33. Manipulando Chains – Jump Target • Isto especifica o alvo da regra, isto é, o que fazer se o pacote corresponde a ele. • O alvo pode ser uma cadeia definida pelo usuário, um dos alvos embutidos especiais, que decidem o destino do pacote imediatamente, ou uma extensão. • Se esta opção for omitido em regra, a regra não é usada, então a regra de correspondência não irá ter qualquer efeito sobre o destino do pacote, mas os contadores na regra será incrementado. 33
  • 34. Manipulando Chains – Jump Target • ACCEPT --> Aceitar. Permite a passagem do pacote normalmente. • DROP --> Abandonar. Não permite a passagem do pacote, ele será descartado. Não avisa a origem sobre o ocorrido. • REJECT --> Igual ao DROP, mas avisa a origem sobre o ocorrido (envia pacote icmp unreachable). • LOG --> Cria um log referente à regra, em /var/log/messages. Usar antes de outras ações¹. ¹ : LOG é uma extensão não terminal, ou seja, mesmo que seja validado em uma regra ele continuará a ser avaliado pelas regras subsequentes. Portanto se quiser descartar o pacote terá que criar uma mesma regra mas com a target DROP ou REJECT, ou colocar a política default como DROP. 34
  • 35. Manipulando Chains – Jump Target • Caso seja necessário criar uma regra onde seja efetuado o LOG de um determinado pacote e logo após a exclusão dele, deve-se configurar da seguinte maneira: ▫ #iptables -A INPUT -s 200.200.200.1 -i eth0 -j LOG • Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface eth0. ▫ #iptables -A INPUT -s 200.200.200.1 -i eth0 -j REJECT • Para efetuar o bloqueio. Note que no exemplo anterior a regra que registra o pacote (-j LOG) deve aparecer antes da regra que REJEITA (-j REJECT), caso contrário a regra nunca funcionará. 35
  • 36. Manipulando Chains • Manipulação de pacotes para iniciar conexão (pacotes syn). 36
  • 37. Manipulando Chains – Pacotes SYN • Pacotes syn são usados para iniciarem uma conexão. • O uso da opção --syn serve para especificar estes tipos de pacotes. Desta maneira é possível bloquear somente os pacotes que iniciam uma conexão, sem afetar os pacotes restantes. • Para que uma conexão ocorra é necessário que a máquina obtenha a resposta a pacotes syn enviados, caso ele seja bloqueado a resposta nunca será retornada e a conexão não será estabelecida. ▫ #iptables -A INPUT -p tcp --syn --dport 23 -i eth1 -j DROP • A regra acima bloqueia (-j DROP) qualquer tentativa de conexão (--syn) vindas da interface eth1 ao telnet (--dport 23) da máquina local. A opção --syn somente pode ser especificada para o protocolo TCP. 37
  • 38. Lógica de Regras • Funcionamento das regras. 38
  • 39. Lógica das Regras (1/5) • Observe os próximos exemplos: • Exemplo A: ▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT ▫ #iptables -A INPUT -p ICMP -j DROP • Podemos concluir o seguinte: • Exemplo A: todos os pings da máquina 10.0.0.10 serão aceitos, os outros pings serão deletados. 39
  • 40. Lógica das Regras (2/5) • Exemplo B: ▫ #iptables -A INPUT -p ICMP -j DROP ▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT • Podemos concluir o seguinte: • Exemplo B: todos os pings serão deletados, até mesmo os da máquina 10.0.0.10. • Ou seja: a ordem da regras importam! • Obs.: no caso do LOG, a regra mesmo que executada, passará para a próxima condição. 40
  • 41. Lógica das Regras (3/5) • Impasses e ordem de processamento • Se houver impasse entre regras, sempre valerá a primeira. Assim, entre as regras: ▫ #iptables -A FORWARD -p icmp -j DROP ▫ #iptables -A FORWARD -p icmp -j ACCEPT • Valerá: ▫ #iptables -A FORWARD -p icmp -j DROP 41
  • 42. Lógica das Regras (4/5) • Impasses e ordem de processamento • Já entre as regras: ▫ #iptables -A FORWARD -p icmp -j ACCEPT ▫ #iptables -A FORWARD -p icmp -j DROP • Valerá: ▫ #iptables -A FORWARD -p icmp -j ACCEPT 42
  • 43. Lógica das Regras (5/5) • Essas situações ocorrem porque as regras são processadas na ordem em que aparecem. • Depois do processamento da regra, pode haver continuidade de processamento ou não. • Isso irá depender da ação: ▫ ACCEPT --> Para de processar regras para o pacote atual; ▫ DROP --> Para de processar regras para o pacote atual; ▫ REJECT --> Para de processar regras para o pacote atual; ▫ LOG --> Continua a processar regras para o pacote atual; 43
  • 44. Regras Comentadas • Exemplo de funcionamento das regras. 44
  • 45. Regras comentadas (1/6) • Regras: ▫ #iptables -L • Lista todas as regras existentes. ▫ #iptables -F • Apaga todas as regras sem alterar a política. ▫ #iptables -P FORWARD DROP • Estabelece uma política de proibição padrão para a passagem de pacotes entre sub-redes. 45
  • 46. Regras comentadas (2/6) ▫ #iptables -A FORWARD -j DROP • Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede deverão ser descartados. ▫ #iptables -A FORWARD -j ACCEPT • Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede deverão ser aceitos. ▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j DROP • Os pacotes oriundos da sub-rede 10.0.0.0 (máscara 255.0.0.0) e destinados aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. Note que se a máquina possuir domínios virtuais, todos esses serão bloqueados. 46
  • 47. Regras comentadas (3/6) ▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j REJECT • Os pacotes oriundos da sub-rede 10.0.0.0 (máscara 255.0.0.0) e destinados aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. Deverá ser enviado um ICMP avisando à origem. ▫ #iptables -A FORWARD -d www.chat.com.br -j DROP • Os pacotes oriundos de qualquer lugar e destinados aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. 47
  • 48. Regras comentadas (4/6) ▫ #iptables -A FORWARD -d 10.0.0.0/8 -s www.chat.com.br -j DROP • Os pacotes destinados à sub-rede 10.0.0.0 (máscara 255.0.0.0) e oriundos aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. ▫ #iptables -A FORWARD -s www.chat.com.br -j DROP • Os pacotes oriundos aos hosts cujos endereços IP respondem pelo nome www.chat.com.br e destinados a qualquer lugar deverão ser descartados. ▫ #iptables -A FORWARD -s 200.221.20.0/24 -j DROP • Os pacotes oriundos da sub-rede 200.221.20.0 (máscara 255.255.255.0) e destinados a qualquer lugar deverão ser descartados. 48
  • 49. Regras comentadas (5/6) ▫ #iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP • Os pacotes icmp oriundos do host 10.0.0.5 e destinados a qualquer lugar deverão ser descartados. ▫ #iptables -A FORWARD -i eth0 -j ACCEPT • Os pacotes que entrarem pela interface eth0 serão aceitos. ▫ #iptables -A FORWARD -i ! eth0 -j ACCEPT • Os pacotes que entrarem por qualquer interface, exceto a eth0, serão aceitos. 49
  • 50. Regras comentadas (6/6) ▫ #iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80 -j LOG • O tráfego de pacotes TCP oriundos da porta 80 do host 10.0.0.5 e destinados a qualquer lugar deverá ser gravado em log. No caso, /var/log/messages. ▫ #iptables -A FORWARD -p tcp --dport 25 -j ACCEPT • Os pacotes TCP destinados à porta 25 de qualquer host deverão ser aceitos. 50
  • 52. Exercícios • Responda os exercícios assumindo que sua máquina irá assumir a posição do host informado no exercício. 52
  • 53. Exercícios • Responda os exercícios de acordo com a seguinte topologia: 53
  • 54. Exercícios • 1 - Algumas regras para o roteador “R”: a) Não permita que a rede 192.168/16 envie pings para o servidor “S”. b) Não permita que a máquina “B” envie pacotes UDP para a máquina “Y”. 54
  • 55. Exercícios • 2 - Algumas regras para o servidor “S”: a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e opera na porta 23) no servidor. b) A máquina “B” está proibida de acessar TFTP no servidor. c) A rede 172.29/16 está proibida de enviar e-mails pelo servidor. E se alguém tentar, registrar em log. 55
  • 56. Exercícios • 3 - Algumas regras para a máquina “A”: a) Só será permitido resolver DNS pelo servidor “S”. b) A única página web que se permite acessar é a que está no servidor “S”. Bloquear e registrar em log outras tentativas. 56
  • 58. Exercício 1 • 1 - Algumas regras para o roteador “R”: a) Não permita que a rede 192.168/16 envie pings para o servidor “S”.  (policy = ACCEPT)  #iptables -A FORWARD -p ICMP -s 192.168.0.0/16 -d 200.143.81.25 -j REJECT b) Não permita que a máquina “B” envie pacotes UDP para a máquina “Y”.  #iptables -A FORWARD -p UDP -s 172.29.0.3 -d 192.168.0.5 -j DROP 58
  • 59. Exercício 2 • 2 - Algumas regras para o servidor “S”: a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e opera na porta 23) no servidor.  (policy = ACCEPT)  #iptables -A INPUT -s 192.168.0.4 -p TCP --dport 23 -j ACCEPT  #iptables -A INPUT -p TCP --dport 23 -j DROP b) A máquina “B” está proibida de acessar TFTP no servidor.  #iptables -A INPUT -s 172.29.0.3 -p UDP --dport 69 -j DROP c) A rede 172.29/16 está proibida de enviar e-mails pelo servidor. E se alguém tentar, registrar em log.  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 25 -j LOG  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 25 -j DROP  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 587 -j LOG  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 587 -j DROP 59
  • 60. Exercício 3 • 3 - Algumas regras para a máquina “A”: a) Só será permitido resolver DNS pelo servidor “S”.  (policy = ACCEPT)  #iptables -A OUTPUT -d 200.143.81.25 -p UDP --dport 53 -j ACCEPT  #iptables -A OUTPUT -p UDP --dport 53 -j DROP b) A única página web que se permite acessar é a que está no servidor “S”. Bloquear e registrar em log outras tentativas.  #iptables -A OUTPUT -d 200.143.81.25 -p TCP --dport 80 -j ACCEPT  #iptables -A OUTPUT -p TCP --dport 80 -j LOG  #iptables -A OUTPUT -p TCP --dport 80 -j DROP 60
  • 62. Firewall Iptables - Filter Prof. Andrei Carniel Universidade Tecnológica Federal do Paraná – UTFPR E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com