Escolar Documentos
Profissional Documentos
Cultura Documentos
netshark@cerem.ufp.pt
Abril de 2003
Windows 2000 e Linux:
Abril de 2003
Windows 2000 e Linux: um estudo comparativo no contexto de segurança informática
lógica
Por
Orientador
Monografia apresentada à Universidade Fernando Pessoa como parte dos requisitos para
Obtenção do grau de Licenciado(a) em Engenharia da Comunicação
Resumo
Este trabalho descreve os modelos de segurança lógica dos Sistemas Operativos Windows
2000 e Linux (Red Hat 8), bem como as respectivas vulnerabilidades e medidas de protecção
associadas. É igualmente feita uma análise crítica a um sistema de detecção de intrusão, para
Linux, com a finalidade de propor uma melhoria no modelo de segurança apresentado. Não
existindo sistemas de detecção de intrusão gratuitos para o Windows 2000, optou-se por
efectuar somente o teste em Linux. No entanto, o princípio de utilização do sistema de
detecção de intrusão pode ser transposto para o Windows 2000.
É feita inicialmente uma contextualização ao tema que incide nas áreas referidas, expondo os
principais aspectos de segurança lógica existentes nestes dois sistemas operativos. Desta
forma pretende-se fornecer ao leitor uma ideia clara do modelo de segurança lógica do
Windows 2000 e do Linux. Seguidamente apresenta-se uma exposição das principais
vulnerabilidades encontradas nos dois sistemas operativos, bem como das contramedidas
propostas, permitindo ao leitor generalizar os conceitos expostos para as vulnerabilidades
lógicas de sistemas operativos em geral. De modo semelhante, ser- lhe-á possível entender que
procedimentos existem para prevenção geral de ataques à segurança lógica de sistemas
operativos, através da generalização dos métodos de prevenção enunciados.
Com este trabalho espera-se mostrar ao leitor que segurança lógica existe no Windows 2000 e
no Linux, permitindo-lhe a comparação de acordo com as suas necessidades, bem como
fornecer- lhe os passos necessários para melhorar essa segurança, generalizando os métodos e
as técnicas estudados neste trabalho, de forma a poder aplicá- los em áreas de investigação de
segurança lógica semelhantes.
-I-
Aos meus Pais
- II -
Agradecimentos
Particularmente, agradeço aos meus pais por tudo que fizeram por mim até hoje, pelo
incentivo e ajuda que me deram e aos quais dedico esta monografia.
Ao professor Feliz Ribeiro Gouveia por todo o apoio e orientação prestadas, não só no que
concerne à execução deste trabalho, mas também durante a frequência do curso e nas
actividades realizadas no CEREM.
A todos os discentes e docentes, que pela sua ajuda, apoiaram- me todos estes anos, para
chegar até este ponto. Em especial aos professores Nuno Ribeiro e José Vasconcelos, pelos
contributos prestados na revisão desta monografia.
- III -
Índice
1 INTRODUÇÃO.................................................................................................................6
1.1 OBJECTIVOS .................................................................................................................7
1.2 MOTIVAÇÃO ................................................................................................................7
1.3 RESTRIÇÕES .................................................................................................................7
1.4 ESTRUTURA DO DOCUMENTO .......................................................................................8
2 WINDOWS 2000 E LINUX .............................................................................................9
2.1 BREVE HISTORIAL DO WINDOWS .................................................................................9
2.2 BREVE HISTORIAL DO LINUX .....................................................................................11
2.3 SEGURANÇA LÓGICA NO WINDOWS 2000..................................................................12
2.3.1 A Active Directory ............................................................................................12
2.3.2 Contas de utilizadores ......................................................................................16
2.3.3 Acesso a recursos .............................................................................................19
2.3.4 Sistema de Ficheiros .........................................................................................22
2.3.5 Comunicações...................................................................................................27
2.3.6 Criptografia – a PKI.........................................................................................29
2.3.7 Disponibilidade e Fiabilidade ..........................................................................32
2.4 SEGURANÇA LÓGICA NO LINUX .................................................................................35
2.4.1 Arquitectura do Sistema operativo...................................................................35
2.4.2 Contas de utilizadores e acesso a recursos ......................................................37
2.4.3 Sistema de Ficheiros .........................................................................................40
2.4.4 Comunicações...................................................................................................43
2.4.5 Disponibilidade e Fiabilidade ..........................................................................47
3 VULNERABILIDADES E MEDIDAS DE PROTECÇÃO ........................................49
3.1 ESTOURO DE PILHA – BUFFER OVERFLOW .................................................................51
3.2 DIVULGAÇÃO EXCESSIVA DE INFORMAÇÃO ...............................................................55
3.3 VULNERABILIDADES DE REDE....................................................................................59
3.4 VULNERABILIDADES DE ELEVAÇÃO DE PRIVILÉGIOS ..................................................60
3.5 CONTRAMEDIDAS PRÁTICA S PROPOSTAS ...................................................................63
4 SISTEMAS DE DETECÇÃO DE INTRUSÃO ...........................................................68
4.1 IMPLEMENTAÇÃO DE IDS ..........................................................................................71
5 CONCLUSÃO .................................................................................................................76
6 BIBLIOGRAFIA ............................................................................................................78
7 ANEXOS ..........................................................................................................................81
- IV -
Índice de figuras
- V-
Introdução
1 Introdução
A escolha destes dois sistemas operativos é motivada pelo facto de representarem, por si só,
mais de 50% do mercado de sistemas operativos de rede, com especial incidência nos
servidores ligados à Internet (Netcraft, 2002).
Para efectuar a pesquisa necessária, e expor e fundamentar os conceitos mais relevantes, são
igualmente analisadas publicações de entidades com reconhecida competência e
independência na área de Segurança Informática, tais como o Computer Emergency Response
Team / Coordination Center (CERT/CC)1 , publicações da Microsoft e publicações de autores
da comunidade Linux.
1
Disponível em http://www.cert.org/
-6-
Introdução
1.1 Objectivos
O objectivo principal deste trabalho é fornecer ao leitor uma indicação clara sobre os modelos
e medidas de segurança dos dois sistemas operativos (SOs), de forma a auxiliar a escolha, e
permitir selecionar o SO que melhor se adapte às suas necessidades de segurança informática.
Adicionalmente, pretende-se fazer uma introdução aos sistemas de detecção de intrusão (IDS)
como medidas fundamentais para melhorar a segurança lógica destes sistemas operativos, e
analisar a implementação de um IDS para Linux.
1.2 Motivação
As motivações do autor deste trabalho prendem-se com o facto de utilizar e administrar estes
dois sistemas operativos no Centro de Estudos e Recursos Multimediáticos da Universidade
Fernando Pessoa, centro de investigação ao qual está ligado. Possui também um interesse a
nível profissional e académico desde há vários anos pela Segurança Informática, e
administração de sistemas operativos, particularmente do Linux, tendo vindo a adquirir deste
modo conhecimento útil para as funções que desempenha, e que venha a desempenhar no
futuro.
1.3 Restrições
-7-
Introdução
No segundo capítulo faz-se uma contextualização do tema. Descreve-se o historial dos dois
sistemas operativos cronologicamente e de forma sucinta, após o que se identifica e descreve
áreas e tópicos de estudo na segurança informática dos dois sistemas operativos. De seguida
estabelece-se uma relação entre os tópicos de estudo definidos e os modelos de segurança dos
dois sistemas operativos estudados.
-8-
Windows 2000 e Linux
Nas seguintes secções é descrito o historial dos dois sistemas operativos, e é feita a descrição
do modelo de segurança lógica do Windows 2000 e a descrição do modelo de segurança
lógica do Linux.
A Microsoft anunciou finalmente este Sistema Operativo em Novembro de 1983, tendo sido
lançado oficialmente em Novembro de 1985. A figura 1 mostra o aspecto inicial do primeiro
Windows.
-9-
Windows 2000 e Linux
Na versão seguinte (Windows NT 3.5), lançada em Setembro de 1994, foi adicio nado o
suporte nativo para redes TCP/IP. No ano seguinte, a versão 3.51 adiciona o suporte para
aplicações Windows 95. Estas versões suportam igualmente a portabilidade multiplataformas:
funcionam não apenas em plataformas Intel, mas também em Alpha, MIPS e PowerPC. Esta
estratégia de portabilidade foi abandonada posteriormente em detrimento da plataforma Intel.
Em 1996 a versão 4.0 surge no mercado, e apresenta um suporte para a Internet através do seu
servidor Web (IIS – Internet Information Server).
Finalmente, em Fevereiro de 2000 surge o sistema operativo que é objecto de estudo deste
trabalho, o Windows 2000, também conhecido como Windows NT 5.0. No âmbito da
segurança, as principais características deste sistema operativo são:
? cifragem de dados nas partições NTFS (EFS- Encrypted File System, a analisar
posteriormente),
- 10 -
Windows 2000 e Linux
O Windows 2000 teve no ano seguinte uma nova versão, o Windows XP. Trata-se
basicamente do Windows 2000, versão cliente (chamada Professional), com um novo
interface do utilizador completamente redesenhado.
Sendo inicialmente um passatempo pessoal (as expectativas do autor sobre o projecto eram
limitadas), o Linux tornou-se gradualmente num projecto cooperativo de software que
actualmente envolve milhares de pessoas espalhadas pelo globo.
A nível comercial, o Linux foi distribuído em conjuntos de software por empresas ligadas a
esse tipo de vendas, tais como a RedHat3 , Suse ou a Debian, que obtiveram respostas bastante
positivas junto dos utilizadores.
Com o advento da Internet e das empresas em linha, na segunda metade da década de 90, o
meio empresarial descobriu o Linux, tendo-o utilizado em estratégias de implementação de
soluções de hardware de custo reduzido 4 .
Em 1999 a Red Hat torna-se a primeira companhia com produtos baseados em Linux a ser
comercialmente bem sucedida. Em Dezembro desse ano, a Linuxcare, uma empresa pioneira
2
Disponível em http://www.linux.org
3
Disponível em http://www.redhat.com/
4
Ver, por exemplo http://www.hp.com/wwsolutions/linux/
- 11 -
Windows 2000 e Linux
em serviços Linux, anuncia alianças com gigantes do sector informático, tais como a IBM, a
Dell, a Motorola e a Informix.
? Especificar quais são as permissões de acesso aos elementos, as permissões que esses
elementos têm sobre outros, e o controlo de comunicações entre eles.
- 12 -
Windows 2000 e Linux
Do ponto de vista lógico, é feita uma abordagem completamente orientada a objectos sobre o
sistema a implementar. O sistema implementado é constituído por domínios, organizados
hierarquicamente em árvores. Esta hierarquia tem influência sob a forma como a segurança é
implementada. Um domínio é constituído por um conjunto de objectos que partilham
necessidades de segurança semelhantes ou iguais. Um domínio pode ainda ser dividido em
unidades organizacionais (OUs). As OUs são subconjuntos de objectos com as mesmas
necessidades administrativas (grupos administrativos).
Considerando o exemplo prático de uma multinacional com sede nos Estados Unidos, e filiais
na Europa e Japão, poderemos ter uma árvore de 3 domínios diferentes, correspondentes às
regiões em causa, um conjunto de OUs correspondentes às cidades europeias em que a
empresa esta implantada, ou ainda outro conjunto de OUs correspondentes aos departamentos
da filial de Tóquio (por exemplo, contabilidade, marketing, recursos humanos e I&D).
De uma forma geral quanto maior for o grau de complexidade estrutural da organização,
maior será a complexidade lógica da AD a implementar e maior será a necessidade de
existência de árvores de domínios e florestas.
A AD é muito flexível do ponto de vista de concepção lógica do sistema, pois permite realizar
a organização lógica do sistema do modo desejado. Para o exemplo prático da multinacional
existe uma variedade enorme de concepções, consoante a perspectiva do engenheiro de
- 13 -
Windows 2000 e Linux
sistemas que a executa. A abordagem geral usada consiste numa análise descendente
semelhante à utilizada em análise de sistemas, com a diferença que neste caso já nos
encontramos na fase da concepção lógica, sendo as características mais relevantes do sistema
já conhecidas.
Do ponto de vista físico, a AD é uma base de dados armazenada por todos os controladores de
domínio do sistema que é replicada de forma regular entre si (com regras de replicação pré-
estabelecidas). Um controlador de domínio é um computador que desenvolve um conjunto de
actividades especiais do sistema, das quais se destaca o controlo de acesso a recursos e
privilégios de utilizadores.
Em muitos casos, as tarefas da concepção física são de facto, auxiliadas pela AD. Por
exemplo, a localização dos diferentes tipos de servidores, e as inter relações existentes são
críticas nos aspectos de segurança lógica. Estas características podem ser directamente
definidas pela AD. Estas definições (ver figura 2) são conhecidas por políticas de grupo
(Group Policies). Quando são aplicadas a utilizadores ou computadores, são elas próprias
objectos da AD, conhecidos por objectos de políticas de grupo (Group Policy Objects -
GPOs) (Sweet et al., 2000).
Os GPOs são os objectos mais importantes do ponto de vista de segurança lógica no Windows
2000, pois permitem definir todos os aspectos a nível de permissões que cada utilizador pode
ter, desde o acesso a recursos do sistema operativo até recursos de software ou hardware
presentes no sistema.
- 14 -
Windows 2000 e Linux
- 15 -
Windows 2000 e Linux
? serviços do sistema,
? políticas locais.
O Windows 2000 é um sistema operativo multi- utilizador. Isto significa que vários
utilizadores podem usar o sistema e respectivos recursos em simultâneo, pelo menos de forma
aparente do ponto de vista dos utilizadores. A utilização simultânea de recursos só é realmente
possíve l recorrendo a soluções mais avançadas de hardware, e da sua gestão, como por
exemplo, a utilização de sistemas multiprocessador que permitem de facto a existência de um
ambiente real multitarefa (ou seja, a distribuição de tarefas pelos diferentes processadores
simultaneamente).
Uma conta de utilizador é caracterizada por um registo numa base de dados, que pode residir
localmente no próprio computador (também conhecida por SAM - Security Accounts
Manager). Se a conta é local, reside na própria máquina e estamos perante um grupo de
- 16 -
Windows 2000 e Linux
trabalho. Uma conta pode, em alternativa, fazer parte da Active Directory (descrita na secção
seguinte) desde que a conta pertença a um domínio.
No Windows 2000 é possível escolher entre dois modelos de rede alternativos: O modelo de
grupo de trabalho (Workgroup) ou o modelo de domínio.
Um grupo de trabalho é um modelo simples de rede no qual os utilizadores, nas suas próprias
estações de trabalho, participam num grupo com outros utilizadores para partilharem recursos.
O utilizador com privilégios suficientes de administração de cada computador é responsável
pela atribuição de permissões de acesso ao seu computador, pelos restantes participantes do
grupo (Sheldon, 1997).
Mais especificamente um domínio permite uma organização lógica do sistema mais adequada
às necessidades do gestor do sistema. O domínio permite a organização fácil de recursos, a
localização mais fácil da informação (uma consequê ncia directa da vantagem anterior), e a
delegação da gestão de tarefas, ou de áreas específicas do domínio, em outros utilizadores,
para além do administrador do domínio (Johnston et al., 2000). O modelo de domínio é, na
realidade, um modelo avançado de gr upo de trabalho.
Existem ainda as contas predefinidas que são criadas durante a instalação do Windows 2000
ou da Active Directory. São exemplos a conta de administrador e a conta de convidado
(guest). Estas contas podem ser locais ou de domínio.
Independentemente do tipo de conta, existe um conjunto de atributos que são comuns a todas
as contas. O username, a palavra-chave, a descrição da conta e o nome completo do utilizador
são alguns desses atributos.
- 17 -
Windows 2000 e Linux
As contas fazem ainda parte de um ou mais grupos. Os grupos de utilizadores (ou grupos de
contas) são importantes quando se quer atribuir o mesmo conjunto de permissões a um
conjunto de utilizadores, que podem nada ter em comum, excepto uma utilização semelhante
dos mesmos recursos. Assim, os grupos existem nomeadamente para facilitar as tarefas de
gestão de utilizadores especialmente quando o número de utilizadores e a dimensão do
sistema são consideráveis.
De forma análoga às contas, existem vários tipos de grupos de utilizadores. Os grupos podem
ser locais, específicos a uma máquina, ou podem ser de domínio. Os grupos locais existem
apenas no computador em que são criados. Os grupos de domínio, pertencem a um ou mais
domínios, dependo esse aspecto do âmbito que lhes é atribuído na sua criação.
? Global: este âmbito é usado para os utilizadores que possuam requisitos de acesso à
rede semelhantes. Os recursos a aceder podem estar localizados em qualquer domínio,
mas as contas de utilizadores e os próprios grupos globais, só podem pertencer ao
domínio onde foram criados. Grupos globais podem ser adicionados a outros grupos
globais que pertençam ao mesmo domínio. Os grupos globais podem ser ainda
adicionados a grupos de domínio local ou grupos universais residentes noutros
domínios.
? Domínio Local: neste âmbito as permissões de acesso a recursos são usadas para
recursos que pertençam ao mesmo domínio onde foi criado o grupo. O recurso não
necessita de estar num controlador de domínio. Qualquer grupo ou conta de utilizador,
residente em qualquer domínio, pode ser adicionada sem restrições a grupos deste
âmbito, mas grupos com este âmbito não podem ser adicionados a outros grupos.
? Universal: este âmbito só está disponível quando o domínio está em modo nativo, ou
seja, sempre que todos os controladores de domínio existentes usam o sistema
operativo Windows 2000. É usado para dar permissões a recursos localizados em
qualquer domínio. Qualquer grupo de utilizadores ou contas de utilizador podem ser
- 18 -
Windows 2000 e Linux
membros e os grupos de âmbito universal podem ser adicionados a grupos com âmbito
de Domínio Local ou Universal residentes em qualquer domínio.
Os grupos podem ainda ser englobados em diferentes sites, domínios ou OUs, consoante a
organização lógica desejada pelo administrador, ou administradores, do sistema. Este
procedimento é importante numa perspectiva de aplicação de políticas de grupo, pois a
aplicação do GPO dependerá da localização lógica do grupo (local, site, domínio ou OU).
Em primeiro lugar, serão aplicados os GPOs ligados a grupos locais (ver figura 2), depois os
GPOs ligados a sites, seguidos por GPOs ligados a domínios, e finalmente GPOs ligados a
OUs. Em caso de conflito, a ultima política aplicada é a que prevalece. Por exemplo, se os
utilizadores normais têm no computador local uma política para se retirar a opção “run” do
menu “start”, mas esses utilizadores estão igualmente contidos numa OU que liga a mesma
opção “run”, então a opção “run” ficará em efeito (Deupree Jr. et al., 2000, mod. 4).
Quanto estamos perante uma hierarquia lógica de múltiplas OUs é ainda possível aplicar
bloqueio de herança de GPOs. Isto significa que, quando em efeito, um bloqueio impede que
um GPO, aplicado a uma OU pai na hierarquia, seja propagado (herdado) para as OUs filhas.
O bloqueio não tem qualquer efeito, quando na OU pai o GPO é aplicado com a opção de “No
override”. Nesse caso, o GPO é propagado da OU pai para todas as OUs filhas,
independentemente da opção de bloqueio de herança nas OUs filhas estar ligada ou não.
- 19 -
Windows 2000 e Linux
Os SIDs são números únicos de tamanho variável que identificam um grupo, utilizador ou
computador. Os mecanismos de controlo de acesso utilizam sempre os SIDs, em detrimento
dos nomes, para gerir o acesso a recursos de rede. É, de facto, do ponto de vista de bases de
dados, a chave primária que é usada na AD para registar os recursos. Os SIDs são sempre
criados quando se adicionam novos objectos à AD, e identificam de forma única utilizadores,
grupos ou computadores.
A DACL (ver figura 3) contém a lista de utilizadores, grupos ou computadores que têm
acesso a esse objecto. Uma DACL é constituída por um conjunto limitado de Access Control
- 20 -
Windows 2000 e Linux
Entries (ACEs). Cada ACE liga um tipo de permissão específico a um utilizador ou grupo
específicos. Existem tipos de permissões diferentes nas ACEs, que variam conforme o tipo de
objecto ao qual a DACL está ligada. Por exemplo, para acesso a ficheiros, existem permissões
NTFS (NT file system) nas ACEs da DACL de cada ficheiro. Estas permissões serão descritas
mais pormenorizadamente na secção 2.3.4 onde se faz a análise deste sistema de ficheiros.
Tomando como outro exemplo as impressoras (Deupree Jr. et al., 2000, mod. 6), existem as
ACEs de permissões de impressão, gestão de documentos e a gestão de impressoras.
Por sua vez, as SACLs são usadas para auditar (registar) o acesso ao objecto. Também são
constituídas por um conjunto de ACEs, mas com um significado diferente. Cada ACE indica
em que caso (sucesso, falha ou ambos) é que a tentativa de acesso ao objecto por parte do
utilizador ou grupo deve ser registada. Quando um evento é auditado, é adicionado um registo
do evento ao registo de segurança do sistema. Os seguintes eventos podem ser auditados
(Deupree Jr. et al., 2000, mod. 4):
? Gestão de contas: este evento acontece quando um administrador cria, muda ou apaga
uma conta de utilizador ou um grupo.
? Acesso à AD: acontece quando um utilizador acede a um objecto da AD. Para que seja
possível auditar este tipo de evento, é necessário especificar que objectos da AD se
pretendem auditar.
- 21 -
Windows 2000 e Linux
? Mudança de politicas: este evento surge sempre que é efectuada uma mudança às
opções de segurança do utilizador (opções de palavra-chave ou parâmetros de logon),
direitos do utilizador ou politicas de auditoria.
Finalmente, como já foi descrito podem usar-se grupos de segurança com âmbitos de domínio
? Local, Global ou Universal (ou combinações dos três) ? para controlar o acesso aos
objectos.
O Windows 2000 suporta 3 tipos de sistemas de ficheiros (Selby et al., 2000, mod. 1):
? O FAT (File Allocation Table) usado em discos com capacidades inferiores a 2GB.
? O FAT 32, sucessor do FAT, usado em discos com capacidades superiores a 2GB.
Para este trabalho será apenas analisado o NTFS, pois é o único dos três sistemas de ficheiros
a possuir características de segurança. De facto, algumas das características principais do
NTFS estão intimamente relacionadas com a segurança lógica do sistema (Selby et al., 2000,
mod. 1):
- 22 -
Windows 2000 e Linux
Neste contexto, como já foi referido, existe uma ACL para cada ficheiro ou directório numa
partição NTFS, que normalmente é constituída por um conjunto de ACEs. Se esse conjunto
não existir (ACL vazia), o Windows 2000 nega o acesso ao recurso.
Para ACEs de NTFS temos as seguintes permissões possíveis para directórios (Selby et al.,
2000, mod. 6):
? Ler e executar: permite executar ficheiros dentro desse directório e ter as demais
permissões concedidas pela permissão de leitura.
- 23 -
Windows 2000 e Linux
Temos ainda as seguintes permissões NTFS para ficheiros (Selby et al., 2000, mod. 6):
As permissões NTFS são cumulativas. Isto significa que as permissões que o utilizador de
facto tem, são a forma mais restritiva da soma das permissões do utilizador (da sua conta) e
do grupo ou grupos a que pertence. Por outro lado as permissões de ficheiros têm sempre
prioridade sobre as permissões de directórios.
Por exemplo, se existir um utilizador com acesso de leitura e escrita a um ficheiro e se esse
utilizador pertencer a um grupo que só possui acesso de leitura a esse ficheiro, a permissão de
facto do utilizador será unicamente de acesso de leitura ao ficheiro. Se esse ficheiro estiver
num directório para o qual o utilizador possua a permissão de controlo total, a única
permissão de acesso ao ficheiro continuará a ser de leitura exclusivamente.
- 24 -
Windows 2000 e Linux
As permissões podem ainda ser, por defeito, herdadas: Isto significa que as ACEs atribuídas a
um directório são por defeito copiadas para todas os subdirectórios e ficheiros que esse
directório contiver. No entanto, é possível bloquear a herança de permissões, escolhendo
explicitamente essa opção no directório pai.
Na Windows, o NTFS suporta sistema de quotas por utilizador (Selby et al., 2000, mod. 6).
Isto significa que o cálculo de utilização de disco é baseado no tamanho de cada ficheiro e
directório pertencentes (através dos atributos de propriedade) ao utilizador sujeito à quota.
Para realizar este cálculo, ignora-se o tamanho comprimido do ficheiro, se existirem ficheiros
comprimidos.
As quotas são dependentes das partições. Para cada partição, mesmo que estejam no mesmo
disco, existem quotas monitorizadas independentemente, supondo que essas partições
possuem quotas. Podem ainda aplicar-se as mesmas quotas numa partição a todos os
utilizadores indiferenciadamente.
Adicionalmente ao sistema de quotas, a nova versão de NTFS que foi incluída no Windows
2000, possui um sistema de cifragem de ficheiros conhecido por Encrypted File System (EFS)
(Selby et al., 2000, mod. 6). Este sistema tem as seguintes características principais:
? Utiliza um sistema de 3 chaves públicas (Deupree Jr. et al., 2000, mod. 6): a chave do
ficheiro (que cifra os dados), a chave pública do utilizador, que cifra a chave do
ficheiro e a guarda numa área própria no cabeçalho do ficheiro (DDF), e a chave
pública do agente de recuperação, que executa o mesmo processo anterior, mas guarda
a chave do ficheiro numa outra área independente da anterior, mas contida no
cabeçalho do ficheiro (DRF).
- 25 -
Windows 2000 e Linux
? Possui um sistema de recuperação de dados cifrados (Deupree Jr. et al., 2000, mod. 6).
Se o utilizador original dos fiche iros já não existe (ou seja, a sua chave privada está
indisponível), é possível recuperar os seus dados usando utilizadores com privilégios
para tal operação, conhecidos por agentes de recuperação (recovery agents). Existe
sempre pelo menos um agente de recuperação no sistema que tem a sua própria chave
privada a ser usada na área que contém a chave do ficheiro cifrada pela chave pública
do agente de recuperação (DRF). Cada agente de recuperação requer um certificado
digital.
Os ficheiros são cifrados através da escolha da respectiva opção nas suas propriedades.
É possível existirem ainda directórios partilhados em rede (partilhas) (Selby et al., 2000, mod.
7). Estes directórios não podem conter ficheiros cifrados, têm nomes usados em rede (nomes
de partilhas) associados, e um conjunto de utilizadores (ligações) máximos simultâneos a essa
partilha. No caso de este ultimo parâmetro não estar definido, o número de utilizadores
máximos simultâneos é ilimitado. Uma partilha pode ter as seguintes permissões:
? Controlo total: permite a alteração das permissões do conteúdo da partilha, bem como
a mudança da propriedade dos respectivos ficheiros e todas as permissões descritas
nas alíneas anteriores.
- 26 -
Windows 2000 e Linux
Quando se combinam permissões de partilha com permissões NTFS, ou seja quando a partilha
está localizada numa partição NTFS, as permissões de utilizador resultantes serão a
combinação mais restritiva das permissões NTFS e as permissões de partilha.
2.3.5 Comunicações
? Assinatura de pacotes SMB (Server Message Block). O SMB (também conhecido por
CIFS – Common Internet File System) é usado para transferir ficheiros numa rede
Windows. A assinatura de pacotes SMB autentica mutuamente um cliente e um
servidor Windows 2000 para uma sessão de comunicação, colocando uma assinatura
digital em cada pacote transferido. Este método certifica que o cliente está ligado ao
servidor autêntico, e não a um falso servidor que se faça passar pelo servidor original.
- 27 -
Windows 2000 e Linux
É suportado numa rede nativa Windows 2000 ou numa rede mista com Windows NT
4.0, service pack 3 ou posterior.
? Os métodos Secure Sockets Layer (SSL), Transport Layer Security (TLS), Secure
Multipurpose Internet Mail Extensions (S/MIME) e Pretty Good Privacy (PGP) são
métodos de segurança que podem ser usados a nível aplicacional, mas que não
dependem do sistema operativo. Isto significa que podem ser usados noutros sistemas
operativos para além do Windows 2000, desde que esses sistemas operativos possuam
suporte aplicacional para estes métodos.
O IPsec pode actuar ainda de um de dois modos possíveis, modo de transporte e modo de
túnel. No modo de transporte, qualquer tráfego que esteja sujeito a um filtro IPsec é cifrado
entre os computadores cliente e servidor. As situações mais apropriadas de utilização deste
modo serão na comunicação entre máquinas na mesma subrede ou através de redes que não
atravessem dispositivos de tradução de endereços de rede (Network Address Translation –
NAT).
No modo de túnel não há filtros IPsec. Qualquer tráfego entre dois terminais IPsec (não
necessariamente o cliente ou servidor que originam a transmissão) é cifrado. A comunicação
entre o cliente ou servidor e o terminal respectivamente mais próximo, não é cifrada. Este
5
Para mais informação consultar http://www.ietf.org/html.charters/ipsec-charter.html
- 28 -
Windows 2000 e Linux
modo é mais apropriado quando é necessário cifrar comunicações entre uma parte insegura da
rede. Por exemplo, duas organizações que queiram cifrar todo o tráfego FTP entre si pela
Internet.
A autenticação IPsec no Windows 2000 pode ser feita através do protocolo Kerberos versão 5
(por defeito), através de certificados digitais (para computadores que não suportem Kerberos
V5), ou através de uma chave secreta pré-partilhada entre dois utilizadores (o que não requer
nem certificados digitais nem o Kerberos V5).
Por outro lado, quando se fala em acesso remoto, pode igualmente abordar-se as Redes
Privadas Virtuais (Virtual Private Networks – VPNs) (Deupree Jr. et al., 2000, mod. 9), que
permitem que clientes de acesso remoto se liguem de forma segura a uma rede, já que
proporcionam autenticação segura e cifragem de dados. Quando uma ligação VPN é criada, é
estabelecido um túnel (ligação de dados ponto-a-ponto cifrada) entre o cliente de acesso
remoto e o respectivo servidor.
O Windows 2000 suporta dois protocolos de túnel: o Point to Point Tunneling Protocol
(PPTP) e o Layer 2 Tunneling Protocol (L2TP). O PPTP possui algoritmos de cifragem
associados que são considerados mais fracos (McClure, 2000, pp. 284-285) do que o L2TP
(com suporte IPsec), mas é mais compatível, pois funciona com Windows 98 e NT 4.0,
suportando igualmente ligações NAT na rede (o L2TP é incompatível com mecanismos de
tradução de endereços: NAT).
- 29 -
Windows 2000 e Linux
utilizadores autenticados e recursos a confiar. São usados certificados digitais numa PKI para
garantir a segurança de dados e gerir as identificações dos utilizadores de dentro e de fora da
organização. A PKI é constituída por (Deupree Jr. et al., 2000, mod. 14):
? Um certificado digital: uma credencial electrónica que consiste numa chave publica e
uma chave privada, para autenticar utilizadores. São a base da PKI.
? Uma lista de certificados cancelados (Certificate Revocation List - CRL). Esta lista
contém certificados que foram invalidados antes de atingirem a data de expiração
prevista. Os certificados podem ser inva lidados nos seguintes casos: se a segurança da
CA foi comprometida, se o nível de competências dos utilizadores muda
significativamente, se a chave privada do certificado foi comprometida (por exemplo,
perda de um cartão inteligente), se o certificado foi obtido de forma fraudulenta, ou se
o certificado foi emitido a um individuo que já não é um membro de confiança.
Quando a CRL está indisponível, o certificado não pode ser validado e o acesso ao
recurso certificado é negado.
- 30 -
Windows 2000 e Linux
Os certificados podem ser usados para uma variedade de aplicações e serviços que incluem o
correio electrónico seguro, a assinatura do código de software, o SSL/TLS, a autenticação de
cartões inteligentes, a autenticação do cliente Ipsec, e o EFS.
1. Geração do par de chaves: o utilizador gera uma chave pública e privada, ou uma
entidade na organização desempenha essa tarefa para ele.
- 31 -
Windows 2000 e Linux
Todos os certificados têm um prazo de validade (no máximo de 6 meses) e são renovados
pelas CAs. Estas operações e as anteriormente descritas sobre certificados podem ser
auditadas recorrendo aos registos dos Serviços de Certificados do Windows 2000.
No que respeita às CAs, é ainda possível escolher entre utilizar CAs comerciais ou criar as
próprias CAs (CAs privadas). As CAs comerciais são geridas por companhias terceiras e
devem ser usadas quando há necessidade de transmitir confiança aos clientes na segurança de
uma transacção comercial. Estas CAs são usadas tipicamente para fins comerciais. CAs
privadas são usadas quando há necessidade de usar certificados internamente na organização,
ou externamente com parceiros ou organizações de confiança (por exemplo, duas empresas
pertencentes ao mesmo grupo económico).
As CAs podem ser hierarquizadas. Ao nível mais alto na hierarquia lógica existem CAs (root
CAs) que emitem certificados para CAs suas subordinadas, que por sua vez emitem
certificados para utilizadores ou computadores. Todo este procedimento é por vezes
necessário para distribuir a carga computacional por diferentes CAs, para delegação
administrativa dos certificados, e para uma maior coerência lógica entre as CAs e a estrutura
organizacional.
- 32 -
Windows 2000 e Linux
fornecimento de energia eléctrica ao sistema, pelo menos durante o tempo suficiente para
gravar os dados e terminar os programas em funcionamento. O Windows 2000 suporta um
conjunto de UPS variado.
Outra falha muito comum no hardware dos computadores está relacionada com as falhas de
discos. Para prevenir a perda de dados durante a perda de um disco, o Windows 2000 usa a
implementação por software do Redundant Array of Independent Disks (RAID). Os sistemas
RAID também podem ser implementados via hardware próprio para o efeito, tendo um
desempenho melhor e características adicionais, tais com por exemplo o hot swap, a troca de
discos com o sistema ligado. Contudo são mais dispendiosos do que sistemas equivalentes
implementados por software. No Windows 2000 estão implementadas por software as
abordagens de RAID 0, 1 e 5.
A RAID 0 (também conhecida por disk striping) é uma matriz de discos associados para
formar um único disco lógico cuja capacidade total é a soma de todos os discos juntos. Não
obstante o nome, esta associação lógica não é tolerante a falhas, mas oferece um desempenho
maior do que qualquer um dos discos individuais a funcionarem de forma independente (sem
RAID), bem como um desempenho maior do que qualquer outro sistema RAID.
A RAID 1 (também conhecida por disk mirroring) é uma matriz de 2 discos associados em
que um é a imagem (mirror) do outro, isto é, os dados são escritos simultaneamente para
ambos os discos. Se um disco fa lhar o sistema continua a usar o outro para manter-se em
funcionamento. Como é usado o dobro do espaço total para escrever a quantidade de dados
equivalente à de um sistema sem RAID, esta implementação só pode usar 50% do espaço
total disponível, tendo pois um elevado custo por Mb. No entanto, a RAID 1 em Windows
2000 pode ser implementada em qualquer tipo de partição, incluindo as partições do sistema
ou de arranque (boot), podendo o sistema de ficheiros ser FAT ou NTFS. A RAID 1 possui
bom desempenho de escrita e leitura e usa menos memória que a RAID 5.
- 33 -
Windows 2000 e Linux
que nas outras. A leitura é mais rápida do que na RAID 1, pois os dados estão distribuídos por
diferentes discos. No entanto, após uma falha, a RAID 5 pode-se tornar muito mais lenta na
leitura que as outras implementações, devido aos cálculos de reconstrução das partições que
tem de efectuar. A RAID 5 não pode proteger as partições de arranque ou de sistema e
necessita pelo menos de 3 discos e mais memória que a RAID 1.
No contexto das permissões, qualquer utilizador pode fazer cópias de segurança dos seus
próprios ficheiros e directórios, bem como ficheiros para os quais possuem permissões de
leitura. Todos os utilizadores podem restaurar ficheiros e directórios para os quais têm
permissões de escrita. Os administradores podem fazer cópias de segurança de quaisquer
ficheiros e directórios, e respectivo restauro, independentemente das permissões que esses
ficheiros ou directórios tiverem.
- 34 -
Windows 2000 e Linux
? Diário: copia todos os ficheiros e directórios seleccionados que mudarão durante o dia
e ignora os atributos de arquivos (+a).
Quando se realiza uma cópia de salvaguarda dos dados do sistema, está-se a fazer uma cópia
do registo, dos ficheiros de arranque do sistema, da base de dados de certificados, da AD e do
directório Sysvol (apenas se o computador é um controlador de domínio).
O sistema operativo Linux é constituído fundamentalmente por duas partes: o núcleo (kernel)
e a camada de programas que se executam no sistema à custa do núcleo, conhecida pelo termo
de “espaço do utilizador” (user space ou user level) (Wirzenius et al., 2001). O núcleo gere
- 35 -
Windows 2000 e Linux
Figura 5 – Os componentes mais importantes do nucleo (kernel) do Linux e a sua integração no sistema
(adaptado do Linux System Administrator’s Guide).
O serviço mais importante do Linux (e qualquer outro sistema UNIX) é o Init. O Init é o
primeiro processo a ser executado num sis tema UNIX e o último a terminar quando o sistema
é desligado. Como o próprio nome indica, o Init inicia (ou termina) o processo de
inicialização num UNIX e respectivos serviços. A lista exacta desses serviços e a ordem pela
qual são iniciados ou terminados, depende do Unix em questão, e no Linux depende
inclusivamente da distribuição em questão.
- 36 -
Windows 2000 e Linux
- 37 -
Windows 2000 e Linux
? Capacidades POSIX: A partir das versões 2.2 do núcleo do Linux, foi implementado o
conceito de capacidades POSIX em utilizadores e processos definidas pela norma
padrão IEEE 1003.1e (IEEE, 2001). As capacidades POSIX dividem os privilégios
normalmente atribuídos a root num conjunto mais largo de funcionalidades de
segurança mais específicas. A vantagem desta abordagem de segurança é a
possibilidade de existirem utilizadores ou processos com privilégios de segurança
específicos, apropriados para as tarefas que desempenham no sistema, ou aos recursos
que necessitam de usar, sem a necessidade de terem um acesso sem restrições à
máquina (acesso de root). Actualmente existem algumas ferramentas de segurança
(uma das quais é descrita no capítulo 4), para tirarem proveito das capacidades
POSIX.
No entanto, no Linux, tal como em outros sistemas UNIX, existe o ficheiro geral de palavras-
chaves do sistema (o /etc/passwd ) que contém todos os dados principais da conta de um
utilizador, tais como o seu username, palavra-chave, UID, e GIDs dos grupos a que pertence,
entre outra informação menos relevante.
- 38 -
Windows 2000 e Linux
Este ficheiro tem permissão de leitura concedida a todos os utilizadores, pelo que coloca
sérios problemas de segurança. Podem usar-se as palavras-chaves cifradas obtidas pela leitura
do ficheiro para se obterem as palavras-chaves originais, recorrendo a vários tipos de ataques.
Por outro lado, analisando as soluções de autenticação por rede, verifica-se que o Linux
possui meios de autenticação por rede próprios, bem como meios apropriados a ambientes de
rede heterogéneos.
Os Network Information Services (NIS) constituem uma alternativa UNIX aos domínios
Windows. Os NIS possibilitam a existência de um sistema de base de dados distribuída de
ficheiros de palavras-chave, de grupos e outros ficheiros de configuração num ou mais
servidores NIS, que distribuem essa informação por múltiplas máquinas assegurando, entre
outros serviços, a sincronização de contas e palavras-chaves (Tobler, 2000, p. 196).
- 39 -
Windows 2000 e Linux
Como qualquer outro UNIX, o Linux tem o seu sistema de ficheiros organizado numa árvore
lógica de directórios, em que a raiz da árvore é o directório raiz (/) e as folhas são directórios
terminais ou ficheiros. A figura 6 esquematiza a estrutura geral do sistema de ficheiros em
Linux, numa distribuição Redhat.
- 40 -
Windows 2000 e Linux
Embora o Linux possa utilizar e funcionar sobre outros sistemas de ficheiros, o sistema de
ficheiros padrão usado é o Extended Filesystem versão 2 ou 3 (Ext2 ou Ext3), conforme a
configuração e a versão do núcleo usada no sistema. Tem a semântica padrão UNIX para
ficheiros, que consiste na existência nos ficheiros de (Tobler, 2000, pp. 386-387):
? Bits de leitura, escrita e execução para o dono, grupo e outros utilizadores. São
basicamente as permissões UNIX. Nos directórios a permissão de leitura permite ver o
conteúdo do directório, a execução permite executar ficheiros nesse directório e a
permissão de escrita permite criar, modificar, ou apagar, ficheiros nesse directório.
Qualquer uma destas permissões não é por defeito herdada para os subdirectórios e a
permissão de facto que possuímos para um ficheiro num directório, é a forma mais
restritiva da soma das permissões desse ficheiro e do directório em que se encontra.
? Bit +l de ligação (link) simbólica. Consiste numa ligação simbólica (virtual) entre dois
directórios ou dois ficheiros localizados em pontos diferentes do sistema de ficheiros.
As permissões da ligação são ignoradas e apenas são consideradas as permissões do
directório ou ficheiro alvo, para o qual a ligação aponta.
? Bits setuid e setgid. Quanto o bit setuid está ligado num ficheiro executável, o EUID
do processo resultante será mudado para o UID do ficheiro, independentemente do
EUID do utilizador que o invoca, sendo esse ficheiro executado com os privilégios do
UID que possui. Operação semelhante é feita com o setgid com os atributos que lhe
correspondem. No entanto, se o setgid for usado num directório, todos os ficheiros que
forem ai criados terão o mesmo GID do directório. Esta característica não faz parte da
semântica padrão UNIX, mas sim dos sistemas operativos do tipo System V, uma das
famílias de sistemas operativos UNIX.
- 41 -
Windows 2000 e Linux
? Bit imutável (+i). Quanto atribuído a um ficheiro ou directório, não permite qualquer
tipo de mudanças nesse objecto. Este bit apenas pode ser modificado pelo
superutilizador.
? Bit de acrescentar apenas (+a). Este bit permite que apenas sejam acrescentados dados
ao ficheiro ou directório.
- 42 -
Windows 2000 e Linux
2.4.4 Comunicações
Tal como outros sistemas operativos, o Linux suporta, na camada de aplicação do modelo
OSI, um vasto conjunto de métodos de segurança, que dependem exclusivamente do suporte
aplicacional. Por outro lado, a um nível mais baixo, existem actualmente 3 soluções de
cifragem de pacotes, todas em estado experimental para o funcionamento de VPNs em Linux:
O CIPE é actualmente o protocolo VPN melhor suportado pelo Linux, pois é incluído
directamente no núcleo. É um projecto open-source da comunidade Linux, que cifra pacotes
IP por túneis UDP (User Datagram Protocol), em contraponto com outros protocolos VPN
que utilizam túneis TCP (mais lentos), tornando-o portanto mais rápido. No entanto,
actualmente só possui versões para Linux e Windows NT/2000. Informação completa sobre o
CIPE pode ser encontrada no local web oficial6 .
6
Disponível em http://sites.inka.de/bigred/devel/cipe.html
- 43 -
Windows 2000 e Linux
O MPPE é suportado através da adição de código extra ao núcleo, encontrado no local web
dedicado a este projecto 7 . Mais informação sobre este protocolo pode ser obtida na secção
2.3.5 e no documento RFC 3078 (IETF, 2001).
De igual modo, o IPSec encontra-se disponível como um componente à parte que pode ser
adicionado ao núcleo. O freeswan é uma implementação open-source de IPsec para Linux,
que adiciona todo o suporte de software necessário ao funcionamento de IPsec num sistema
Linux (Mourani, 2001, pp. 633-659). Mais informação sobre o IPsec pode ser encontrada na
secção 2.3.5.
As firewalls são dispositivos de hardware ou software (ou ambos), que controlam que dados
podem transitar entre duas ou mais redes informáticas. De uma forma geral, as firewalls
servem para proteger redes privadas de acessos não autorizados, mas podem igualmente
impedir o oposto, ou seja, acesso não autorizado a redes externas (Tobler, 2000, p. 388).
7
Disponível em http://www.polbox.com/h/hs001/
- 44 -
Windows 2000 e Linux
alternativa. A diferença principal entre estas três opções reside nos algoritmos usados para
analisar e gerir o tráfego, embora a mais recente iptables seja mais rápida e possua mais
funcionalidades que a mais antiga ipfwadm.
Esta abordagem de controlo de fluxo de dados entre redes pode ser feita a mais alto nível na
camada aplicacional do modelo OSI. Neste caso, já não será correcto falar em firewalls como
mecanismos de controlo de acesso, mas sim de proxies.
Um proxy também executa o controlo de acesso entre redes, mas de forma diferente de uma
firewall. Enquanto que a firewall verifica a baixo nível aquilo que deve passar e aquilo que
deve bloquear, um proxy opera a alto nível e está dependente do protocolo de apresentação
usado, tal como o HTTP ou o FTP. Para diferenciar de forma mais profunda estes dois
dispositivos, argumenta-se que uma firewall apenas filtra os dados que podem ser acedidos,
enquanto que um proxy duplica os dados que podem ser acedidos.
- 45 -
Windows 2000 e Linux
O Squid é o servidor proxy de eleição no Linux. Permite operar como proxy com os
protocolos http e ftp e oferece uma gestão de caches avançada, com diversas opções. Tem
ainda um controlo de acesso por ACLs de configuração muito flexível (Mourani, 2001, pp.
615-627).
De facto, a utilização do SSH não se limita a substituir o protocolo telnet. Futuramente, com a
normalização definitiva do protocolo pela IEFT, através de túneis SSH será possível cifrar,
por exemplo, o correio electrónico ou sessões X-Windows conforme esquematizado na figura
7.
- 46 -
Windows 2000 e Linux
As tarefas de cópia de segurança básicas são desempenhadas em Linux pelos tar ou dump
(Mourani, 2001, pp. 771,777). Estas operações podem ser automatizadas recorrendo a shell
scripts e a crontabs (tabelas de execução de coma ndos periódica).
- 47 -
Windows 2000 e Linux
? Modo linear: não se trata de uma verdadeira RAID mas sim de um agrupamento
lógico de partições de um ou mais discos. Não é tolerante a falhas, pois se um dos
discos falhar, a matriz lógica também falhará.
8
Disponível em http://www.amanda.org/
- 48 -
Vulnerabilidades e Medidas de Protecção
As medidas de protecção são medidas tomadas previamente aos ataques para evitar que uma
ameaça se concretize num ataque, ou para limitar a gravidade desse ataque.
? Fuga de informação através dos serviços que estão em funcionamento nos servidores.
Esta informação pode ser usada para atacar os próprios servidores ou o sistema.
- 49 -
Vulnerabilidades e Medidas de Protecção
? Contas de utilizador com privilégios excessivos. Deve-se seguir sempre a regra de dar
os privilégios unicamente necessários para as tarefas que o utilizador vai
desempenhar.
9
Local de presença Web disponível em http://www.cert.org/
- 50 -
Vulnerabilidades e Medidas de Protecção
Noutra perspectiva igualmente grave, se o atacante conseguir reescrever a pilha com código
arbitrário, poderá ganhar acesso parcial ou total à máquina atacada, pois ficará com os
mesmos privilégios do programa que atacou. É um exemplo clássico de intrusão de sistemas
descrito no código fonte em C da listagem 1.
- 51 -
Vulnerabilidades e Medidas de Protecção
#include <stdlib.h>
#include <stdio.h>
main()
{
char command[80]=”date”;
char name[20];
printf(“Por favor introduza o seu nome:“);
gets(name);
printf(“Olá %s, A data e tempo actuais são: “,name);
fflush(stdout);
system(command);
}
Listagem 1
$./a.out
Por favor introduza o seu nome:Alex
Olá Alex , A data e tempo actuais são: Wed Mar 10 11:18:52 GMT 1999
$./a.out
Por favor introduza o seu nome:run whoami
Olá run whoami, A data e tempo actuais são:netshark
$
Listagem 2
- 52 -
Vulnerabilidades e Medidas de Protecção
Por outro lado, o Windows 2000 (e os serviços de sistema associados) é código proprietário
que não é revelado a terceiros, o que torna a descoberta de erros de programação uma tarefa
difícil ? existe uma maior dificuldade em explorar uma vulnerabilidade que à priori é
completamente desconhecida com finalidade de atacar a máquina vulnerável (McClure, 2000,
p. 114).
De forma geral, como contramedida, deve-se ter sempre as últimas versões dos programas
afectados. Em Windows 2000, deve-se ter sempre as últimas actualizações disponibilizadas
oficialmente através da Microsoft, no seu local Web 10 ou da página específica que a Microsoft
possui para este tipo de procedimentos de actualização, a Windows update 11 .
Em Linux, as correcções são disponibilizadas por duas vias. Os editores das distribuições
possuem métodos, tais como listas de correio de aviso de erros, para informar os utilizadores
sobre problemas encontrados no software distribuído. Alternativamente, em outras ocasiões
são substituídos nesta função pelos próprios programadores do software.
10
Em http://www.microsoft.com
11
Em http://windowsupdate.microsoft.com/
- 53 -
Vulnerabilidades e Medidas de Protecção
Como segunda linha de defesa na protecção destas vulnerabilidades, é possível usar certas
alterações de núcleo (patches), tais como o openwall 12 que protegem o sistema contra certos
tipos (mas não todos) de buffer overflows. Nomeadamente, dispõe da opção de impedir que a
pilha seja executável, embora esta característica quebre a compatibilidade com certos tipos de
programas.
No Windows 2000, este problema surgiu no novo serviço de impressão via Web, que permitia
a introdução de parâmetros arbitrários via Web, provocando uma condição de buffer overflow
que permitia a execução remota de comandos no servidor de impressão. O suporte de
controlos Web ActiveX também possui vulnerabilidades deste tipo.
12
Local de presença Web disponível http://www.openwall.com/linux/
13
Disponível em http://www.cert.org/advisories/CA-2003-09.html
- 54 -
Vulnerabilidades e Medidas de Protecção
O Domain Name System (DNS) pode ser usado para localizar, por exemplo, um servidor de
correio electrónico de um domínio (através do registo de DNS MX), identificando um alvo
potencial. No Windows 2000, este problema é agravado com a introdução dos registos SRV
que permitem a clientes a localização dos servidores na AD pelo tipo de serviço que
fornecem. O mapeamento dos servidores e serviços que proporcionam fica assim muito mais
facilitado para intrusos, principalmente se esses servidores DNS forem acessíveis
publicamente (McClure, 2000, p. 427). Uma distribuição lógica cuidada dos servidores de
DNS na rede e com acesso restrito aos servidores mais sensíveis (em termos de informação
que disponibilizam), resolve este problema.
O Traceroute é uma ferramenta de diagnóstico que permite traçar o caminho entre duas
máquinas, auxiliando no reconhecimento de possíveis máquinas entre a máquina que faz o
traceroute e a máquina alvo. Isto permite uma forma alternativa reconhecer máquinas
próximas da máquina alvo que possam ser usadas para a atacar. Como contramedida, é
possível bloquear o tráfego ICMP, que é usado para executar os traceroutes, na firewall
próxima da máquina alvo (que fica entre a máquina de origem dos traceroutes e a máquina
alvo) (McClure, 2000, pp. 25-27). No Linux, este processo é assegurado pelos componentes
de firewall já descritos anteriormente na secção 2.4.4. No Windows 2000, não existe por
defeito componente de firewall, que é assegurado por um componente independente (parte do
Backoffice 2000), o Internet Security and Acelleration Server (ISA).
Para além disso, a falta de um componente de firewall por defeito em instalações Windows
2000, e em algumas instalações Linux de certas distribuições, pode comprometer seriamente a
segurança da máquina noutras situações. Por exemplo, numa intrusão, normalmente é feita
uma pesquisa prévia de portas abertas no servidor (scan) com as quais se obtêm informações
sobre os serviços activos e frequentemente as respectivas versões. Se analisada
- 55 -
Vulnerabilidades e Medidas de Protecção
O Windows 2000 é muito vulnerável a este tipo de situações, pois possui inúmeros serviços,
geralmente inúteis, a funcionarem por defeito, que denunciam a identidade do sistema
operativo (McClure, 2000, p. 428). Este caso também é observado em certas distribuições de
Linux (por exemplo a Redhat), que têm serviços como o portmapper e NFS, potencialmente
inseguros, ligados por defeito. Para além dos motivos anteriormente referidos, este é mais um
motivo para se ter apenas ligados os serviços absolutamente necessários em conjunto com um
sistema de firewall bem configurado.
Por exemplo, no Windows 2000 observa-se que grande parte dos privilégios excessivos que
um utilizador comum possuía em versões anteriores, foram restringidos. A utilização do
comando net é mais restrita para o utilizador comum. No entanto, a listagem de máquinas de
um grupo de trabalho ou domínio, bem como as respectivas partilhas continua a ser permitida.
Embora esta funcionalidade seja normalmente desejável, esta informação não deverá estar
disponível a máquinas que ainda fazendo parte da estrutura da rede, não sejam de confiança,
tais como máquinas de departamentos diferentes, que possuem necessidades de segurança
diferentes. Deve-se portanto bloquear o acesso Netbios (que fornece estas informações) nas
máquinas que partilham os recursos de impressão ou de disco, a máquinas não confiáveis ou a
máquinas mais expostas a ataques.
Em Linux, o SAMBA (responsável pelas partilhas Netbios) não possui este problema, pois
permite a utilização de ACLs baseadas em utilizadores e endereços IP, que bloqueiam
eficazmente o acesso a partilhas de um determinado computador, sem a necessidade de
utilização de politicas de bloqueio numa firewall.
- 56 -
Vulnerabilidades e Medidas de Protecção
No entanto, o alvo mais óbvio nesta perspectiva é a própria AD. Foi demonstrado que
utilizando um cliente LDAP simples, um utilizador sem privilégios pode aceder à listagem de
todos os nomes de contas de utilizadores, se estiver presente na rede um servidor de acesso
remoto (RAS) de Windows NT. Este servidor necessita que os controladores de domínio 2000
funcionem em modo de compatibilidade, enfraquecendo as permissões de acesso à AD, de
modo a que o servidor RAS possa aceder às informações das contas dos utilizadores, o que
por outro lado, permite consultas LDAP por utilizadores não privilegiados (McClure, 2000,
pp. 430-431). Como contramedida neste caso particular, deve executar-se a migração dos
servidores RAS para Windows 2000 Server e executar o utilitário netsh que corrige as
permissões de acesso à AD, tornando-as mais restritas.
No Linux, o problema de fornecer informação excessiva a utilizadores surge sob outra forma.
É por exemplo possível, com os comandos netstat e ps, entre outros, obter informações
detalhadas sobre o que outros utilizadores, incluindo o administrador, estão a desempenhar no
sistema. Estas informações são particularmente valiosas para os ataques de sequestro de
sessão (session hijacking). Estes ataques permitem que uma terceira parte se intrometa entre
uma ligação cliente servidor, substituindo um dos dois (McClure, 2000, pp. 472-474).
Entre os protocolos de alto nível, pelo menos o telnet, e o ftp conseguem ser capturados. No
entanto existe uma contramedida simple s de prevenir este problema. A utilização de redes
comutadas (com switches) entre o cliente e o servidor, impede ou dificulta bastante o trabalho
de sequestro de sessão (McClure, 2000, p. 475). Adicionalmente, o Linux cria também um
número de sessão aleatório que é enviado no início de sessão quando se estabelece a ligação
TCP/IP e incrementado sequencialmente nos pacotes posteriores transmitidos. Finalmente
- 57 -
Vulnerabilidades e Medidas de Protecção
podem aplicar-se alterações (patches) ao núcleo tais como o openwall14 que bloqueiam o
acesso a informação de netstat, ps e do directório /proc a utilizadores comuns.
Informações adicionais sobre os utilizadores no sistema Linux podem ser obtidas pelos
seguintes meios:
14
Disponível em http://www.openwall.com/linux/
- 58 -
Vulnerabilidades e Medidas de Protecção
Quando existem máquinas Windows NT na rede, o Windows 2000 não pode usar o protocolo
de autenticação de utilizadores por defeito, o Kerberos versão 5, substituindo-o pelo
tradicional NTLM. Este protocolo de autenticação é vulnerável, pois as palavras-chave
cifradas (hashes) em trânsito na rede, são decifráveis utilizando ferramentas tais como o
L0phtcrack 15 (McClure, 2000, pp. 120-121). Deve-se, sempre que possível, migrar as estações
de trabalho NT para Windows 2000, de forma a poderem utilizar o Kerberos.
Ataques tais como o smurf, SYN flood ou ping flood, fazem parte de vulnerabilidades dos
protocolos TCP e ICMP, que permitem, entre outras fraquezas, a falsificação de endereços de
origem dos respectivos pacotes de dados. Estas vulnerabilidades são independentes do sistema
operativo, e de forma geral uma firewall bem configurada pode minimizar ou eliminar estes
ataques.
15
Disponível em http://www.l0pht.com
- 59 -
Vulnerabilidades e Medidas de Protecção
Até à data de realização deste trabalho, os ataques de negação de serviço específicos a ambos
os sistemas operativos estudados resumem-se a ataques explorando condições de buffer
overflow, alguns dos quais já referidos anteriormente. Neste contexto, existe, por exemplo um
ataque deste tipo em Windows 2000 que impede toda e qualquer autenticação local de
utilizadores16 interrompendo a execução do serviço winlogon, que é precisamente responsável
pela autenticação de utilizadores.
No entanto, isto não significa que futuramente não venham a ser descobertas mais falhas na
implementação dos protocolos de rede, que foram no passado a principal fonte de problemas
de ataques de negação de serviço específicos à família de sistemas operativos Windows e
Linux.
No Linux, a elevação de privilégios surge principalmente sob uma forma de ataques buffer
overflow a processos com privilégios de superutilizador ou processos setuid. Conforme foi
referido na secção 3.1, em ataques deste tipo o atacante obtém os mesmos privilégios do
processo.
Neste caso particular, a elevação de privilégios é feita atacando processos com privilégios
superiores (de superutilizador) ou adicionais (com setuid) aos que o atacante possui. Este tipo
de ataques é normalmente feito localmente, por utilizadores do sistema aos quais foram
atribuídos privilégios básicos de acesso, ultrapassando assim os inconvenientes de um ataque
remoto. Como exemplos, pode-se apontar a necessidade da existência de um serviço
vulnerável em execução, a manutenção da ligação cliente – servidor, defesas de firewall e
obtenção de shell de comandos interactiva. A secção 3.1 apresenta um bom exemplo sobre um
ataque local explorando este tipo de vulnerabilidades.
16
Disponível em http://www.securitytracker.com/alerts/2001/Feb/1000940.html
- 60 -
Vulnerabilidades e Medidas de Protecção
Para prevenir os buffer overflows locais, para além das medidas de protecção que devem ser
tomadas para os buffer overflows genéricos, só devem existir os programas com privilégios de
superutilizador ou com setuid que sejam estritamente necessários (McClure, 2000, p. 238), ou
seja, que necessitem, por exemplo, de aceder a dispositivos especiais, ou de utilizar recursos
de rede especiais (por exemplo, portas TCP locais inferiores a 1024). Esta regra é válida para
todo e qualquer software residente num sistema Linux, incluindo aplicações, que ainda que
não sejam serviços, possam ser executadas por utilizadores normais.
As permissões do alvo não são unicamente ignoradas: o alvo pode ter o seu UID e GID,
modificados por acção na ligação simbólica (McClure, 2000, p. 239). As práticas de
programação seguras são a melhor contramedida. Idealmente, todos os programas deveriam
verificar a existência de um ficheiro antes de tentar criá- lo, já que ao fazê- lo estariam a
verificar se esse ficheiro seria uma ligação simbólica, ignorariam as suas permissões, e
considerariam apenas as permissões do alvo dessa ligação.
Os descritores de ficheiro (file descriptors) são números inteiros não negativos que o sistema
usa para fazer a gestão dos ficheiros, em lugar de usar os respectivos nomes. Por convenção,
os descritores de ficheiros 0, 1 e 2 possuem usos implícitos que correspondem
respectivamente à entrada-padrão (stdin), à saída-padrão (stdout) e ao erro-padrão (stderr).
Assim, quando o núcleo abre um ficheiro existente, ou cria um novo ficheiro, ele retorna ao
processo (programa) que requisitou essa operação um descritor de ficheiro que o programa
pode usar, para ler ou gravar naquele ficheiro. Quando um ficheiro é aberto por um processo
privilegiado, pode ser possível a um atacante gravar nesse ficheiro, modificando-o conforme
deseja. Isto acontece porque os descritores de ficheiro não foram inicializados correctamente,
permitindo alterações no ficheiro por terceiros. Tal como sucede na vulnerabilidade anterior, a
- 61 -
Vulnerabilidades e Medidas de Protecção
Em Windows 2000 a elevação de privilégios, pode também ser executada por buffer
overflows locais, embora existam menos exemplos práticos neste contexto. O serviço
winlogon permite o envio de código arbitrário para, por exemplo, adicionar um utilizador ao
- 62 -
Vulnerabilidades e Medidas de Protecção
A decifração de senhas localmente está também dificultada pelo Windows 2000, devido à
existência do mecanismo de cifra SYSKEY. Este mecanismo criptográfico estabelece uma
chave assimétrica de 128 bits para cifrar palavras-chave. A chave privada é armazenada
localmente ou em disquete (McClure, 2000, pp. 146-147). É possível obter o conteúdo da
Security Accounts Manager (SAM), recorrendo a programas que a conseguem ler (como por
exemplo o pwdump), ou utilizando programas executados via MS-DOS (como por exemplo o
NTFSDOS) que ultrapassam as permissões NTFS para aceder ao ficheiro da SAM. No
entanto, a SAM contém apenas as palavras-chave cifradas pelo mecanismo SYSKEY. Para a
descodificação completa das palavras-chave seria igualmente necessária a chave privada do
SYSKEY (McClure, 2000, p. 434).
Esta secção propõe, de forma resumida, uma série de contramedidas práticas, algumas já
referidas anteriormente, como recomendação para uma configuração segura dos dois sistemas
operativos.
17
Detalhes disponíveis em http://www.securityfocus.com/bid/5927/discussion/
18
Descrito em http://www.securityfocus.com/bid/2849/discussion/
- 63 -
Vulnerabilidades e Medidas de Protecção
No Windows 2000 deve-se inicialmente definir uma politica de segurança, isto é, deve
definir-se a estrut ura de segurança lógica da AD, especificando que OUs, domínios e sites
irão existir, e que GPOs estarão associados a estes componentes. Se o sistema já existe só se
terá esta preocupação, caso se deseje GPOs novos ou adicionais para a máquina, ou máquinas,
que se irão adicionar ao sistema.
Na instalação deve-se sempre usar o NTFS como sistema de ficheiros, pois, conforme foi
referido, proporciona características de segurança adicionais indispensáveis. Quer em
Windows 2000, quer em Linux, deve-se sempre instalar os sistemas operativos em máquinas
sem múltiplos sistemas operativos, pois esta característica pode derrotar as permissões de
segurança destes sistemas operativos.
Após este passo, devem adicionar-se as politicas de segurança desejadas, ou herdar as que já
existem no domínio. No primeiro caso, deve-se promover primeiro o computador a um
controlador de domínio com o utilitário dcpromo, e depois usar as diferentes ferramentas
administrativas, conforme os GPOs a aplicar. Em particular, devem-se estabelecer GPOs para
politicas de palavra-chave, se houver necessidade de politicas de palavra-chave mais
restritivas que as usadas por defeito.
19
Disponível em http://www.windowsupdate.com
- 64 -
Vulnerabilidades e Medidas de Protecção
Deve-se igualmente usar a característica de call-back sempre que possível, já que permite ser
o servidor de acesso remoto a fazer a chamada telefónica ao utilizador, ao contrário da
situação normal, implementando um mecanismo adicional de verificação de autenticidade dos
utilizadores. Deve ter-se igualmente, um cuidado adicional com as partilhas de rede
executadas, verificando as permissões atribuídas, particularmente o conjunto de permissões
NTFS e de partilha, que é o conjunto realmente válido num sistema NTFS com partilhas de
rede.
Caso se deseje configurar rapidamente a segurança geral num sistema Windows 2000, deve-se
utilizar os perfis de segurança proporcionados pelo Windows. Estes perfis são um conjunto de
definições completo que permitem configurar rapidamente a segurança numa máquina
Windows 2000. Os perfis principais são:
Por defeito, os perfis de segurança básica são aqueles que foram instalados numa estação de
trabalho ou servidor Windows 2000. Para configurar a segurança usando os perfis pode
utilizar-se a ferramenta snap-in da MMC (Microsoft Management Console), a Security
Configuration and Analysis. O registo de actividades do sistema também é influenciado por
estes perfis, registando uma quantidade de eventos proporcional ao nível de segurança do
perfil instalado.
- 65 -
Vulnerabilidades e Medidas de Protecção
No superservidor inetd/xinetd, responsável por uma parte dos serviços do sistema, deve-se
desligar todos os serviços desnecessários, editando os ficheiros necessários (em
/etc/inetd.conf ou /etc/xinetd.conf). Um processo semelhante deve ser seguido para
os restantes serviços do sistema, editando os scripts de configuração do processo init. Deve-se
utilizar os tcpwrappers para associar os serviços a endereços IP, explicitando que endereços
podem usar os serviços no ficheiro /etc/hosts.allow, e negando o acesso a todos os
outros endereços através de uma regra do tipo “all:all:deny ” nos ficheiros
/etc/hosts.allow ou /etc/hosts.deny em distribuições mais antigas. Como o acesso de
endereços, em particular, tem prioridade sobre a proibição de todos os endereços, este
esquema de permissões funciona na prática.
A rede deverá sempre ter um sistema de firewall instalado por defeito, podendo escolher-se
um de entre os descritos anteriormente. Deve-se seguir a regra básica de permitir tudo aquilo
que é absolutamente necessário receber pela firewall, e proibir tudo o resto. Esta semântica é
considerada segura para implementações de regras de firewall. A firewall deve ter regras
diferentes para cada protocolo de rede (pelo menos TCP, UDP e ICMP).
Deve-se ter particular atenção ao protocolo ICMP, pois é amplamente usado para diversos
ataques de negação de serviço. Preferencialmente devem diferenciar-se as regras de acesso à
rede interna das regras de acesso à rede externa, pois frequentemente são duas politicas de
acesso completamente diferentes. Deve-se bloquear sempre os endereços IP tidos como de
- 66 -
Vulnerabilidades e Medidas de Protecção
rede interna (por exemplo 10.xxx.xxx.xxx) na ligação de rede externa, pois tratam-se de
tentativas de intrusão com pacotes de informação com endereços de origem falsos
(conhecidos por ataques de ip spoofing). Por outro lado, os sistemas que não necessitam de
fazer encaminhamento de pacotes devem desactivar o encaminhamento através do comando
“echo 0 > /proc/sys/net/ipv4/ip_forward”.
Deve ainda retirar-se do sistema todos os ficheiros setuid ou setgid desnecessários, pois são
uma potencial fonte de problemas, conforme referido anteriormente. Para encontrar os
ficheiros setuid e setgid do sistema deve executar-se o comando “/ bin/find / -type f \(
-perm -004000 -o -perm -002000 ) -exec ls -lg {}”.
- 67 -
Sistemas de detecção de Intrusão
Um IDS pode ser um sistema tão simples como uma máquina ligada a uma rede, a utilizar
uma aplicação básica de monitorização de rede, ou um sistema mais complexo a recolher
informação e a funcionar em diversas máquinas. Geralmente um IDS é constituído pelos
seguintes elementos (Stranger et al., 2001, pp. 192-193):
? Um mecanismo de controlo: o IDS deve fornecer meios simples para controlar o seu
comportamento em termos de funcionamento.
- 68 -
Sistemas de detecção de Intrusão
Os IDS podem ainda adoptar duas estratégias distintas para detecção de intrusões (Stranger et
al., 2001, p. 194):
? Os IDS baseados em regras são o tipo mais comum de IDS, principalmente porque são
fáceis de instalar. Estes IDS comparam as regras em efeito com o ambiente em que
estão a funcionar.
Os IDS baseados em terminal residem num único terminal de rede e monitorizam a actividade
específica a esse terminal, funcionando como serviços de sistema. Estes IDS podem ser
analisadores de registo ou analisadores de media. Os analisadores de registo analisam os
registos do sistema por ligações de rede activas, e monitorizam essas ligações. Os
analisadores de media analisam principalmente os discos rígidos e outros periféricos, tais
como drives removíveis, drives de banda magnética ou impressoras, criando uma base de
dados. Esta base de dados contém o estado original em que se encontrava o sistema. Quando
os analisadores de media encontram uma mudança considerada significativa, é feito um
- 69 -
Sistemas de detecção de Intrusão
Os IDS baseados em rede operam entre as camadas de aplicação e de rede do modelo OSI,
analisando o tráfego que é transmitido na rede. Embora tal não seja necessário, a utilização
simultânea de um IDS baseado em rede, em diferentes terminais, é geralmente considerada
uma politica correcta de implementação destes IDS, já que permite que a informação,
recolhida pelos diferentes terminais possa ser comparada (Stranger et al., 2001, p. 196).
? Alertas: todos os IDS devem ter a capacidade de alertar a parte responsável do sistema
(administrador).
20
Disponível em http://www.tripwire.org.
- 70 -
Sistemas de detecção de Intrusão
Para a componente prática deste trabalho foi estudada a implementação de um IDS para
Linux. Foi escolhido o Linux Intrusion Detection System (LIDS). O critério de escolha
baseou-se nas pontuações atribuídas pelos utilizadores do conceituado portal de segurança
informática SecurityFocus 21 . Outros IDS recomendados são o RealSecure da Internet Security
Systems (ISS) 22 e o Snort 23 (McHugh, 2000, pp. 48-49). A razão de ausência de um teste de
IDS para Windows prende-se com limitações da dimensão do trabalho e com o facto de esta
tecnologia, de acordo com os autores, não estar suficiente madura em ambientes Windows
(McHugh, 2000, p. 48; Stranger et al., 2001, p. 205). Adicionalmente, esta tecnologia está em
fase de testes no núcleo 2.5 do Linux, com o propósito de ser incluída de base no futuro
núcleo 2.6, através dos Linux Security Modules (LSM), um conjunto de módulos do núcleo
que visam reforçar a segurança do Linux.
21
Disponível em http://www.securityfocus.com
22
Disponível em http://www.iss.net
23
Disponível em http://www.snort.org
24
Disponível em http://www.lids.org
- 71 -
Sistemas de detecção de Intrusão
? Alertar a entidade responsável pelo sistema com avisos de segurança via núcleo, que
podem ser inclusivamente enviados via rede usando o serviço de correio electrónico e
os protocolos TCP ou UDP.
- 72 -
Sistemas de detecção de Intrusão
O sistema utilizado consistia num computador com a distribuição Linux Redhat versão 8.0 e
núcleo versão 2.4.20. Os objectivos pretendidos eram o acesso externo aos serviços por http,
ftp e web.
O primeiro passo foi configurar o núcleo com as alterações do LIDS, que adicionam opções
de configuração do núcleo que permitem, por exemplo, a activação do detector de pesquisa de
portas ou do envio de alertas por correio electrónico. Ambas as opções foram ligadas.
- 73 -
Sistemas de detecção de Intrusão
- 74 -
Sistemas de detecção de Intrusão
Resumidamente, é possível concluir que a configuração ideal de segurança para cada sistema,
é uma tarefa complexa e única, pois dependerá bastante da finalidade a que esse sistema se
destina, isto é, que serviços irão funcionar, e do grau de segurança desejado. O administrador
do sistema deve procurar obter um compromisso entre as capacidades POSIX a utilizar, os
objectos a proteger e os serviços a proporcionar, isto é deve definir uma politica de segurança
adequada às necessidades do sistema que gere.
Por outro lado, a abordagem de intrusão de sistemas baseada em terminal no LIDS necessita
ainda de mais testes e desenvolvimento, com vista à resolução da maioria dos problemas
encontrados.
- 75 -
Conclusão
5 Conclusão
O Windows 2000 proporciona, de base, mais funcionalidades, das quais se destaca o serviço
de directoria de rede, a Active Directory (AD), que é de facto a grande inovação em termos de
segurança neste sistema operativo. A AD permite implementar e configurar a segurança a
diversos níveis, de forma eficaz (atingindo os objectivos desejados) e eficiente (usando os
recursos minimamente necessários), com escalabilidade considerável adaptando a segurança
lógica às necessidades da organização.
A Infra-estrutura de Chave Pública (PKI) integrada no Windows 2000 é sem dúvida outra
mais- valia significativa, permitindo a implementação rápida e eficaz de um sistema de gestão
de certificados, com total compatibilidade com os outros serviços proporcionados pelo
sistema operativo, entre os quais a própria AD. De forma análoga à AD, a PKI implementada
no Windows 2000 permite a adaptação da estrutura de gestão de certificados às necessidades
das organizações.
- 76 -
Conclusão
Este problema no Linux, será parcialmente resolvido através da inclusão do LIDS, openwall e
outros módulos de segurança no futuro núcleo 2.6 (nos LSM), que estará publicamente
disponível em 2004.
- 77 -
Bibliografia
6 Bibliografia
Bovet, Daniel P. (2001). Understanding the Linux Kernel. Sebastopol, O’Reilley &
Associates, Inc.
Card, Rémy. (1994). Design and Implementation of the Second Extended Filesystem., Actas
do First Dutch International Symposium on Linux, ISBN 90-367-0385-9. Amesterdão,
Dezembro de 1994.
Chirillo, J. (2001). Hack Attacks Revealed. New York, John Wiley & Sons, Inc.
Deupree Jr., R. e outros (2000). Designing a Secure Microsoft Windows 2000 Network.
Redmond, Microsoft Corporation.
IETF (2001). Microsoft Point-To-Point Encryption (MPPE) Protocol. [em linha]. Disponível
em <http://www.ietf.org/rfc/rfc3078.txt/>. [consultado em 25/03/2003].
- 78 -
Bibliografia
Johnston, R. e outros (2000). Windows 2000 Network and Operating System Essencials.
Redmond, Microsoft Corporation, Modulo 1.
McHugh, John (2000). Defending Yourself: The Role of Intrusion Detection Systems. IEEE
Software, Setembro/Outubro 2000.
Mitchell, Mark (2001). Advanced Linux Programming. Indianapolis, New Riders Publishing,
p. 205.
Mourani, G. (2001). Securing and Optimizing Linux: The Ultimate Solution. Montreal, Open
Network Architecture, Inc.
Redhat Corporation (2002). The Redhat 8.0 Manual [em linha]. Disponível em <
http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/>. [consultado em 22/03/2003].
Selby, R. e outros (2000). Implementing Microsoft Windows 2000 Professional and Server.
Redmond, Microsoft Corporation.
- 79 -
Bibliografia
Stranger, J. e outros (2001). Hack Proofing Linux. Rockland, Syngress Publishing Inc.
Wirzenius, L. e outros (2001). The Linux System Administrator's Guide. [em linha].
Disponível em <http://www.tldp.org/LDP/sag/index.html>. [consultado em 26/04/2003].
- 80 -
Anexos
7 Anexos
- 81 -
Anexos
drivers.
- 82 -