SEGURANÇA INFORMÁTICA E DAS COMUNICAÇÕES - Ficha de Apoio Extra- CAPÍTULO 3. SEGURANÇA EM REDES E SISTEMAS

Documentos relacionados
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

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

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

Configuração do Servidor Gateway Firewall e DHCP

Principais características:

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

Redes de Computadores. Laboratório de Interconexão de Redes e Serviços - 4º Período

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

Estrutura do Iptables

Arquitectura de Redes

Aula 09 Firewall (Configuração) Prof. Roitier Campos Gonçalves

NAT. NAT e Tabelas do Iptables NAT NAT. NAT Tipos de Tradução NAT 18/03/2015

Linux Network Servers

Uso do iptables como ferramenta de firewall.

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

Iptables. Adailton Saraiva Sérgio Nery Simões

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

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

Firewalls, um pouco sobre...

Segurança em Sistemas de Informação

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


Capítulo 4 TCP/IP FIREWALLS.

IPTABLES. Helder Nunes

Segurança de Redes. Firewall. Filipe Raulino

Prof. Samuel Henrique Bucke Brito

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

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.

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

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

Firewalls. André Zúquete Segurança Informática e nas Organizações 1

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

Professor Claudio Silva

Orientador de Curso: Rodrigo Caetano Filgueira

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

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

Administração de Redes Firewall IPTables

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

Firewalls. André Zúquete, João Paulo Barraca SEGURANÇA INFORMÁTICA E NAS ORGANIZAÇÕES 1

IPS com Snort Inline

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

I Workshop do POP MG. Firewall IPTABLES. Fernando Resende Coelho mg.rnp.br

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.

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

Arquitectura de Redes

Iptables. Firewall - Iptables

Compartilhamento da internet, firewall

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

IPv4-Based ACL & configuração ACE no Switches ESW2-350G

Trabalho 09: Geração de Pacotes e Tabela de Roteamento IPv6

BRUNO PEREIRA PONTES

Firewall. Prof. Marciano dos Santos Dionizio

ENDEREÇAMENTO PRIVADO PROXY E NAT

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

Gestão de Sistemas e Redes

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

Firewall IPTables. Professor: Jiyan Yari

Segurança de Redes de Computadores

Trabalho 3 Firewalls

2 A Avaliação de RMU 20/12/2012. Nome:

Este documento não se restringe a versões de software e hardware específicas.

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

PTC Aula O Protocolo da Internet (IP): Repasse e Endereçamento na Internet 4.4 Repasse generalizado e SDN

Boas práticas para obter o máximo de desempenho com equipamentos da MikroTik.

Flexible NetFlow que filtra com monitoramento de desempenho

Software de Telecomunicações. Firewalls

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

Trabalho 10: Simulação de Roteador IPv6

Oficina de ferramentas de Gerência para Redes em Linux

UTILIZANDO O FIREWALLD

Configurar um mapa da classe em um ponto de acesso Wireless (o WAP)

Segurança com Iptables

Camada de rede. Introdução às Redes de Computadores

Trabalhando com redes no Linux - Debian

Se você observar ao lado esquerdo do WINBOX, verá um MENU com varias opções para configuração.

Configurar o mapa da classe de QoS IPv4 do cliente no WAP125 e no WAP581

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

Netfilter e o Subsistema de Rede do Linux

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

Firewall iptables e criação de regras.

Endereçamento Privado Proxy e NAT. 2017, Edgard Jamhour

Balanceamento de links

Redes TCP/IP Formato Datagrama IP

Capítulo 9: Listas de Controle de Acesso

Índice. Introdução. Pré-requisitos. Requisitos

Troubleshooting da configuração da tradução de endereço de rede ASA

Firewalls. Carlos Gustavo A. da Rocha. ASSR

PRÁTICA DE NAT/PROXY - LINUX 1. TOPOLOGIA DE REDE PARA TODOS OS CENÁRIOS DIFERENÇAS NO ROTEIRO EM RELAÇÃO A IMAGEM DO DVD

Camada de Rede. Endereçamento de Rede Protocolo IP

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

Endereçamento Privado Proxy e NAT

Firewalls. A defesa básica e essencial. SO Linux Prof. Michel Moron Munhoz AES 1

Levantamento de informação (Fingerprint)

Exemplo de configuração do ISDN - IP

Configurar IP SLA que segue para as rotas estáticas IPv4 em um interruptor SG550XG

Funcionalidades da camada de rede

Gerenciamento de Redes Linux. Linux configuração de rede

Transcrição:

