SEGURANÇA COM IPTABLES Autor: Leonardo “Stroyker” Damasceno
Tópicos O que é  iptables ? 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 FILTER INPUT OUTPUT FORWARD NAT PREROUTING OUTPUT POSTROUTING MANGLE INPUT FORWARD PREROUTING POSTROUTING OUTPUT
Tabela FILTER Descrição:   É a tabela padrão, ela não precisa ser especificada na sintaxe do iptables. Chains: INPUT ->  Consultado para dados que chegam a máquina  OUTPUT  -> Consultado para dados que saem da máquina  FORWARD  -> Consultado para dados que são redirecionados para outra interface de rede ou outra máquina.  Exemplo:   iptables -A FORWARD -i eth0 -o eth2 -m pkttype --pkt-type multicast -j DROP
Tabela NAT Descrição:  Usada para dados que geram outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). Chain: PREROUTING  -> Consultado quando os pacotes precisam ser modificados logo que chegam. OUTPUT ->  Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. POSTROUTING ->  Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. Exemplo:  iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j SNAT --to 200.200.217.40
Tabela Mangle INPUT  -  Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain INPUT da tabela filter. FORWARD  -  Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter. PREROUTING  -  Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat. POSTROUTING  -  Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat. OUTPUT  -  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 [ação] Exemplo:  iptables -t filter -A INPUT -d 127.0.0.1 -j DROP Explicando:   Bloqueia qualquer acesso indo ao endereço 127.0.0.1, que é nosso localhost.
Criando um chain Opção -N iptables [-t tabela] [-N nomedochain] Exemplo:   iptables -t filter -N internet Inserindo regra no novo chain “internet”: iptables -t filter -A internet -s 192.168.0.102 -j DROP iptables -t filter -A INPUT -j internet
Criando um chain Tabela de regras: Explicação:  Fizemos um redirecionamento ou o conhecido “pulo”.
Renomeando um chain Opção -E iptables [-t tabela] -E chain-antigo chain-novo Exemplo:   iptables -t filter -E internet teste
Apagando um chain criado Opção -X iptables [-t tabela] -X [chain] Exemplo:   iptables -t filter -X teste 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: 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:   iptables -A INPUT -s 200.222.256.63 -j DROP OBS.:   As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas.
Adicionando regras Opção -A: iptables [-t tabela] -A [chain] [dados] -j [ação] Opção -I: iptables [-t tabela] -I [chain] [dados] -j [ação] Exemplo:  iptables -t filter -I INPUT -s 192.168.0.10 -d 192.168.0.11 -j DROP
Listando regras Opção -L 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:   iptables -t filter -L INPUT --line-numbers
Apagando uma regra Opção -D iptables [-t tabela] -D [chain] [posição] iptables [-t tabela] -D [chain] [dados] -j [ação] Exemplo:  iptables -t filter -D INPUT 1 iptables -t filter -D INPUT -d 127.0.0.1 -j DROP
Substituindo uma regra Opção -R iptables [-t tabela] -R [chain] [posição] [regra] -j [ação] Exemplo:  iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j DROP
Limpando regras Opção -F iptables [-t tabela] -F [chain] Exemplo:  iptables -F iptables -t filter -F INPUT
Parâ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:  iptables -t filter -A INPUT -s 192.168.0.104 -d 192.168.0.102 -p icmp -j DROP
Parâmetros Parâmetro -i Usado para especificar a interface de entrada. Parâmetro -o Usado para especificar a interface de saída Exemplo:  iptables -t filter -A INPUT -s 192.168.0.104 -i ppp+ -j DROP Exemplo2:   iptables -A FORWARD -i ppp0 -o eth1 -j DROP OBS.:   O sinal de "+" funciona como um coringa, assim a regra terá efeito em qualquer interface de ppp0 a ppp9.
Parâmetros Parâmetro -p Usado para especificar um protocolo. Podem ser especificados os procolos,  TCP ,  UDP   e   ICMP. 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:  iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
Fazendo IP Masquerade 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:  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE OBS.:   Todas as operações de IP Masquerading são realizadas no chain POSTROUTING
Fazendo DNAT 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:  iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2 OBS.:   Toda operação de DNAT é feita no chain PREROUTING
Fazendo SNAT 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:  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.:   SNAT faz a operação inversa do DNAT.
TESTES 1.   Bloqueie qualquer acesso do protocolo ICMP para a sua máquina 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.   Faça IP Masquerade da sua rede 192.168.1.0/24 4.  Bloqueie a passagem dos pacotes da interface eth1 para eth2
Dúvidas?

