SlideShare uma empresa Scribd logo
Iptables Firewalls no Linux por oliver menezes
Firewall - Iptables O iptables é um código de firewall das versões 2.4 do kernel, que substituiu o ipchains (presente nas séries 2.2 do kernel). Ele foi incluído no kernel da série 2.4 em meados de Junho/Julho de 1999.
Componentes Pacote: iptables  iptables - Sistema de controle principal para protocolos ipv4  ip6tables - Sistema de controle principal para protocolos ipv6  iptables-save - Salva as regras atuais em um arquivo especificado como argumento. Este utilitário pode ser dispensado por um shell script contendo as regras executado na inicialização da máquina.  iptables-restore - Restaura regras salvas pelo utilitário iptables-save.
Hardware Necessário É necessário que o seu kernel tenha sido compilado com suporte ao iptables. O requerimento mínimo de memória necessária para a execução do iptables é o mesmo do kernel 2.4 (4MB). Dependendo do tráfego que será manipulado pela(s) interface(s) do firewall ele poderá ser executado com folga em uma máquina 386 SX com 4MB de RAM.  Como as configurações residem no kernel não é necessário espaço extra em disco rígido para a execução deste utilitário.
Registro Todo tráfego que for registrado pelo iptables é registrado por padrão no arquivo /var/log/kern.log.
Instalação #apt-get install iptables  O pacote iptables contém o utilitário iptables (e ip6tables para redes ipv6) necessários para inserir suas regras no kernel. Se você não sabe o que é ipv6, não precisará se preocupar com o utilitário ip6tables por enquanto.
Tipos de firewalls  Existem basicamente dois tipos de firewalls:  nível de aplicação - Este tipo de firewall analisam o conteúdo do pacote para tomar suas decisões de filtragem. Permitem um controle relacionado com o conteúdo do tráfego. Servidores proxy, como o squid, são um exemplo deste tipo de firewall.  nível de pacotes - Este tipo de firewall toma as decisões baseadas nos parâmetros do pacote, como porta/endereço de origem/destino, estado da conexão, e outros parâmetros do pacote. O firewall então pode negar o pacote (DROP) ou deixar o pacote passar (ACCEPT). O iptables é um excelente firewall que se encaixa nesta categoria.
Como começar ? Antes de iniciar a construção do firewall é bom pensar nos seguintes pontos:  Quais serviços precisa proteger. Que máquinas terão acesso livre e quais serão restritas.  Que serviços deverão ter prioridade no processamento.  Que máquinas/redes NUNCA deverão ter acesso a certas/todas máquinas.  O que tem permissão de passar de uma rede para outra (em máquinas que atuam como roteadores/gateways de uma rede interna).
O que são regras? As regras são como comandos passados ao iptables para que ele realize uma determinada ação (como bloquear ou deixar passar um pacote) de acordo com o endereço/porta de origem/destino, interface de origem/destino, etc. As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas.  As regras são armazenadas no kernel, o que significa que quando o computador for reiniciado tudo o que fez será perdido. Por este motivo elas deverão ser gravadas em um arquivo para serem carregadas a cada inicialização.  Um exemplo de regra: #iptables -A INPUT -s 123.123.123.1 -j DROP
O que são chains? Os  Chains  são locais onde as regras do firewall definidas pelo usuário são armazenadas para operação do firewall. Existem dois tipos de chains: os embutidos (como os chains  INPUT ,  OUTPUT  e  FORWARD ) e os criados pelo usuário. Os nomes dos chains embutidos devem ser especificados sempre em maiúsculas (note que os nomes dos chains são case-sensitive, ou seja, o chain input é completamente diferente de INPUT
O que são tabelas? Tabelas são os locais usados para armazenar os chains e conjunto de regras com uma determinada característica em comum. As tabelas podem ser referenciadas com a opção  -t tabela  e existem 3 tabelas disponíveis no iptables:  Filter; NAT; Mangle.
O que são tabelas? filter - Esta é a tabela padrão, contém 3 chains padrões:  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.
O que são tabelas? nat - Usada para dados que gera outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). Possui 3 chains padrões:  PREROUTING - Consultado quando os pacotes precisam ser modificados logo que chegam. É o chain ideal para realização de DNAT e redirecionamento de portas.  OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente é consultado para conexões que se originam de IPs de interfaces locais.  POSTROUTING - Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. É o chain ideal para realização de SNAT e IP Masquerading.
O que são tabelas? mangle - Utilizada para alterações especiais de pacotes (como modificar o tipo de serviço (TOS). Possui 2 chains padrões:  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 .
Adicionando regras - A  Agora vamos incluir uma regra no chain INPUT ( -A INPUT ) que bloqueie ( -j DROP ) qualquer acesso indo ao endereço 127.0.0.1 ( -d 127.0.0.1 ):  iptables -t filter -A INPUT -d 127.0.0.1 -j DROP  Agora verificamos um novo ping. Desta vez a máquina 127.0.0.1 não respondeu, pois todos os pacotes com o destino 127.0.0.1 (-d 127.0.0.1) são rejeitados (-j DROP). A opção  -A  é usada para adicionar novas regras no final do chain. Além de  -j DROP  que serve para rejeitar os pacotes, podemos também usar  -j ACCEPT  para aceitar pacotes. A opção -j é chamada de  alvo da regra  ou somente  alvo  pois define o destino do pacote que atravessa a regra.  OBS:  - A tabela  filter  será usada como padrão caso nenhuma tabela seja especificada através da opção -t.
Listando regras - L  A seguinte sintaxe é usada para listar as regras criadas:  iptables [ -t tabela ] -L [ chain ] [ opções ]  Onde:  tabela   É uma das tabelas usadas pelo iptables. Se a tabela não for especificada, a tabela  filter  será usada como padrão..  chain   Um dos chains disponíveis na tabela acima ou criado pelo usuário. Caso o chain não seja especificado, todos os chains da tabela serão mostrados.  opções   -v - Exibe mais detalhes sobre as regras criadas nos chains.  -n - Exibe endereços de máquinas/portas como números ao invés de tentar a resolução DNS e consulta ao /etc/services.  -x - Exibe números exatos ao invés de números redondos. Também mostra a faixa de portas de uma regra de firewall.  --line-numbers - Exibe o número da posição da regra na primeira coluna da listagem.
Listando regras - L Para listar a regra criada anteriormente usamos o comando:  #iptables -t filter -L INPUT
Limpando as regras de um chain - F  Para limpar todas as regras de um chain, use a seguinte sintaxe:  iptables [ -t tabela ] [ -F chain ]  Onde:  tabela   Tabela que contém o chain que desejamos zerar.  chain   Chain que desejamos limpar. Caso um chain não seja especificado, todos os chains da tabela serão limpos.  #iptables -t filter -F INPUT
Especificando um endereço de origem/destino  As opções -s (ou --src/--source)e -d (ou --dst/--destination) servem para especificar endereços de  origem  e  destino  respectivamente. É permitido usar um endereço IP completo (como 192.168.1.1), um hostname (debian), um endereço fqdn (www.debian.org) ou um par  rede/máscara  (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24).  Caso um endereço/máscara não sejam especificados, é assumido  0/0  como padrão (todos as máquinas de todas as redes).  Bloqueia o tráfego vindo da rede 200.200.200.*:  #iptables -A INPUT -s 200.200.200.0/24 -j DROP
Especificando a interface de origem/destino  As opções  -i  (ou --in-interface) e  -o  (ou --out-interface) especificam as interfaces de origem/destino de pacotes. Por exemplo para bloquear o acesso do tráfego de qualquer máquina com o endereço 200.123.123.10 vinda da interface ppp0 (uma placa de fax-modem):  #iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP  A mesma regra pode ser especificada como : #iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP O sinal de "+" funciona como um coringa, assim a regra terá efeito em qualquer interface. Para bloquear qualquer tráfego local para a Internet:  #iptables -A OUTPUT -o ppp+ -j DROP Para bloquear a passagem de tráfego da interface ppp0 para a interface eth1 (de uma de nossas redes internas):  #iptables -A FORWARD -i ppp0 -o eth1 -j DROP
Especificando um protocolo  A opção -p (ou --protocol) é usada para especificar protocolos no iptables. Podem ser especificados os protocolos  tcp ,  udp  e  icmp . Por exemplo, para rejeitar todos os pacotes UDP vindos de 200.200.200.200:  #iptables -A INPUT -s 200.200.200.200 -p udp -j DROP
Especificando portas de origem/destino  As portas de origem/destino devem ser especificadas após o protocolo e podem ser precedidas por uma das seguintes opções:  --source-port ou --sport - Especifica uma porta ou faixa de portas de origem.  --destination-port ou --dport - Especifica uma porta ou faixa de portas de destino.  Uma faixa de portas pode ser especificada através de PortaOrigem:PortaDestino:  Bloqueia qualquer pacote indo para 200.200.200.200 na faixa de # portas 0 a 1023: #iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
Salvando e Restaurando regras  As regras que você está trabalhosamente criando e testando manualmente enquanto manipula o iptables podem ser salvas de 2 formas; uma delas é escrevendo um shell script que tenha todos os comandos, um por linha. Isto é recomendado quando tem um firewall grande e que exige uma boa padronização de regras, bem como sua leitura, comentários.  A outra forma é usando as ferramentas iptables-save e iptables-restore. O iptables-save deve ser usado sempre que modificar regras no firewall iptables da seguinte forma:  #iptables-save >/dir/iptables-regras.  Para restaurar as regras salvas, utilize o comando:  #iptables-restore </dir/iptables-regras
Fazendo IP masquerading (Compartilhar Internet) #iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE  #echo &quot;1&quot; >/proc/sys/net/ipv4/ip_forward  A configuração do servidor Linux está completa, agora os clientes da rede precisarão ser configurados para usar o endereço IP do servidor Linux como gateway. É recomendável instalar um servidor proxy e DNS na máquina Linux para acelerar o desempenho das requisições/resolução de nomes das máquinas em rede.
Fazendo DNAT  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, proxyes transparentes e balanceamento de carga.  Modifica o endereço IP destino dos pacotes de 200.200.217.40 vindo da interface eth0 para 192.168.1.2.  #iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2  OBS:  Não se esqueça de conferir se o ip_forward está ajustado para 1:  #echo &quot;1&quot; >/proc/sys/net/ipv4/ip_forward.
Um exemplo de firewall simples O exemplo a seguir toma com base a situação que o servidor linux está ligado à rede externa pela interface eth0, e a rede interna por eth1.
Um exemplo de firewall simples #!/bin/bash #Firewall e compartilhamento de internet implementado por #oliver_menezes@yahoo.com.br #Esse script assume que o módulo iptables já esteja carregado por padrão #Limpa as regras anteriores ##Qdo o argumento -t é omitido regra é aplicada na tabela filter iptables -F
Um exemplo de firewall simples #Limpa as regras da tabela nat  iptables -t nat -F #Compartilhamento de internet iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward
Um exemplo de firewall simples #Abre algumas portas iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT iptables -A INPUT -p tcp --destination-port 3128 -j ACCEPT iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT iptables -A INPUT -p tcp --destination-port 1433 -j ACCEPT iptables -A INPUT -p tcp --destination-port 3389 -j ACCEPT #Liberação de conexão para computadores da rede interna iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT # Fecha o resto iptables -A INPUT -p tcp --syn -j DROP
Um exemplo de firewall simples #Redirecionamento do trafego da porta 80 para o Squid iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 #Redirecionamento do tráfego TCP e UDP que provém da internet para uma máquina #na rede interna com ip 192.168.1.254 iptables -t nat -A PREROUTING -p tcp --dport 1433 -i eth0 -j DNAT --to 192.168.1.254 iptables -t nat -A PREROUTING -p udp --dport 1433 -i eth0 -j DNAT --to 192.168.1.254
Referências http://www.guiadohardware.net/artigos/firewall-iptables/ http://www.conectiva.com.br/cpub/pt/incConectiva/suporte/pr/servidores.firewall.iptables.html http://focalinux.cipsga.org.br/gol.html

Mais conteúdo relacionado

ODP
Tutorial sobre iptables
PPTX
IPTables na prática
PPT
Iptables Básico
PDF
Aula 8.3 - Iptables Tabela NAT
PDF
Aula 8.1 - Iptables tabela Filter
PPT
Firewall em Linux
PDF
Entendendo como fazer um firewall pessoal
PDF
Seguranca da Informação - Firewall iptables
Tutorial sobre iptables
IPTables na prática
Iptables Básico
Aula 8.3 - Iptables Tabela NAT
Aula 8.1 - Iptables tabela Filter
Firewall em Linux
Entendendo como fazer um firewall pessoal
Seguranca da Informação - Firewall iptables

Mais procurados (20)

PDF
Administração de Redes Linux - III
PDF
Aula 8.2 - Iptables Impasses e Scripts
PPTX
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
PDF
Servidor de internet (NAT, Squid, Sarg)
PDF
Apostila firewall-consulta
PDF
Segurança da Informação - Firewall OpenBSD PF
PDF
Workshop iptables uern_stacruz_14_dez2010_v1
PDF
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
PPTX
SENAI - Segurança firewall
PDF
Dhcp com controle_ip_compartilhamento
ODP
Project HA
PDF
Comandos ip-de-redes-no-windows-1319-ory76a
PDF
Multiplos links, multiplas rotas
PDF
Comando para rede
PDF
Resumo comandos cisco
PDF
Proftpd
PDF
Seguranca da Informação - Filtros/tcpd
PDF
Livro pfsense 2.0 em português
PDF
Redes prática - Enderecamento I Plinux
PDF
Lab 2.1 revisao_ccna
Administração de Redes Linux - III
Aula 8.2 - Iptables Impasses e Scripts
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
Servidor de internet (NAT, Squid, Sarg)
Apostila firewall-consulta
Segurança da Informação - Firewall OpenBSD PF
Workshop iptables uern_stacruz_14_dez2010_v1
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
SENAI - Segurança firewall
Dhcp com controle_ip_compartilhamento
Project HA
Comandos ip-de-redes-no-windows-1319-ory76a
Multiplos links, multiplas rotas
Comando para rede
Resumo comandos cisco
Proftpd
Seguranca da Informação - Filtros/tcpd
Livro pfsense 2.0 em português
Redes prática - Enderecamento I Plinux
Lab 2.1 revisao_ccna
Anúncio

Destaque (10)

PDF
Servidor proxy Squid
PPT
Servidor proxy
PDF
Oficina de Squid: Filtros Inteligentes
PDF
Servidor Proxy Squid
PPT
Trabalho sobre Proxy
PDF
Linux Servidor Proxy(squid)
PPT
PPT
Configurando servidor web https no apache2 ed
DOCX
Prova segurança de redes
PDF
53458737 manual-de-usuario-de-pfsense-firewall
Servidor proxy Squid
Servidor proxy
Oficina de Squid: Filtros Inteligentes
Servidor Proxy Squid
Trabalho sobre Proxy
Linux Servidor Proxy(squid)
Configurando servidor web https no apache2 ed
Prova segurança de redes
53458737 manual-de-usuario-de-pfsense-firewall
Anúncio

Semelhante a Iptables Completo Oliver (20)

PDF
Firewall no linux
PDF
Firewall - Introducao.pdf
PDF
Unidade3 seg perimetral
PDF
Técnicas avancadas de seguranca com iptables - Marcus Augustus Pereira Burgh...
PDF
Firewall IPTABLEs
PPT
Apresentação - Mecanismos de segurança linux
PPT
Netfilter + Iptables
PDF
5 - segurança - firewall
PDF
3 - TRAFFIC SHAPPING-DUMMYNET
PDF
Iptables layer7
PDF
Rotas de Rede - RedeCASD 2012
DOCX
Firewall baseado em pacotes
DOCX
Firewall baseado em_pacotes
PDF
Compartilhando Internet Via Rádio entre m servidor linux e clientes windows
ODP
Roteamento avançado utilizando Debian
DOC
Mecanismos de segurança linux
PDF
Gerenciamento de Firewall com shorewall - Rafael Padilha da silva(DELETE)
PDF
Linux - Network
PDF
Aula 06 - Gerenciamento de Rede.pdf
ODP
Roteamento avançado em Linux - GTER
Firewall no linux
Firewall - Introducao.pdf
Unidade3 seg perimetral
Técnicas avancadas de seguranca com iptables - Marcus Augustus Pereira Burgh...
Firewall IPTABLEs
Apresentação - Mecanismos de segurança linux
Netfilter + Iptables
5 - segurança - firewall
3 - TRAFFIC SHAPPING-DUMMYNET
Iptables layer7
Rotas de Rede - RedeCASD 2012
Firewall baseado em pacotes
Firewall baseado em_pacotes
Compartilhando Internet Via Rádio entre m servidor linux e clientes windows
Roteamento avançado utilizando Debian
Mecanismos de segurança linux
Gerenciamento de Firewall com shorewall - Rafael Padilha da silva(DELETE)
Linux - Network
Aula 06 - Gerenciamento de Rede.pdf
Roteamento avançado em Linux - GTER

Mais de marcosserva (10)

PPTX
Aula 2. Princípios Básicos da Psicologia (1).pptx
PPTX
SENSORES em ARDUINO apresentação para hardware
PPTX
Treinamento Coordenação PARA NOVOS .pptx
PPTX
1. NOÇÕES BASICAS DE AUXILIAR CONTABIL.pptx
PPS
Cronica Mario Prata
PPS
Cidadedosanjos
PPS
Aposta
PPS
PPS
PPS
Deus Criou O CéU E Terra
Aula 2. Princípios Básicos da Psicologia (1).pptx
SENSORES em ARDUINO apresentação para hardware
Treinamento Coordenação PARA NOVOS .pptx
1. NOÇÕES BASICAS DE AUXILIAR CONTABIL.pptx
Cronica Mario Prata
Cidadedosanjos
Aposta
Deus Criou O CéU E Terra

Último (11)

PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Design - Introdução a Gestalt e teoria das formas
PPTX
Eng. Software - pontos essenciais para o início
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Utilizando code blockes por andre backes
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Manejo integrado de pragas na cultura do algodão
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Viasol Energia Solar -Soluções para geração e economia de energia
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Tipos de servidor em redes de computador.pptx
Design - Introdução a Gestalt e teoria das formas
Eng. Software - pontos essenciais para o início
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Utilizando code blockes por andre backes
Arquitetura de computadores - Memórias Secundárias
Manejo integrado de pragas na cultura do algodão

Iptables Completo Oliver

  • 1. Iptables Firewalls no Linux por oliver menezes
  • 2. Firewall - Iptables O iptables é um código de firewall das versões 2.4 do kernel, que substituiu o ipchains (presente nas séries 2.2 do kernel). Ele foi incluído no kernel da série 2.4 em meados de Junho/Julho de 1999.
  • 3. Componentes Pacote: iptables iptables - Sistema de controle principal para protocolos ipv4 ip6tables - Sistema de controle principal para protocolos ipv6 iptables-save - Salva as regras atuais em um arquivo especificado como argumento. Este utilitário pode ser dispensado por um shell script contendo as regras executado na inicialização da máquina. iptables-restore - Restaura regras salvas pelo utilitário iptables-save.
  • 4. Hardware Necessário É necessário que o seu kernel tenha sido compilado com suporte ao iptables. O requerimento mínimo de memória necessária para a execução do iptables é o mesmo do kernel 2.4 (4MB). Dependendo do tráfego que será manipulado pela(s) interface(s) do firewall ele poderá ser executado com folga em uma máquina 386 SX com 4MB de RAM. Como as configurações residem no kernel não é necessário espaço extra em disco rígido para a execução deste utilitário.
  • 5. Registro Todo tráfego que for registrado pelo iptables é registrado por padrão no arquivo /var/log/kern.log.
  • 6. Instalação #apt-get install iptables O pacote iptables contém o utilitário iptables (e ip6tables para redes ipv6) necessários para inserir suas regras no kernel. Se você não sabe o que é ipv6, não precisará se preocupar com o utilitário ip6tables por enquanto.
  • 7. Tipos de firewalls Existem basicamente dois tipos de firewalls: nível de aplicação - Este tipo de firewall analisam o conteúdo do pacote para tomar suas decisões de filtragem. Permitem um controle relacionado com o conteúdo do tráfego. Servidores proxy, como o squid, são um exemplo deste tipo de firewall. nível de pacotes - Este tipo de firewall toma as decisões baseadas nos parâmetros do pacote, como porta/endereço de origem/destino, estado da conexão, e outros parâmetros do pacote. O firewall então pode negar o pacote (DROP) ou deixar o pacote passar (ACCEPT). O iptables é um excelente firewall que se encaixa nesta categoria.
  • 8. Como começar ? Antes de iniciar a construção do firewall é bom pensar nos seguintes pontos: Quais serviços precisa proteger. Que máquinas terão acesso livre e quais serão restritas. Que serviços deverão ter prioridade no processamento. Que máquinas/redes NUNCA deverão ter acesso a certas/todas máquinas. O que tem permissão de passar de uma rede para outra (em máquinas que atuam como roteadores/gateways de uma rede interna).
  • 9. O que são regras? As regras são como comandos passados ao iptables para que ele realize uma determinada ação (como bloquear ou deixar passar um pacote) de acordo com o endereço/porta de origem/destino, interface de origem/destino, etc. As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas. As regras são armazenadas no kernel, o que significa que quando o computador for reiniciado tudo o que fez será perdido. Por este motivo elas deverão ser gravadas em um arquivo para serem carregadas a cada inicialização. Um exemplo de regra: #iptables -A INPUT -s 123.123.123.1 -j DROP
  • 10. O que são chains? Os Chains são locais onde as regras do firewall definidas pelo usuário são armazenadas para operação do firewall. Existem dois tipos de chains: os embutidos (como os chains INPUT , OUTPUT e FORWARD ) e os criados pelo usuário. Os nomes dos chains embutidos devem ser especificados sempre em maiúsculas (note que os nomes dos chains são case-sensitive, ou seja, o chain input é completamente diferente de INPUT
  • 11. O que são tabelas? Tabelas são os locais usados para armazenar os chains e conjunto de regras com uma determinada característica em comum. As tabelas podem ser referenciadas com a opção -t tabela e existem 3 tabelas disponíveis no iptables: Filter; NAT; Mangle.
  • 12. O que são tabelas? filter - Esta é a tabela padrão, contém 3 chains padrões: 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.
  • 13. O que são tabelas? nat - Usada para dados que gera outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). Possui 3 chains padrões: PREROUTING - Consultado quando os pacotes precisam ser modificados logo que chegam. É o chain ideal para realização de DNAT e redirecionamento de portas. OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente é consultado para conexões que se originam de IPs de interfaces locais. POSTROUTING - Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. É o chain ideal para realização de SNAT e IP Masquerading.
  • 14. O que são tabelas? mangle - Utilizada para alterações especiais de pacotes (como modificar o tipo de serviço (TOS). Possui 2 chains padrões: 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 .
  • 15. Adicionando regras - A Agora vamos incluir uma regra no chain INPUT ( -A INPUT ) que bloqueie ( -j DROP ) qualquer acesso indo ao endereço 127.0.0.1 ( -d 127.0.0.1 ): iptables -t filter -A INPUT -d 127.0.0.1 -j DROP Agora verificamos um novo ping. Desta vez a máquina 127.0.0.1 não respondeu, pois todos os pacotes com o destino 127.0.0.1 (-d 127.0.0.1) são rejeitados (-j DROP). A opção -A é usada para adicionar novas regras no final do chain. Além de -j DROP que serve para rejeitar os pacotes, podemos também usar -j ACCEPT para aceitar pacotes. A opção -j é chamada de alvo da regra ou somente alvo pois define o destino do pacote que atravessa a regra. OBS: - A tabela filter será usada como padrão caso nenhuma tabela seja especificada através da opção -t.
  • 16. Listando regras - L A seguinte sintaxe é usada para listar as regras criadas: iptables [ -t tabela ] -L [ chain ] [ opções ] Onde: tabela É uma das tabelas usadas pelo iptables. Se a tabela não for especificada, a tabela filter será usada como padrão.. chain Um dos chains disponíveis na tabela acima ou criado pelo usuário. Caso o chain não seja especificado, todos os chains da tabela serão mostrados. opções -v - Exibe mais detalhes sobre as regras criadas nos chains. -n - Exibe endereços de máquinas/portas como números ao invés de tentar a resolução DNS e consulta ao /etc/services. -x - Exibe números exatos ao invés de números redondos. Também mostra a faixa de portas de uma regra de firewall. --line-numbers - Exibe o número da posição da regra na primeira coluna da listagem.
  • 17. Listando regras - L Para listar a regra criada anteriormente usamos o comando: #iptables -t filter -L INPUT
  • 18. Limpando as regras de um chain - F Para limpar todas as regras de um chain, use a seguinte sintaxe: iptables [ -t tabela ] [ -F chain ] Onde: tabela Tabela que contém o chain que desejamos zerar. chain Chain que desejamos limpar. Caso um chain não seja especificado, todos os chains da tabela serão limpos. #iptables -t filter -F INPUT
  • 19. Especificando um endereço de origem/destino As opções -s (ou --src/--source)e -d (ou --dst/--destination) servem para especificar endereços de origem e destino respectivamente. É permitido usar um endereço IP completo (como 192.168.1.1), um hostname (debian), um endereço fqdn (www.debian.org) ou um par rede/máscara (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24). Caso um endereço/máscara não sejam especificados, é assumido 0/0 como padrão (todos as máquinas de todas as redes). Bloqueia o tráfego vindo da rede 200.200.200.*: #iptables -A INPUT -s 200.200.200.0/24 -j DROP
  • 20. Especificando a interface de origem/destino As opções -i (ou --in-interface) e -o (ou --out-interface) especificam as interfaces de origem/destino de pacotes. Por exemplo para bloquear o acesso do tráfego de qualquer máquina com o endereço 200.123.123.10 vinda da interface ppp0 (uma placa de fax-modem): #iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP A mesma regra pode ser especificada como : #iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP O sinal de &quot;+&quot; funciona como um coringa, assim a regra terá efeito em qualquer interface. Para bloquear qualquer tráfego local para a Internet: #iptables -A OUTPUT -o ppp+ -j DROP Para bloquear a passagem de tráfego da interface ppp0 para a interface eth1 (de uma de nossas redes internas): #iptables -A FORWARD -i ppp0 -o eth1 -j DROP
  • 21. Especificando um protocolo A opção -p (ou --protocol) é usada para especificar protocolos no iptables. Podem ser especificados os protocolos tcp , udp e icmp . Por exemplo, para rejeitar todos os pacotes UDP vindos de 200.200.200.200: #iptables -A INPUT -s 200.200.200.200 -p udp -j DROP
  • 22. Especificando portas de origem/destino As portas de origem/destino devem ser especificadas após o protocolo e podem ser precedidas por uma das seguintes opções: --source-port ou --sport - Especifica uma porta ou faixa de portas de origem. --destination-port ou --dport - Especifica uma porta ou faixa de portas de destino. Uma faixa de portas pode ser especificada através de PortaOrigem:PortaDestino: Bloqueia qualquer pacote indo para 200.200.200.200 na faixa de # portas 0 a 1023: #iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP
  • 23. Salvando e Restaurando regras As regras que você está trabalhosamente criando e testando manualmente enquanto manipula o iptables podem ser salvas de 2 formas; uma delas é escrevendo um shell script que tenha todos os comandos, um por linha. Isto é recomendado quando tem um firewall grande e que exige uma boa padronização de regras, bem como sua leitura, comentários. A outra forma é usando as ferramentas iptables-save e iptables-restore. O iptables-save deve ser usado sempre que modificar regras no firewall iptables da seguinte forma: #iptables-save >/dir/iptables-regras. Para restaurar as regras salvas, utilize o comando: #iptables-restore </dir/iptables-regras
  • 24. Fazendo IP masquerading (Compartilhar Internet) #iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE #echo &quot;1&quot; >/proc/sys/net/ipv4/ip_forward A configuração do servidor Linux está completa, agora os clientes da rede precisarão ser configurados para usar o endereço IP do servidor Linux como gateway. É recomendável instalar um servidor proxy e DNS na máquina Linux para acelerar o desempenho das requisições/resolução de nomes das máquinas em rede.
  • 25. Fazendo DNAT 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, proxyes transparentes e balanceamento de carga. Modifica o endereço IP destino dos pacotes de 200.200.217.40 vindo da interface eth0 para 192.168.1.2. #iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2 OBS: Não se esqueça de conferir se o ip_forward está ajustado para 1: #echo &quot;1&quot; >/proc/sys/net/ipv4/ip_forward.
  • 26. Um exemplo de firewall simples O exemplo a seguir toma com base a situação que o servidor linux está ligado à rede externa pela interface eth0, e a rede interna por eth1.
  • 27. Um exemplo de firewall simples #!/bin/bash #Firewall e compartilhamento de internet implementado por #oliver_menezes@yahoo.com.br #Esse script assume que o módulo iptables já esteja carregado por padrão #Limpa as regras anteriores ##Qdo o argumento -t é omitido regra é aplicada na tabela filter iptables -F
  • 28. Um exemplo de firewall simples #Limpa as regras da tabela nat iptables -t nat -F #Compartilhamento de internet iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward
  • 29. Um exemplo de firewall simples #Abre algumas portas iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT iptables -A INPUT -p tcp --destination-port 3128 -j ACCEPT iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT iptables -A INPUT -p tcp --destination-port 1433 -j ACCEPT iptables -A INPUT -p tcp --destination-port 3389 -j ACCEPT #Liberação de conexão para computadores da rede interna iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT # Fecha o resto iptables -A INPUT -p tcp --syn -j DROP
  • 30. Um exemplo de firewall simples #Redirecionamento do trafego da porta 80 para o Squid iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 #Redirecionamento do tráfego TCP e UDP que provém da internet para uma máquina #na rede interna com ip 192.168.1.254 iptables -t nat -A PREROUTING -p tcp --dport 1433 -i eth0 -j DNAT --to 192.168.1.254 iptables -t nat -A PREROUTING -p udp --dport 1433 -i eth0 -j DNAT --to 192.168.1.254