Formação de Administradores
de Redes Linux
LPI – level 1
SENAC TI
Fernando Costa
Firewall
Software cujo objetivo é proteger a máquina de
acesso/tráfego indesejado, proteger serviços,
evitar que dados sigilosos sejam acessados...
Firewall
Iptables:
- Firewall em nível de pacotes
- Baseado em porta e endereços de origem/destino,
prioridade, etc
- Comparação de regras
- Modifica e monitora tráfego de rede
- Redirecionamento de pacotes
- Criação de proteção contra anti-spoofing, syn flood,
DoS,etc
IPTables - Características
# Especificação de portas/endereço de
origem/destino
# Suporte a protocolos TCP/UDP/ICMP (incluindo
tipos de mensagens icmp)
# Suporte a interfaces de origem/destino de pacotes
# Manipula serviços de proxy na rede
# Tratamento de tráfego dividido em chains (para
melhor controle do tráfego que entra/sai da
máquina e tráfego redirecionado.
# Permite um número ilimitado de regras por chain
# Muito rápido, estável e seguro
IPTables - Características
# Possui mecanismos internos para rejeitar
automaticamente pacotes duvidosos ou mal
formados.
# Suporte a módulos externos para expansão das
funcionalidades padrões oferecidas pelo código de
firewall
# Contagem de pacotes que atravessaram uma
interface/regra
# Limitação de passagem de pacotes/conferência
de regra (muito útil para criar proteções contra, syn
flood, ping flood, DoS, etc)
IPTables - Características
# Suporte completo a roteamento de pacotes,
tratadas em uma área diferente de tráfegos
padrões.
# Suporte a especificação de tipo de serviço
para priorizar o tráfego de determinados tipos
de pacotes.
# Permite especificar exceções para as regras
ou parte das regras
# Suporte a detecção de fragmentos
Firewall
- Quais serviços proteger?
- Quais tipos de conexão permitir?
- Máquinas com acesso irrestrito
- Serviços com prioridade do processamento
- Volume de tráfego
- O que poderá trafegar entre redes
- ...
Firewall
Iptables
Regras
Chains
Tabelas
IPTables - Regras
- São como comandos passados ao iptables para que
ele realize uma determinada ação.
- As regras são armazenadas dentro dos chains e
processadas na ordem que são inseridas.
- As regras são armazenadas no kernel
IPTables - Chains
- São locais onde as regras do firewall definidas pelo
usuário são armazenadas para operação do firewall
- Embutidas e as definidas pelo usuário
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING
IPTables - Tabelas
- São os locais usados para armazenar os chains e
conjunto de regras com uma determinada característica
em comum
filter
nat
mangle
IPTables
- filter
- INPUT
- OUTPUT
- FORWARD
- nat
- PREROUTING → Consultado quando os pacotes precisam ser modificados logo
que chegam (DNAT)
- POSTROUTING → Consultado quando os pacotes precisam ser modificados
após o tratamento de roteamento (SNAT)
- OUTPUT → Consultado quando os pacotes gerados localmente precisam ser
modificados antes de serem roteados
IPTables
- mangle
- INPUT → Consultado quando os pacotes precisam ser modificados antes de
serem enviados para o chain INPUT da tabela filter.
- OUTPUT → Consultado quando os pacotes precisam ser modificados antes
de serem enviados para o chain OUTPUT da tabela nat.
- 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.
IPTables
Adicionando regras:
# ping localhost
# iptables -t filter -A INPUT -d 127.0.0.1 -j DROP
# ping localhost
# iptables -t filter -I INPUT 1 -s 10.1.151.X -d
127.0.0.1 -j ACCEPT
IPTables
Removendo, refinando e listando a regra:
# iptables -t filter -D INPUT -d 127.0.0.1 -j DROP
# iptables -t filter -A INPUT -d 127.0.0.1 -p tcp -j
DROP
# iptables -t <tabela> -L <chain> [opcoes]
Opções:
-v
--line-numbers
-n
IPTables
Especificando um endereço de origem/destino
# iptables -A INPUT -s 200.200.200.0/24 -j DROP
# iptables -A OUTPUT -d 10.1.2.3 -j DROP
# iptables -A INPUT -s www.dominio.teste.org -d
210.21.1.3 -j DROP
IPTables
Especificando a interface de
origem/destino
# iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP
# iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP
# iptables -A OUTPUT -o ppp+ -j DROP
# iptables -A FORWARD -i ppp0 -o eth1 -j DROP
IPTables
Especificando um protocolo
# iptables -A INPUT -s 200.200.200.200 -p udp -j DROP
Especificando portas de origem/destino
# iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport
:1023 -j DROP
IPTables
Tabela NAT (Network Address Translation)
A tabela nat serve para controlar a tradução dos
endereços que atravessam o código de
roteamento da máquina
IPTables
IP masquerading
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j
MASQUERADE
# echo "1" >/proc/sys/net/ipv4/ip_forward
IPTables
Fazendo SNAT
Consiste em modificar o endereço de origem das
máquinas clientes antes dos pacotes serem enviados. A
máquina roteadora é inteligente o bastante para
lembrar dos pacotes modificados e reescrever os
endereços assim que obter a resposta da máquina de
destino, direcionando os pacotes ao destino correto
Toda operação de SNAT é feita no chain
POSTROUTING.
Firewall
# iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT --to
200.200.217.40
IPTables
Fazendo DNAT
iptables -t nat -A PREROUTING -s
200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2
Redirecionamento de portas
iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j REDIRECT --to-port 81
IPTables
Caminho percorrido pelos pacotes nas tabelas e
chains
Nos exemplos foi assumida a seguinte configuração:
- A máquina do firewall com iptables possui o endereço IP
192.168.1.1 e conecta a rede interna ligada via interface eth0 a
internet via a interface ppp0.
- Rede interna com a faixa de endereços 192.168.1.0
conectada ao firewall via interface eth0
- Interface ppp0 fazendo conexão com a Internet com o
endereço IP 200.217.29.67.
- A conexão das máquinas da rede interna (eth0) com a rede
externa (ppp0) é feita via Masquerading.
IPTables
Ping de 192.168.1.1 para 192.168.1.1
Conexão FTP de 192.168.1.1 para 192.168.1.1
Conexão FTP de 192.168.1.1 para 192.168.1.4
Conexão FTP de 200.217.29.67 para a máquina
ftp.debian.org.br
Ping de 192.168.1.4 para 192.168.1.1
Conexão FTP de 192.168.1.4 para 192.168.1.1
Conexão FTP de 192.168.1.4 para ftp.debian.org.br
Firewall
Em duplas, fazer IP Masquerading sendo:
Máquina A alterar o IP local (eth0) para algum da
rede 10.5.151.0/24
Máquina B criar uma interface virtual eth0:0 com IP
da rede 10.5.151.0/24
Máquina B definir uma rota para da rede
10.5.151.0/24 sendo o gateway o IP setado para eth0
Adicionar a rota default da máquina A o endereço IP
da rede 10.5.151.0/24 da máquina B
Testar conectividade (ping externos, requisições http,
traceroute)
Firewall
Ainda em duplas:
Máquina A deve bloquear o acesso ao SSH (porta
22) vindo da Máquina B
Máquina B deve bloquear ping para ela vindo da rede
10.5.151.0/24
Monitoramento
Por que monitorar?
O que monitorar?
Como monitorar?
Software de monitoramento
MRTG
O mais antigo sistema de monitoramento de redes
que gera páginas HTML com gráficos de dados
coletados a partir de SNMP ou scripts externos.
http://oss.oetiker.ch/mrtg/
Software de monitoramento
RRDtool
Evolução do MRTG, utilizado pela maioria das
ferramentas de monitoramento de rede. Os dados
são armazenados num banco de dados com o
conceito de round-robin para que as medições
fiquem constantes ao longo do tempo.
http://oss.oetiker.ch/rrdtool/
Software de monitoramento
Nagios
Robusto e base para
outras ferramentas de
gerenciamento
/
monitoramento, com ele
é possível fazer o
gerenciamento de toda a
rede
inclusive
com
alertas via SNMP trap,
SMS, email.
http://www.nagios.org
Software de monitoramento
Cacti
Desenvolvido para ser flexível de modo a se
adaptar facilmente a diversas necessidades, bem
como ser robusto e fácil de usar. Trata-se de uma
interface e uma infra-estrutura para o RRDTool,
que é responsável por armazenar os dados
recolhidos e por gerar os gráficos.
http://cacti.net
Software de monitoramento
Zabbix
Ferramenta une o que
de melhor do Nagios e
do Cacti juntamente
com uma excelente
ferramenta web de
configuração
e
manutenção.
Possui muitos recursos para facilitar
gerenciamento centralizado dos ativos.
http://www.zabbix.org
o
Software de monitoramento
Munin
Feito em Perl, produz
gráficos sobre variados
temas
como
monitoramento de CPU,
carga dos discos, queries
do
MySQL,
uso
de
memória, rede etc.
Extremamente útil para administrar diversos
servidores ao mesmo tempo.
http://munin.projects.linpro.no/
Software de monitoramento
Zenoss
Excelente
ferramenta
para
monitorar/gerenciar
a
rede
baseado no Nagios, com ele é
possível também fazer um
inventário da rede e possui
excelentes
gráficos
da
infraestrutura. Utiliza o Google
maps
para
mostrar
graficamente a distribuição das
redes.
http://www.zenoss.com
Software de monitoramento
NAV
Avançada ferramenta para monitorar grandes
redes. Ele automaticamente descobre a topologia
de rede, monitora carga de banda, servidores e
outros equipamentos de rede enviando alertas via
SMS, email.
http://metanav.uninett.no/
Cacti
http://www.cacti.net
Cacti - é uma interface gráfica web feita em PHP
para a ferramenta RRDTool, que coleta dados
via SNMP, armazena informações sobre os
gráficos de estatísticas, contas de usuários e
demais configurações em uma base de dados
MySQL.
Ports:
cd /usr/ports/net/cacti && make install clean
Cacti - Interface
Cacti – Gerenciando Dispositivos
Cacti – Consulta por período
Fernando Costa
www.fernandocosta.com.br
[email protected]
Download

IPTables, SNMP(cacti)