Iptables Básico

Preview:

DESCRIPTION

Entendendo e dismistificando o iptables.

Citation preview

SEGURANÇA COM IPTABLESSEGURANÇA COM IPTABLES

Autor: Leonardo “Stroyker” Damasceno

Tópicos

O que é iptablesiptables?

Esquema de rede com iptables

Chains

Tabelas

Sintaxe do iptables

Criando um chain

Renomeando um chain

Apagando um chain criado

Específicando um alvo

Regras

Adicionando Listando Apagando Substituindo Limpando

Parâmetros

Fazendo IP Masquerade

Fazendo DNAT

Fazendo SNAT

TESTES

O que é iptables?

Tem o objetivo de proteger a máquina contra acessos indesejados

Muito rápido, estável e seguro

Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp)

Foi implantado na versão 2.4 do kernel

Esquema de rede com iptables

Chains

O que são?

Tipos de chains Embutidos Criados

Tabelas FILTERFILTER

INPUT

OUTPUT

FORWARD

NATNAT PREROUTING

OUTPUT

POSTROUTING

MANGLEMANGLE INPUT

FORWARD

PREROUTING

POSTROUTING

OUTPUT

Tabela FILTERTabela FILTER

• Descrição:Descrição: É a tabela padrão, ela não precisa ser especificada na sintaxe do iptables.

• Chains:Chains:

– INPUT → INPUT → Consultado para dados que chegam a máquina

– OUTPUTOUTPUT → Consultado para dados que saem da máquina

– FORWARDFORWARD → Consultado para dados que são redirecionados para outra interface de rede ou outra máquina.

Exemplo:Exemplo: iptables -A FORWARD -i eth0 -o eth2 -m pkttype --pkt-type multicast -j DROP

Tabela NATTabela NAT• Descrição: Descrição: Usada para dados que geram outra conexão

(masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos).

• Chain:Chain:

– PREROUTINGPREROUTING → Consultado quando os pacotes precisam ser modificados logo que chegam.

– OUTPUT → OUTPUT → Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados.

– POSTROUTING → POSTROUTING → Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento.

Exemplo: Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j SNAT --to 200.200.217.40

Tabela MangleTabela Mangle• INPUTINPUT - Consultado quando os pacotes precisam ser modificados

antes de serem enviados para o chain INPUT da tabela filter.

• FORWARDFORWARD - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter.

• PREROUTINGPREROUTING - Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat.

• POSTROUTINGPOSTROUTING - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat.

• OUTPUTOUTPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain OUTPUT da tabela nat.

Sintaxe do iptables

Sintaxe: iptables [-t tabela] [opção] [chain] [dados] -j iptables [-t tabela] [opção] [chain] [dados] -j [ação][ação]

Exemplo: iptables -t filter -A INPUT -d 127.0.0.1 -j iptables -t filter -A INPUT -d 127.0.0.1 -j DROPDROP

Explicando:Explicando: Bloqueia qualquer acesso indo ao endereço 127.0.0.1, que é nosso localhost.

Criando um chainCriando um chain

Opção -N iptables [-t tabela] [-N nomedochain]

Exemplo:Exemplo: iptables -t filter -N internetiptables -t filter -N internet

– Inserindo regra no novo chain “internet”:

iptables -t filter -A internet -s 192.168.0.102 -j DROPiptables -t filter -A internet -s 192.168.0.102 -j DROP

iptables -t filter -A INPUT -j internetiptables -t filter -A INPUT -j internet

Criando um chainCriando um chain

Tabela de regras:

Explicação:Explicação: Fizemos um redirecionamento ou o conhecido “pulo”.

INPUT INTERNET-s 192.168.0.97 -j DROP -s 192.168.0.102 -j DROP-s 192.168.0.101 -j ACCEPT-s 192.168.0.103 -j ACCEPT-j internet

Renomeando um chainRenomeando um chain

Opção -E iptables [-t tabela] -E chain-antigo chain-novo

Exemplo:Exemplo: iptables -t filter -E internet testeiptables -t filter -E internet teste

Apagando um chain criadoApagando um chain criado

Opção -X iptables [-t tabela] -X [chain]iptables [-t tabela] -X [chain]

Exemplo:Exemplo: iptables -t filter -X testeiptables -t filter -X teste

OBS.:OBS.: Chains embutidos não podem ser apagados pelo usuário

Especificando o alvo

• Opção -j

– Iptables [- tabela] [-A chain] [dados] -j [ALVO]

• Tipos:Tipos:– ACCEPT → Aceita o pacote

– DROP → “Dropa”, ou simplismente não aceita o pacote

– REJECT → Rejeita o pacote, enviando uma mensagem

– LOG → Envia uma mensagem ao syslog caso a regra confira

– RETURN → Para o processamento do chain atual, e retorna

– QUEUE → Passa para o processamento de programas externos

Regras

O que são regras?

Exemplo:Exemplo: iptables -A INPUT -s 200.222.256.63 -j iptables -A INPUT -s 200.222.256.63 -j DROPDROP

OBS.: As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas.

Adicionando regrasAdicionando regras

Opção -A:Opção -A: iptables [-t tabela] -A [chain] [dados] -j [ação]iptables [-t tabela] -A [chain] [dados] -j [ação]

