Sejam bem vindos...
SEGURANÇA DA INFORMAÇÃO
Firewalls
CARACTERISTICAS DO
IPTABLES
●Especificação de portas/endereço de origem/destino;
• Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp);
• Suporte a interfaces de origem/destino de pacotes; • Manipulação de serviços de proxy na rede;
• Tratamento de tráfego dividido em chains e tráfego redirecionado;
CARACTERISTICAS DO
IPTABLES
• Muito rápido, estável e seguro;
• Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal formados;
• Suporte a módulos externos para expansão das
funcionalidades padrões oferecidas pelo código de firewall;
• Suporte completo a roteamento de pacotes, tratados em uma área diferente de tráfegos padrões;
CARACTERISTICAS DO
IPTABLES
● Permite especificar exceções para as regras ou parte das regras;
• Suporte a detecção de fragmentos;
• Permite enviar alertas personalizados ao syslog sobre o tráfego aceito/bloqueado;
• Redirecionamento de portas; • Masquerading;
• Suporte a SNAT (modificação do endereço de origem das máquinas para um único IP ou faixa de IP’s);
CARACTERISTICAS DO
IPTABLES
• Suporte a DNAT (modificação do endereço de destino das máquinas para um único IP ou faixa de IP’s);
• Contagem de pacotes que atravessaram uma interface/regra; • Limitação de passagem de pacotes/conferência de regra
(muito útil para criar proteções contra DoS, syn flood, ping flood, etc);
NOTAS
● DoS (Deny of Service) é um ataque de negação de serviço, também conhecido como DoS Attack, sendo uma tentativa em tornar os recursos de um sistema indisponíveis para seus utilizadores.
● SYN flood ou ataque SYN é uma forma de ataque de negação de serviço, na qual o atacante envia uma sequência de requisições SYN para um sistema-alvo visando uma sobrecarga direta na camada de transporte e indireta na camada de aplicação do modelo OSI.
● Ping flood é um ataque de negação de serviço simples no qual o atacante sobrecarrega o sistema vítima com pacotes ICMP Echo Request (pacotes ping). Este ataque apenas é bem sucedido se o atacante possui mais largura de banda que a vitima. Como a vitima tentará responder aos pedidos, irá
TRABALHANDO COM IPTABLES
O iptables possui 5 tabelas da qual 2 são
mais comuns:
Filter: Controla o conteúdo de um pacote
analisando IP, Portas, TCP, UDP e ICMP,
permitindo ou negando conexões.
Nat: Compartilhar e redirecionar pacotes para
TRABALHANDO COM IPTABLES
As regras no Iptables sempre são iniciadas
apontando sua tabela.
Exemplo:
# iptables -t filter ...
# iptables -t nat ...
TRABALHANDO COM IPTABLES
Após definir a tabela, será necessário definir a
chain.
Chains Filter:
INPUT: Regras para entrada de pacotes.
OUTPUT:Regras para saída de pacotes.
TRABALHANDO COM IPTABLES
Chains Nat:
PREROUTING:
Regras
que
serão
processadas antes do roteamento dos
pacotes nas interfaces do firewall.
POSTROUTING:
Regras
que
serão
processada pós roteamento dos pacotes nas
interfaces do firewall.
TRABALHANDO COM IPTABLES
Após definir a tabela, será definido a chain
como no exemplo abaixo.
Exemplo Filter:
# iptables -t filter -A INPUT
# iptables -t filter -A OUTPUT
# iptables -t filter -A FORWARD
TRABALHANDO COM IPTABLES
Exemplo Nat:
# iptables -t nat -A POSTROUTING
# iptables -t nat -A OUTPUT
TRABALHANDO COM IPTABLES
TRABALHANDO COM IPTABLES
TRABALHANDO COM IPTABLES
Após definir a tabela, e a chain como no
exemplo abaixo, é definido os parâmetros de
interface, IP, protocolo e portas.
Exemplo Filter:
# iptables -t filter -A INPUT -p tcp -s
192.168.0.1 ...
TRABALHANDO COM IPTABLES
# iptables -t filter -A INPUT -p tcp -s
192.168.0.1 –sport 1024:65535 --dport 80 …
#iptables -t nat -A POSTROUTING -o eth0 ...
TRABALHANDO COM IPTABLES
Alvos do Iptables.
OBS: Para apontar os alvos utilizamos a flag
-j.
TRABALHANDO COM IPTABLES
Após definir a tabela, e a chain como no
exemplo abaixo, é parâmetros de interface, IP,
protocolo e portas, apontamos o ALVO.
Exemplo Filter:
# iptables -t filter -A INPUT -p tcp -s
192.168.0.1 -j DROP
TRABALHANDO COM IPTABLES
Após definir a tabela, e a chain como no
exemplo abaixo, é parâmetros de interface, IP,
protocolo e portas, apontamos o ALVO.
Exemplo Filter:
# iptables -t filter -A INPUT -p tcp -s
192.168.0.1 -j DROP
TRABALHANDO COM IPTABLES
# iptables -t filter -A INPUT -p tcp -s
192.168.0.1 –sport 1024:65535 --dport 80 -j
ACCEPT
#iptables -t nat -A POSTROUTING -o eth0 -j
MASQUERADE
TRABALHANDO COM IPTABLES
VERIFICAR CONTEÚDO DA
TABELA EM MEMÓRIA
VERIFICAR CONTEÚDO DA
TABELA EM MEMÓRIA
1- Verificar conteúdo da tabela filter.
# iptables -t filter -L
2- Verificar conteúdo da tabela nat.
# iptables -t nat -L
LIMPAR REGRAS EXISTENTES
NA TABELA
VERIFICAR CONTEÚDO DA
TABELA EM MEMÓRIA
1- Limpa conteúdo da tabela filter.
# iptables -t filter -F
2- Limpa conteúdo da tabela nat.
# iptables -t nat -F
DEFININDO POLITICA DE
FILTRAGEM PADRÃO
IMPLEMENTAÇÃO PRÁTICA
1- Definir Politica de Negativa padrão.
# iptables -t filter -P INPUT DROP
# iptables -t filter -P OUTPUT DROP
# iptables -t filter -P FORWARD DROP
OBS: Antes colocar as regras de DROP
padrão, teste o acesso com PING.
IMPLEMENTAÇÃO PRÁTICA
2- Definir Politica de permissão padrão.
# iptables -t filter -P INPUT ACCEPT
# iptables -t filter -P OUTPUT ACCEPT
# iptables -t filter -P FORWARD ACCEPT
OBS: Antes colocar as regras de ACCEPT
padrão, teste o acesso com PING.
EXEMPLOS DE REGRAS PARA
FILTRAGEM
IMPLEMENTAÇÃO PRÁTICA
Ip's de origem são setados coma flag -s de
--source, e IP's de destino são setados
pela flgs -d de --destination.
Exemplos:
# Aceitar pacotes que tenham como origem a rede.
# iptables -t filter -A INPUT -s 192.168.0.0/24 -j ACCEPT # NEGAR pacotes que tenham como origem a rede.
IMPLEMENTAÇÃO PRÁTICA
Exemplos:
# Aceitar pacotes que tenham como origem a rede 192.168.0.0/24 que tenha como destino seu firewall.
# iptables -t filter -A INPUT -s 192.168.0.0/24 -d 192.168.0.254 -j ACCEPT
# Negar pacotes que tenham como origem a rede 192.168.0.0/24 que tenha como destino seu firewall.
EXEMPLOS DE REGRAS PARA
FILTRAGEM - EXTRA
IP DE ORIGEM E DESTINO
Utilizando inversão “!”
IMPLEMENTAÇÃO PRÁTICA
Utilizamos a inversão para indicar endereços diferentes do escrito em uma regra.
Exemplos:
# Aceitar pacotes que tenham como origem qualquer rede menos a a rede 192.168.0.0/24.
# iptables -t filter -A INPUT ! -s 192.168.0.0/24 -j ACCEPT
# Negar pacotes que tenham como origem qualquer rede menos a a rede 192.168.0.0/24.
EXEMPLOS DE REGRAS PARA
FILTRAGEM
PROTOCOLOS DE TRANSPORTE
E MENSAGENS
IMPLEMENTAÇÃO PRÁTICA
Os protocolos são setados com a flag -p
de protocol.
Exemplos:
# Aceitar pacotes com a flag tcp.
# iptables -t filter -A INPUT -p tcp -j ACCEPT # Negar pacotes com a flag tcp.
EXEMPLOS DE REGRAS PARA
FILTRAGEM
PROTOCOLOS DE TRANSPORTE
E MENSAGENS
TCP/UDP/ICMPP
Utilizando inversão “!”
IMPLEMENTAÇÃO PRÁTICA
Utilizando a inversão a regra irá tratar
protocolos não especificados na regra,
Exemplos:
# Aceitar pacotes com a flag udp e icmp.
# iptables -t filter -A INPUT ! -p tcp -j ACCEPT # Negar pacotes com a flag udp e icmp.
EXEMPLOS DE REGRAS PARA
FILTRAGEM
IMPLEMENTAÇÃO PRÁTICA
A comunicação pode ser tratada nas
interfaces de rede, utilizando as flags -i de
--input e -o de --output.
Exemplos:
# Aceitar pacotes que tenha como entrada e saída a interface eth0.
# iptables -t filter -A INPUT -i eth0 -j ACCEPT # iptables -t filter -A OUPUT -o eth0 -j ACCEPT
IMPLEMENTAÇÃO PRÁTICA
Exemplos:
# Aceitar pacotes que tenha como entrada e saída qualquer interface.
# iptables -t filter -A INPUT -i eth+ -j ACCEPT # iptables -t filter -A OUPUT -o eth+ -j ACCEPT
# Aceitar pacotes que tenha como entrada e saída qualquer interface menos a eth0.
EXEMPLOS DE REGRAS PARA
FILTRAGEM
IMPLEMENTAÇÃO PRÁTICA
Quando criamos uma regra com apenas o protocolo tcp, automaticamente as suas extensões são setadas.
Exemplos:
# iptables -t filter -A INPUT -p tcp -j ACCEPT # iptables -t filter -A OUPUT -p tcp -j ACCEPT
IMPLEMENTAÇÃO PRÁTICA
Veja as opções que pode serem tratadas ao TCP. --sport ou --source-port : Porta de origem.
--dport ou --destination-port : Porta de destino. Exemplo:
#iptables -t filter -A INPUT -p tcp --sport 80 --dport 1024:65535 -j ACCEPT
IMPLEMENTAÇÃO PRÁTICA
Veja as opções que pode serem tratadas ao TCP.
--tcp-flags : Trata as flags do TCP SYN, FIN, ACK, RST, PSH, URG.
Exemplos:
#iptables -t filter -A INPUT -p tcp ! --tcp-flags ALL RST -j DROP
IMPLEMENTAÇÃO PRÁTICA
Outra opção que pode ser tratada é utilizando a opção --syn, que trata diretamente apenas as flags
bidirecionais do TCP “SYN/ACK e RST”. --syn : Trata as flags do TCP bidirecionais. Exemplo:
EXEMPLOS DE REGRAS PARA
FILTRAGEM
IMPLEMENTAÇÃO PRÁTICA
Quando criamos uma regra com apenas o protocolo udp, automaticamente as suas extensões são setadas.
Exemplos:
# iptables -t filter -A INPUT -p udp -j ACCEPT # iptables -t filter -A OUPUT -p udp -j ACCEPT
IMPLEMENTAÇÃO PRÁTICA
Veja as opções que pode serem tratadas ao UDP. --sport ou --source-port : Porta de origem.
--dport ou --destination-port : Porta de destino. Exemplo:
#iptables -t filter -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT
EXEMPLOS DE REGRAS PARA
FILTRAGEM
IMPLEMENTAÇÃO PRÁTICA
Quando criamos uma regra com apenas o protocolo icmp, automaticamente as suas extensões são setadas.
Exemplos:
# iptables -t filter -A INPUT -p icmp -j ACCEPT # iptables -t filter -A OUPUT -p icmp -j ACCEPT
IMPLEMENTAÇÃO PRÁTICA
Existem várias mensagens do tipo icmp, mas as mais comuns é do tipo 8 código 0 e tipo 0 código 0.
As mensagens do tipo 8 é o echo request, o tipo 0 echo reply.
Exemplo:
# iptables -t filter -A OUTPUT -p icmp --icmp-type 8/0 -j ACCEPT
# iptables -t filter -A INPUT -p icmp --icmp-type 0/0 -j ACCEPT
EXEMPLOS DE REGRAS PARA
FILTRAGEM
IMPLEMENTAÇÃO PRÁTICA
Os módulos do iptables são setadas com a opção -m, temos alguns módulos interessantes para o dia-a-dia, como o mudulo limit.
limit : Esse modulo deve ser especificado com -m limit, é utilizado para suprimir a taxa de pacotes e mensagens de log, fazendo um controle por tempo..
São 2 tipos:
IMPLEMENTAÇÃO PRÁTICA
--limit-burst: Especifica um número de pacotes para entrada antes de tornar o limite valido.
Exemplos para ICMP:
#iptables -t filter -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
#iptables -t filter -A INPUT -p icmp --icmp-type 8 -m limit --limit-burst 4 -j ACCEPT
IMPLEMENTAÇÃO PRÁTICA
Para zerar o contador basta executar o comando: #iptables -Z
IMPLEMENTAÇÃO PRÁTICA
Outro modulo interessante, é o de MAC -m mac, mas com um detalhe, onde só poderá ser utilizado com as chains INPUT e PREROUTING.
#iptables -t filter -A INPUT -d 0/0 -m mac –mac-source AA:BB:CC:11:22:33 -j DROP