Firewall profissional com IPTables
Prof. Me. Allysson Steve Mota Lacerda
www.aptans.com
APRESENTAÇÃOPrazer em conhecê-los!
Quem sou eu?
• Bacharel em Sistemas de Informação– UNIMONTES (2006)
• Mestre em Engenharia Elétrica– UFMG (2010)
O que eu faço?
• Linhas de trabalho– Infraestrutura de TI
• Servidores Windows e GNU/Linux• Consolidação de servidores• Projetos de rede
O que eu faço?
• Linhas de trabalho– Segurança da Informação
• Antivírus• AntiSPAM• Firewall• Proxy• VPN• Backup
O que eu faço?
• Linhas de trabalho– Integração entre ambientes Windows e GNU/Linux
• Autenticação centralizada• Serviços de diretório
Alguns clientes
FIREWALLIntrodução
O firewall
• Funções– proteger a máquina contra acessos indesejados– proteger a máquina contra tráfego indesejado– proteger serviços que estejam rodando na máquina– bloquear a passagem de coisas indesejadas
• conexões vindas da Internet para sua segura rede local
O que proteger?
• Quais serviços proteger?• Que tipo de conexões eu posso deixar passar?• Que máquinas terão acesso livre?• Que serviços terão prioridade no processamento?• Que máquinas/redes NUNCA deverão ter acesso?• Qual o volume de tráfego que o servidor manipulará?• O que pode passar de uma rede para outra?
Tipos de firewall
• Firewalls de aplicação– Proxies (SMTP, HTTP etc.)
• Firewalls baseados em estado– Tabelas de estados
• Firewalls de pacotes– Endereços e portas
O IPTABLESVamos ao que interessa
Histórico
• IPTables (Netfilter)– surgiu no kernel do Linux 2.4– substitui o ipchains– muita flexibilidade na programação de regras– mais opções para controle de tráfego– controle independente do tráfego da rede
• nova organização das etapas de roteamento de pacotes
Características
• Especificação de portas/endereço de origem/destino• Suporte a protocolos TCP/UDP/ICMP• Suporte a interfaces de origem/destino de pacotes• Manipula serviços de proxy na rede• Tratamento de tráfego dividido em chains– melhor controle do tráfego
• Permite um número ilimitado de regras por chain
Características
• Possui mecanismos internos para rejeitar pacotes– duvidosos ou mal formados
• Suporte a módulos externos– expansão das funcionalidades oferecidas
• Suporte completo a roteamento de pacotes• Suporte a especificação de tipo de serviço– priorizar o tráfego de determinados tipos de pacotes
• Permite especificar exceções
Características
• Permite enviar alertas personalizados ao syslog• Redirecionamento de portas• Masquerading• Suporte a SNAT e DNAT• Contagem de pacotes que atravessaram uma regra• Limitação de passagem de pacotes– útil para criar proteções contra syn flood, ping flood, DoS...
REGRASE lá vamos nós…
O que são regras?
“Comandos passados ao iptables para queele realize uma determinada ação”
(Guia FOCA)
• As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas
• As regras são armazenadas no kernel– são perdidas a cada reinicialização– devem ser gravadas em um arquivo
O que são chains?
“Locais onde as regras do firewall sãoarmazenadas para sua operação”
(Guia FOCA)
• Existem dois tipos de chains– os embutidos (como os INPUT, OUTPUT e FORWARD) – os criados pelo usuário
• Os nomes dos chains– embutidos devem ser especificados sempre em maiúsculas– são case-sensitive (input é diferente de INPUT)
O que são tabelas?
“Locais usados para armazenar chains e regrascom determinada característica em comum”
(Guia FOCA)
• Podem ser referenciadas com a opção -t <tabela>• Existem 3 tabelas disponíveis no iptables– filter– nat– mangle
A tabela filter
• Esta é a tabela padrão, contém 3 chains padrões– INPUT: dados que chegam a máquina– OUTPUT: dados que saem da máquina– FORWARD: dados que são redirecionados
• INPUT e OUTPUT– somente são atravessados por conexões de localhost
A tabela nat
• Usada para dados que geram outra conexão• Possui 3 chains padrões:– PREROUTING: quando os pacotes precisam ser
modificados logo que chegam– OUTPUT: quando os pacotes gerados localmente precisam
ser modificados antes de serem roteados– POSTROUTING: quando os pacotes precisam ser
modificados após o tratamento de roteamento
A tabela mangle
• Utilizada para alterações especiais de pacotes• Possui 5 chains padrões:– INPUT: quando os pacotes precisam ser modificados antes
de serem enviados para o INPUT da tabela filter– FORWARD: quando os pacotes precisam ser modificados
antes de serem enviados para o FORWARD da tabela filter– PREROUTING: quando os pacotes precisam ser
modificados antes de ser enviados para o PREROUTINGda tabela nat
A tabela mangle
• Utilizada para alterações especiais de pacotes• Possui 5 chains padrões:– POSTROUTING: quando os pacotes precisam ser
modificados antes de serem enviados para o POSTROUTING da tabela nat
– OUTPUT: quando os pacotes precisam ser modificados antes de serem enviados para o OUTPUT da tabela nat
MANIPULANDO CHAINSPare com a enrolação… eu quero ver rodando!
Adicionando regras - A
• ping 127.0.0.1
• iptables -t filter -A INPUT \-d 127.0.0.1 -j DROP
• ping 127.0.0.1
Listando regras - L
• iptables -t filter -L INPUT
• iptables -L INPUT –n
• iptables -L INPUT -n --line-numbers
Apagando uma regra - D
• iptables -t filter -D INPUT 1
• iptables -t filter -D INPUT \-d 127.0.0.1 -j DROP
POR QUE NÃO USAR –D?
Inserindo uma regra - I
• iptables -t filter -I INPUT 1 \-d 127.0.0.1 -j ACCEPT
POR QUE NÃO USAR –I?
Criando um novo chain - N
• iptables -t filter -N internet
• iptables -t filter -A internet \-s 200.200.200.200 -j DROP
• iptables -t filter -A INPUT \-j internet
Limpando as regras de um chain - F
• iptables -t filter -F INPUT
• iptables -t filter -F
Apagando um chain do usuário - X
• iptables -t filter -X internet
• iptables -X
Especificando a política de um chain - P
• iptables -L OUTPUT
• iptables -t filter -P OUTPUT DROP
• iptables -L OUTPUT
OUTRAS OPÇÕES
Especificando um endereço
• Origem e destino– -s | –src | –source– -d | –dst | –destination
• Opções– IP ou par rede/máscara: 10.0.0.1 ou 10.0.0.0/8– endereço fqdn: www.aptans.com
• iptables -A INPUT -s 10.0.0.0/24 \-j DROP
Especificando a interface
• Origem e destino– -i | –in-interface– -o | –out-interface
Especificando um protocolo
• Protocolo– -p | –protocol
• Opções– tcp– udp– icmp
• iptables -A INPUT -s 10.0.0.0 \-p UDP -j DROP
Especificando portas
• Origem e destino– --sport | --source-port– --dport | --destination-port
• iptables -A OUTPUT -d 10.0.0.1 \-p tcp --dport :1023 -j DROP
Especificando uma exceção
• iptables -t filter -A INPUT –p TCP \! -s 10.0.0.1 -j DROP
• iptables -A INPUT -s 10.0.0.1 \! -p TCP -j DROP
Especificando um alvo
• Opções– -j ACCEPT– -j DROP– -j REJECT– -j LOG
• iptables -A INPUT -s 10.0.0.1 \-i eth0 -j REJECT
A TABELA NATNetwork Address Translation
Fazendo SNAT
• NAT de origem– -j SNAT
• iptables -t nat -A POSTROUTING \-s 192.168.1.0/24 -o eth0 \-j SNAT --to 200.200.200.40
Fazendo IP Masquerading
• IPs dinâmicos– -j MASQUERADE
• iptables -t nat -A POSTROUTING \-s 192.168.1.2/32 -o ppp0 \-j MASQUERADE
Fazendo DNAT
• NAT de destino– -j DNAT
• iptables -t nat -A PREROUTING \-s 200.200.217.40 -i eth0 \-j DNAT --to 192.168.1.2
Redirecionamento de portas
• Proxies e programas externos– -j REDIRECT
• iptables -t nat -A PREROUTING \-i eth0 -p tcp --dport 80 \-j REDIRECT --to-port 8080