Autor: Armando Martins de Souza <armandomartins.souza at gmail.com> Data: 12/04/2010

Documentos relacionados
01 - Entendendo um Firewall. Prof. Armando Martins de Souza armandomartins.souza@gmail.com

IPTABLES. Helder Nunes

III WTR do POP-BA III Workshop de Tecnologias de Redes Ponto de Presença da RNP na Bahia Instrutor: Ibirisol Fontes Monitor: Jundaí Abdon.

Prof. Samuel Henrique Bucke Brito

Instalação e Configuração Iptables ( Firewall)

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Segurança em Sistemas de Informação

Firewall Iptables. Professor: João Paulo de Brito Gonçalves. Campus - Cachoeiro Curso Técnico de Informática

Obs: Endereços de Rede. Firewall em Linux Kernel 2.4 em diante. Obs: Padrões em Intranet. Instalando Interface de Rede.

Elaboração de Script de Firewall de Fácil administração

Linux Network Servers

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta


ADMINISTRAÇÃO DE REDES I LINUX. Firewall. Frederico Madeira LPIC 1, CCNA fred@madeira.eng.br

Compartilhamento da internet, firewall

Uso do iptables como ferramenta de firewall.

PROJETO DE IMPLEMENTAÇÃO DE UM SERVIDOR FIREWALL LIVRE UTILIZANDO IPTABLES

Iptables. Adailton Saraiva Sérgio Nery Simões

Professor Claudio Silva

Firewalls em Linux. Tutorial Básico. André Luiz Rodrigues Ferreira

Aula 08. Firewall. Prof. Roitier Campos Gonçalves

Segurança de Redes. Firewall. Filipe Raulino

Firewalls, um pouco sobre...

Oficina de ferramentas de Gerência para Redes em Linux

Entendendo como funciona o NAT

Segurança de Redes de Computadores

Firewall - IPTABLES. Conceitos e Prática. Tópicos em Sistemas de Computação Prof. Dr. Adriano Mauro Cansian adriano@acmesecurity.

Projeto e Instalação de Servidores Servidores Linux Aula 6 Firewall e Proxy

Firewall Iptables - Impasses

Prática NAT/Proxy. Edgard Jamhour. Esses exercícios devem ser executados através do servidor de máquinas virtuais: espec.ppgia.pucpr.

FIREWALL COM IPTABLES. by João Eriberto Mota Filho 3. TABELAS. Tabela Filter ESQUEMA DA TABELA FILTER

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Orientador de Curso: Rodrigo Caetano Filgueira

Administração de Redes Firewall IPTables

Mecanismos de QoS em Linux Hierarchical Token Bucket (HTB)

Segurança com Iptables

comando parâmetro alternativo parâmetro REGRA função iptables -t tabela -N --new chain cria uma nova chain. iptables -t tabela -E --rename-chain

Arquitetura de Rede de Computadores

Trabalhando com NAT no PFSense

FireWall no Linux FIREWALL COM IPTABLES. by João Eriberto Mota Filho

L A B O RATÓRIO DE REDES

Pós Graduação Tecnologia da Informação UNESP Firewall

Ilustração 1: Componentes do controle de acesso IEEE 802.1x

Firewall IPTables e Exemplo de Implementação no Ambiente Corporativo.

Tipos de Firewalls. porta de origem/destino, endereço de origem/destino, estado da conexão, e outros parâmetros do pacote.

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Administração de Sistemas Operacionais

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

TuxFrw 3.0 MSPF Modular Stateful Packet Filter

Capítulo 4 TCP/IP FIREWALLS.

DarkStat para BrazilFW

NAT com firewall - simples, rápido e funcional

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

Firewalls. Prática de Laboratório. Maxwell Anderson INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAÍBA

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Projeto de Ensino. iptables. Grupo de Estudos em Tecnologia de Redes e Processamento Paralelo. Prof. Luiz Antonio Unioeste

cio Roteamento Linux

Redes de Computadores II INF-3A

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Netfilter e Iptables

Configurando Interface de Rede. IPTABLES Firewall em Linux Kernel 2.4 em diante. Regras do Iptables. Iptables. Regras do Iptables. Comandos Principais

Mecanismos de QoS em Linux DiffServ (Marcação e Policiamento)

Tema do Minicurso: Firewall IPTABLES. Carga horária 3h

Arquitectura de Redes