Opção -I:Opção -I:

iptables [-t tabela] -I [chain] [dados] -j [ação]iptables [-t tabela] -I [chain] [dados] -j [ação]

Exemplo:Exemplo: iptables -t filter -I INPUT -s 192.168.0.10 -d iptables -t filter -I INPUT -s 192.168.0.10 -d 192.168.0.11 -j DROP192.168.0.11 -j DROP

Listando regrasListando regras

Opção -L iptables [-t tabela] -L [chain] [opções]iptables [-t tabela] -L [chain] [opções]

[opções]:-v → Exibe mais detalhes sobre as regras criadas nos chains

-n → Exibe endereços de máquinas/portas como números

-x → Exibe números exatos. Mostra a faixa de portas de uma regra

--line-numbers → Exibe o número da posição da regra

Exemplo:Exemplo: iptables -t filter -L INPUT --line-numbersiptables -t filter -L INPUT --line-numbers

Apagando uma regraApagando uma regra

Opção -D iptables [-t tabela] -D [chain] [posição]iptables [-t tabela] -D [chain] [posição] iptables [-t tabela] -D [chain] [dados] -j [ação]iptables [-t tabela] -D [chain] [dados] -j [ação]

Exemplo: Exemplo: iptables -t filter -D INPUT 1iptables -t filter -D INPUT 1

iptables -t filter -D INPUT -d 127.0.0.1 -j DROPiptables -t filter -D INPUT -d 127.0.0.1 -j DROP

Substituindo uma regraSubstituindo uma regra

Opção -R iptables [-t tabela] -R [chain] [posição] [regra] -j iptables [-t tabela] -R [chain] [posição] [regra] -j

[ação][ação]

Exemplo: Exemplo: iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j DROPDROP

Limpando regrasLimpando regras

Opção -F iptables [-t tabela] -F [chain]iptables [-t tabela] -F [chain]

Exemplo: Exemplo: iptables -Fiptables -F

iptables -t filter -F INPUTiptables -t filter -F INPUT

ParâmetrosParâmetros

• Parâmetro -s– Usado para especificar endereços de origem. Também é

usado como --src ou --source

• Parâmetro -d– Usado para especificar endereços de destino. Também

usado como --dst e –destination

Exemplo: Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -d iptables -t filter -A INPUT -s 192.168.0.104 -d 192.168.0.102 -p icmp -j DROP192.168.0.102 -p icmp -j DROP

ParâmetrosParâmetros

• Parâmetro -i– Usado para especificar a interface de entrada.

• Parâmetro -o– Usado para especificar a interface de saída

Exemplo: Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -i iptables -t filter -A INPUT -s 192.168.0.104 -i ppp+ -j DROPppp+ -j DROP

Exemplo2:Exemplo2: iptables -A FORWARD -i ppp0 -o eth1 -j iptables -A FORWARD -i ppp0 -o eth1 -j DROPDROP

OBS.:OBS.: O sinal de "+" funciona como um coringa, assim a regra terá efeito em qualquer interface de ppp0 a ppp9.

ParâmetrosParâmetros

• Parâmetro -p– Usado para especificar um protocolo. Podem ser

especificados os procolos, TCPTCP, UDPUDP e ICMP.ICMP.

Exemplo: Exemplo: iptables -A INPUT -s 192.168.0.104 -p icmp -j DROP

• Parâmetro –dport

– Especifica uma porta ou faixa de portas de destino.

Exemplo: Exemplo: iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP

Fazendo IP MasqueradeFazendo IP Masquerade

• Descrição:Descrição: O IP Masquerading é um tipo especial de SNAT usado para conectar a sua rede interna a internet quando você recebe um IP dinâmico de seu provedor (como em conexões ppp).

Exemplo: Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADEo ppp0 -j MASQUERADE

OBS.:OBS.: Todas as operações de IP Masquerading são realizadas Todas as operações de IP Masquerading são realizadas no chain POSTROUTINGno chain POSTROUTING

Fazendo DNATFazendo DNAT

• Descrição:Descrição: DNAT (Destination nat - nat no endereço de destino) consiste em modificar o endereço de destino das máquinas clientes. O destination nat é muito usado para fazer redirecionamento de pacotes, proxys transparentes e balanceamento de carga.

Exemplo: Exemplo: iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2

OBS.:OBS.: Toda operação de DNAT é feita no chain PREROUTING

Fazendo SNATFazendo SNAT

• Descrição:Descrição: SNAT (source nat - nat no endereço de origem) consiste em modificar o endereço de origem das máquinas clientes antes dos pacotes serem enviados. A máquina roteadora é inteligente o bastante para lembrar dos pacotes modificados e reescrever os endereços assim que obter a resposta da máquina de destino, direcionando os pacotes ao destino correto.

Exemplo: Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50

OBS.:OBS.: SNAT faz a operação inversa do DNAT.

TESTESTESTES

1.1. Bloqueie qualquer acesso do protocolo ICMP para a sua máquina

2.2. Bloqueie pacotes que irão entrar na sua rede com o ip de origem 192.168.0.15 na porta 22 (por ssh)

3.3. Faça IP Masquerade da sua rede 192.168.1.0/24

4.4. Bloqueie a passagem dos pacotes da interface eth1 para eth2

Dúvidas?

Recommended