Iptables Básico

  • 1.
    SEGURANÇA COM IPTABLESAutor: Leonardo “Stroyker” Damasceno
  • 2.
    Tópicos O queé iptables ? 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
  • 3.
    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
  • 4.
    Esquema de redecom iptables
  • 5.
    Chains O quesão? Tipos de chains Embutidos Criados
  • 6.
    Tabelas FILTER INPUTOUTPUT FORWARD NAT PREROUTING OUTPUT POSTROUTING MANGLE INPUT FORWARD PREROUTING POSTROUTING OUTPUT
  • 7.
    Tabela FILTER Descrição: É a tabela padrão, ela não precisa ser especificada na sintaxe do iptables. Chains: INPUT -> Consultado para dados que chegam a máquina OUTPUT -> Consultado para dados que saem da máquina FORWARD -> Consultado para dados que são redirecionados para outra interface de rede ou outra máquina. Exemplo: iptables -A FORWARD -i eth0 -o eth2 -m pkttype --pkt-type multicast -j DROP
  • 8.
    Tabela NAT Descrição: Usada para dados que geram outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). Chain: PREROUTING -> Consultado quando os pacotes precisam ser modificados logo que chegam. OUTPUT -> Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. POSTROUTING -> Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j SNAT --to 200.200.217.40
  • 9.
    Tabela Mangle INPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain INPUT da tabela filter. FORWARD - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter. PREROUTING - Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat. POSTROUTING - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat. OUTPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain OUTPUT da tabela nat.
  • 10.
    Sintaxe do iptablesSintaxe: iptables [-t tabela] [opção] [chain] [dados] -j [ação] Exemplo: iptables -t filter -A INPUT -d 127.0.0.1 -j DROP Explicando: Bloqueia qualquer acesso indo ao endereço 127.0.0.1, que é nosso localhost.
  • 11.
    Criando um chainOpção -N iptables [-t tabela] [-N nomedochain] Exemplo: iptables -t filter -N internet Inserindo regra no novo chain “internet”: iptables -t filter -A internet -s 192.168.0.102 -j DROP iptables -t filter -A INPUT -j internet
  • 12.
    Criando um chainTabela de regras: Explicação: Fizemos um redirecionamento ou o conhecido “pulo”.
  • 13.
    Renomeando um chainOpção -E iptables [-t tabela] -E chain-antigo chain-novo Exemplo: iptables -t filter -E internet teste
  • 14.
    Apagando um chaincriado Opção -X iptables [-t tabela] -X [chain] Exemplo: iptables -t filter -X teste OBS.: Chains embutidos não podem ser apagados pelo usuário
  • 15.
    Especificando o alvoOpção -j Iptables [- tabela] [-A chain] [dados] -j [ALVO] 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
  • 16.
    Regras O quesão regras? Exemplo: iptables -A INPUT -s 200.222.256.63 -j DROP OBS.: As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas.
  • 17.
    Adicionando regras Opção-A: iptables [-t tabela] -A [chain] [dados] -j [ação] Opção -I: iptables [-t tabela] -I [chain] [dados] -j [ação] Exemplo: iptables -t filter -I INPUT -s 192.168.0.10 -d 192.168.0.11 -j DROP
  • 18.
    Listando regras Opção-L 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: iptables -t filter -L INPUT --line-numbers
  • 19.
    Apagando uma regraOpção -D iptables [-t tabela] -D [chain] [posição] iptables [-t tabela] -D [chain] [dados] -j [ação] Exemplo: iptables -t filter -D INPUT 1 iptables -t filter -D INPUT -d 127.0.0.1 -j DROP
  • 20.
    Substituindo uma regraOpção -R iptables [-t tabela] -R [chain] [posição] [regra] -j [ação] Exemplo: iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j DROP
  • 21.
    Limpando regras Opção-F iptables [-t tabela] -F [chain] Exemplo: iptables -F iptables -t filter -F INPUT
  • 22.
    Parâmetros Parâmetro -sUsado 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: iptables -t filter -A INPUT -s 192.168.0.104 -d 192.168.0.102 -p icmp -j DROP
  • 23.
    Parâmetros Parâmetro -iUsado para especificar a interface de entrada. Parâmetro -o Usado para especificar a interface de saída Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -i ppp+ -j DROP Exemplo2: iptables -A FORWARD -i ppp0 -o eth1 -j DROP OBS.: O sinal de "+" funciona como um coringa, assim a regra terá efeito em qualquer interface de ppp0 a ppp9.
  • 24.
    Parâmetros Parâmetro -pUsado para especificar um protocolo. Podem ser especificados os procolos, TCP , UDP e ICMP. 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: iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
  • 25.
    Fazendo IP MasqueradeDescriçã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: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE OBS.: Todas as operações de IP Masquerading são realizadas no chain POSTROUTING
  • 26.
    Fazendo DNAT 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: iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2 OBS.: Toda operação de DNAT é feita no chain PREROUTING
  • 27.
    Fazendo SNAT 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: 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.: SNAT faz a operação inversa do DNAT.
  • 28.
    TESTES 1. Bloqueie qualquer acesso do protocolo ICMP para a sua máquina 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. Faça IP Masquerade da sua rede 192.168.1.0/24 4. Bloqueie a passagem dos pacotes da interface eth1 para eth2
  • 29.