Trabalho 3 Firewalls

Curso Firewall. Sobre o Curso de Firewall. Conteúdo do Curso

1. Explicando Roteamento um exemplo prático. Através da análise de uns exemplos simples será possível compreender como o roteamento funciona.

02-Configurando um Servidor DHCP. Prof. Armando Martins de Souza

Objetivos: i) Verificar o impacto de loops em redes locais ii) Configurar o protocolo STP para remover loops da rede

Administração de Redes 2014/15. Network Address Translation (NAT)

Firewalls - IPTables. Carlos Gustavo A. da Rocha. ASSR

Firewall e Proxy. Relatório do Trabalho Prático nº 2. Segurança em Sistemas de Comunicação

Introdução a Firewalls no Linux (Netfilter/Iptables)

LABORATÓRIO V. NAT E FIREWALL Documento versão 0.1. Aluno: Paulo Henrique Moreira Gurgel #

Tutorial configurando o dhcp no ubuntu ou debian.

Proxyarp O Shorewall não exige qualquer configuração

Segurança Informática e nas Organizações. Guiões das Aulas Práticas

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

IPTABLES. Universidade Federal de Minas Gerais Departamento de Ciência da Computação Laboratório de Software Livre. 4 de fevereiro de 2010

Load Balance / Route Policy (para series Vigor 2860 / Vigor 2925)

Recuperando a comunicação com o seu Modem DSL-500G

O que é uma firewall? É um router entre uma rede privada e uma rede pública que filtra o tráfego com base num conjunto de regras.

Bom pessoal, há muito tempo tenho o interesse em criar esse tutorial. Me sobrou um tempinho então fui a batalha para ajudar os amigos.

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Troubleshooting em rede básica

MANUAL DE INSTALAÇÃO

Firewalls. Firewalls

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

Gestão de Sistemas e Redes

Controle de congestionamento em TCP

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Firewall Primeiros Passos. Prof. Armando Martins de Souza

Linux Network Servers

Máscaras de sub-rede. Fórmula

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

NETWORK ADDRESS TRANSLATION

Redes IP. M. Sc. Isac Ferreira Telecomunicações e Redes de Computadores: Tecnologias Convergentes

Procedimento para instalação do OMNE-Smartweb em Raio-X

