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

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
  • 6.
  • 7.
    Chains – Listade 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 – Listade 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 – Listade 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 • OIptables 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 comandospara inclusão e exclusão de chains! 11
  • 12.
    Manipulando Chains • Sintaxepadrã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 comandopara 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 • Oalvo (-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çãode 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 • Exemplode 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
  • 51.
  • 52.
    Exercícios • Responda osexercícios assumindo que sua máquina irá assumir a posição do host informado no exercício. 52
  • 53.
    Exercícios • Responda osexercí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
  • 57.
  • 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
  • 61.
  • 62.
    Firewall Iptables -Filter Prof. Andrei Carniel Universidade Tecnológica Federal do Paraná – UTFPR E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com