Upload
others
View
48
Download
0
Embed Size (px)
Citation preview
Firewall - IPTABLES
Tópicos em Sistemas de Computação – 2015
Prof. Dr. Adriano Mauro Cansian
Docente auxiliar: Vinícius Oliveira Ferreira
Conceitos e Prática
Agenda
• Firewall, o que é ?
• DMZ
• Tipos de Firewall
• netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!2
Agenda
• Firewall, o que é ?
• DMZ
• Tipos de Firewall
• netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!3
O que é ? – Firewall/IPTABLES
• O que é ?
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!4
O que é ? – Firewall/IPTABLES
• Um firewall é um dispositivo de filtragem
de pacotes que serve como barreira de
proteção entre duas ou mais redes.
Através desta barreira trafega-se somente
o conteúdo que foi previamente
autorizado por um conjunto de regras.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!5
• Para isso uma ferramenta de firewall deve ter a
capacidade de inspecionar todos os pacotes que
fluem entre as redes, geralmente uma rede local e a
internet, e decidir se estes estão ou não habilitados a
trafegarem por elas.
O que é ? – Firewall/IPTABLES
• Onde devemos posicionar um Firewall
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!6
Agenda
• Firewall, o que é ?
• DMZ
• Tipos de Firewall
• netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!7
DMZ – Firewall/IPTABLES
• Firewall – Conceito DMZ:– DMZ (DeMilitarized Zone ou Zona
Desmilitarizada): a DMZ é uma pequena rede
situada entre uma rede confiável e uma não
confiável, geralmente entre a rede local e a
Internet.
– A função de uma DMZ é manter todos os serviços
que possuem acesso externo em uma rede
isolada, o que limita o potencial de dano à rede
local em caso de comprometimento de algum
destes serviços por um invasor.
• Firewall – Conceito DMZ:
DMZ – Firewall/IPTABLES
Agenda
• Firewall, o que é ?
• DMZ
• Tipos de Firewall
• netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!10
Tipos de Firewall – Firewall/IPTABLES
• Firewall Filtro de Pacotes
– Classe de Firewall responsável por filtrar todo o tráfego
direcionado ao próprio host Firewall ou a rede protegida pelo
mesmo.
• Firewall Nat
– Esta classe possui o objetivo de manipular o endereço de
origem e destino dos pacotes, tal como realizar
Masquerading (nat), entre outras potencialidades.
• Firewall Híbrido
– Esta Classe de Firewall agrega tanto as funções de
filtragem de pacotes quanto de Nat.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!11
Agenda
• Firewall, o que é ?
• DMZ
• Tipos de Firewall
• netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!12
netfilter – Firewall/IPTABLES
• Funções de firewall são agregadas à
própria arquitetura do Kernel (núcleo do
sistema)
• Tais funções são gerenciadas pelo
módulo netfilter
• netfilter tem como Front-End o
IPTABLES
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!13
netfilter – Firewall/IPTABLES
Estrutura netfilter
• Pensar no netfilter como um grande Banco
de Dados com quatro grandes tabelas.
– Filter
– Nat
– Mangle
– Raw (Está tabela não será abordada por ser de usomuito particular)
• Cada uma destas tabelas armazenam regras
direcionadas a seus objetivos.Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!14
netfilter – Firewall/IPTABLES
Tabelas netfilter
• Filter: Armazena todas as regras
intrínsecas a um Firewall Filtro de
Pacotes.
• NAT: Armazena as regras direcionadas a
um Firewall Nat.
• Mangle: Armazena as funções mais
complexas de tratamento de pacotes. Ex:
TOS.Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!15
netfilter – Firewall/IPTABLES
Tabelas netfilter
• Todas as tabelas possuem situações de fluxos
(entrada, saída, redirecionamento, e etc.) que
lhes proporcionam a realização de seus
objetivos.
– Ex -Tabela Filter: Input, Forward, Output
• Essas situações de fluxos são
denominadas Chains.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!16
netfilter – Firewall/IPTABLES
Tabelas netfilter
• FILTER: A tabela filter é a tabela padrão do
Iptables e trata das chains implementadas por
um firewall filtro de pacotes. Estas chains são:
– 1. INPUT: Tudo que entra no host firewall.
– 2. FORWARD: Tudo que chega ao host, mas deve ser
redirecionado à outra interface de rede.
– 3. OUTPUT: Tudo que sai do host.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!17
netfilter – Firewall/IPTABLES
Tabelas netfilter
• NAT: A tabela Nat abrange as funções de NAT
(Network Address Translation), as chains
associadas a ela são:
– 1. PREROUTING: Utilizada quando há necessidade de se
fazer alterações em pacotes antes que os mesmos sejam
roteados.
– 2. OUTPUT: Trata os pacotes emitidos pelo host firewall.
– 3. POSTROUTING: Utilizado quando há necessidade de
se fazer alterações em pacotes após o tratamento de
roteamento.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!18
netfilter – Firewall/IPTABLES
Tabelas netfilter• Mangle: A tabela Mangle implementa alterações
especiais em pacotes em um nível mais complexo, suas
chains são:
– 1. PREROUTING: Alteração em pacotes, antes que sejam roteados.
– 2. INPUT: Alteração em pacotes recém chegados para o host
Firewall.
– 3. FORWARD: Alteração em pacotes a serem roteados a outros
hosts.
– 4. OUTPUT: Alteração em pacotes gerados pelo host firewall antes
que sejam roteados.
– 5. POSTROUTING: Alteração em pacotes após serem roteados.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!19
20
Fluxo dos pacotes
pelo netfilter.
Agenda
• Firewall, o que é ?
• DMZ
• Tipos de Firewall
• netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!21
IPTABLES – Firewall/IPTABLES
• Firewall padrão desde o Kernel 2.4
• Front-end do netfilter
• Função: Inserir regras nas tabelas do netfilter
• Por estar incorporado ao kernel, a configuração
do iptables não se dá por via de arquivos de
configuração, pelo contrário sua manipulação é
realizada por síntese digitada em Shell.
– Dessa forma, as regras são armazenadas em
memória volátil e permanecem ativas até que o
computador seja desligado ou reiniciado.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!22
IPTABLES – Firewall/IPTABLES
• iptables-save: Este comando salva as regras
atuais do sistema (ainda em Ram) para um
arquivo indicado.
– Ex: iptables-save > /bin/rc.firewall
Tal arquivo pode ser posto para iniciar juntamente com o
sistema de forma automática com uso do init.d, dessa
forma, ainda que as regras se percam em um
desligamento do sistema elas serão restauradas
novamente na inicialização
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!23
Como então não perder minhas regras ?
IPTABLES – Firewall/IPTABLES
• Funcionamento do netfilter/IPTABLES baseado
na inserção e análise de regras.
• Regras são predefinições aplicadas a fim de
disciplinar todo o tráfego de dados em uma
rede/host.
• Todas as regras são associadas a uma
determinada tabela e aplicadas a uma
determinada chain.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!24
IPTABLES – Firewall/IPTABLES
Sintaxe básica para se inserir uma regra no
IPTABLES
root@maq:~# iptables [tabela] [comando]
[ação] [alvo]
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!25
IPTABLES – Firewall/IPTABLES
• -t : flag responsável pela escolha da tabela,
utilizamos essa opção para associar uma regra a
uma tabela específica.
EX:
– # iptables –t filter
– # iptables –t nat
– # iptables –t mangle
Na omissão do parâmetro –t é usada a tabela filter
(tabela padrão do iptables)
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!26
Tabelas
IPTABLES – Firewall/IPTABLES
• -A : Adiciona (anexa) uma nova entrada ao fim da lista de
regras– # iptables –A INPUT
• -D : Apaga uma regra específica da lista– # iptables –D INPUT 2
Apaga a regra número 2 referente a INPUT chain
• -L : Lista as regras existentes na lista– # iptables –L FORWARD
• -P : Altera a política padrão das chains– # iptables –P FORWARD DROP
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!27
Comandos
IPTABLES – Firewall/IPTABLES
• -F : Remove todas as entradas adicionadas a lista de
regras do iptables– # iptables –F
– # iptables –F OUTPUT
• -I : Insere uma nova regra no início da lista de regras
(oposto ao comando –A)– # iptables –I INPUT
• -N : Cria uma nova chain na tabela especificada– # iptables –t filter –N internet
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!28
Comandos
IPTABLES – Firewall/IPTABLES
• -p : Especifica o protocolo aplicado a regra.
• -i : Especifica a interface de entrada.
• -o : Especifica a interface de saída.
• -s : Especifica a origem do pacote, a origem pode ser um
host ou uma rede.
– -s 10.0.0.0/24
– -s www.gnu.org
• -d : Especifica o destino do pacote, sua utilização se dá
da mesma forma que o -s.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!29
Ação
IPTABLES – Firewall/IPTABLES
• -j : Específica o alvo do pacote caso o mesmo se encaixe
a uma regra.
• ! – Exclusão e/ou exceção, utilizado quando se deseja
aplicar uma exceção a uma regra
– -s ! 10.0.0.3
# Refere-se a todos os endereços possíveis com exceção do
10.0.0.3
• --sport : Específica a porta de origem do pacote.
• --dport : Específica a porta de destino do pacote.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!30
Ação
IPTABLES – Firewall/IPTABLES
• ACCEPT: Permite a entrada/passagem do pacote em
questão.
• DROP: O pacote em questão é descartado sem aviso ao
emissor
• REJECT: O pacote é rejeitado e uma mensagem de erro
é enviada ao emissor
• LOG: Cria uma entrada de log sobre a utilização dos
demais alvos (targets)
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!31
Alvo
Agenda
• Firewall, o que é ?
• Tipos de Firewall
• Netfilter
• IPTABLES
• Prática
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!32
Prática – Firewall/IPTABLES
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!33
Executar o ‘Lab-Firewall’
Prática – Firewall/IPTABLES
• Os endereços IP estão corretamente alocados
às redes, no entanto, é preciso indicar que o
Firewall será o gateway default para a Rede
Monitorada.
• Isso é feito com a criação de rotas.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!34
Criando Rotas
Prática – Firewall/IPTABLES
• Criar uma rota default em todos os hosts da
Rede Monitorada para o Firewall
– Esta rota significa que todo pacote que tenha como
destino uma rede externa deverá ser encaminhado
para a máquina Firewall.
# route add default gw 192.168.0.1
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!35
Criando Rotas
Prática – Firewall/IPTABLES
• Precisamos executar algumas configurações
especiais ao host Firewall para que ele seja
capaz de desempenhar suas funções de
Firewall.
• O primeiro passo a ser feito é configurar o host Firewall
para que ele possa comutar pacotes para outras
máquinas, o que é feito através do comando:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!36
Configurando o host Firewall
Prática – Firewall/IPTABLES
• Duas formas:
1. Política ACCEPT: Todos os pacotes são liberados,
exceto aqueles que combinam (match) com alguma
regra.
2. Política DROP: Não existe permissão para nenhum
pacote externo trafegar pela rede, exceto aqueles
que são permitidos por alguma regra.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!37
Restringindo o acesso a Rede Monitorada
Prática – Firewall/IPTABLES
1. Política ACCEPT: Esta é a política padrão
(Checar com ‘iptables –L’)
O bloqueio do acesso à Rede Monitorada pela
Rede Externa pode se dar pela seguinte regra:
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!38
Restringindo o acesso a Rede Monitorada
Prática – Firewall/IPTABLES
iptables –A FORWARD#Utilizamos o –A para inserir uma regra na tabela filter (padrão) sob
a chain FORWARD
iptables –A FORWARD –s 192.168.1.0/24
#Agora dizemos que todos os pacotes que forem
provenientes (-s origem) da rede 192.168.1.0/24 ...
iptables –A FORWARD –s 192.168.1.0/24 –j DROP
#...deverão ser automaticamente descartados (-j indica a
ação a ser tomada, e DROP trata-se da ação
propriamente dita)
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!39
Restringindo o acesso a Rede Monitorada
Prática – Firewall/IPTABLES
2. Política DROP: Para esta política será
necessário modificar a política padrão de todas
as chains da tabela ‘filter’
– # iptables –P INPUT DROP
– # iptables –P FORWARD DROP
– # iptables –P OUTPUT DROP
Podemos checar com ‘iptables –L’ a mudança da política
padrão das chains para DROP. Dessa forma, TUDO que
trafegar pelo firewall será descartado.Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!40
Restringindo o acesso a Rede Monitorada
Prática – Firewall/IPTABLES
TUDO mesmo, até a comunicação entre processos
fica impossibilitada. Logo, a primeira a coisa a ser
feita quando se trabalha nesta política é aplicar a
regra:
iptables –A INPUT –i lo –j ACCEPT
E assim liberar totalmente o tráfego de entrada da
interface de Loopback (lo)
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!41
Restringindo o acesso a Rede Monitorada
Prática – Firewall/IPTABLES
• O acesso à Rede Monitorada já esta bloqueado por
padrão (devido a alteração das chains), vamos agora
permitir que a Rede Externa tenha acesso a Rede
Monitorada. Isso pode ser feito com a adição das
seguintes regras:
iptables –A FORWARD –s 192.168.1.0/24 –j ACCEPT
iptables –A FORWARD –s 192.168.0.0/24 –j ACCEPT
Regras com síntese muito semelhante a regra criada
anteriormente, por isso não iremos detalhá-las aqui.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!42
Restringindo o acesso a Rede Monitorada
Prática – Firewall/IPTABLES
• Outro uso muito comum de um Firewall é o bloqueio
de uma porta e consequentemente um serviço, isso
pode ser feito pelos parâmetros ‘--dport’ ou ‘--sport’
• Estes parâmetros funcionam somente sobre os
protocolos UDP e TCP, logo o parâmetro –p se
torna obrigatório ao se usar uma das regras acima.
iptables –A FORWARD –d 192.168.0.0/24 –p tcp --dport 22 –j DROP
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!43
Bloqueando uma porta ou serviço
Prática – Firewall/IPTABLES
• Para isso faremos uso de recursos mais
avançados do IPTABLES, os módulos.
• Um módulo nada mais é que uma forma de se
ampliar a funcionalidade da ferramenta
IPTABLES, ou seja, uma forma de se fugir do
convencional aplicando-se regras um pouco mais
aprimoradas.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!44
Bloqueando Ataques de Bruteforce
Prática – Firewall/IPTABLES
• Nesta prática vamos aplicar dois módulos muito
úteis na criação de várias regras, são eles:
– recent: Permite a criação de uma Lista dinâmica de
Endereços IP que pode ser usada em diferentes
contextos.
– state: Observa o estado de conexão de um pacote.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!45
Bloqueando Ataques de Bruteforce
Prática – Firewall/IPTABLES
1. # iptables -I FORWARD -p tcp --dport
22 -i eth0 -m state --state NEW -m
recent --set
• Para maiores informações sobre as opções
de um certo módulo:
# iptables -m -help
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!46
Bloqueando Ataques de Bruteforce
Prática – Firewall/IPTABLES
2. # iptables -I FORWARD -p tcp --dport
22 -i eth0 -m state --state NEW -m
recent --update --seconds 60 --
hitcount 4 -j DROP
Estas duas regras em conjunto permitem apenas 3
tentativas de conexão por minuto ao serviço que roda na
porta 22 para um determinado endereço de origem.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!47
Bloqueando Ataques de Bruteforce
Prática – Firewall/IPTABLES
# iptables -I FORWARD -p tcp --dport 22 -i eth0 -m state
--state NEW -m recent --update --seconds 60 --hitcount
4 -j LOG --log-prefix "Anti SSH-Bruteforce: " --log-level
6
• Atenção quanto a precedência, regras que envolvem a criação de
LOGs devem preceder as regras que realizam o ‘DROP’ ou
‘ACCEPT’ dos pacotes.
• No Ubuntu os logs são armazenados no syslog, outras opções
utilizadas em outras distribuições geralmente são:
/var/log/messages ou em /var/log/kern.log.
Administração de Serviços de Rede em
Servidores Linux – Laboratório ACME!48
Logando tentativas de Ataques de Bruteforce