Transcrição:

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 1 de 12 19-06-2012 17:42 Desvendando as regras de Firewall Linux Iptables Autor: Armando Martins de Souza <armandomartinssouza at gmailcom> Data: 12/04/2010 Iptables / firewall / tabelas básicas Iptables O funcionamento do firewall é basicamente o seguinte: 1 Os pacotes que chegam ao firewall são filtrados através das regras que foram definidas 2 Roteamento interno (dentro do kernel) Com base no destino do pacote, ele é encaminhado para o "filtro" (chain) apropriado ao roteamento Explicaremos mais adiante cada um dos filtros "básicos" do iptables Firewall Antes de iniciarmos o detalhamento das chains, iremos mostrar a relação entre firewall e kernel Linux 1 2 3 Ifwadm --> kernel 20 Ipchains --> Kernel 22 Iptables --> A partir do kernel 24 É importante deixar claro que neste tutorial trabalharemos apenas com o firewall iptables As tabelas básicas Filter É composta de 3 chains: INPUT, OUTPUT e FORWARD É a tabela default, isto significa que quando não referenciamos nenhuma chain no comando iptables, a chain filter é chamada É

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 2 de 12 19-06-2012 17:42 importante deixar claro que essa chain trata do tráfego normal de dados, isto significa que não há nenhum tipo de mascaramento (NAT) nela Nat É quando temos que mascarar algum endereço IP ou rede O Nat acontece tanto da rede externa (Internet), para a rede interna (Lan), quanto da Lan para Internet A tabela "Nat" é composta pelas chains: PREROUTING, OUTPUT e POSTROUTING Mangle Basicamente utilizada para fazer QoS Não trataremos desse assunto neste tutorial A seguir ilustramos as tabelas com suas respectivas chains Temos abaixo uma representação visual do posicionamento das chains em relação a passagem dos pacotes de dados da tabela "FILTER" Agora vamos explicar o funcionamento de cada uma das chains descritas acima: INPUT (Pacotes de Entrada) --> Os pacotes são encaminhados para esta chain quando a origem não é o firewall, mas o destino é o firewall FORWARD (Pacotes de Passagem) --> No caso da FORWARD os encaminhamentos são feitos quando a origem não é o firewall e o destino também não é o firewall Isto é, o pacote de dados esta apenas passando pelo firewall OUTPUT (Pacotes de Saída) --> Chain responsável pelos pacotes que tem origem no firewall e destino não firewall

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 3 de 12 19-06-2012 17:42 A tabela filter só pode tratar do que passa ou não passa Políticas de acesso / DROP e REJECT Políticas de acesso No que se refere a políticas de acesso temos ACCEPT e DROP ACCEPT --> passa tudo, para que o pacote seja bloqueado temos que ter inserido um comando dizendo que pacotes com aquelas características devem ser bloqueados DROP --> É exatamente o inverso do ACCEPT Bloqueia tudo, deixando passar somente os pacotes que batem exatamente com as características passadas pelo comando de liberação Normalmente usamos o critério de bloquear tudo, liberando apenas o que tem que passar, isso tem inúmeras vantagens Podemos citar por exemplo: evitar o trafego na rede desnecessário, deixar portas abertas sem necessidade, impedindo com isso a possibilidade que uma falha de segurança seja utilizada por um indivíduo mau intencionado Exemplos de mudança de política:

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 4 de 12 19-06-2012 17:42 iptables -t <tabela> -P <chain> -j ACCEPT/DROP Vamos mudar todas as chains da tabela "filter" para DROP: # iptables -t filter -P INPUT DROP # iptables -P FORWARD DROP # iptables -t filter -P OUTPUT DROP Reparem que em um dos exemplos não especifiquei qual tabela estou usando (iptables -P FORWARD DROP), isso porque a tabela filter não precisa ser referenciada, pois ela é a tabela padrão do iptables Para colocarmos as políticas das chains novamente para ACCEPT, basta substituirmos o "DROP" por "ACCEPT" # iptables -t filter -P INPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -t filter -P OUTPUT ACCEPT DROP e REJECT Muitas pessoas acham que o "DROP" tem a mesma funcionalidade do "REJECT", contudo há uma sutil diferença No DROP o pacote é sumariamente bloqueado não dando a mínima importância para o pacote enviado, ele apenas o ignora Já no caso do REJECT é enviado um pacote de retorno informando que o pacote foi rejeitado Só para ficar bem claro segue abaixo uma suposta comunicação entre uma maquina que denominamos como host A enviando pacotes para uma outra maquina chamada host B Quando o host A envia um pacote para o host B e a política de iptables dele esta em DROP, o host A não recebe nenhum pacote de retorno Isso faz com que o host A não consiga ver o host B, tornando com isso o host B inacessível No REJECT, a máquina envia uma mensagem de retorno do pacote Nesse caso existe a comunicação entre os hosts e o host A saberá que o host B recebeu seu pacote e o rejeitou

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 5 de 12 19-06-2012 17:42 Exemplos: Para deixar o host B inacessível para o mundo, basta mudar a política da tabela de ACCEPT para DROP # iptables -P INPUT DROP Sintaxe iptables e suas opções A seguir mostraremos a sintaxe iptables e suas opções, tratando somente pacotes de dados da tabela filter, criando regras para liberar, bloquear ou rejeitar os pacotes de dados de trafego normal, sem a utilização de mascaramento (tabela NAT) Sintaxe: iptables -t [tabela] <ordem> <chain> [condições] -j <ação> Tabela: Nesse caso estamos tratando da tabela filter, como já falamos anteriormente, esta tabela é a padrão e não é necessário explicitá-la Ordem: a -I --> Insere a regra no início da chain b -A --> Insere a regra no final da chain PS: O chain é analisada da primeira regra para a última, isso quer dizer que a analise da regra é feita do inicio da chain para o final, essa análise se segue até encontrar uma regra se enquadre ao pacote Ao localizar essa regra ele entra e é processado, deixando as regras subsequentes sem serem analisadas Por isso é importante tratar as regras da mais restritiva para a menos restritiva Abaixo colocamos 3 regras, a primeira regra coloca a política da chain INPUT como DROP, isso quer dizer que só passa um pacote se ele estiver explicito em uma regra A segunda regra libera acesso a porta 22 para a rede 10000/24 e a terceira libera acesso do host 100049 a porta 22 do host Exemplo: # iptables -P INPUT DROP # iptables -A INPUT -p tcp -s 10000/24 --dport 22 -j ACCEPT # iptables -A INPUT -p tcp -s 100049 --dport 22 -j ACCEPT No exemplo acima a terceira regra nunca fará match (nenhum pacote irá utilizá-la), pois a segunda regra fará match (regra mais genérica) caso o host de IP 100049 tente acessar o host na porta 22

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 6 de 12 19-06-2012 17:42 Chain: Iremos dizer a que chain a regra se refere (INPUT, OUTPUT, FORWARD) Condição (match): -p = protocolo (all, tcp, udp, icmp etc) --sport = porta origem --dport = porta destino -s = IP origem -d = IP destino -i = interface de entrada -o = interface de saída -m = match Ação: É onde informamos o que devemos fazer com o pacote, ignorar (DROP), aceitar (ACCEPT) ou rejeitar (REJECT) Abaixo colocamos alguns exemplos de regras: Bloquear o protocolo icmp (ping): # iptables -A INPUT -p icmp --icmp-type ping -j DROP Só vai liberar o acesso via ssh para o host 103411, avisando que o pacote foi rejeitado para os outros hosts: # iptables -A INPUT -p tcp --dport 22 -s! 103411 -j REJECT PS: O símbolo de "!" significa uma exceção a regra Em nosso exemplo ele esta tratando o host de IP 103411 como exceção a regra Isso quer dizer que o único host que pode acessar o "firewall" é o 103411 A regra irá rejeitas qualquer outro host Só vai liberar o protocolo icmp (ping) para o host 103110 Ignorando o ping para qualquer

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 7 de 12 19-06-2012 17:42 outro host: # iptables -A INPUT -p icmp --icmp-type ping -s! 103110 -j DROP Exemplo de liberação do smtp (tcp 25) e-mail, impedir que um servidor de e-mail interno envie e-mail para fora da empresa Normalmente isso evita que spammers, que por algum motivo tenham conseguido "acesso" a um de seus servidores, instale um servidor de e-mail e o utilize para enviar spam # iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -j REJECT Essa regra se traduz em: os pacotes tcp que tiverem vierem através da interface eth1 e destino de saída a eth0 porta 25 deverão ser rejeitados No caso de duas redes: Basta incluir as interfaces referentes a segunda rede: # iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -j REJECT # iptables -A FORWARD -i eth2 -o eth0 -p tcp --dport 25 -j REJECT Bloquear acesso através do endereço físico da placa de rede (MAC): # iptables -A FORWARD -m mac --mac-source 00:00:AA:BB:11:12 -p tcp --dport 80 -j DROP Se você tem alguma dúvida para saber o endereço MAC do host basta seguir o seguinte procedimento: dar um ping IP que você precisa saber o MAC e depois o dar comando o "arp"

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 8 de 12 19-06-2012 17:42 Match (condição) OUTPUT: Não deixa o host acessar a porta 80: # iptables -A OUTPUT -p tcp --dport 80 -j REJECT Libera somente o superuser (root) para fazer testes via icmp (ping): # iptables -A OUTPUT -p icmp --icmp-type ping -m owner! --uid-owner root -j REJECT Esses foram alguns exemplos do que podemos fazer com o iptables, no que se refere aos pacotes de dados de tráfego normal (sem utilização de mascaramento - NAT) Ainda existem inúmeras formas de filtrarmos os pacotes, contudo são formas mais pontuais, normalmente não utilizaremos nada a mais que essas para esse tipo de filtro NAT - Network Address Translation SNAT - Source NAT (mascaramento de IP) O SNAT é utilizado para que os hosts internos a rede, isto é, endereços IP não válidos na internet, consigam sair para a Internet como se tivessem um endereço válido em sua interface de rede No nosso exemplo vamos imaginar que o host de IP 10315 queira acessar o site Viva o Linux - 17412353162 Quando o pacote chega no host (firewall) é feito o SNAT, isso acontece da seguinte maneira: É criada uma tabela chamada "Connection tracking", onde são gravadas as informações de origem e destino do pacote Isto possibilita o servidor saber quem enviou e para quem foi enviado o pacote que teve seu endereço IP de origem mascarado Abaixo temos a

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 9 de 12 19-06-2012 17:42 representação de uma comunicação entre dois hosts, onde o IP de origem esta sendo mascarado A seguir mostraremos como é feito o SNAT, para o exemplo acima # iptables -t nat -A POSTROUTING -s 10300/16 -d!10300/16 -j SNAT --to-source 200111 Onde: -s 10300/16 - é a origem -d!10300/16 - "não" 10300/16 é o destino Essa regra de NAT, na realidade SNAT, significa que sempre que a origem for a rede 10300/16 e o destino não for ela mesma, o pacote ira sair para a Internet com o endereço 200111, isto quer dizer que o host que estiver sendo acessado "pensará" que quem está enviando os pacotes é o IP 200111 e não o IP 103xx Se estivermos trabalhando com IP dinâmico na Internet, por exemplo Velox ou Virtua, poderemos utilizar o comando abaixo: # iptables -t nat -A POSTROUTING -s 10300/16 -d!10300/16 -j MASQUERADE PS: O MASQUERADE significa que ele irá mascarar todas as solicitações a rede externa O IP de saída será aquele que estiver ligado diretamente ao gateway default do host (firewall) Via modem, normalmente utilizamos a interface ppp0: # iptables -t nat -A POSTROUTING -i eth0 -o ppp0 -j MASQUERADE

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 10 de 12 19-06-2012 17:42 DNAT (Destination NAT) No caso do DNAT o mascaramento é feito de forma inversa ao SNAT Ele propicia acessos que tem como origem a Internet e destino um IP interno da sua rede Imaginemos que um host que tem o IP 80888 e quer acessar o servidor web de sua empresa através do IP 201111 Esse endereço IP é na realidade um dos IPs válidos de seu firewall, só que fazermos um DNAT dizendo que quando um pacote tiver destino o IP 201111, ele deverá ser encaminhado o IP 10312 O comando abaixo mostra como ficaria na prática o DNAT acima: # iptables -t nat -A PREROUTING -d 200111 -p tcp --dport 80 -j DNAT --to-destination 10312 Script básico de firewall Agora mostraremos como criar um script de firewall básico Antes de tudo vamos ativar o roteamento via kernel da seguinte maneira: # echo "netipv4ip_forward = 1" >> /etc/sysctlconf # sysctl -p /etc/sysctlconf Pronto, com os comandos acima acabamos de habilitar o roteamento via kernel o que possibilita o encaminhamento dos pacotes de dados de uma rede para outra Muitos administradores habilitam o roteamento diretamente através do script de firewall, contudo eu prefiro fazer isso apenas uma vez

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 11 de 12 19-06-2012 17:42 Script para firewall: # mkdir /etc/firewall # vi /etc/firewall/firewallsh #!/bin/sh # Mudando as políticas para ACCEPT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Limpando as regras em memória iptables -F -t filter iptables -F -t mangle iptables -F -t nat iptables -X -t filter iptables -X -t mangle iptables -X -t nat iptables -Z -t filter iptables -Z -t mangle iptables -Z -t nat # Libera conexões já estabilizadas iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Entre com as regras de PREROUTING (DNAT) # Entre com as regras de POSTROUTING (SNAT) # Entre com as regras de INPUT # Entre com as regras de FORWARD # Entre com as regras de OUTPUT

http://wwwvivaolinuxcombr/artigos/impressoraphp?codig 12 de 12 19-06-2012 17:42 Agora iremos cuidar para que toda vez que o servidor bootar as regras subam de forma automática 1 Criar um link simbólico do arquivo que acabamos de criar para dentro de /etc/initd/: # ln -s /etc/initd/firewall /etc/firewall/firewallsh 2 Vamos ligar o bit de execução do script: # chmod +x /etc/firewall/firewallsh 3 Incluindo o script para inicialização no boot Quando a máquina for rebootada o script será carregado: No Debian GNU/Linux: # update-rcd firewall defaults No SUSE / Red Hat Linux: # chkconfig --add firewall # chkconfig --set firewall on Uma outra forma é salvar as regras que estão na memória para um arquivo Em nosso exemplo utilizaremos o arquivo firewalltxt: # iptables-save > firewalltxt Restaura as configurações da iptables que se encontram no arquivo firewalltxt: # iptables-restore < firewalltxt Com isso terminamos esse artigo que me deu muito prazer em escrever Espero que seja útil para a comunidade Podem mandar perguntas se houver alguma dúvida http://wwwvivaolinuxcombr/artigo/desvendando-as-regras-de-firewall-linux-iptables Voltar para o site