FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD - Segurana em Arquivos do Sistema com chflags(1)
 
07.07  
Inicio arrow Resumo do Site arrow Segurana em Arquivos do Sistema com chflags(1)
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histrico da Lista
Forum
Keyserver
PC-BSD: Artigos
PC-BSD: Notcias
Galeria de Imagens
Contador Usurios FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introduo
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usurio

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Segurana em Arquivos do Sistema com chflags(1) PDF Imprimir E-mail
Por Daniel Bristot de Oliveira   
05/07/2006
Seguranca FreeBSDEm mais uma boa contrição, Daniel Bristot de Oliveira escreveu  um pequeno artigo que fala sobre a segurança em arquivos do sistema. Segundo Bristot, estas medidas são precauções que devemos tomar em servidores que irão ficar on-line o dia todo e sujeito aos mais diversos ataques. Leitura recomendada ao sysadmin FreeBSD para pensar sobre os recursos oferecidos pelas flags especiais de arquivos, e considerar criar sua política de restrições especiais em arquivos, como mais um ítem obrigatório de sua checklist para um sistema em produção.

Introdução

Os bens mais preciosos que temos em computadores são nossos arquivos, e ainda existem arquivos que são vitais para o sistema. Os arquivos do sistema, que são constantes alvos de crackers, que por ventura consigam acesso a um servidor.

As permissões de arquivos fazem um ótimo trabalho, porém, elas são vulneráveis, pois se um craker conseguir acesso como root, lá se foram todos os esforços. Porém existem as File Flags, que são flags adicionais a arquivos, que restringem a manipulação destes arquivos, e juntamente com as permissões de arquivos e a sysctl kern.securelevel conseguem fazer um bom trabalho.


Dicas de instalação do Sistema

Antes de configurarmos as File Flags, vamos começar pela instalação do sistema. Para construção de servidores utilize as seguintes regras.

Instale o mínimo que puder e
Exclua tudo o que puder
Se não puder excluir, restrinja
Se não puder restringir, registre
Se não puder registrar, evite.

Para isto instale o mínimo que puder na instalação do sistema, via Ports, após instalar algo, verifique as dependência, exclua as dependências de construção, deixe somente as dependências de execução. Porém existem arquivos e daemons que vem na base do sistema, como rlogind, rshd, telnetd, entre outros, que não proporcionam um ambiente seguro, e podem ser utilizado com más intenções, se você não irá utiliza-los, exclua-os, veja também os parâmetros do /etc/make.conf, que durante a atualização do sistema via código fonte, pode evitar construir algo indesejado ou inútil.

Após ter seu sistema limpo, vamos começar a restringir.

Permições Tradicionais

Vamos pensar, depois do servidor estar pronto e executando perfeitamente, provavelmente, durante a noite, ou em dias que ninguém tem acesso a o computador, nada será compilado até uma nova atualização do sistema, então vamos tirar os direitos e execução dos compiladores do sistema e de instaladores, como gcc, g++, cc, g77, entre outros, além do mais, isto evita que pessoas não autorizadas compilem algum aplicativo.

Veja abaixo uma lista com alguns compiladores comuns no FreeBSD.

/usr/bin/cc
/usr/bin/gcc
/usr/bin/g++
/usr/bin/CC
/usr/bin/c++
/usr/bin/c++filt
/usr/bin/c89
/usr/bin/c99
/usr/bin/install
/usr/local/bin/gcc33
/usr/local/bin/g++-ooo
/usr/local/bin/g77-33
/usr/local/bin/gcc33

Faça uma varredura em seu sistema em busca de compiladores, adicione em uma lista e de um chmod -x `cat lista`, quando quiser compilar algo, apenas de um chmdo +x `cat lista`.

Outra opção é retirar a execução do halt, reboot, e outros executáveis que possam desligar ou reiniciar o servidor, assim ele somente poderá ser desligado via botão da CPU. VERIFIQUE ANTES O SUPORTE A ACPI, para que o servidor não seja resetado.

Retire a permição de leitura de arquivos de log, para os usuários e outros, pois isto pode servir informações importantes para pessoas não autorizadas.

As File Flags

Agora vamos ver como as File Flags funcionam.

No BSD além das permissões padrões do UNIX, existem as "file flags", elas são marcas que permitem dar um padrão mais restritivo quanto à edição e manipulação de arquivos. Vejamos algumas interessantes:

sappnd - system-level append-only, somente anexação ao arquivo, somente pode ser acionada pelo root. Esta flag da somente permissão para anexar conteúdo ao arquivo, o arquivo não pode ser esvaziado nem editado. Isto se torna uma boa medida para arquivos de log, ~/.history. Esta marca só pode ser colocada em um arquivo a qualquer momento, mas só pode ser removida se o nível de segurança for menor que 0. (kern.securelevel=-1)

schg - system-level imutable, imutável, somente pode ser acionada pelo root. Esta flag deixa o arquivo totalmente protegido, ele não pode ser alterado de forma alguma. Eu utilizo esta flag nas pastas com executáveis, e arquivos de configuração, e alguns diretórios digamos de conteúdo mais estático, como /lib, /libexec .... Esta marca só pode ser colocada em um arquivo a qualquer momento, mas só pode ser removida se o nível de segurança for menor que 0. (kern.securelevel=-1)

