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]