Você está na página 1de 98

Proposta de Hardening em Conformidade com a ISO 27001

para um Firewall em Linux com Balanceamento de Carga


Dorival Moreira Machado Junior
Lavras
Minas Gerais - Brasil
2008
Dorival Moreira Machado Junior
Proposta de Hardening em Conformidade com a ISO 27001
para um Firewall em Linux com Balanceamento de Carga
Monografia de Ps-Graduao Lato Sensu
apresentada ao Departamento de Cincia da
Computao da Universidade Federal de Lavras,
para obteno do ttulo de Especialista em
Administrao em Redes Linux.
Orientador
Prof. Msc. Sandro Melo
Lavras
Minas Gerais - Brasil
2008
iii
Dorival Moreira Machado Junior
Proposta de Hardening em Conformidade com a ISO 27001
para um Firewall em Linux com Balanceamento de Carga
Monografia de Ps-Graduao Lato Sensu
apresentada ao Departamento de Cincia da
Computao da Universidade Federal de Lavras,
para obteno do ttulo de Especialista em
Administrao em Redes Linux.
Aprovada em 28 de setembro de 2008.
______________________________
Profa. Dra. Marluce Rodrigues Pereira
______________________________
Prof. Esp. Samuel Pereira Dias
______________________________
Prof. Msc. Sandro Melo
(orientador)
LAVRAS
MINAS GERAIS BRASIL
iv
v
Dedico esta monografia toda
minha famlia, em especial aos meus
pais, Dorival e Divina, minha
amada esposa Mrcia e ao meu filho
Giovanni.
vi
vii
Agradecimentos:
Agradeo a Deus que me proveu esta oportunidade de aprendizado, bem
como a inteligncia necessria para adquirir tal conhecimento.
Agradeo aos melhores pais do mundo, Dorival e Divina, pelo carinho,
incentivo e apoio contnuo aos estudos.
Agradeo minha esposa Mrcia pela pacincia e compreenso perante
minha ausncia e noites reduzidas de sono durante o perodo de curso, bem
como pelo seu amor e companheirismo.
Agradeo ao meu filho Giovanni pelos choros e pedido de ateno
exclusiva enquanto eu desenvolvia este trabalho, mas sobretudo pela alegria que
ele me proporciona.
Agradeo aos meus irmos Julio Cesar e Julio Henrique pela presena
familiar.
Agradeo aos professores da UFLA que transmitiram grande
conhecimentos na rea estudada.
Agradeo ao professor Sandro, que me conduziu no desenvolvimento
desta monografia, transmitindo seus conhecimentos em larga escala.
Agradeo aos novos amigos que surgiram devido a existncia deste
curso.
Agradeo Faculdade Libertas e a Contabilidade Dorival Machado,
instituies que abriram as portas para a aplicao prtica desta monografia.
viii
Sumrio
1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Motivao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Estado da arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Metodologia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4. Estrutura dos captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Fundamentao terica sobre tecnologia de Firewall . . . . . . . . . . . . . . 7
2.1 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Firewall para a camada sete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Balanceamento de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Iproute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Proposta de hardening para um sistema firewall baseado em Debian 14
3.1 Sobre a NBR ISO/IEC 27001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 O processo de hardening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Disposio regular das etapas do hardening . . . . . . . . . . . . . . . . . . 18
3.3.1 Controles da ISO 27001 inerentes poltica de segurana 19
3.3.2 Controles da ISO 27001 inerentes organizao da
segurana da informao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ix
3.3.3 Controles da ISO 27001 inerentes gesto de ativos . . . . 21
3.3.4 Controles da ISO 27001 inerentes segurana fsica . . . . 21
3.3.5 Controles da ISO 27001 inerentes ao gerenciamento das
operaes e comunicaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.6 Controles da ISO 27001 inerentes a proteo contra
cdigos maliciosos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.7 Controles da ISO 27001 inerentes a cpias de segurana 24
3.3.8 Controles da ISO 27001 inerentes a manuseio de mdias 25
3.3.9 Controles da ISO 27001 inerentes a monitoramento . . . . . 25
3.3.10 Controles da ISO 27001 inerentes ao gerenciamento de
acesso de usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.11 Controles da ISO 27001 inerentes a responsabilidade dos
usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.12 Controles da ISO 27001 inerentes ao controle de acesso
ao sistema operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.13 Controles da ISO 27001 inerentes a computao mvel e
trabalho e remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.14 Controles da ISO 27001 inerentes a aquisio,
desenvolvimento e manuteno de sistemas de informao . . . . 31
3.3.15 Controles da ISO 27001 inerentes a segurana dos
arquivos do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.16 Controles da ISO 27001 inerentes a gesto de incidentes
de segurana da informao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.17 Controles da ISO 27001 inerentes a gesto de
continuidade do negcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.18 Controles da ISO 27001 inerentes a conformidade . . . . .
34
3.3.19 Controles da ISO 27001 inerentes a auditoria de sistemas
de informao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
x
4 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1 Regras bsicas para roteamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Recursos de PAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 Recursos de bloqueio para rede externa . . . . . . . . . . . . . . . . . . . . . . 38
4.4 Recursos de excesso s regras . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5 Implementao da camada sete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6 Liberao de portas para repasse . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.7 Definio de ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.8 Proteo contra formas de ataque comum . . . . . . . . . . . . . . . . . . . . 41
4.9 Definio de portas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.10 Recursos de NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.11 Segregao de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.12 Demais regras inerentes realidade da empresa . . . . . . . . . . . . . . 43
5 Balanceamento de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.1 Deteco das conexes e regras existentes . . . . . . . . . . . . . . . . . . . . 45
5.2 Balanceamento entre as conexes de internet . . . . . . . . . . . . . . . . . 46
5.2.1 Arquivo rt_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.2 Rotas nas tabelas auxiliares . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.3 Rotas na tabela principal . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2.4 Regras de roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2.5 Verificao continuada do balanceamento . . . . . . . . . . . . 49
xi
6 Resultados obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.1 Resultados obtidos no caso A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2 Resultados obtidos no caso B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.1 Propostas de trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8 Referncias Bibliogrficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
9 Apndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
10 Anexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
xii
Lista de Figuras
Figura 1 firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Figura 2 ambiente com firewall recebendo dois link externos . . . . . . . . . . . . . . . . . . . . 9
Figura 3 arquivo /etc/iproute2/rt_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figura 4 linha cronolgica do padro ISO 27000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Figura 5 modelo PDCA de acordo com (ISO 27001,2006) . . . . . . . . . . . . . . . . . . . . . . 17
Figura 6 trecho do arquivo /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figura 7 trecho de monitoramento registrado pelo Snoopy Logger . . . . . . . . . . . 25
Figura 8 - linhas inseridas no squid.conf para gerao do LOG personalizado . . . . . . . 25
Figura 9 - trecho de LOG personalizado gerado pelo Squid . . . . . . . . . . . . . . . . . . . . . 25
Figura 10 - trecho do arquivo /etc/pam.d/su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Figura 11 - trecho do arquivo /etc/pam.d/login . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Figura 12 - trecho do arquivo /etc/pam.d/time.conf . . . . . . . . . . . . . . . . . . . . . 27
Figura 13 - trecho do /etc/passwd onde apenas root e usurio estratgico possuem
um shell vlido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 14 - trecho do arquivo /etc/adduser.conf definindo um caminho
invalido de shell para novos usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 15 - trecho do arquivo /etc/inittab referente a desabilitao do
CTRL+ALT+DEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Figura 16 - techo do arquivo /etc/ssh/sshd_config referente a desabilitao de login
remoto do root e alterao da porta ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Figura 17 - arquivo /etc/apt/sources.list com repositrios oficiais Debian. . 31
Figura 18 - poltica restritiva no Iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Figura 19 - utilizao comparativa de SNAT e MASQUERADE . . . . . . . . . . . . . . . . . . 41
Figura 20 - modelo de segregao de rede em ambiente com muitos servios ou
usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Figura 21 - arquivo rt_tables recriado com duas tabelas auxiliares . . . . . . . . . . . . . 46
Figura 22 - sada do comando ip show table velox e descrio de resultado . . 46
Figura 23 - sada do comando ip route show table main . . . . . . . . . . . . . . . . 47
Figura 24 - sada do comando ip rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Figura 25 - agendamento do Apndice D atravs do cron . . . . . . . . . . . . . . . . . . . . . . . 49
Figura 26 trecho do /var/log/message com resultados de execuo do
Apndice D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
xiii
Lista de Tabelas
Tabela 1 - aes realizadas pelo iptables . . . . . . . . . . . . . . . . . . . . . . . . 11
Tabela 2 - objetos de configurao do comando ip . . . . . . . . . . . . . . . . . . 12
Tabela 3 - comparao e descrio de contedos das normas ISO e BS. 15
Tabela 4 - descrio das etapas do modelo PDCA da ISO 27001. . . . . . 17
Tabela 5 - proposta de ordem lgica para realizao das etapas do
hardening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Tabela 6 - procedimentos para controle de reforo no acesso ao sistema
operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
xiv
Lista de Abreviaes e Siglas
ABNT Associao Brasileira de Normas Tcnicas
BS British Standard
CB-21 Comit Brasileiro de Computadores e Processamento de Dados
CBQ Class Based Queueing
HTTP Hipertext Transfer Protocol
HTTPS - HyperText Transfer Protocol Secure
IEC - International Electrotechnical Commission
IP Internet Protocol
ISO - International Organization for Standardization
NAT Network Address Translation
NBR Norma brasileira
OSI Open Systems Interconnection
PAT Port Address Translation
SARG - Squid Analisys Report Generator
TCP Transmission Control Protocol
xv
Resumo
Esta monografia apresenta os requisitos bem como as sugestes de
implementao para possibilitar ao computador destinado funo de firewall,
uma adequao norma ABNT NBR ISO/IEC 27001, garantindo assim uma
melhoria significativa no quesito segurana da informao. apresentado uma
implementao de modelo de regras de firewall em conformidade com a mesma
norma, utilizando-se de script afim de automatizar o processo. Por fim so
apresentados os recursos necessrios para implementao de um balanceamento
de carga com dois link externos, assim como a sugesto de implementao
prtica.
Palavras-chave: ISO 27001, hardening, firewall, balanceamento de
carga, debian.
xvi
Captulo 1
Introduo
A informao sempre foi inerente ao ser humano, ou seja, desde o seu
nascimento ele tende a absorver todas as informaes possveis ao seu redor.
Durante sua vida, passando por escolas, cursos ou a prpria convivncia em seu
grupo, ele adquire conhecimentos mesmo que involuntariamente.
Na atualidade, o interesse pelo fator informao passou a ter um
aumento exponencial. O principal motivo que levou a esse aumento, a
conscientizao do ser humano de que informao poder, ou seja, atravs da
informao, pode-se levar uma instituio ao sucesso ou fracasso. Esta
atualidade, tambm pode ser conhecida como sociedade da informao, ou
seja, um ambiente com grande excesso de informaes disponveis, juntamente
com a necessidade do ser humano em adquir-las.
Devido ao avano das tecnologias de comunicao, o ambiente de
negcios mundial cada vez mais interconectado. Em contrapartida, as ameaas
virtuais e reais tambm avanam, possibilitando o roubo ou extravio de
informaes, seja partindo de um ataque externo ou interno a uma organizao.
O fato que possivelmente as informaes da organizao, sendo ento um dos
principais ativos, estaro vulnerveis.
1
1.1. Objetivo
Esta monografia tem por objetivo apresentar uma proposta de ajuste fino
em uma mquina firewall, buscando uma conformidade com a norma ABNT
NBR ISO/IEC 27001. Inclui-se neste ajuste, uma proposta de implementao das
regras de firewall bem como um balanceamento de carga entre duas conexes
externas.
1.2. Motivao
No ambiente empresarial, o acesso irrestrito a internet, com livre
navegao, ferramentas ponto-a-ponto e mensageiros instantneos, geram
problemas de consumo de banda, alm de estar utilizando os equipamentos para
outras finalidades no condizentes com os interesses da empresa.
Esta conduta permite a possibilidade de brechas na segurana do
ambiente, e consequentemente o comprometimento das informaes importantes
ento armazenadas. Assim, motivado um refinamento da segurana da
mquina que porta de entrada para a rede interna, bem como a implementao
segura das regras de controle de trfego.
A instabilidade de sinais de internet via rdio, ou a possibilidade de falha
tcnica em outros meios de transmisso como cabeamento, faz com que
empresas utilizem uma segunda conexo como forma de contingncia, afim de
garantir a produtividade contnua do negcio. Esse fator motiva a implementao
de um balanceamento de carga, utilizando ambas as conexes de forma
simultnea.
2
1.3. Estado da arte
O servio de firewall e balanceamento de carga pode ser feito atualmente
atravs de vrias distribuies Linux, como as primrias: Debian, Red Hat e
Slackware, bem como as secundarias ou fork: CentOS, Coyote Linux,
Ubuntu, OpenSUSE, Fedora, entre outras. Todas estas utilizando
ferramentas idnticas ou similares as quais so sugeridas nesta monografia.
O Debian foi a distribuio escolhida para esta monografia
primeiramente pelo fato de possuir um maior know how, diante das demais
distribuies. Porm outros fatores tambm foram levados em considerao,
como por exemplo a presena no ambiente empresarial.
Esta distribuio se mantm estvel, com lanamento frequente de
pacotes de atualizao (DEBIAN, 2008), mantendo o sistema sempre atualizado
no quesito segurana. Em seu todo, o Debian uma distribuio robusta,
porm como todo bom sistema, requer um procedimento de refinamento e ajuste
da segurana, uma vez que as tcnicas de invaso so cada vez mais
diversificadas. Este refinamento, tambm conhecido tecnicamente como
hardening, proposto obsevando os controles descritos na norma ABNT NBR
ISO/IEC 27002. Esta norma um dos documentos da Associao Brasileira de
Normas Tcnicas, que compem a srie 27000, a qual trata especificamente
sobre segurana da informao. A norma aplicvel para todo o ambiente
computacional de uma organizao, desde as instalaes fsicas como
cabeamentos, at detalhes em nvel de software.
A implementao das regras de firewall sugerida atravs da ferramenta
iptables, devido a sua utilizao na maioria das distribuies Linux
conhecidas.
A ferramenta route, encontrada na maioria das distribuies,
3
utilizada para definir a tabela de roteamento, porm no prov opes para
balanceamento de carga. Por esta razo, proposto a implementao da tabela de
roteamento utilizando a ferramenta iproute, a qual substitui plenamente a
ferramenta route, alm de prover as opes necessrios para habilitar o
balanceamento de carga.
1.4. Metodologia
Afim de observar o funcionamento e resultados finais em um ambiente
real, duas empresas permitiram a implementao dos controles descritos nesta
monografia, permitindo ainda a publicao dos resultados obtidos conforme as
autorizaes Anexo A e B.
A empresa CONTABILIDADE DORIVAL MACHADO E FILHOS
possui uma rede com aproximadamente vinte computadores, entre terminais,
servidor de dados e uma mquina especfica para firewall. Este ambiente possui
ainda duas conexes externas de internet com provedores diferentes, sendo a
utilizao de link alternada manualmente, deixando sempre uma das conexes
ociosa. Este ambiente passa a ser denominado caso A.
A instituio FUNDAO EDUCACIONAL COMUNITRIA DE
SO SEBASTIO DO PARASO (LIBERTAS FACULDADES
INTEGRADAS), possui uma rede com aproximadamente duzentos e cinquenta
computadores, incluindo servidores de dados e uma mquina especfica para
firewall. Este ambiente passa a ser denominado como caso B.
No cenrio inicial em ambos os casos, a mquina firewall era
4
administrada de forma terceirizada pela prpria empresa provedora de internet.
Desta forma no se tinha um controle total das regras de firewall implementadas.
Outro fator relevante que no havia nenhum procedimento de hardening
realizado, estando os sistemas operacionais e aplicaes instalados de forma
padro, sem qualquer proteo adicional em se falando de segurana da
informao.
1.5. Estrutura dos captulos
O captulo 2 objetiva fundamentar teoricamente sobre as tecnologias de
firewall que envolvem esta monografia, descrevendo conceitos, tipos de firewall,
utilizao de firewall na camada de aplicao, alm de detalhar um pouco sobre
ferramentas utilizadas como iptables e iproute.
O captulo 3 descreve o foco principal deste trabalho que uma proposta
de hardening baseado na norma ABNT NBR ISO/IEC 27002 para mquina
firewall utilizando na distribuio linux Debian. So descritas ainda as
propostas de implementao para adequao norma, bem como uma sugesto
de uma tabela de disposio regular, ou seja, uma ordem lgica para
implementao dos controles.
O captulo 4 refere-se exclusivamente sobre as regras de firewall
implementadas atravs de iptables, observando tambm a conformidade com
a norma citada.
O captulo 5 descreve uma proposta de balanceamento de carga para um
ambiente onde se tem duas conexes externas de internet que chegam a um
mesmo firewall, o qual faz a ligao com a rede interna.
5
O captulo 6 apresenta resultados obtidos com a implementao desta
monografia em dois ambientes reais, sendo cada um, uma realidade empresarial
diferente.
O captulo 7 a concluso final deste trabalho, descrevendo os
resultados obtidos e propondo trabalhos futuros a serem iniciados a partir desta
monografia.
6
Captulo 2
Fundamentao terica sobre
tecnologia de Firewall
2.1. Firewall
O Termo Firewall refere-se a um ponto de controle de segurana na
fronteira entre duas redes (PALU, 2005). Este controle permite inspecionar o
trfego entre as redes, bloqueando ou aceitando os pacotes de acordo com as
regras previamente implementadas por alguma ferramenta (Figura 1).
A implementao destas regras pode ser feita por vrias ferramentas,
dentre elas o IPFW e PFsense no FreeBSD, Packet Filter no
OpenBSD e Netfilter no Linux. Esta ltima, atravs da interface
iptables, objeto de estudo desta monografia.
Existem dois tipos de firewall (TLDP, 2000):
filtro de pacotes: Cada pacote filtrado atravs de informaes como o
tipo de protocolo, endereo de destino ou origem e portas. Esta filtragem
feita atravs de regras que podem definir um ou mais quesitos ao mesmo
tempo, como por exemplo porta e IP de destino.
servidor de proxy: O proxy um intermediador de conexes sendo a forma
mais utilizada o proxy para conexes HTTP. O software faz armazenamento
temporrio dos dados acessados e sua principal vantagem a melhoria de
velocidade devido a amenizao de trfego dos acessos internet
(FERREIRA, 2003). As requisies vindas da rede interna, na maioria das
7
vezes so satisfeitas com os dados j armazenados no servidor proxy,
liberando a banda externa para requisies de sites ainda no armazenados
ou outros servios que no utilizem proxy.
Figura 1: firewall
2.2. Firewall para a camada sete
A camada sete refere-se camada de aplicao do modelo OSI, que
8
corresponde camada quatro do modelo TCP/IP, tratando diretamente o
contedo dos pacotes. Com o firewall atuando tambm nesta camada, possvel
por exemplo bloquear aplicaes difceis de se controlar via IP ou porta, como
o caso do mensageiro instantneo MSN.
Existem vrias ferramentas para esta finalidade como o IPP2P,
Ourmon, HiPPIE e o L7-Filter, sendo este ltimo utilizado nesta
monografia.
O L7-Filter um classificador instalado atravs de um patch ao
Iptables, funcionando como um mdulo extra para tratamento da camada de
aplicao quando invocado em alguma regra de filtragem (L7-FILTER, 2008).
2.3. Balanceamento de carga
possvel fazer o balanceamento de carga de uma banda de conexo,
definindo a quantidade utilizada por cada mquina. Esta forma muito utilizada
em provedores de internet que atravs de ferramentas CBQ, definem a
quantidade de bits por segundo que liberada para cada cliente. Tambm pode
ser utilizada dentro de uma organizao afim de definir prioridades de uso para
navegao, transferncia de arquivos, entre outros fatores.
Existe a situao em que a mquina firewall possui mais de um link de
sada para a internet, e deseja balancear o seu uso para as mquinas da rede
interna, situao a qual abordada nesta monografia conforme a Figura 2. Neste
caso o balanceamento feito nas requisies dos usurios para a rede externa,
fazendo com que sejam utilizados todos os link, sem sobrecarga a nenhum deles.
Um recurso adicional que pode-se definir que requisies de uma mquina
especfica saia por determinado link, utilizando para isso o comando ip rule.
9
Este recurso til para uso, durante perodos de manuteno de um dos link.
Outro recurso que deve estar presente em um ambiente com
balanceamento, que um link venha a assumir totalmente o trfego caso outros
venham a falhar.
Figura 2: ambiente com firewall recebendo dois link externos
10
2.4. Iptables
O netfilter uma ferramenta de filtragem de pacotes incluso na
srie de kernel 2.4 e 2.6 do Linux (NETFILTER, 2008). A configurao do
netfilter feita atravs de uma interface de camada de usurio
denominada Iptables. Por esta ferramenta define-se as regras de bloqueio e
liberao dos pacotes que passam pela mquina. de praxe que a
implementao destas regras seja feita por meio de um script afim de recuper-
las durante o reincio do sistema ou quando necessrio.
O Iptables trabalha com trs tabelas chamadas filter, NAT e mangle,
sendo a primeira a tabela padro (PALU, 2005).
A tabela filter refere-se a filtragem padro, contendo as chains INPUT,
OUTPUT e FORWARD, correspondendo respectivamente a entrada de pacotes
na prpria mquina, sada de pacotes da prpria mquina e repasse de pacotes
para outras mquinas.
A tabela NAT, refere-se a traduo de endereos de uma rede para outra,
contendo as chains PREROUTING, POSTROUTING e OUTPUT. A chain
PREROUTING corresponde a alteraes nos pacotes vindos de uma rede antes
do roteamento para outra rede. A chain POSTROUTING corresponde a
alteraes nos pacotes vindos de uma rede e j roteados e prontos para sarem
para outra rede. Por fim a chain OUTPUT, corresponde a sada de pacotes da
prpria mquina e que precisam de alguma alterao antes desta sada.
Por fim, a tabela mangle refere-se a alteraes especiais nos pacotes para
ento repass-los.
A tabela 1 demonstra as aes que so realizadas sobre os pacotes que
atendem a uma determinada regra (FREITAS 2002).
11
Tabela 1: aes realizadas pelo iptables
Nome Descrio
ACCEPT Aceite do pacote
DROP Negao do pacote
REJECT Rejeio do pacote, gerando um pacote de resposta
MASQUERADE Converso de endereo
LOG Regisro de LOG da passagem por uma regra
SNAT Alterao do endereo de origem
DNAT Alterao do endereo de destino
2.5. Iproute
O pacote iproute realiza vrias funes em relao a configurao de
redes, substituindo comandos como arp, ifconfig e route (LOUREIRO
2004) e permitindo assim a visualizao e manipulao de rotas e dispositivos de
rede.
O comando ip, pertencente ao pacote iproute, quem traz estas
funcionalidades (FREITAS, 2002), passando argumentos apropriados para os
objetos conforme descrio na tabela 2.
Dentre as funcionalidades do iproute, est a criao de vrias tabelas
de roteamento, as quais so denominadas no arquivo
/etc/iproute2/rt_tables. Estas tabelas recebem um identificador
(ID) que vai de 0 a 255, sendo que 0 e 253 a 255 so identificadores reservados
para o sistema (LOUREIRO, 2004), fincando o restante livre para criao de
novas tabelas, conforme ilustrado na Figura 3. Aps criadas as novas tabelas,
ainda devero ser adicionados atravs do comando ip route, os roteamentos
para as redes existentes. Por fim estas tabelas devem ser referenciadas por
12
alguma regra atravs do comando ip rule, caso contrrio no podero fazer
nenhum efeito no sistema. Este ltimo comando quem define por qual tabela
de roteamento os pacotes devero passar.
Tabela 2: objetos de configurao do comando ip
Objeto Descrio
link interface fsica
addr endereo lgico
route roteamento
maddr endereo lgico de multicast
mroute roteamento multicast
tunnel tnel de protocolo
neigh tabela ARP
rule regras de roteamento
monitor monitorao dos demais objetos
255 local
254 main
253 default
202 rota2
201 rota1
Figura 3: arquivo /etc/iproute2/rt_tables
13
Captulo 3
Proposta de hardening para um
sistema firewall baseado em Debian
3.1. Sobre a famlia de regras ABNT NBR ISO/IEC 27000
O primeiro padro de segurana da informao do qual originou todos os
demais, o BS 7799, estando divido em duas partes.
A primeira parte com nome de BS 7799-1 e denominao Cdigo de
prtica para gerenciamento de segurana da informao foi criada em 1995, e
tinha por objetivo estabelecer um conjunto detalhado dos controles para
gerenciamento da segurana da informao. Devido a sua eficincia e trabalho
similar certificao ISO, em 2000 torno-se o padro ISO 17799
[KNOWLEDGELEADER, 2003]. Finalmente em 2005 a ISO 17799 tornou-se a
ISO 27002, ento traduzida e publicada pela ABNT atravs da norma NBR ISO/
IEC 27002. De acordo com (ABNT, 2008), o contedo tcnico da NBR ISO/IEC
17799 idntico ao da NBR ISO/IEC 27002, tendo sido alterado apenas a
numerao da srie. Uma comparao e descrio de contedos demonstrado
na tabela 3.
A NBR ISO/IEC 27002 um cdigo de prtica, que descreve controles e
objetivos de controles para a gesto de segurana da informao. o documento
utilizado por uma instituio com o intuito de buscar conformidade com a ISO
no quesito segurana da informao.
A segunda parte com nome de BS 7799-2 e denominao
14
Especificaes para gerenciamento de sistemas de segurana da informao
foi criada em 2002, e tinha por objetivo um gerenciamento do sistema de
segurana da informao proposto na BS 7799-1 (ISO 17799). Em 2005 tornou-
se o padro ISO 27001 (KNOWLEDGELEADER, 2003), traduzido e publicado
pela ABNT atravs da norma NBR ISO/IEC 27001. Esta tem por objetivo:
(...) prover um modelo para estabelecer, implementar, operar,
monitorar, analisar criticamente, manter e melhorar um Sistema
de Gesto de Segurana da Informao. (ISO 27001, 2006).
Os objetivos de controle e controles descritos na ABNT NBR ISO/IEC
27001, so derivados diretamente da ABNT NBR ISO/IEC 27002. Assim, a
norma ABNT NBR ISO/IEC 27001 o documento utilizado por um auditor afim
de comprovar os controles da NBR ISO/IEC 27002 implementados em uma
instituio, a qual tem por objetivo a certificao ISO 27001.
Em 2005 surge a BS7799-3 (STANDARDS, 2005) com denominao
Guia para gerenciamento de riscos em segurana da informao, a qual em
2008 tornou-se ISO 27005 (ISO, 2008), publicada pela ABNT atravs da NBR
ISO/IEC 27005.
Segundo (ISO, 2008), em 2007 surgiu o padro ISO 27006 denominado
Exigncias para os corpos que fornecem o exame e a certificao de sistemas
de gesto da segurana da informao, sendo destinado empresas que
fornecem certificao em segurana da informao, porm no o foco desta
monografia.
Toda esta linha cronolgica pode ser melhor visualizada atravs da
Figura 4.
15
Tabela 3: comparao e descrio de contedos das normas ISO e BS
Norma ISO Descrio Equivalncia
com norma BS
ISO 27002
Cdigo de prtica para a gesto da segurana da
informao
BS 7799-1
(ISO 17799)
ISO 27001
Sistemas de gesto de segurana da informao -
Requisitos
BS 7799-2
ISO 27005
Gesto de riscos de segurana da informao
BS 7799-3
ISO 27006
Exigncias para os corpos que fornecem o exame e a
certificao de sistemas de gesto da segurana da
informao
no tem
Figura 4: linha cronolgica do padro ISO 27000
No Brasil, a srie 27000 da ISO, o nico padro de segurana da
informao encontrado, motivando assim a adoo desta norma para a
16
Linha de tempo
1995
BS 7799-1
2008 2000
ISO 17799
2005
ISO 27002
2002
BS 7799-2
ISO 27001
BS 7799-3 ISO 27005
ISO 27006
2007
implementao desta monografia, observando os controles descritos na ABNT
NBR ISO/IEC 27002, para adequao com a ABNT NBR ISO/IEC 27001, de
agora em diante referenciada pelo nome ISO 27001.
3.2. O processo de hardening
Para estabelecer a conformidade com a ISO 27001, este documento
prope um processo de hardening, ou seja, um refinamento do sistema,
observando os requisitos propostos pela norma. Este procedimento embasado
tambm no princpio do menor privilgio (SALTZER, 1975).
Menor privilgio: cada programa e cada usurio do sistema
deve operar usando o menor conjunto de privilgios
necessrios para completar uma operao. (SALTZER, 1975)
Nem todos os os controles apresentados na ISO 27001 so aplicveis
especificamente mquina firewall, assim esta monografia busca atender
somente os controles inerentes ao hardening desta mquina.
Para que estes controles funcionem adequadamente, necessrio um
processo contnuo de verificao das implementaes de controle realizadas.
Este processo denominado na prpria norma como PDCA (Figura 5) sendo
composto de um crculo contnuo das etapas descritas na tabela 4 (ISO27001,
2006).
A atuao desta proposta de hardening est na camada de usurio,
tecnicamente conhecida como userland, estando passvel de uma falha atravs do
ID 0, ou seja, quando o usurio consegue nvel privilegiado, passando ento a
17
atuar como root. Esta falha pode ser corrigida atuando em nvel de kernel, o
qual no o foco desta monografia.
Tabela 4: descrio das etapas do modelo PDCA da ISO 27001
Etapa Descrio
Plan (planejar) Estabelecer a poltica, procedimentos, processos e objetivos
Do (fazer) Implementar o que foi planejado
Check (checar) Avaliar a implementao executada,
Act (agir) Manter e melhorar a segurana baseando-se na checagem anterior,
executando aes corretivas e preventivas quando necessrio
Figura 5: modelo PDCA de acordo com a ISO 27001
3.3. Disposio regular das etapas do hardening
Para fins de organizao lgica da implementao dos controles
sugeridos na ISO 27001, esta monografia estabelece uma linha de base (tabela 5)
para servir como referncia de disposio regular, isto , uma ordem adequada
de implementao dos controles que sero descritos frente.
18
Esta tabela tem como referncia o modelo proposto pelo Mitre (MITRE,
2008) para organizar cronologicamente os procedimentos do Guia para
configurao segura de Red Hat Enterprise Linux 5 (NSA, 2008) da Agncia
Nacional de Segurana dos Estados Unidos da Amrica.
3.3.1 Controles da ISO 27001 inerentes poltica de segurana
Toda a implementao de controles, deve integrar a documentao da
poltica de segurana, a qual deve ser aprovada pela direo e levada ao
conhecimento das pessoas envolvidas, com excesso de detalhes tcnicos como
nome de ferramentas utilizadas ou outra informao que favorea um possvel
ataque por engenharia social.
Desta forma, faz se atender ao tem A.5.1.1 Documentao da poltica
de segurana da informao.
Dever ainda, ser realizada uma anlise crtica dos controles
implementados em intervalos planejados. Este procedimento deve ser feito pelo
proprietrio da mquina firewall, bem como em um processo de auditoria. Isso
se faz necessrio para assegurar a contnua eficcia do sistema de segurana da
informao, atendendo assim o tem A.5.1.2 Anlise crtica da poltica de
segurana da informao.
19
Tabela 5: proposta de ordem lgica para realizao das etapas do hardening
rea de atuao Controle recomendado
pela ISO 27001
(tem)
Procedimento prtico
sugerido nesta proposta
(tem)
Segurana fsica A.9.1.1
A.9.1.6
A.9.2.1
A.9.2.2
A.9.2.3
3.3.4
Manuseio de mdias A.10.7.1 3.3.8
Responsabilidade de usurios A.11.3 3.3.11
Gesto de ativos A.7.1 3.3.3
Aquisio, desenvolvimento e
manuteno de sistemas de informao
A.12.1.1
A.12.4.1
3.3.14
Gerenciamento de acesso do usurio A.11.3 3.3.10
Acesso ao sistema operacional A.11.2 3.3.12
Trabalho Remoto A.11.7 3.3.13
Monitoramento A.10.10.1
A.10.10.2
A.10.10.3
A.10.10.4
A.10.10.5
A.10.10.6
3.3.9
Cpia de segurana A.10.5.1 3.3.7
Gesto de incidentes de segurana da
informao
A.13.1.1
A.13.1.2
A.13.2
3.3.16
Gesto de continuidade de negcios A.14 3.3.17
Segurana dos arquivos do sistema A.12.4.1 3.3.15
Proteo contra cdigos maliciosos A.10.4.1 3.3.6
Gerenciamento das operaes de
comunicaes
A.10.1.1 3.3.5
Conformidade A.15.1 3.3.18
Auditoria de sistemas de informao A.15.3 3.3.19
Poltica de segurana A.5.1.1
A.5.1.2
3.3.1
Organizao da segurana da informao A.6.1.1
A.6.1.3
3.3.2
20
3.3.2 Controles da ISO 27001 inerentes organizao da segurana
da informao
A Direo deve apoiar ativamente a segurana da informao,
demonstrando de forma clara o seu comprometimento atravs de documento
assinado e anexado poltica de segurana, atendendo assim o tem A.6.1.1
Comprometimento da direo com a segurana da informao.
A responsabilidade da segurana da informao perante a mquina
firewall, deve ser do usurio proprietrio. Essa informao deve estar disposta
claramente no documento da poltica de segurana. Desta forma atendido o
tem A.6.1.3 Atribuio de responsabilidades para a segurana da informao.
3.3.3 Controles da ISO 27001 inerentes gesto de ativos
Alm do inventrio da mquina firewall e perifricos necessrios para o
seu funcionamento, deve-se estabelecer o proprietrio, ou seja, a pessoa com
responsabilidade pelo equipamento.
Deve-se estabelecer tambm, o uso aceitvel do equipamento por parte
do proprietrio, isto , definir de forma clara a utilizao a que se destina a
mquina firewall, no podendo ser utilizada para outra finalidade. Desta forma,
atendido o tem A.7.1 Responsabilidade pelos ativos.
3.3.4 Controles da ISO 27001 inerentes segurana fsica
O equipamento deve estar em um permetro de segurana pr-
estabelecido, sem acesso direto ao pblico, atendendo assim os tem A.9.1.1
21
Segurana fsica e do ambiente e A.9.1.6 Acesso do pblico.
O permetro de segurana pr-estabelecido, deve ser um local protegido
de possveis ameaas do meio ambiente, proteo contra falta de eletricidade
atravs do uso nobreak, cabeamento protegido contra interceptaes utilizando
condutes metlicos. Por fim evitar ao mximo oportunidades de acesso de
pessoas no autorizadas, atendendo assim os tens A.9.2.1 Instalao e proteo
do equipamento, A9.2.2 Utilidades e A.9.2.3 Segurana do cabeamento.
3.3.5. Controles da ISO 27001 inerentes ao gerenciamento das
operaes e comunicaes
Os procedimentos de operao, administrao e uso da mquina firewall,
devem ser documentados e atualizados sempre que necessrio, sendo assim
disponveis quando necessrio. O proprietrio deve estabelecer uma poltica de
uso com instrues tcnicas de uso do equipamento, bem como um histrico de
aes relevantes j realizadas, como alterao de IPs, portas, manuteno ou
troca de componentes fsicos da mquina, entre outros. Desta forma atende-se o
tem A.10.1.1 Documentao dos procedimentos de operao.
3.3.6. Controles da ISO 27001 inerentes a proteo contra cdigos
maliciosos
A insero de cdigos maliciosos um dos recursos utilizados pelo
potencial invasor, afim de garantir futuros acessos ao sistema. Pode ser feito de
vrias formas, sendo um exemplo a utilizao rootkits, que so verses alteradas
22
de programas convencionais, os quais propiciam ao usurio, privilgios de root
(TEIXEIRA, 2005).
O invasor pode aproveitar-se ainda do recurso de set user id (Suid Bit), o
qual faz com que um programa seja executado com permisso do seu dono ao
invs do usurio ativo, procurando ento arquivos estratgicos do sistema como
um bash por exemplo (MELO, 2006). Como esta norma embasa-se no
conceito de menor privilgio, no interessante manter arquivos com suidbit no
sistema.
Outro recurso muito eficiente utilizador pelo potencial invasor, a
permisso na partio para executar arquivos binrios ou scripts executveis,
possibilitando ao mesmo executar qualquer aplicao do sistema ou inserida por
ele mesmo.
Este problema pode ser eliminado pela raiz, atravs da implementao
segura do arquivo /etc/fstab (Figura 6).
/dev/hda1 /boot ext3 defaults,nosuid 0 2
/dev/hda3 /home ext3 defaults,nosuid,noexec 0 2
/dev/hda5 /var ext3 defaults,nosuid,noexec 0 2
/dev/hda7 /tmp ext3 defaults,nosuid,noexec 0 2
Figura 6: trecho do arquivo /etc/fstab
Convm ainda a implantao de um controle de integridade dos
arquivos, afim de prevenir a insero de cdigos maliciosos, seja por alterao
de arquivos j existentes no sistema, bem como a instalao de novas aplicaes.
Este controle de integridade pode ser feito por ferramentas como AIDE,
Osiris, Tripwire, Integrit entre outras.
Atravs de agendamento pelo cron, esta proposta sugere uma
verificao diria na mquina firewall, sugerindo ainda a utilizao da
23
ferramenta Osiris. Conforme anlise de (DOMINGUES, 2003), o qual faz
uma comparao entre as quatro ferramentas de integridade citadas, o Osiris
recomendado para situaes onde necessrio a verificao de integridade de
arquivos de forma rpida, enquadrando-se bem no caso de verificao diria,
afim de no comprometer o desempenho da mquina. O Osiris tem ainda a
vantagem de funcionar em modo cliente servidor, onde a verificao pode partir
de outra mquina habilitada para tal finalidade.
Por fim, ainda sugerido a utilizao da ferramenta chkrootkit, a
qual uma aplicao exclusivamente para detecco de rootkits instalados na
mquina. Esta ferramenta pode ser utilizada a intervalos regulares, bem como
em um processo de auditoria a ser descrito mais adiante.
Este conjunto de procedimentos possibilitam atender ao tem A.10.4.1
Controle contra cdigos maliciosos.
3.3.7. Controles da ISO 27001 inerentes a cpias de segurana
Deve ser realizado uma cpia de segurana dos arquivos de configurao
afim de garantir uma restaurao rpida em caso de no disponibilidade do
equipamento.
A utilizao de um script de automao para este procedimento
conforme sugerido atravs do Apndice E, agiliza o trabalho e impede falha
humana. importante lembrar que devem ser previamente geradas as chaves de
ssh para que o script realize a operao sem interferncia humana.
Uma vez copiado o arquivo de backup para a outra mquina ainda dentro
da instituio, cabe ao administrador da redes providenciar o transporte fsico do
mesmo para outra localidade fora da instituio. Desta forma atende-se o tem
24
A.10.5.1 Cpias de segurana das informaes.
3.3.8. Controles da ISO 27001 inerentes a manuseio de mdias
A utilizao de mdias removveis em mquinas firewall desnecessrio.
Assim, convm desabilitar totalmente o acesso por mdias removveis como
entradas USB, drive de disquete e CD, ou similares. Esse procedimento pode ser
realizado atravs da desconexo fsica dos dispositivos ou atravs de opes de
inicializao da placa me. Desta forma, atendido o tem A.10.7.1
Gerenciamento de mdias removveis.
importante saber que para adotar o procedimento de interferncia
fsica, a mquina j deve estar inventariada e com proprietrio definido para
realizar tal operao.
3.3.9. Controles da ISO 27001 inerentes a monitoramento
O monitoramento um recurso fundamental o qual auxilia muito o
administrador de redes na identificao e resoluo de problemas. Deve ser
realizado um registro de LOG da utilizao da mquina, alm de registro dos
dados que por ela passam.
Para monitorar o uso da prpria mquina firewall, sugere-se o uso da
Snoopy Logger, que registra todos os comandos executados seja pelo root
como por todos os demais usurios habilitados no sistema (Figura 7). Esta
ferramenta em conjunto com o syslog, o qual parte integrante da instalao
padro do Debian, possibilitam uma boa cobertura de tudo o que feito na
mquina. Pode-se optar por outras ferramentas de LOG de preferncia, desde
que estas possibilitem um registro de LOG ntegro.
25
Jul 11 00:05:05 dorival-firewall snoopy[4651]: [unknown, uid:0 sid:4619]: ip rule
Jul 11 00:05:05 dorival-firewall snoopy[4654]: [unknown, uid:0 sid:4619]: ip rule
Jul 11 00:05:05 dorival-firewall snoopy[4655]: [unknown, uid:0 sid:4619]: grep 189.43.151.19
Jul 11 00:05:05 dorival-firewall CRON[4617]: (pam_unix) session closed for user root
Jul 11 00:05:56 dorival-firewall snoopy[4656]: [djunior, uid:0 sid:4359]: ls --color=auto -lh
Jul 11 00:06:06 dorival-firewall snoopy[4657]: [djunior, uid:0 sid:4359]: md5sum squid.conf.old
Jul 11 00:06:14 dorival-firewall su[4503]: (pam_unix) session closed for user root
Jul 11 00:06:15 dorival-firewall sshd[4358]: (pam_unix) session closed for user djunior
Jul 11 00:07:09 dorival-firewall snoopy[4659]: [djunior, uid:0 sid:32332]: cat /var/log/auth.log
Jul 11 00:07:20 dorival-firewall snoopy[4660]: [djunior, uid:0 sid:32332]: tail /var/log/auth.log
Figura 7: trecho de monitoramento registrado pelo Snoopy Logger.
Para monitorar os dados que passam pela mquina, prope-se utilizar o
Squid auxiliado pelo SARG, pelo fato da mquina em questo ser um proxy
transparente. Assim, atravs da personalizao da sada do LOG arquivo de
configurao do Squid (Figura 8), definido o registro de apenas informaes
relevantes para a empresa (Figura 9).
logformat MEU_LOG %tl | %>a | %Ss | %<A | %ru %rm | %Hs
cache_access_log /var/log/squid/gerencia.log MEU_LOG
Figura 8: linhas inseridas no squid.conf para gerao do LOG personalizado
10/Jul/2008:23:55:12 -0300 | 192.168.100.97 | TCP_MISS | 161.148.231.100 |
http://www.receita.fazenda.gov.br/ GET | 200
10/Jul/2008:23:55:13 -0300 | 192.168.100.97 | TCP_REFRESH_MISS | 161.148.231.100 |
http://www.receita.fazenda.gov.br/js/SRFMenu.js GET | 200
10/Jul/2008:23:55:15 -0300 | 192.168.100.97 | TCP_MEM_HIT | - |
http://www.terra.com.br/favicon.ico GET | 200
Figura 9: trecho de LOG personalizado gerado pelo Squid
Implementando todos estes monitoramentos atende-se aos tens
A.10.10.1 Registros de auditoria, A.10.10.2 Monitoramento do uso do
sistema e A.10.10.4 Registros de administrador e operador e A.10.10.5
Registros de falhas.
26
O tem A.10.10.3 Proteo das informaes dos registros atendido
atravs da utilizao do Osiris como controle de integridade de arquivo.
Ainda na questo do monitoramento, necessrio uma sincronizao de
todos os relgios do sistema, afim de manter a confiabilidade nos horrios
registrados em LOG, e assim atender o tem A.10.10.6 Sincronizao dos
relgios. Para tanto, sugere-se a sincronizao peridica com um servidor NTP
pblico conforme o Apndice F.
3.3.10. Controles da ISO 27001 inerentes ao gerenciamento de acesso
de usurio
Em uma mquina firewall, convm cadastrar apenas os usurios
necessrios administrao do sistema. A mquina firewall requer alm do
root, um usurio normal, pelo qual se possa fazer o login no terminal ou fazer
acesso remoto.
Sendo esta mquina tambm um proxy transparente, admite-se a
possibilidade de habilitar um outro usurio para a administrao do SARG via
navegador atravs da rede interna. Como se trata de um usurio para
administrao remota e que no necessita de acesso no sistema operacional,
deve-se eliminar o shell do mesmo, atendendo ao conceito do menor privilgio.
Desta forma, atendido o tem A.11.2 Gerenciamento de acesso do usurio.
3.3.11. Controles da ISO 27001 inerentes a responsabilidade dos
usurios
O usurio proprietrio da mquina firewall, deve observar atentamente a
27
poltica de senha estabelecida pela empresa. Esta se resume a utilizao de
senhas fortes e no permitir o acesso s mesmas por parte de terceiros. Tambm
deve ser adotado a poltica de tela limpa, omitindo ao mximo informaes da
mquina firewall para terceiros.
Estes procedimentos permitem atender o tem A.11.3 Responsabilidade
dos usurios.
3.3.12. Controles da ISO 27001 inerentes ao controle de acesso ao
sistema operacional
O acesso ao sistema operacional, deve ser permitido somente a um
usurio normal em especial e o root. Desta forma, necessrio um conjunto de
procedimentos conforme a tabela 6, para ento alcanar este objetivo de forma
satisfatria e assim atender ao tem A.11.2 Gerenciamento de acesso do
usurio.
# autenticao requer que usurio seja do grupo admin
# (grupo previamente criado)
auth required pam_wheel.so group=admin
Figura 10: trecho do arquivo /etc/pam.d/su
# o login tem como requisito o controle de horario
account requisite pam_time.so
Figura 11: trecho do arquivo /etc/pam.d/login
# bloqueio de uso do login para o root a qualquer momento
login;*;root;!Al0000-2359
Figura 12: trecho do arquivo /etc/pam.d/time.conf
28
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/false
bin:x:2:2:bin:/bin:/bin/false
sys:x:3:3:sys:/dev:/bin/false
proxy:x:13:13:proxy:/bin:/bin/false
www-data:x:33:33:www-data:/var/www:/bin/false
identd:x:102:65534::/var/run/identd:/bin/false
djunior:x:1000:1000:DorivalJr,,,:/home/djunior:/bin/b
Figura 13: trecho do /etc/passwd onde apenas root e usurio estratgico
possuem um shell vlido
# The DSHELL variable specifies the default login shell on your
# system.
DSHELL=/bin/false
Figura 14: trecho do arquivo /etc/adduser.conf definindo um caminho invalido de
shell para novos usurios
# ca:12345:ctrlaltdel:/bin/echo opcao nao habilitada
Figura 15: trecho do arquivo /etc/inittab referente a desabilitao do CTRL+ALT+DEL
Port 62333
PermitRootLogin no
Figura 16: techo do arquivo /etc/ssh/sshd_config referente a desabilitao de
login remoto do root e alterao da porta ssh
29
Tabela 6: procedimentos para controle de reforo no acesso ao sistema operacional
Procedimento Sugesto de implementao prtica
- reforo no sistema de login
local.
Criao de um usurio normal para a finalidade de
login no terminal. Uma vez logado, este usurio
alterna-se para root atravs do su. Deve-se ainda
providenciar para que apenas este usurio tenha
permisso de uso do su. (Figura 10).
Complementando, esta proposta sugere o bloqueio
de login do root diretamente no terminal.
Todas estas implementaes podem ser realizadas
atravs do PAM (Figura 11 e 12).
- remoo do shell de todos os
usurios, com excesso do
root e usurio normal para
fins de login, impedindo o
acesso indevido ao sistema
operacional.
Remoo de shell dos usurios em /etc/passwd
(Figura 13) e alterao junto ao
/etc/adduser.conf para que possveis novos
usurios recebam um shell invlido (Figura 14).
A remoo deve ser realizada inclusive para
usurios de sistema.
- remoo de programas
desnecessrios ao sistema.
Primeiro obtem-se a lista de pacotes instalados
atravs do comando
dpkg -l.
Em seguida, aps anlise, dos pacotes, remove-se o
que no necessrio ao funcionamento do sistema e
do firewall. Esta remoo implica tambm em
programas clientes, os quais no precisam estar
presentes na mquina caso no sejam realmente
necessrios. Um exemplo o utilitrio wget que
faz download sem interao humana (MELO,
2006).
- desabilitao de
reinicializao via terminal.
Desabilitao da combinao de teclas
CTRL+ALT+DEL para reincio da mquina,
atravs de edio do arquivo
/etc/inittab (Figura 15).
- reforo no sistema de login
remoto.
Sugere-se que o login remoto seja feito apenas por
ssh, afim de garantir uma maior seguraa. Na
configurao do ssh, convm que seja desabilitado
a opo de login remoto do root; sugere-se ainda
a alterao da porta ssh para uma outra porta de
nmero alto, dificultando possveis tentativas de
fora bruta na porta padro(Figura 16).
30
3.3.13. Controles da ISO 27001 inerentes a computao mvel e
trabalho e remoto
de praxe o trabalho de administrao de um firewall ser feito
remotamente. Logo este acesso somente aceitvel atravs de conexes
criptografadas. Sugere-se fortemente o uso de SSH, o qual criptografa toda a
conexo, incluindo o nome e senha do usurio para login.
Com base no princpio do menor privilgio, o root deve ser impedido
de realizar conexes remotas (Figura 16) atravs de configurao do prprio
SSH. Para o acesso remoto, utiliza-se um usurio normal, o qual aps
estabelecer a conexo, e estando em um ambiente seguro, faz-se a mudana para
usurio root atravs do su.
Para a administrao do SARG via navegador, so necessrios cuidados
como no deixar senhas gravadas no computador de acesso, bem como utilizar
um equipamento confivel e de uso prprio. Mesmo que a conexo seja segura
atravs de protocolo https, deve-se evitar a administrao a partir de
computador de terceiros.
Desta forma atendido o tem A.11.7 Computao mvel e trabalho
remoto.
3.3.14. Controles da ISO 27001 inerentes a aquisio, desenvolvimento
e manuteno de sistemas de informao
adotado como princpio nesta monografia, utilizar somente
ferramentas opensource ou livre distribuio. Para a aquisio das mesmas,
sugerido o utilitrio apt-get, desde que este utilize repositrios oficiais
31
Debian (Figura 17) ou a instalao manual de pacotes .deb adquiridos em
sites oficiais. A utilizao deste tipo de pacote, elimina a possibilidade de erros
de compilao, que normalmente acontecem quando adquiri-se cdigo fonte para
a instalao, alm do tempo de instalao por pacotes ser consideravelmente
mais rpido em relao a instalao por cdigo fonte.
Em caso de aquisio de pacotes .deb, deve-se fazer uma verificao de
integridade dos mesmos. A maioria dos projetos disponibilizam uma forma de
checagem de integridade de arquivos para conferncia aps o download.
Estes procedimentos permitem atender aos tem A.12.1.1 Anlise e
especificao dos requisitos de segurana e A.12.4.1 Controle de softwares
operacionais.
deb http://ftp.br.debian.org/debian/ etch main
deb http://security.debian.org/ etch/updates main contrib
Figura 17: arquivo /etc/apt/sources.list com repositrios oficiais Debian
3.3.15. Controles da ISO 27001 inerentes a segurana dos arquivos do
sistema
Os mesmos procedimentos sugeridos anteriormente no sub tem 3.3.14
deste documento, tambm atendem ao tem A.12.4.1 Controle de software
operacional o qual sugere que seja estabelecido um controle para instalao de
programas, estabelecendo assim uma forma mais confivel de origem de
arquivos de instalao.
32
3.3.16. Controles da ISO 27001 inerentes a gesto de incidentes de
segurana da informao
A ISO 27001 define evento de segurana da informao como:
Uma ocorrncia identificada de um estado de sistema, servio
ou rede, indicando uma possvel violao da poltica de
segurana da informao ou falha de controles, ou uma
situao previamente desconhecida, que possa ser relevante
para a segurana da informao. [ISO 27001, 2006]
Diante desta descrio, esta monografia sugere que qualquer evento de
segurana da informao referente mquina firewall, seja imediatamente
relatada pelo proprietrio direo atravs de ofcio com assinatura de
protocolo. Caso o evento seja identificado primeiramente por outra pessoa da
organizao, este deve notificar imediatamente ao proprietrio da mquina
firewall, o qual se encarreca de notificar a direo, citando no ofcio a pessoa e a
forma de deteco do problema.
Estes procedimentos fazem produzir uma conformidade com os tens
A.13.1.1. Notificao de eventos de segurana da informao e A.13.1.2
Notificando fragilidades de segurana da informao.
Uma vez notificadas as falhas ou fragilidades, cabe ao proprietrio do
firewall, proceder da forma mais rpido para sanar o problema detectado, uma
vez que este tem total responsabilidade pela mquina. Ele deve ainda manter um
relatrio dos incidentes ocorridos afim de quantificar os dados para futuros
monitoramentos mais especficos de uma falha.
Desta forma estabelecida uma conformidade com o tem A.13.2
33
Gesto de incidentes de segurana da informao e melhorias.
Esta etapa pode ainda ser amparada pela norma NBR ISO/IEC 27005,
que trata exclusivamente sobre Gesto de riscos de segurana da informao.
3.3.17. Controles da ISO 27001 inerentes a gesto de continuidade do
negcio
Para assegurar a retomada do firewall em tempo hbil em caso de
problemas, sugere-se que seja mantido um backup dos arquivos de configurao
de todas as ferramentas utilizadas, bem como uma mquina espelho, afim de
impedir a interrupo prolongada em caso de falha fsica ou danificao em
maior grau causado por uma invaso.
Os mesmos processos de notificao descritos na gesto de incidentes de
segurana, tambm so cabveis na gesto de continuidade do negcio.
Todos os eventos de segurana identificados e corrigidos, devem ser
submetidos a testes afim de comprovar a eliminao do problema.
Desta forma atendido o tem A.14 Gesto de continuidade do
negcio.
3.3.18 Controles da ISO 27001 inerentes a conformidade
O recurso de proxy transparente atravs da ferramenta SQUID, permite
gerar e manter gravado um registro de tudo o que foi acessado atravs deste
firewall. Assim, na poltica de segurana deve estar bem claro que a utilizao
34
dos recursos de processamento da informao, so exclusivamente para
propsitos empresariais, no sendo permitido o uso para fins ilcitos ou
proibidos por Lei. A utilizao fora deste padro, passa a ser de responsabilidade
do usurio. Esta instruo tambm se enquadra para o uso de correio eletrnico
com domnio da empresa, proibindo ainda o uso de correio eletrnico de outros
domnios para os fins organizacionais.
Como esta monografia sugere a utilizao de ferramentas opensource ou
livre distribuio, no h possibilidade de problemas com direitos de
propriedade intelectual.
Desta forma, atendido o tem A.15.1 Conformidade com requisitos
legais que estabelece que sejam definidos controles para evitar a violao de lei
criminal ou civil, bem como as obrigaes contratuais da empresa e a poltica de
segurana.
3.3.19 Controles da ISO 27001 inerentes a auditoria de sistemas de
informao
sugerido que a equipe ou pessoa responsvel pela auditoria, seja
terceirizado ou no tenha nenhum vnculo de utilizao da mquina firewall,
garantindo um resultado no tendencioso. Em caso de servio terceirizado,
importante observar a idoneidade da pessoa ou equipe escolhida para realizar a
auditoria.
Todo o procedimento de auditoria, incluindo arquivos a serem
verificados e procedimentos utilizados devem ser previamente documentados
atravs de contrato assinado entre as partes.
Para auxiliar no processo de auditoria, esta monografia sugere a
ferramenta autopsy, a qual segundo (TEIXEIRA, 2005) faz procura por
35
evidncias utilizando diversas tcnicas aceitveis para a adequao ISO 27001,
como linha de tempo de aes, listagem de arquivos e diretrios incluindo os
apagados, entre outros.
A ferramenta chkrootkit anteriormente indicada, tambm
aceitvel para auxiliar no processo de auditoria.
Estes procedimentos permitem atender ao tem A.15.3 Consideraes
quanto auditoria de sistemas de informao.
36
Captulo 4
Firewall
Foi desenvolvido um script (Apendice B) intitulado Mirar Firewall
com o intuito de atender ao tem A.11.3 Controle de acesso rede que tem por
objetivo Prevenir acesso no autorizado aos servios de rede (ISO 27001,
2006).
As regras de firewall propostas atravs deste Apndice B, incluem
repasse entre redes, bloqueio e liberao de portas e IPs, implementao de
controle na camada de aplicao (camada sete do modelo OSI), bem como
recursos de NAT e PAT.
Baseando no conceito de menor privilgio, sugere-se uma poltica
restritiva (Figura 18), liberando somente o que for necessrio. Havendo um bom
tratamento nas regras de INPUT ou FORWARD, pode-se optar pela liberao do
OUTPUT.
Chain INPUT (policy DROP)
Chain FORWARD (policy DROP)
Chain OUTPUT (policy ACCEPT)
Figura 18: poltica restritiva no Iptables
4.1 Regras bsicas para roteamento
As regras bsicas de roteamento permitem em primeiro lugar, o
funcionamento da prpria mquina e seus servios atravs de liberao de
37
entrada de pacotes por loopback ou pelos IPs das interfaces de rede. Em seguida,
talvez o mais fundamental, deve-se habilitar o repasse de pacote entre redes,
opo sem a qual a mquina no permitir qualquer atividade de repasse de
pacotes, impedindo o funcionamento como firewall.
Por fim, habilita-se a entrada e repasse de pacotes de conexes j
estabelecidas ou relacionadas a alguma outra regra previamente liberada.
Estas regras so realizadas nas funes
REGRAS_BASICAS_FIREWALL e HABILITANDO_NAT do Apendice B.
4.2 Recursos de PAT
O Iptables no tem uma tabela PAT, porm este recurso suportado
na tabela NAT.
A utilizao do PAT sugerida devido a utilizao do Squid como
ferramenta de proxy transparente no ambiente desta proposta. O Apndice B
demonstra a utilizao do PAT para redirecionar todo o trfego da porta 80 para
a porta 3128, porta ento utilizada pelo Squid. Esta regra implementada na
funo denominada PROXY_TRANSPARENTE.
Foi criado tambm um script complementar (Apndice C), o qual
contm regras para redirecionamento de outros possveis servios necessrios
realidade da empresa. O Apndice C demonstra a configurao de PAT para um
desktop remoto que muito utilizado para manuteno de sistemas terceirizados.
4.3 Recursos de bloqueio para rede externa
Sugere-se preparar regras para bloqueio de acesso rede externa,
38
partindo-se de determinadas mquinas da rede interna. Este recurso pode
funcionar como um reforo de segurana da informao para um possvel
servidor de dados interno, o qual tambm tem seus controles de acesso
habilitados.
O Apndice B apresenta uma funo denominada
BLOQUEIO_DE_ACESSO_A_INTERNET com um modelo de implementao
de regra.
4.4 Recursos de excesso s regras
Convm estabelecer regras que permitam excesso s regras do firewall
para um determinadas mquinas. Este grupo conhecido tecnicamente como
zona desmilitarizada. um recurso interessante para mquinas administrativas
ou reas especficas de acordo com o ambiente empresarial.
O Apndice B apresenta uma funo denominada GENTE_FINA com
um modelo de implementao de regra.
4.5 Implementao da camada sete
Alguns servios como o MSN entre outros, utiliza vrios servidores e
portas aleatrios, dificultando o bloqueio de uso atravs dos recursos normais,
ou seja, atravs do bloqueio tradicional realizado na camada IP. Assim,
sugerido fortemente a implementao de controle na camada sete do modelo OSI
ou camada de aplicao no modelo TCP/IP. Para isso, indicada a ferramenta
L7-Filter, que pode bloquear inclusive outros servios como Yahoo
39
Messenger, Jabber, entre outros servios (L7-FILTER, 2008).
O Apndice B por padro trs um bloqueio do MSN em especial, sendo a
liberao feita atravs da funo denominada LIBERANDO_MSN.
4.6 Liberao de portas para repasse
Deve-se estabelecer regras para liberao apenas das portas necessrias
ao funcionamento dos servios que a empresa necessita. Nesta etapa deve-se
descrever as portas redirecionadas quando houver. Este recurso possibilita um
melhor controle da mquina firewall, intensificando a segurana da prpria rede
interna.
O Apndice B apresenta uma funo denominada
LIBERANDO_PORTAS com um modelo de implementao de regra.
4.7 Definio de ping
Convm estabelecer nas regras de firewall, as instrues referente ao
tratamento de pacotes icmp. Por questes de segurana, este recurso deve ser
totalmente bloqueado, dificultando a possibilidade de coleta de informaes do
servidor.
O Apndice B por padro permite ping a partir da rede interna, porm o
tratamento de ping a partir de origem externa, tratado na funo denominada
DEFININDO_PING como um modelo de implementao.
40
4.8 Proteo contra formas de ataque comuns
Todo ambiente de rede incluindo a mquina firewall esto sujeitos aos
mais diversos tipos de ataque que surgem a cada dia, desta forma, deve-se
estabelecer uma sesso especfica com regras que inibam pelo menos os tipos de
ataque mais comuns j conhecidos.
O Apndice B contm uma funo denominada
PROTECAO_CONTRA_ATAQUES, a qual contm algumas regras para formas
de ataque comuns. Nesta funo pode-se incluir regras de defesa para outros
possveis ataques comuns.
4.9 Definio de portas utilizadas
Convm estabelecer uma sesso especfica para definio das portas a
serem utilizadas pelos servios que a mquina prov. Esta sesso trabalha em
conjunto com a sesso de liberao de portas, devendo haver compatibilidade
entre ambas, ou seja, no se pode bloquear uma porta que ser utilizada por um
servio.
O Apndice B apresenta uma funo denominada DEFININDO_SSH
com um modelo de implementao de regra, onde a porta padro do SSH
alterada.
4.10 Recursos de NAT
O NAT, recurso essencial a esta proposta, pode ser feito atravs do
41
Iptables utizando a opo MASQUERADE ou SNAT. A diferena entre
ambos que o SNAT permite uma velocidade maior de processamento, pelo fato
de que o IP de origem pode ser informado na prpria regra. Utilizando o
MASQUERADE dever acontecer um processamento mais, pois ser feito a
verificao do IP cada vez que o pacote passa por esta regra. A Figura 19
demonstra uma situao de comparao de ambas as opes.
No Apndice B, foi utilizada a opo MASQUERADE, pois como uma
das conexes externas pode ser ADSL, consequentemente no manter IP fixo.
# indicado para IP estatico
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j
SNAT -to-source 50.0.0.3
# indicado para IP dinamico
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ppp0 -j
MASQUERADE
Figura 19: utilizao comparativa de SNAT e MASQUERADE
4.11 Segregao de rede
A segregao de rede deve ser realizada de acordo com a quantidade de
mquinas e servios. Para pequenas empresas, uma nica sub-rede classe C pode
comportar os usurios e servios existentes. Em se falando de grandes
organizaes, este documento prope que sejam incluidos firewall secundrios
como roteadores na mesma sub-rede da mquina firewall. As mquinas de
usurios, devem pertencer somente s sub-redes dos respectivos equipamentos
de firewall e roteamento secundarios.
Esta sugesto, alm de organizar adequadamente o ambiente de rede
42
conforme o tem A..11.4.5 Segregao de redes (Fig. 20), prov uma camada
maior de segurana.
4.12 Demais regras inerentes realidade da empresa
A ttulo de complemento do firewall, convm estabelecer uma sesso
com regras especiais para servios de terceiros utilizado pela empresa, desde que
no perturbe as demais regras e procedimentos de segurana j estabelecidos.
O Apendice B demonstra dois casos deste tipo de regras. O primeiro est
na funo denominada CONECTIVIDADE_SOCIAL e
CONECTIVIDADE_SOCIAL_NAT, destinadas a implementao de regras
especficas para o servio de Conectividade Social, da Caixa Econmica
Federal, o qual muito utilizado por grandes empresas. O segundo est na
funo DIOPS e DIOPS_NAT, destinadas a implementao de regras especficas
para o servio de DIOPS da Agncia Nacional de Sade.
43
Figura 20: modelo de segregao de rede em ambiente com muitos servios ou usurios
44
Sub-rede A
Sub-rede B
Sub-rede C Sub-rede D
Firewall
secundrio
Firewall
secundrio
Firewall
secundrio
Firewall principal
(ambiente
desta monografia)
Captulo 5
Balanceamento de Carga
Para que o balanceamento de carga ocorra com sucesso, sugere-se a
diviso do processo de balanceamento em trs partes. A primeira parte refere-se
ao processo de deteco das conexes disponveis. O prximo passo a ativao
do balanceamento atravs da implementao de tabelas e regras. Por fim vem o
ltimo passo, que a verificao continuada do balanceamento.
5.1. Deteco de conexes e regras existentes
O Apndice D foi criado com a finalidade de verificar se as conexes
esto ativas e as regras de balanceamento existem. Em caso negativo para
alguma destas verificaes, acontece um tratamento especfico para cada caso.
Na verificao de conexes, so testadas as interfaces externas, bem
como os respectivos gateway de cada link externo. Uma vez que todos as
conexes externas estejam plenamente habilitadas, passa-se para a verificao de
regras de balanceamento, ativando-as se necessrio atravs do Apndice A.
Quando detectado que uma das conexes externas est inoperante, o
script limpa as regras de roteamento e direciona todo o trfego apenas para o
link que estiver ativo.
45
5.2. Balanceamento entre as conexes de internet
Assumindo-se que as conexes estejam plenamente habilitadas, passa-se
para a etapa de implementao do balanceamento.
O Apndice A foi criado especificamente para implementar o que
necessrio para estabelecer o balanceamento: arquivo rt_tables, rotas nas
tabelas auxiliares, rotas na tabela principal, regras de prioridade de roteamento e
a regra de balanceamento na tabela principal.
5.2.1 Arquivo rt_tables
O balanceamento aqui proposto, requer trs tabelas, onde duas delas so
especficas para as regras de roteamento dos os link externos, sendo uma tabela
para cada link. Estas tabelas podem ser utilizadas caso o balanceamento venha a
falhar, assumindo todo trfego para a tabela do link que ainda permanece ativo.
A terceira tabela ento reservada para as regras de roteamento
balanceado. Convm que a tabela principal seja utilizada para tal finalidade,
assim necessrio informar apenas as duas tabelas auxiliares, no rt_table.
A figura 21 demonstra esta situao, assumindo como auxiliares as tabelas
denominadas velox e radio.
5.2.2. Rotas nas tabelas auxiliares
Cada tabela auxiliar deve receber todas as rotas necessrias a ponto de a
tabela funcionar sozinha, sem auxilio de outras tabelas. Isso acontece pelo fato
46
da possibilidade de falha de rotas definidas em outra tabela ou mesmo na
principal. Assim, deve-se estabelecer a rota para o link externo e para a rede
interna, bem como definir o gateway padro na tabela. A Figura 22 demonstra a
sada do comando ip show table para a tabela velox, com uma descrio
das linhas exibidas.
#arquivo recriado automaticamente pelo script de roteamento
balanceado
255 local
254 main
253 default
200 velox
201 radio
0 unspec
Figura 21: arquivo rt_tables recriado com duas tabelas auxiliares
Linha Sada
1 200.222.117.90 dev ppp0 scope link src 189.12.204.17
2 192.168.100.0/24 dev eth1 scope link src 192.168.100.1
3 default via 200.222.117.90 dev ppp0
Descrio das linhas:
1 rota para o link externo (usando interface ppp0)
2 rota para a rede interna (usando interface eth1)
3 rota para o gateway
Figura 22: sada do comando ip show table velox e descrio de resultado
47
5.2.3 Rotas na tabela principal
Na tabela principal so definidas as regras de roteamento para os link
externos e rede interna, alm da regra crucial para o balanceamento, que feita
na definio do gateway.
A definio do gateway feito atravs do recurso de nexthop do
iproute, que tem por finalidade distribuir os pacotes entre os gateway
externos. Na Figura 23, demonstrada a sada do comando ip route show
table main, onde foi definido atravs do recurso de nexthop o
balanceamento entre dois gateway externos.
200.222.117.90 dev ppp0 proto kernel scope link src 189.13.204.17
189.53.151.16/28 dev eth3 proto kernel scope link src 189.53.151.19
192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.1
default
nexthop via 200.222.117.90 dev ppp0 weight 1
nexthop via 189.43.151.17 dev eth3 weight 1
Figura 23: sada do comando ip route show table main
5.2.4 Regras de roteamento
A ltima etapa do balanceamento, definir as regras de prioridade de
uso das tabelas de roteamento. A Figura 24 um exemplo de sada do comando
ip rule que tem por objetivo mostrar as regras criadas.
Neste exemplo, foi definido que o trfego que chega do IP 189.12.204.17
deve seguir as regras da tabela velox, e o trfego do IP 196.13.151.20 deve
seguir as regras da tabela radio. Em seguida, vem a definio de que tudo deve
48
verificar a tabela main a qual contm as regras de balanceamento. importante
lembrar que a prioridade maior tem valor 0 e a menor 32.767.
Esta forma de disposio e prioridade dispostas, fazem com que no haja
confuso no trfego que chega, e obriga o balanceamento para o trfego que sai.
0: from all lookup 255
10000: from 189.12.204.17 lookup velox
10001: from 196.13.151.20 lookup radio
32766: from all lookup main
32767: from all lookup default
Figura 24: sada do comando ip rule
5.2.5 Verificao continuada do balanceamento
Quando uma das conexo externas vem a falhar, pode acontecer que a
regra de balanceamento seja eliminada automaticamente da tabela principal,
parando totalmente a conexo, ficando sem um gateway definido. Quando no
acontece a eliminao da regra, o balanceamento no funciona de forma
adequada. Os pacotes direcionados para este link ficaro parados at que o
mesmo seja estabelecido novamente.
Essa falha que prevista e no tem suporte no pacote iproute, pode
ser resolvida atravs de uma verificao automatizada em espaos de tempo
curtos. O Apndice D descrito anteriormente realiza esta tarefa. Assim, sugere-
se um agendamento de execuo deste script a cada cinco minutos (Figura 25). O
script refaz as tabelas, rotas e regras necessrias para a situao em que o
ambiente se encontra, habilitando um ou outro link ou ento o balanceamento se
49
ambos esto ativos, alm ainda de registrar os resultados no arquivo
/var/log/messages (Figura 26).
*/5 * * * * /root/analisa-rede.sh
Figura 25: agendamento do Apndice D atravs do cron
Qua Ago 6 08:50:01 BRT 2008 | Verificacao do link1: ppp0 com GW
200.222.117.90 | status de erro: 0
Qua Ago 6 08:50:01 BRT 2008 | Verificacao do link2: eth3 com GW
189.43.151.17 | status de erro: 0
Qua Ago 6 08:50:01 BRT 2008 | Verificacao de rota balanceada
entre 200.222.117.90 e 189.12.204.17 | status de erro: 0
Figura 26: trecho do /var/log/message com resultados de execuo do Apndice D
50
Captulo 6
Resultados obtidos
Em ambos os casos houveram resultados satisfatrios referente
implementao dos controles sugeridos por esta monografia.
A implementao dos controles permitiu um melhoramento significativo
na segurana fsica do ambiente, quesito que anteriormente no era tratado.
O estabelecimento de usurios proprietrios bem como o gerenciamento
de acesso e gesto de ativos entre outros tens, permitiram uma maior
participao na responsabilidades de segurana dos equipamentos e informaes
por parte dos administradores de sistema.
Os procedimentos de administrao remota j eram feitos atravs de
conexo criptografada, porm passaram a ter um monitoramento constante
atravs de arquivos de log.
A segurana dos arquivos do prprio sistema operacional passou a ter
uma maior ateno atravs de controle de integridade de arquivos, controle
contra cdigos maliciosos e uma conduta de responsabilidade de usurios.
Por fim foi estabelecido o documento poltica de segurana, com
instrues de uso correto dos equipamentos, dicas de formulao de senhas,
descrio de tens de controle implementados bem como clusulas penais
referente a possvel violao das regras da poltica.
As regras de firewall implementadas, possibilitaram uma filtragem
eficiente de pacotes, bloqueando vrios servios anteriormente liberados e que
51
no eram de interesse da empresa. Tambm foi reforado a segurana das portas
da mquina firewall, fechando o que no utilizado e alterando a porta padro
para servios crticos como servidor ssh.
As implementaes realizadas, tornaram a mquina firewall
teoricamente mais segura, porm necessrio um teste de penetrao afim de
comprovar de forma prtica estas implementaes.
6.1. Resultados obtidos no caso A
O caso A obteve alm dos resultados descritos anteriormente, uma
significativa melhoria de aproveitamento de conexes externas de internet
atravs da implementao do balanceamento de carga. Foi possvel estabelecer
de forma automtica, o roteamento do trfego para as duas conexes externas
existentes. Este procedimento permitiu a utilizao simultnea das conexes
externas, eliminando ociosidade de um dos link, bem como a eliminao de
necessidade de interferncia humana caso uma das conexes venha a falhar.
6.2. Resultados obtidos no caso B
O caso B obteve alm dos resultados descritos anteriormente, uma
melhoria significativa no monitoramento das conexes existentes, bem como a
gerao de relatrio de acessos. A utilizao de monitorao foi essencial para o
ambiente, onde a grande maioria das mquinas so destinadas a estudantes em
salas de aula e laboratrios, sendo assim necessrio um certo controle de
52
contedos acessados.
Dentre os controles descritos, o que gerou maior impacto foi a
implementao das regras de firewall, pelo fato de permitir um controle na
prpria instituio sobre as regras de bloqueio bem como os servios e sites
acessados.
53
Captulo 7
Concluso
A implementao sugerida nesta monografia, permitiu ao ambiente
computacional estabelecer conformidade com uma norma internacional,
melhorando teoricamente a segurana do sistema. Esta teoria pode tornar-se
prtica atravs de um procedimento de teste dos controles, validando
efetivamente as implementaes realizadas, porm este um possvel trabalho
futuro.
7.1 Proposta de trabalhos futuros
Esta monografia abre vrias possibilidades de trabalhos futuros. Uma
proposta de hardening para o nvel de kernel de uma mquina firewall uma
potencial proposta de trabalho futuro, podendo ser embasada nesta monografia
como ponto inicial. Para tando fortemente indicado o uso do Selinux.
Uma segunda proposta a implementao de um teste de penetrao a
ser realizado aps a implementao dos controles descritos nesta monografia.
Este funcionaria como uma segunda etapa para o procedimento de hardening
aqui proposto.
54
8. REFERNCIAS BIBLIOGRFICAS
[ABNT, 2008] Associao Brasileira de Normas Tcnicas, disponvel em
<https://www.abntnet.com.br/ecommerce/ssl/pesquisaresultado .
aspx>, consulta pelo termo 2700, acessado em 14/07/2008.
[DEBIAN, 2008] - DEBIAN <http://www.debian.org>, acessado em
24/04/2008.
[DOMINGUES, 2003] DOMINGUES, MARCOS AURLIO, Comparao de
Ferramentas de Verificao de Integridade de Arquivos, Monografia UFLA,
2003.
[FERREIRA, 2003] FERREIRA, RUBEM E., Linux Guia do Administrador
do Sistema, Editora NOVATEC, 2003.
[FREITAS, 2002] FREITAS, ALLAN EDGARD SILVA RNP Rede
Nacional de Ensino e Pesquisa, 2002, Disponvel em:
<http://www.rnp.br/newsgen/0201/roteamento_linux.html>, acessado em
20/02/2008.
[ISO 27001, 2006] ABNT ISO27001, ASSOCIAO BRASILEIRA DE
NORMAS TCNICAS, Tecnologia da Informao Tcnicas de Segurana
Sistemas de gesto de segurana da informao Requisitos, 2006.
[ISO, 2008] International Organization for Standardization, disponvel em <>
55
acessado em 25/07/2008, procurando pelo termo 27001, 2008.
[KNOWLEDGELEADER, 2003] Knowledge Leader, disponvel em
<http://www.knowledgeleader.com/KnowledgeLeader/Content.nsf/Web+Content
/ChecklistsGuidesBritishStandard7799!OpenDocument>, acessado em
25/07/2008, 2003.
[L7-FILTER, 2008] APPLICATION LAYER PACKET CLASSIFIER FOR
LINUX, atualizado em 23 de abril de 2008 <http://l7- filter.sourceforge.net/ >,
acessado em 26/04/2008.
[LOUREIRO, 2004] LOUREIRO, HELIO ALEXANDRE LOPES, Ericsson, -
Grupo de Trabalho de Engenharia e Operao de Redes - Roteamento Avanado
e Controle de Banda em Linux, disponvel em
<http://eng.registro.br/gter17/videos/>, acessado em 20/02/2008 as 9:32am.
[MELO, 2006] MELO, SANDRO; DOMINGOS, CESAR; CORREIA,
LUCAS; MARUYAMA, TIAGO; BS7799 Da ttica prtica em servidores
linux, Alta Books, 2006.
[MITRE, 2008] - MITRE CORPORATION, Baseline of Guide to the Secure
Configuration of Red Hat Enterprise Linux 5, disponvel em
<http://cce.mitre.org/lists/data/downloads/cce-rhel5-5.20080305.xls>,
acessado em 15/07/2008.
[NETFILTER, 2008] Netfilter firewalling, NAT and packet mangling for
linux,, disponvel em <http://www.netfilter.org> acessado em 19/08/2008, 2008.
56
[NSA, 2008] - National Security Agency United States of America, Guide to
the Secure Configuration of Red Hat Enterprise Linux 5, disponvel em <http://
www.nsa.gov/snac/os/redhat/rhel5-guide-i731.pdf>, acessado em
15/07/2008.
[PALU, 2005] PALU, ARI JUNIOR, Interface Administrativa para Firewall de
Internet em Ambiente Linux, Monografia UFLA, 2005.
[SALTZER, 1975] SALTZER, JEROME H.; SCHROEDER, MICHAEL D.,
The Protection of Information in Computer Systems, University of Virginia,
disponvel em <http://www.cs.virginia.edu/~evans/cs551/saltzer/> acessado em
15/07/2008.
[STANDARDS, 2005] Standarts Direct International Standards And
Documentation, disponvel em <http://17799.standardsdirect.org/bs7799.htm>
acessado em 25/07/2008, 2005.
[TEIXEIRA, 2005] TEIXEIRA, ATALIBA DE O., Uma viso forense dos
RootKits em Sistemas Linux, Monografia UFLA, 2005.
[TLDP, 2000] - THE LINUX DOCUMENTATION PROJECT, Firewall and
Proxy Server HOWTO, Mark Grennan, <http://tldp.org/HOWTO/Firewall-
HOWTO-2.html#ss2.2>, acessado em 24/04/2008.
57
APNDICES
58
APNDICE A arquivo balanceamento.sh
#!/bin/bash
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# arquivo : balanceamento.sh
# objetivo : criar tabelas de roteamento balanceado
# obs. : as interfaces de rede ja devem estar previamente
# configuradas
# autor : Dorival M Machado Junior(dorivaljunior@gmail.com)
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# PREENCHIMENTO DE VARIAVEIS
# comandos utilizados
IFCONFIG="/sbin/ifconfig"
SED="/bin/sed"
AWK="/usr/bin/awk"
IP="/sbin/ip"
GREP="/bin/grep"
# interface externa 1 (utilizando velox)
IF1="ppp0"
IP1=$( $IFCONFIG $IF1 | $SED s/end.:/addr:/ | $AWK /'inet
addr:'/ | $SED 's/.*addr://' | $AWK {'print $1'} )
P1=$( $IFCONFIG $IF1 | $AWK /'P-a-P:'/ | $SED 's/.*P-a-P://' |
$AWK {'print $1'} ) # gateway
P1_NET="200.2.117.90/32"
# interface externa 2 (utilizando internet via rdio)
IF2="eth3"
IP2=$( $IFCONFIG $IF2 | $SED s/end.:/addr:/ | $AWK /'inet
addr:'/ | $SED 's/.*addr://' | $AWK {'print $1'} )
P2="181.51.171.19"
P2_NET="181.51.171.16/28"
# interface interna
IF1_INTERNA="eth1"
IP1_INTERNA=$( $IFCONFIG $IF1_INTERNA | $SED s/end.:/addr:/ |
$AWK /'inet addr:'/ | $SED 's/.*addr://' | $AWK {'print $1'} )
P1_NET_INTERNA="192.168.100.0/24"
# configuracao das tabelas de roteamento
RT_TABLES="/etc/iproute2/rt_tables"
TABELA1="velox"
PRIORIDADE_TABELA1="10000"
TABELA2="radio"
PRIORIDADE_TABELA2="10001"
#-=-=-=- FIM DO PREENCHIMENTO DE VARIAVEIS-=-=-=-=-=-=-=-=-=-
echo "Configurando o roteamento."
echo "Recriando o arquivo $RT_TABLES."
echo "#arquivo recriado automaticamente pelo script de
59
roteamento balanceado" > $RT_TABLES
echo "255 local" >> $RT_TABLES
echo "254 main" >> $RT_TABLES
echo "253 default" >> $RT_TABLES
echo "" >> $RT_TABLES
echo "200 $TABELA1" >> $RT_TABLES
echo "201 $TABELA2" >> $RT_TABLES
echo "" >> $RT_TABLES
echo "0 unspec" >> $RT_TABLES
echo "Adicionando rotas para redes externas nas tabelas $TABELA1
e $TABELA2"
$IP route add $P1_NET dev $IF1 src $IP1 table $TABELA1 >
/dev/null 2>&1
$IP route add default via $P1 table $TABELA1 > /dev/null 2>&1
$IP route add $P2_NET dev $IF2 src $IP2 table $TABELA2 >
/dev/null 2>&1
$IP route add default via $P2 table $TABELA2 > /dev/null 2>&1
echo "Adicionando rotas para rede interna nas tabelas $TABELA1
e $TABELA2"
$IP route add $P1_NET_INTERNA dev $IF1_INTERNA src $IP1_INTERNA
table $TABELA1 > /dev/null 2>&1
$IP route add $P1_NET_INTERNA dev $IF1_INTERNA src $IP1_INTERNA
table $TABELA2 > /dev/null 2>&1
echo "Adicionando rotas na tabela principal"
$IP route add $P1_NET dev $IF1 src $IP1 > /dev/null 2>&1
$IP route add $P2_NET dev $IF2 src $IP2 > /dev/null 2>&1
echo "Adicionando regras de roteamento para tabelas $TABELA1 e
$TABELA2"
ROTA_IP1=$( $IP rule | $GREP $IP1)
ROTA_IP2=$( $IP rule | $GREP $IP2)
if [ -z "$ROTA_IP1" ]
then
$IP rule add prio $PRIORIDADE_TABELA1 from $IP1 table
$TABELA1
fi
if [ -z "$ROTA_IP2" ]
then
$IP rule add prio $PRIORIDADE_TABELA2 from $IP2 table
$TABELA2
fi
echo "Adicionando regra de roteamento balanceado"
$IP route del default # 2>&1
$IP route add default scope global nexthop via $P1 dev $IF1
weight 2 nexthop via $P2 dev $IF2 weight 1 > /dev/null 2>&1
60
APENDICE B - arquivo mirar-firewall-dorival.sh
#!/bin/bash
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# MIRAR Firewall - script de firewall
# arquivo : mirar-firewall-dorival.sh
# objetivo : execuo de regras de firewall
# autor : Dorival M Machado Junior(dorivaljunior@gmail.com)
# versao : 5.05, em 2 de julho de 2008
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
LEITURA_DE_VARIAVEIS()
{
# =-=-=-=- preenchimento de variaveis -=-=-=-=-=
# LOCALIZACAO DOS COMANDOS NECESSARIOS
# -----------------------------------
IPTABLES="/sbin/iptables"
IFCONFIG="/sbin/ifconfig"
# CONFIGURACAO DA REDE
# --------------------
# configuracao da placa interna.
LAN_INTERNA1="eth0:2"
LANS_INTERNAS="eth0:2"
# rede(s) interna(s) permitida(s) para acesso a internet.
MINHA_REDE="100.100.100.0/24"
# configuracao da placa externa 1.
LAN_EXTERNA1="eth0"
# configuracao da placa externa 2
LAN_EXTERNA2="eth0:1"
LANS_EXTERNAS="eth0 eth0:1"
# IP externo 1
IP_EXTERNO1=$($IFCONFIG $LAN_EXTERNA1 | sed s/end.:/addr:/
| awk /'inet addr:'/ | sed 's/.*addr://' | awk {'print $1'} )
# IP externo 2
IP_EXTERNO2=$($IFCONFIG $LAN_EXTERNA2 | sed
s/end.:/addr:/ | awk /'inet addr:'/ | sed 's/.*addr://' | awk
{'print $1'} )
61
IPS_EXTERNOS="$IP_EXTERNO1 $IP_EXTERNO2"
# IP interno
IP_INTERNO1=$($IFCONFIG $LAN_INTERNA1 | sed
s/end.:/addr:/ | awk /'inet addr:'/ | sed 's/.*addr://' | awk
{'print $1'} )

# OPCOES DE CONFIGURACAO DO FIREWALL
# ----------------------------------
# Porta SSH (padrao = 22)
PORTA_SSH="63695"
# Portas altas
PORTAS_ALTAS="1024:65535"
# Utiliza proxy transparte ? (y=sim n=nao)
# obs.: o squid ja deve estar rodando
TRANSPARENTE="n"
# Permissao de ping para o IP externo
# (IP interno recebe ping por padrao)
PING="y"
# ARQUIVOS AUXILIARES
# -------------------
# os arquivos auxiliares devem conter um valor (IP ou
porta) por linha
# Lista de maquinas liberadas para usar MSN
ARQUIVO_LIBERA_MSN="/etc/mirar-firewall/libera_msn.txt"
LIBERA_MSN=$( cat $ARQUIVO_LIBERA_MSN | grep -v ^# |
grep . )
# Portas a serem bloqueadas para repasse a rede externa
ARQUIVO_PORTAS_BLOQUEADAS="/etc/mirar-
firewall/blocked_door.txt"
PORTAS_BLOQUEADAS=$( cat $ARQUIVO_PORTAS_BLOQUEADAS | grep
-v ^# | grep . )
# Portas a serem liberadas para repasse a rede externa
ARQUIVO_PORTAS_LIBERADAS="/etc/mirar-
firewall/open_door.txt"
PORTAS_LIBERADAS=$( cat $ARQUIVO_PORTAS_LIBERADAS | grep -
v ^# | grep . )
# IPs externos que serao totalmente bloqueados
IP_BLOQUEADO="/etc/mirar-firewall/blocked_ip.txt"
SITES_BLOQUEADOS=$( cat $IP_BLOQUEADO | grep -v ^# |
62
grep . )
# Maquinas que serao excessao aos bloqueios de IP e portas
FINE_PEOPLE="/etc/mirar-firewall/fine_people.txt"
GENTE_FINA=$( cat $FINE_PEOPLE | grep -v ^# | grep . )
# Regras de redirecionamentos de trafego (ex.: VNC)
SCRIPT_REDIRECT="/etc/mirar-firewall/redirect.sh"
# Lista de IPs internos bloqueados para uso de internet
NO_INTERNET="/etc/mirar-firewall/no_internet.txt"
SEM_INTERNET=$( cat $NO_INTERNET | grep -v ^# |\ grep . )

# OPCOES ESPECIAIS
# ----------------

# Utiliza servico de Conectividade Social da
# Caixa Economica Federal (y=sim n=nao)
CONECTIVIDADE="y"
# Utiliza servico de DIOPS da Agencia Nacional
# de Saude
DIOPS="y"
# =-=-=-=- fim do preenchimento de variaveis -=-=-=-=-=-
}
LIMPO()
{
echo "Definindo todas politicas como ACCEPT"
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
echo "Liberando loopback..."
$IPTABLES -A INPUT -d 127.0.0.1 -j ACCEPT
$IPTABLES -A OUTPUT -d 127.0.0.1 -j ACCEPT
for REDE_INTERNA in $MINHA_REDE
do
echo "Liberando forward entre a rede
$REDE_INTERNA e Internet."
$IPTABLES -A FORWARD -s $REDE_INTERNA -d 0/0 -
j ACCEPT
$IPTABLES -A FORWARD -d $REDE_INTERNA -s 0/0 -
j ACCEPT
done

#obs.: a regra de NAT esta numa funcao propria
63
}
INICIANDO()
{
echo -ne '\033[11;200]\033[10;900]\a'
echo -e '\033[33;1m===========> INICIANDO MIRAR
FIREWALL, BY DORIVAL JUNIOR(dorivaljunior@gmail.com):\033[m'
echo -e '\033[33m'
}
LIMPANDO_REGRAS()
{
echo "Limpando regras existentes..."
$IPTABLES -F
$IPTABLES -F -t nat
}
DEFININDO_POLITICAS_PRINCIPAIS()
{
echo "Definindo politica restritiva..."
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
}
PARANDO_CONEXOES()
{
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
}
INFORMACOES()
{
echo "CONFIGURACAO DE REDE ATUAL:"
echo " Interface interna ($LAN_INTERNA1) com IP:
$IP_INTERNO1"
echo " Interface externa 1 ($LAN_EXTERNA1) com IP:
$IP_EXTERNO1"
echo " Interface externa 2 ($LAN_EXTERNA2) com IP:
$IP_EXTERNO2"
}
ESTADO_DE_CONEXAO()
{
echo "Bloqueando repasse de conexoes invalidas"
$IPTABLES -A FORWARD -s 0/0 -d 0/0 -m state --state
INVALID -j DROP
64
echo "Bloqueando entrada de conexoes invalidas"
$IPTABLES -A INPUT -s 0/0 -m state --state INVALID -j
DROP
echo "Permitindo repasse de pacotes relacionados ou
conexoes estabelecidas"
$IPTABLES -A FORWARD -s 0/0 -d 0/0 -m state --state
ESTABLISHED,RELATED -j ACCEPT
echo "Permitindo entrada de pacotes relacionados ou
conexoes estabelecidas"
$IPTABLES -A INPUT -s 0/0 -m state --state
ESTABLISHED,RELATED -j ACCEPT
}

REDIRECIONAMENTO_DE_PORTAS()
{
if [ ! -z "$SCRIPT_REDIRECT" ]
then
echo "Executando script de redirecionamento
de trafego especificos para maquinas internas
($SCRIPT_REDIRECT)."
$SCRIPT_REDIRECT
fi
}
BLOQUEIO_DE_ACESSO_A_INTERNET()
{
if [ ! -z "$SEM_INTERNET" ]
then
echo "Bloqueio de internet:"
for NO_NET in $SEM_INTERNET
do
echo " Bloqueando o acesso a
internet para o IP: $NO_NET"
$IPTABLES -A INPUT -s $NO_NET -j DROP
$IPTABLES -A OUTPUT -s $NO_NET -j DROP
$IPTABLES -A FORWARD -s $NO_NET -d
0/0 -j DROP
$IPTABLES -A FORWARD -s 0/0 -d $NO_NET
-j DROP
done
fi
}
GENTE_FINA()
{
if [ ! -z "$GENTE_FINA" ]
then
if [ ! -z "$SITES_BLOQUEADOS" ]
then
65
echo "Liberao das regras de
bloqueio:"
for MAQ_LIB in $GENTE_FINA
do
echo " Liberando o repasse
para qualquer porta e IP originado do IP $MAQ_LIB"
$IPTABLES -A FORWARD -s
$MAQ_LIB -d 0/0 -j ACCEPT
$IPTABLES -A FORWARD -d
$MAQ_LIB -s 0/0 -j ACCEPT
done
fi
fi
}

LIBERANDO_MSN()
{
if [ ! -z "$LIBERA_MSN" ]
then
echo "Liberao do MSN:"
for MSNLIB in $LIBERA_MSN
do
echo " Liberando MSN para o
IP: $MSNLIB (camada 7)"
$IPTABLES -A FORWARD -s
$MSNLIB -m layer7 --l7proto msnmessenger -j ACCEPT
$IPTABLES -A FORWARD -s
$MSNLIB -p tcp --dport $PORTA_MSN -j ACCEPT
done
fi
}
LIBERANDO_PORTAS()
{
if [ ! -z "$PORTAS_LIBERADAS" ]
then
echo "Liberao de portas:"
for LIBERAPORTA in $PORTAS_LIBERADAS
do
for REDE_INTERNA in $MINHA_REDE
do
echo " Liberando repasse
TCP/UDP da rede local($REDE_INTERNA) pela porta $LIBERAPORTA."
$IPTABLES -A FORWARD -s
$REDE_INTERNA -p tcp -d 0/0 --dport $LIBERAPORTA -j ACCEPT
$IPTABLES -A FORWARD -s
$REDE_INTERNA -p udp -d 0/0 --dport $LIBERAPORTA -j ACCEPT
66
done
done
fi
}
BLOQUEIO_DE_PORTAS()
{
if [ ! -z "$PORTAS_BLOQUEADAS" ]
then
echo "Bloqueio de portas proibidas:"
for PORTA in $PORTAS_BLOQUEADAS
do
for REDE_INTERNA in $MINHA_REDE
do
echo " Bloqueando repasse
TCP/UDP da rede local($REDE_INTERNA) pela porta $PORTA"
$IPTABLES -A FORWARD -s
$REDE_INTERNA -p tcp --dport $PORTA -j DROP
$IPTABLES -A FORWARD -s
$REDE_INTERNA -p udp --dport $PORTA -j DROP
done
done
fi
}
BLOQUEIO_DE_IPS()
{
if [ ! -z "$SITES_BLOQUEADOS" ]
then
echo "Bloqueio de IPs proibidos:"
for SITE in $SITES_BLOQUEADOS
do
for REDE_INTERNA in $MINHA_REDE
do
echo " Bloqueando o IP $SITE
para a rede $REDE_INTERNA."
$IPTABLES -A FORWARD -s
$REDE_INTERNA -d $SITE -j DROP
$IPTABLES -A FORWARD -d
$REDE_INTERNA -s $SITE -j DROP
done
done
fi
}
BLOQUEIO_DO_MSN()
{
67
for REDE_INTERNA in $MINHA_REDE
do
echo "Bloqueando MSN para a rede $REDE_INTERNA
(camada 7)"
$IPTABLES -A FORWARD -s $REDE_INTERNA -m
layer7 --l7proto msnmessenger -j DROP
$IPTABLES -A FORWARD -s $REDE_INTERNA -p tcp
--dport $PORTA_MSN -j DROP
if [ "$BLOCK_MSN_FILE" = "y" ]
then
echo "Bloqueando a transferencia de
arquivos do MSN (camada 7) - (EXPERIMENTAL)"
$IPTABLES -A FORWARD -s $REDE_INTERNA
-m layer7 --l7proto msn-filetransfer -j DROP
fi
done
}
REGRAS_BASICAS_FIREWALL()
{
# REGRAS BASICAS DO GATEWAY (DEVE VIR APOS DEFINICAO
DE BLOQUEIOS DE INPUT E FORWARD DA REDE INTERNA)
# LIBERANDO LOOPBACK
echo "Liberando loopback..."
$IPTABLES -A INPUT -d 127.0.0.1 -j ACCEPT
$IPTABLES -A OUTPUT -d 127.0.0.1 -j ACCEPT
for REDE_INTERNA in $MINHA_REDE
do
echo "Liberando INPUT originado da rede
$REDE_INTERNA"
$IPTABLES -A INPUT -s $REDE_INTERNA -j ACCEPT
echo "Liberando forward entre a rede
$REDE_INTERNA e Internet."
$IPTABLES -A FORWARD -s $REDE_INTERNA -d 0/0 -
j ACCEPT
$IPTABLES -A FORWARD -d $REDE_INTERNA -s 0/0 -
j ACCEPT
done
}
DEFININDO_PING()
{
if [ "$PING" = "y" ]
then
ACAO="ACCEPT"
PINGFOI="LIBERADO"
68
else
ACAO="REJECT"
PINGFOI="BLOQUEADO"
fi
for EXTERNOS_IPS in $IPS_EXTERNOS
do
echo "O ping para o IP $EXTERNOS_IPS foi
$PINGFOI"
for TIPO in 0 3 8 11
do
$IPTABLES -A INPUT -p icmp -s 0/0 -d
$EXTERNOS_IPS --icmp-type $TIPO -j $ACAO
$IPTABLES -A OUTPUT -p icmp -s
$EXTERNOS_IPS -d 0/0 --icmp-type $TIPO -j $ACAO
done
done
}
PROTECAO_CONTRA_ATAQUES()
{
echo "Aplicando proteo contra Syn-flood e DOS"
$IPTABLES -A FORWARD -p tcp --syn -m limit --limit 1/s
-j ACCEPT
echo "Aplicando proteo contra scanners de porta"
$IPTABLES -A FORWARD -p tcp --tcp-flags
SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j
DROP
}
DEFININDO_SSH()
{
for EXTERNOS_IPS in $IPS_EXTERNOS
do
echo "Liberando recebimento de SSH pela porta
$PORTA_SSH no IP $EXTERNOS_IPS"
$IPTABLES -A INPUT -p tcp -s 0/0 --sport
$PORTAS_ALTAS -d $EXTERNOS_IPS --dport $PORTA_SSH -j ACCEPT
done
}
CONECTIVIDADE_SOCIAL()
{
if [ "$CONECTIVIDADE" = "y" ]
then
for REDE_INTERNA in $MINHA_REDE
do
69
echo "CONECTIVIDADE SOCIAL: Liberando
repasse TCP de $REDE_INTERNA para portas e IPs especificos"
$IPTABLES -A FORWARD -s $REDE_INTERNA
-p tcp -d 200.201.174.207 --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -s $REDE_INTERNA
-p tcp -d 200.201.174.204 --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -s $REDE_INTERNA
-p tcp -d 200.201.174.204 --dport 2631 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -d
200.201.0.0/16 -j ACCEPT
done
fi
}
DIOPS_ANS()
{
if [ "$DIOPS" = "y" ]
then
for REDE_INTERNA in $MINHA_REDE
do
echo "DIOPS: Liberando repases TCP de
$REDE_INTERNA para portas e IPs especificos"
$IPTABLES -t nat -A PREROUTING -p tcp
-d 200.255.42.71 -j ACCEPT
$IPTABLES -A FORWARD -s $REDE_INTERNA
-p tcp -d 200.255.42.71 --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -s $REDE_INTERNA
-p tcp -d 200.255.42.71 --dport 21 -j ACCEPT
$IPTABLES -A FORWARD -s $REDE_INTERNA
-p tcp -d 200.255.42.71 --dport 20000:20020 -j ACCEPT
done
fi
}
#======================== REGRAS ESPECIAIS DE NAT ========
HABILITANDO_NAT()
{
echo "====> APLICANDO REGRAS NA TABELA NAT"
echo "Ativando repasse entre redes no
/proc/sys/net/ipv4/ip_forward"
echo 1 > /proc/sys/net/ipv4/ip_forward
for REDE_INTERNA in $MINHA_REDE
do
for EXTERNAS_LANS in $LANS_EXTERNAS
do
70
echo "Fazendo mascaramento entre
$REDE_INTERNA e $EXTERNAS_LANS"
$IPTABLES -t nat -A POSTROUTING -s
$REDE_INTERNA -o $EXTERNAS_LANS -j MASQUERADE
done
done
}
CONECTIVIDADE_SOCIAL-NAT()
{
if [ "$CONECTIVIDADE" = "y" ]
then
echo "CONECTIVIDADE SOCIAL: Liberando pre-
roteamento para IPs da Caixa Economica Federal"
$IPTABLES -t nat -A PREROUTING -p tcp -d
200.201.0.0/16 -j ACCEPT
fi
}
DIOPS_ANS-NAT()
{
if [ "$DIOPS" = "y" ]
then
for INTERNAS_LANS in $LANS_INTERNAS
do
echo "DIOPS: Liberando pre-roteamento
pelas portas 21 e 20000 a 20019 e IP especifico para\
$INTERNAS_LANS"
$IPTABLES -t nat -A PREROUTING -i
$INTERNAS_LANS -p tcp --dport 20000:20019 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i
$INTERNAS_LANS -p tcp --dport 21 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp
-d 200.255.42.71 -j ACCEPT
done
fi
}
PROXY_TRANSPARENTE()
{
if [ "$TRANSPARENTE" = "y" ]
then
if [ ! -z "$NO_PROXY_TRANSP" ]
then
for SEM_PROXY in $NO_PROXY_TRANSP
do
for INTERNAS_LANS in
$LANS_INTERNAS
71
do
$IPTABLES -t nat -A
PREROUTING -i $INTERNAS_LANS -p tcp -d ! $SEM_PROXY --dport 80 -
j REDIRECT --to-port 3128
echo "Definindo proxy
transparente para $INTERNAS_LANS com excessao para $SEM_PROXY"
done
done
else
for INTERNAS_LANS in $LANS_INTERNAS
do
echo "Definindo proxy
transparente para $INTERNAS_LANS."
$IPTABLES -t nat -A PREROUTING
-i $INTERNAS_LANS -p tcp --dport 80 -j REDIRECT --to-port 3128
done
fi
fi
}
FINALIZANDO()
{
echo ""
echo -e '\033[33;1m===========> REGRAS DE FIREWALL
APLICADAS.\033[m'
echo -ne '\033[11;100]\033[10;1100]\a'
echo -ne '\033[11;100]\033[10;750]'
echo ""
}
AJUDA()
{
echo "MIRAR Firewall, por Dorival M Machado
Junior(dorivaljunior@gmail.com)"
echo ""
echo " Opcoes: apply - executa as regras
normalmente"
echo " stop - para totalmente o firewall,
bloqueando todas as conexoes"
echo " clean - executa regras limpas, sem
qualquer tipo de bloqueio"
}
case "$1" in
stop)
LEITURA_DE_VARIAVEIS
LIMPANDO_REGRAS
PARANDO_CONEXOES
72
;;
apply)
LEITURA_DE_VARIAVEIS
INICIANDO
LIMPANDO_REGRAS
DEFININDO_POLITICAS_PRINCIPAIS
INFORMACOES
ESTADO_DE_CONEXAO
REDIRECIONAMENTO_DE_PORTAS
BLOQUEIO_DE_ACESSO_A_INTERNET
GENTE_FINA
LIBERANDO_MSN
LIBERANDO_PORTAS
BLOQUEIO_DE_PORTAS
BLOQUEIO_DE_IPS
BLOQUEIO_DO_MSN
REGRAS_BASICAS_FIREWALL
DEFININDO_PING
PROTECAO_CONTRA_ATAQUES
DEFININDO_SSH
CONECTIVIDADE_SOCIAL
DIOPS_ANS
HABILITANDO_NAT
CONECTIVIDADE_SOCIAL-NAT
DIOPS_ANS-NAT
PROXY_TRANSPARENTE
FINALIZANDO
;;
clean)
LEITURA_DE_VARIAVEIS
INICIANDO
LIMPANDO_REGRAS
LIMPO
INFORMACOES
HABILITANDO_NAT
PROXY_TRANSPARENTE
FINALIZANDO
;;
help)
AJUDA
;;
*)
echo "Uso: $0 {apply|stop|clean|help}"
;;
esac
73
APENDICE C - arquivo redirect.sh
#!/bin/bash
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# MIRAR Firewall
# arquivo : redirect.sh
# objetivo : regras de redirecionamento
# autor : Dorival M Machado Junior (dorivaljunior@gmail.com)
# versao : 1.00, em 5 de maio de 2008
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Regras especiais de redirecionamento
# DESKTOP REMOTO
RDESKTOP="3389"
DESTINO_RDESKTOP="192.168.100.100"
IPT="/sbin/iptables"
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
$IPT -t nat -A PREROUTING -p tcp --dport $RDESKTOP -j DNAT
--to-destination $DESTINO_RDESKTOP
$IPT -t nat -A PREROUTING -p udp --dport $RDESKTOP -j DNAT
--to-destination $DESTINO_RDESKTOP
$IPT -t nat -A OUTPUT -p tcp --dport $RDESKTOP -j DNAT --to-
destination $DESTINO_RDESKTOP
$IPT -t nat -A OUTPUT -p udp --dport $RDESKTOP -j DNAT --to-
destination $DESTINO_RDESKTOP
echo " Redirecionando $RDESKTOP para $DESTINO_RDESKTOP"
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#PARA FAZER UM NOVO REDIRECIONAMENTO, BASTA DESCOMENTAR TODAS
AS LINHAS ABAIXO E CONFIGURAR A PORTA E DESTINO
#PORTA=""
#DESTINO=""
#$IPT -t nat -A PREROUTING -p tcp --dport $RDESKTOP -j DNAT --
to-destination $DESTINO_RDESKTOP
#$IPT -t nat -A PREROUTING -p udp --dport $RDESKTOP -j DNAT --
to-destination $DESTINO_RDESKTOP
#$IPT -t nat -A OUTPUT -p tcp --dport $RDESKTOP -j DNAT --to-
destination $DESTINO_RDESKTOP
#$IPT -t nat -A OUTPUT -p udp --dport $RDESKTOP -j DNAT --to-
destination $DESTINO_RDESKTOP
#echo " Redirecionando $PORTA para $DESTINO"
74
APENDICE D - arquivo analisa-rede.sh
#!/bin/bash
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# objetivo : teste de regras de balanceamento e links de
acesso externos
# autor : Dorival M Machado Junior,
dorivaljunior@gmail.com
# versao : 1.0
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#Preenchimento de variaveis
#comandos necessarios
SCRIPT_BALANCEAMENTO="/root/balanceamento.sh"
IFCONFIG="/sbin/ifconfig"
CAT="/bin/cat"
PING="/bin/ping"
IP="/sbin/ip"
ARQUIVO_DE_LOG="/var/log/messages"
#informacoes da rede
INTERFACE_LINK1="ppp0"
IP_LINK1=$( $IFCONFIG $INTERFACE_LINK1 | sed s/end.:/addr:/ |
awk /'inet addr:'/ | sed 's/.*addr://' | awk {'print $1'} )
GATEWAY_LINK1=$( $IFCONFIG $INTERFACE_LINK1 | awk /'P-a-P:'/ |
sed 's/.*P-a-P://' | awk {'print $1'} )
INTERFACE_LINK2="eth3"
IP_LINK2="189.43.151.19"
GATEWAY_LINK2="189.43.151.17"
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DATA=$(/bin/date)
VERIFICA_INTERFACE1(){
TESTE_INTERFACE_LINK1=$( $CAT /proc/net/dev | grep
$INTERFACE_LINK1 )
if [ ! -z "$TESTE_INTERFACE_LINK1" ]
then
LINK1="0"
else
LINK1="1"
fi
}
VERIFICA_INTERFACE2(){
TESTE_INTERFACE_LINK2=$( $CAT /proc/net/dev | grep
$INTERFACE_LINK2 )
75
if [ ! -z "$TESTE_INTERFACE_LINK2" ]
then
LINK2="0"
else
LINK2="1"
fi
}
VERIFICA_GW1(){
if ($PING -c 2 $GATEWAY_LINK1 > /dev/null 2>&1)
then
LINK1="0"
else
LINK1="1"
fi
}
VERIFICA_GW2(){
if ($PING -c 2 $GATEWAY_LINK2 > /dev/null 2>&1)
then
LINK2="0"
else
LINK2="1"
fi
}
VERIFICA_ROTA_BALANCEADA(){
TESTE_ROTA_BALANCEADA=$($IP route | grep nexthop )
if [ ! -z "$TESTE_ROTA_BALANCEADA" ]
then
ROTA_BALANCEADA="0"
else
ROTA_BALANCEADA="1"
fi

}
LIMPA_ROTA_DEFAULT(){
$IP route del default
$IP route del default via $INTERFACE_LINK1 2>&1
$IP route del default via $INTERFACE_LINK2 2>&1
$IP route del default via $GATEWAY_LINK1 2>&1
$IP route del default via $GATEWAY_LINK2 2>&1
$IP route del default via $GATEWAY_LINK1 dev $INTERFACE_LINK1
2>&1
$IP route del default via $GATEWAY_LINK2 dev $INTERFACE_LINK2
2>&1
}
CONFERE_REGRAS(){
76
REGRA_GW1=$(ip rule | grep $IP_LINK1)
REGRA_GW2=$(ip rule | grep $IP_LINK2)

if [ -z "$REGRA_GW1" -o -z "$REGRA_GW2" ]
then
# falta alguma regra
$SCRIPT_BALANCEAMENTO
echo "$DATA | Regras de roteamento (ip rule)
inconsistentes, atualizando..." >> $ARQUIVO_DE_LOG
fi
}
#INICIO DA EXECUCAO DE COMANDOS
#verificando se as interfaces estao levantadas
VERIFICA_INTERFACE1
VERIFICA_INTERFACE2
#verificando os gateways caso as interfaces estejam ok
if [ "$LINK1" = "0" ]
then
VERIFICA_GW1
fi
if [ "$LINK2" = "0" ]
then
VERIFICA_GW2
fi
#jogando resultado no arquivo de log
echo "$DATA | Verificacao do link1: $INTERFACE_LINK1 com GW
$GATEWAY_LINK1 | status de erro: $LINK1" >> $ARQUIVO_DE_LOG
echo "$DATA | Verificacao do link2: $INTERFACE_LINK2 com GW
$GATEWAY_LINK2 | status de erro: $LINK2" >> $ARQUIVO_DE_LOG
# verificando a rota balanceada caso os links e gateway
estejam ok
VERIFICA_ROTA_BALANCEADA
if [ "$LINK1" = "0" -a "$LINK2" = "0" ]
then
if [ "$ROTA_BALANCEADA" = "0" ]
then
echo "$DATA | Verificacao de rota balanceada entre
$GATEWAY_LINK1 e $GATEWAY_LINK2 | status de erro:
$ROTA_BALANCEADA" >> $ARQUIVO_DE_LOG
CONFERE_REGRAS
exit 0
else
echo "$DATA | Verificacao da rota balanceada |
77
status de erro: $ROTA_BALANCEADA | re-ativando o balanceamento"
>> $ARQUIVO_DE_LOG
LIMPA_ROTA_DEFAULT
$SCRIPT_BALANCEAMENTO
exit 0
fi
else
#algum link esta inoperante, entao verificar qual e
estabecer a nova rota
if [ "$LINK1" = "1" -a "$LINK2" = "0" ]
then
# comandos para estabelecer rota pelo link2
LIMPA_ROTA_DEFAULT
$IP route add default via $GATEWAY_LINK2 dev
$INTERFACE_LINK2
$IP rule del from $GATEWAY_LINK1 #apagando regra de
uso do gateway 1
$IP route flush cache
echo "$DATA | Rota re-estabelecida usando GW
$GATEWAY_LINK2 via $INTERFACE_LINK2" >> $ARQUIVO_DE_LOG
exit 0
fi
if [ "$LINK1" = "0" -a "$LINK2" = "1" ]
then
# comandos para estabelecer rota pelo link1
LIMPA_ROTA_DEFAULT
$IP route add default via $GATEWAY_LINK1 dev
$INTERFACE_LINK1
$IP rule del from $GATEWAY_LINK2 #apagando regra de
uso do gateway 1
$IP route flush cache
echo "$DATA | Rota re-estabelecida usando GW
$GATEWAY_LINK1 via $INTERFACE_LINK1" >> $ARQUIVO_DE_LOG
exit 0
fi
fi
echo "$DATA | Link $INTERFACE_LINK1 e $INTERFACE_LINK2
inoperantes; impossivel estabelecer nova rota" >>
$ARQUIVO_DE_LOG
78
APENDICE E script de backup
#!/bin/bash
# =-=-=-=-=-=-=-=-=-=
# objetivo: backup dos arquivos de configurao
# autor: Dorival Junior
# verso: 1.0
# =-=-=-=-=-=-=-=-=-=
DATA=$( /bin/date )
/bin/cp /etc /root/backup_etc
/bin/tar -cjvf /root/backup_etc-$DATA.tar.bz2 /etc
/usr/sbin/scp -p 62333 /root/backup_etc-$DATA.tar.bz2
/djunior@10.0.0.2:backup_etc_firewall
/bin/rm -rf backup_etc-$DATA.tar.bz2
APENDICE F script para sincronizao com servidor NTP
#!/bin/bash
#=-=-=-=-=-=-=-=-=-=-=-=
# objetivo: sincronizao com servidor NTP publico
# autor: Dorival Junior
# versao: 1.0
#=-=-=-=-=-=-=-=-=-=-=-=
NTPserver=ntp.cais.rnp.br
# sincronizando com servidor NTP publico
/usr/sbin/ntpdate $NTPserver
# sincronizando o relogio do sistema para o hardware
/sbin/hwclock -w
79
ANEXOS
80
ANEXO A autorizao da empresa Contabilidade Dorival Machado e
Filhos para a publicao dos resultados e procedimentos realizados
81
ANEXO B autorizao da instituio LIBERTAS Faculdades Integradas
para a publicao dos resultados e procedimentos realizados
82