sunlnk - system-level undeletable, não pode ser apagado, somente pode ser acionada pelo root. Bom visto em comparação com as outras opções, esta parece será menos segura, o arquivo não pode ser apagado, porém seu conteúdo pode ser esvaziado e alterado. Esta marca só pode ser colocada em um arquivo a qualquer momento, mas só pode ser removida se o nível de segurança for menor que 0. (kern.securelevel=-1)

uappnd - user-level append-only, imutável, pode ser acionada pelo root e pelo dono do arquivo. As características de proteção do arquivo são as mesmas que as da flag "sappnd", porém esta marca pode ser retirada pelo dono do arquivo e pelo root a qualquer momento.

uchg - user-level imutable, somente anexação ao arquivo, pode ser acionada pelo root e pelo dono do arquivo. As características de proteção do arquivo são as mesmas que as da flag "schg", porém esta marca pode ser retirada pelo dono do arquivo e pelo root a qualquer momento.

uunlnk - user-level undeletable, não pode ser apagado, pode ser acionada pelo root e pelo dono do arquivo. As características de proteção do arquivo são as mesmas que as da flag "sunlnk", porém esta marca pode ser retirada pelo dono do arquivo e pelo root a qualquer momento.

Para ver se um arquivo possui flags associadas, execute o comando

> ls -lo /bin/cat?
-rw-r-r- 1 root wheel uchg 8036 Nov 22 06:10 /bin/cat

No quinto campo está o que nos interessa. Vimos ali a flag uchg, caso ela não existisse o uchg seria substituído por um "-".

Para ajustar uma marca, utilize o comando chflags(8)

chflags <flag> <arquivo>

Por exemplo:

> chflag uchg /bin/cat

Para ajustar o conteúdo de um diretório recursivamente utilize opção -R

> chflag -R schg /bin

Para retirar uma flag de um arquivo adicione o prefixo "no" na flag que deseja remover Por exemplo

> chflag nouchg /bin/cat

Na prática aconselho a utilizar a flag schg em todos os diretórios bin, sbin, include, lib, etc, libexec. Veja aqui o script com os arquivos que eu "tranco".

Cuidados com as schg

O arquivo de senha do samba, se utilizada a flag schg não deixa os usuários iniciar uma seção nos clientes Windows. Não aplique-a em arquivos de usuário, pois eles ficarão trancados, em arquivos de log, pois os logs não serão gravados, em bases de dados, pois nem todos os arquivos devem ficar estáticos.

A File Flag sappnd pode ser utilizada em arquivos de log, ela dará toda a segurança que eles precisam, porém, os logs não poderão ser rotacionados, e isso pode fazer com que seu sistema de arquivos fique cheio, muito cuidado a utiliza-la com arquivos de log.

Secure Level

A sysctl kern.securelevel

-1 e 0 Nenhuma segurança, as File flags podem ser adicionadas e removidas
1, 2 e 3 As File Flags podem ser adicionadas mas não podem ser removidas, assim os arquivos ficam travados.

Após setado o securelevel só pode ser alterado por um valor maior, nunca um menor. Para setar um valor menor somente reiniciando o sistema em modo mono usuário e substituindo o valor. para maiores informações veja securelevel(8).

Agora que já setamos todas as flags, altere o securelevel para maior que 1 e o sistema está mais seguro.

Comentrios
Por thiago_cabeludo em 06/07/2006 21:27:44
No conhecia essas flags nem o securelevel. 
 
Bem legal esse texto. 
 
man chflags
Por Complemento em 07/07/2006 14:08:19
Quem ficou interessado, leia a 
 
man chfgals 
 
E tambem a parte de seguranca do handbook http://doc.fug.com.br/handbook. 
 
Tem mais flags como opaque, nodump, da para brincar mais um bocado, mas as principais sao essas citadas no otimo artigo do Daniel.
familia BSD
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 28/08/2006 21:10:55
Ol! 
 
Onde posso encontrar os seguintes tpicos para pesquisa escolar? Porque esta difcil de encontrar um conceito bom. 
 
historia do BSD. 
gerencia de processo. 
comunicao entre processo. 
gerencia de memria. 
sistema E/S. 
sistema de arquivos. 
sistema de proteo e segurana. 
 
 
Grato 
 
Cleider


Comente!*
Nome:
E-mail
Homepage
Ttulo:
Comentrio:

Cdigo:* Code

ltima Atualizao ( 05/07/2006 )
 
< Anterior   Prximo >
FUG-BR - Espalhando BSD
Dicas Rpidas:
Quer saber todos os arquivos que um dado port instalou? Use pkg_info -L <nome do port>. Quer reler a mensagem de pós-instalação de um port já instalado? Use pkg_info -D <nome do port>. Quer consultar informações de um port sem precisar mencionar seu nome e versão exatamente como registrados? Use pkg_info -x <expressao>, por exemplo, pkg_info -L -x perl
 






Wallpapers
Online:
Ns temos 16 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.