V ENSOL Construindo Firewalls Redundantes em Ambientes GNU/Linux Segurança e Alta Disponibilidade Jansen Sena Julho, 2011. João Pessoa, PB.
Sobre o palestrante Formação acadêmica e técnica Segurança de redes Administração de sistemas Unix/Linux LPI Certified Professional (LPIC 1 / LPIC 2) ITIL Foundations Certified Atividades atuais Mestrado pelo Inst. Computação da Unicamp/SP Atech Tecnologias Críticas (www.atech.br) Consultor de TI, sw livre e segurança GNU Masters (www.gnumasters.com) http://www.jsena.info
Vamos começar? # /etc/init.d/palestra start
Um pouco sobre firewalls Firewalls? Constituem, normalmente, as primeiras linhas de defesa em um ambiente de rede; De maneira convencional, são filtros de pacotes baseados em campos dos protocolos IP, TCP, UDP, ICMP, dentre outros; Responsáveis pelo compartilhamento de conexões.
Onde está o problema? Inimigo da alta disponibilidade: SPOF; SPOF: Single Point of Failure; Firewalls costumam ser SPOF nas redes de pequenas, médias e até grandes instituições; Nesses ambientes, é comum que falhas do firewall interrompam todas as comunicações com a Internet; Serviços de portal, Email, Proxy, DNS podem sofrer com aa falha de um firewall; Cenário mais complicado quando se trata de um ambiente de rede com diversas DMZs e outros segmentos de rede.
Quais as soluções? Existem diversos produtos no mercado que provêem mecanismos de alta disponibilidade para firewalls; Licenças de uso possuem altos custos; Soluções proprietárias criam dependência de fornecedores específicos; E qual é a NOSSA solução? É possível utilizar GNU/Linux e outros aplicativos de software livre para compor soluções de alta disponibilidade!
O básico Fontes de alimentação redundantes em curcuitos elétricos distintos; Discos rígidos Cenário nem sempre é possível em hardwares mais simples e baratos. Utilização de RAID 1, RAID 5, RAID 5 + 0, RAID 6 e outras combinações são fundamentais; Particionamento Criar partições separadas para os sistemas de arquivos mais relevantes;
O básico Particionamento (cont.) Uso do LVM (Logical Volume Manager) é importante para evitar problemas de realocação de espaço. Controle restrito sobre os repositórios adicionados ao gerenciador de pacotes; Imagens do sistema operacional são truques interessantes... Clonezilla pode ser uma simples e interessante opção.
Network bonding Network bonding Recurso presente no kernel do GNU/Linux; Faz com que várias interfaces de rede comportem se como uma única placa de rede virtual ; Do ponto de vista das aplicações e dos usuários, a interface virtual é como qualquer outra; Falhas físicas nas conexões de rede são transparentes para aplicações e para os usuários do SO; Exemplo: iptables cria regras considerando a interface de rede virtual (e.g. bond0 ); Recurso muito pouco documentado e difundido entre adminstradores de sistemas GNU/Linux.
O antes e o depois... eth0 (192.168.10.1) eth1 (192.168.20.1) eth2 (192.168.30.1) eth3 (192.168.40.1) Servidor padrão sem Network Bonding bond0 (192.168.10.1) eth0 eth1 eth2 eth3 Servidor padrão com Network Bonding
Um cenário real bond1 (192.168.20.1) eth0 eth1 eth2 eth3 eth11 eth9 eth10 eth4 eth5 eth6 eth7 eth8 DMZ#1 bond0 (200.10.20.30) bond2 (192.168.10.1) REDE INTERNA INTERNET
Hands On Como configurar o network bonding? Instalar pacote ifenslave... # apt-get install ifenslave-2.6 e editar o arquivo /etc/network/interfaces
Hands On Está funcionando?
E a redundância entre firewalls? T A G 192.168.10.254 (IP VIRTUAL) AY EW 192.168.20.X 192.168.20.254 (IP VIRTUAL) G E AT bond0 (192.168.10.2) bond1 (192.168.20.2) AY W G AY W E AT ethy 192.168.10.X AT EW AY bond1 (192.168.20.1) ethx G bond0 (192.168.10.1)
Qual é a nossa solução? KeepAlived http://www.keepalived.org; GNU General Public License; Presente nos repositórios da maioria das distribuições; Implementação livre do protocolo VRRPv2; Debian GNU/Linux, Ubuntu Linux, Fedora, Virtual Router Redundancy Protocol; Daemon do KeepAlived deve ser executado em todas as máquinas que fazem parte do cluster.
Configurando o KeepAlived Como sempre, o primeiro passo é instalar! # apt-get install keepalived Configurações do KeepAlived ficam no arquivo /etc/keepalived/keepalived.conf São declarados grupos de recursos que precisam estar em alta disponibilidade; Scripts customizados podem ser configurados para serem executados em mudanças... Transformação de um node em MASTER; Transformação de um node em SLAVE; Ocorrências de falhas.
keepalived.conf do MASTER Scripts customizados Recurso a ser mantido em HA Rotas adicionadas
keepalived.conf do SLAVE No caso do SLAVE, o valor do campo priority deve ser menor que o valor inserido no MASTER
E agora? Iniciando o KeepAlived em seus firewalls... /etc/init.d/keepalived start Assim que os daemons são inicializados, os firewalls já assumem a posição de MASTER e/ou SLAVE.
E agora? /var/log/syslog (MASTER)
E agora? /var/log/syslog (SLAVE)
IPs virtuais no firewall MASTER Comando ip addr show apresenta os IPs virtuais configurados no firewall MASTER
Alguns comentários... Scripts de regras entre ambos os firewalls precisam ser exatamente iguais... Caso contrário, chaveamento entre firewalls MASTER e SLAVE podem provocar problemas. Regras voltadas para as máquinas clientes devem sempre considerar os IPs virtuais; Isso torna o chaveamento entre MASTER e SLAVE transparente para todos os clientes da rede; IPs diretos devem ser utilizados apenas para regras referentes aos acessos dos próprios fw's
Alguns comentários... Atualizações devem ser síncronas entre ambos os firewalls!!! Caso contrário, um pode estar menos seguro que o outro! Esse é um risco silencioso! Existem boas alternativas para resolver... Cenário apresentado considera a utilização de regras convencionais; Sem o uso do recurso do iptables para gerar regras com base nos estados das conexões TCP; Se esse for o caso, é necessário acrescentar outro componente na estrutura: conntrackd.
The Future is Open... and Free!
Hora de terminar... # /etc/init.d/palestra stop
Obrigado!!! Email: jansen@jsena.info Site: http://www.jsena.info Twitter: @jansensena