Introdução ao IPTables SEGURANÇA INFORMÁTICA E DAS COMUNICAÇÕES - Ficha de Apoio Extra- CAPÍTULO 3. SEGURANÇA EM REDES E SISTEMAS O iptables é utilizado para configurar, manter e inspecionar as tabelas de regras de filtragem de pacotes IPv4 no kernel do Linux. Várias tabelas diferentes podem ser definidas. Cada tabela contém um número de chains (correntes, cadeias) internas e também pode conter chains definidas pelo usuário. Cada chain é uma lista de regras que podem combinar com um conjunto de pacotes. Cada regra especifica o que fazer com um pacote que combina com a regra. Isto é chamado de target, que pode ser um salto na mesma tabela para uma chain definida pelo utilizador. Sinopse: iptables [-t table] {-A -D} chain rule-specification iptables [-t table] -I chain [rulenum] rule-specification iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -D chain rulenum iptables [-t table] -S [chain [rulenum]] iptables [-t table] {-F -L -Z} [chain [rulenum]] [options...] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target iptables [-t table] -E old-chain-name new-chain-name rule-specification = [matches...] [target] match = -m matchname [per-match-options] target = -j targetname [per-target-options] Alvos (Targets) Uma regra de firewall específica os critérios para um pacote é um alvo. Se o pacote não corresponder, a regra seguinte na chain é examinada e, se o pacote for igual, então a próxima regra é especificada pelo valor do alvo, o que pode ser o nome de uma chain definida pelo utilizador ou por um dos valores especiais ACCEPT, DROP, QUEUE ou RETURN: ACCEPT: significa deixar o pacote passar. DROP: significa descartar o pacote. QUEUE: significa passar o pacote para o userspace - espaço do usuário - (o modo como o pacote será recebido por um processo de userspace difere de acordo como determinada fila é manipulada. Os kernels 2.4.x e 2.6.x até 2.6.13, incluem o manipulador de fila "ip_queue". Kernels 2.6.14 e posteriores, incluem o manipulador de fila "nfnetlink_queue". Pacotes com um alvo de fila serão enviados para a fila número '0'. Consulte também o alvo NFQUEUE. 1

RETURN: significa parar de atravessar a chain e continuar na próxima regra da chain anterior. Se o final de uma chain "built-in" (embutida) for alcançado ou uma regra de uma chain "built-in" com alvo RETURN for correspondida, o alvo especificado pela política da chain determina o destino do pacote. Tabelas (Tables) Geralmente, há três tabelas independentes (as tabelas que estão presentes em qualquer momento dependem das configurações do kernel e dos módulos que estão presentes). -t, --table table : Esta opção especifica a tabela correspondente ao pacote que o comando deve executar. Se o kernel estiver configurado com módulo de carga automático, uma tentativa será feita para carregar o módulo apropriado para essa tabela, se ele já não estiver carregado. As tabelas são, como se segue: filter :: Esta é a tabela padrão (se a opção "-t" não definir outra tabela, será utilizada esta tabela). Ela contém a chain "built-in INPUT" (entrada - para pacotes destinados a sockets locais, pacotes destinados para a própria máquina), FORWARD (para pacotes sendo roteados através da máquina, pacotes que passam pela máquina) e OUTPUT (para pacotes gerados localmente, pacotes oriundos da própria máquina com destino para fora dela). O iptables lê as regras de cima para baixo, de acordo com cada tabela, ou seja, se uma regra bloquear tudo numa determinada tabela, as exceções (libertadas) devem ser colocadas acima desta regra. Exemplo: iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j REJECT iptables -A INPUT -p tcp --dport 443 -j DROP A primeira regra liberta, a segunda rejeita e a terceira regra, nega o acesso. A primeira regra é que terá o privilégio, então, o acesso na porta 443 será libertado para todos, mesmo rejeitando e negando o acesso nas regras subsequentes. Caso queiramos negar o acesso à porta 443 somente para alguns IPs, por exemplo, devemos colocar essas regras ACIMA da primeira regra. Lembrar que nas regras acima não foi determinada nenhuma tabela (-t), então, elas serão aplicadas somente na tabela padrão, a filter, e, no caso, somente na chain INPUT. Lembrar também, que o iptables é um módulo do kernel do Linux, portanto, deve estar sendo executado pelo sistema para que possa funcionar. Ou seja, no início do script do iptables deve constar modprobe: "e_o_nome_do_módulo_o_qual_se_quer_levantar". 2

Caso compilar um novo kernel, uma boa prática é colocar o módulo "IP:netfilter configuration" e suplementares (IPv4 NAT, MASQUERADE target support, NETMAP target support, REDIRECT target support etc) como "built-in (*)". As chains devem ser sempre colocadas em letras maiúsculas. nat :: Esta tabela é consultada quando for encontrado um pacote que criou uma nova conexão. É composta de três built-ins: PREROUTING (para alterar pacotes no momento que eles chegam, antes do roteamento ou compartilhamento.), OUTPUT (para alterar pacotes gerados localmente antes do roteamento ou compartilhamento), POSTROUTING (para alterar pacotes quando eles estão prestes a sair, depois do roteamento ou compartilhamento). mangle :: Esta tabela é usada para a alteração especializada do pacote. Até o kernel 2.4.17 tinha duas chains: PREROUTING (para alterar pacotes recebidos antes do roteamento) e OUTPUT (para alterar pacotes gerados localmente antes do roteamento). Desde o kernel 2.4.18, outras três chains embutidas também são suportadas: INPUT (para pacotes entrando na própria máquina), FORWARD (para alterar pacotes sendo roteados/compartilhados através da máquina), POSTROUTING (para alterar pacotes quando eles estão prestes a sair depois do roteamento/compartilhamento). raw :: Esta tabela é usada principalmente para a configuração de isenções de rastreamento de conexões em combinação com o alvo NOTRACK. Ela registra os ganchos netfilter com maior prioridade e é chamada pelo ip_conntrack, ou quaisquer outras tabelas IP. Ela oferece as seguintes chains: PREROUTING: Para pacotes que chegam através de qualquer interface de rede. OUTPUT: Para pacotes gerados por processos locais. Opções: As opções que são reconhecidas pelo iptables, podem ser divididas em vários grupos diferentes. Comandos Estas opções especificam a acção que se quer executar. Apenas uma delas pode ser especificada na linha de comando, a menos que seja indicado de outra forma abaixo no script do iptables. Para versões longas dos nomes de comandos e opções, você precisa usar apenas letras suficientes para garantir que o iptables pode diferenciá-los de todas as outras opções. -A, --append chain rule-specification :: Anexa uma ou mais regras para o final da chain. Quando a origem 3

e/ou nomes de destino resolverem mais de um endereço, uma regra será adicionada para cada combinação de endereços possíveis. -D, --delete chain rule-specification -D, --delete chain rulenum :: Exclui uma ou mais regras da chain especificada. Existem duas versões deste comando: a regra pode ser especificada como um número na chain (rulenum - começando em 1 para a primeira regra) ou o nome da regra para combinar (rule-specification). -I, --insert chain [rulenum] rule-specification :: Insere uma ou mais regras na chain especificada, pode ser um número para determinada regra. Assim, se o número da regra é um, a regra ou as regras serão inseridas no topo da chain. Este é o padrão se nenhum número de regra for especificado. -R, --replace chain rulenum rule-specification :: Substitui uma regra na chain especificada. Se a fonte e/ou nomes de destino resolvem vários endereços, o comando irá falhar. As regras são numeradas a partir de 1. -L, --list [chain] :: Lista todas as regras da chain especificada. Se nenhuma chain for especificada, todas as chains serão listadas. Como qualquer outro comando iptables, é aplicado na tabela especificada (a tabela filter é o padrão). Então, as regras NAT serão listadas por: # iptables -t nat -n -L Note que é geralmente usado com a opção "-n" a fim de evitar longas consultas de DNS reverso. É interessante especificar a opção "-Z" (zero), daí a(s) chain(s) serão atomicamente listadas e zeradas. A saída exata é afetada pelos outros argumentos utilizados. As regras exatas são então suprimidas até utilizar: # iptables -L -v -S, --list-rules [chain] :: Mostra todas as regras da chain especificada. Se nenhuma chain for especificada, todas as chains serão mostradas como o comando iptables-save. Como qualquer outro comando iptables, é aplicado na tabela especificada (a tabela filter é a padrão). -F, --flush [chain] :: Limpa a chain especificada (limpa todas as chains da tabela se não for passado nenhum argumento). Isto é equivalente a apagar todas as regras, uma por uma. -Z, --zero [chain [rulenum]] :: Apaga os contadores de pacotes e bytes em todas as chains, ou apenas na chain de dados, ou apenas na regra dada em uma chain. É aconselhável usar a opção -L, --list para ver os contadores imediatamente antes das regras serem apagadas (veja acima). -N, --new-chain chain :: Cria uma nova chain definida pelo usuário. Não deve haver nenhuma chain com 4

o mesmo nome. -X, --delete-chain [chain] :: Elimina uma específica chain criada pelo usuário. Não deve haver referências na chain. Se houver, você deve excluir ou substituir as regras referentes antes da chain ser excluída. A chain deve estar vazia, ou seja, não pode conter quaisquer regras. Se nenhum argumento for passado, o comando tentará apagar cada chain não embutida na tabela. -P, --policy chain target Define a política da chain para o alvo especificado. Veja seção TARGETS para os alvos possíveis. Apenas chains "built-in" (não definidas pelo usuário) podem ter políticas. Chains definidas pelo usuário não podem ser alvo de políticas. -E, --rename-chain old-chain new-chain :: Muda o nome da chain especificada pelo usuário para um novo nome. Trata-se de uma perfumaria e não tem efeito sobre a estrutura da tabela. -h :: Ajuda. Dá uma descrição (geralmente muito breve) da sintaxe do comando. Parâmetros Os parâmetros a seguir, constituem uma especificação de regras (são utilizados como os comandos: add, delete, insert, replace e append). [!] -p, --protocol protocol :: Especifica o protocolo da regra ou do pacote. O protocolo especificado pode ser: tcp, udp, udplite, icmp, esp, ah, sctp, all. Ou, pode ser um valor numérico representando um destes protocolos ou um outro protocolo. Um nome de protocolo do arquivo /etc/protocols também é permitido. O argumento "!", antes do protocolo, inverte a regra. O número zero é equivalente a "all". O protocolo "all" combina todos os protocolos e é tomado como padrão quando esta opção for omitida. [!] -s, --source address[/mask][,...] :: Especificação da origem. "Address" pode ser um nome de rede, um host, um endereço IP de rede (com "/mask", máscara), ou um endereço IP simples. 5

Os hostnames serão resolvidos apenas uma vez antes da regra ser apresentada ao kernel. Note que especificar qualquer nome a ser resolvido com uma consulta remota, como ao DNS, é uma ideia muito ruim. A máscara pode ser uma máscara de uma rede ou um número simples especificando o número no lado esquerdo da máscara de rede. Assim, uma máscara "/24" é equivalente a 255.255.255.0. O argumento "!" antes da especificação de endereço, inverte a regra. A flag "--src" é um alias para esta opção. Vários endereços podem ser especificados, mas isso vai se expandir para várias regras (quando for acrescentado "-A") ou causará várias regras a serem excluídas (com "-D"). [!] -d, --destination address[/mask][,...] :: Especificação do destino. Ver a descrição do sinalizador "-s" (source, origem) para uma descrição detalhada da sintaxe. A flag (bandeira) "-dst" é um alias para essa opção. -j, --jump target :: Especifica o alvo da regra, isto é, o que fazer se o pacote combinar com a regra. O alvo pode ser uma chain definida pelo usuário, pode ser um dos alvos embutidos especiais (chains que vem por padrão) que decidem o destino do pacote imediatamente ou pode ser uma extensão (ver EXTENSIONS abaixo). Se esta opção for omitida em uma regra (e "-g" não for usado com a regra) não terá efeito sobre o destino do pacote, mas os contadores sobre a regra serão incrementados. -g, --goto chain :: Especifica que o processamento deve continuar em uma chain especificada. Ao contrário da opção "--jump", não vai continuar o processamento nesta chain, mas sim na chain que chamou via "-- jump". [!] -i, --in-interface name :: Nome de uma interface através da qual um pacote foi recebido (somente para pacotes que entram nas chains INPUT, FORWARD e PREROUTING). Quando o argumento "!" for utilizado antes do nome da interface, o sentido é invertido. Se o nome da interface termina em "+", então qualquer interface que começa com o mesmo nome irá corresponder. Se esta opção for omitida, qualquer nome de interface irá corresponder. Nota do tradutor: "eth+" refere-se a eth0, eth1, eth2, etc. Ou seja, a todas as placas de rede da máquina que começam com eth. Wireless seria "wlan+". [!] -o, --out-interface name :: Nome de uma interface através da qual um pacote vai ser enviado (para pacotes que entram nas chains OUTPUT, FORWARD e POSTROUTING). Quando o argumento "!" for utilizado antes do nome da interface, o sentido é invertido. Se o nome da interface termina em "+", então qualquer interface que começa com este nome irá corresponder. Se esta opção for omitida, qualquer nome de interface irá corresponder. 6

[!] -f, --fragment :: Significa que a regra se refere ao segundo fragmento em diante dos pacotes fragmentados. Como não há maneira de dizer as portas de origem ou destino de um tal pacote (tipo ICMP), tal pacote não irá corresponder a todas as regras especificadas. Quando o argumento "!" precede a flag "-f", a regra só vai coincidir com o cabeçalho dos fragmentos ou dos pacotes não fragmentados. -c, --set-counters packets bytes :: Isso permite que o administrador inicialize os contadores de pacotes e os bytes de uma regra (durante as operações INSERT, APPEND e REPLACE). 7