Autor: Luiz Vieira <ala_vieira at ig.com.br> | |
Conceitos iniciais
O SELinux
("Security-Enhanced Linux") foi desenvolvido pela agência nacional de segurança dos EUA, a NSA (National Security Agency), e toma como base o princípio do mínimo privilégio ao extremo, restringindo até o usuário root. SELinux foi implementado usando uma flexível e refinada Ele foi integrado ao kernel do Linux usando o "framework" LSM ("Linux Security Modules"). Inicialmente sua implementação utilizou os identificadores (IDs Assim, a próxima etapa da evolução do SELinux foi um módulo Entretanto essa solução não possibilitava a ideal performance do sistema. Então o código do SELinux finalmente foi integrado ao kernel Atualmente vem sendo realizado um extenso trabalho com o Vantagens na utilizaçãoO MAC mostra-se bem superior ao tradicional DAC ("Discretionary Access Control"), pois este possui diversas limitações. Caso utilize somente o DAC, o dono de um arquivo/objeto provê O DAC prevê apenas duas grandes categorias de usuários: O MAC permite que sejam definidas permissões de como os Isso é feito através de uma política de segurança definida Sobre MAC, por exemplo, usuários que expõem seus dados
|
|
Pré-requisitos
É muito importante ter habilidade de aprender termos técnicos e
colocá-los em prática. Também é importante que já tenha uma idéia do que pretende fazer, como administrar configurações de serviços básicos, satisfazer o usuário /home/servidor via Apache HTTP, manipular o policiamento da aplicação web PHP, ou realizar um policiamento que permita que certa aplicação seja protegida pelo SELinux. Para isso é necessário ter:
Novas ferramentasA nova versão do SELinux possui várias ferramentas novas, dentre elas citaremos as mais importantes: Sistema de arquivos /selinux O sistema de arquivos /selinux foi incluído. Assim uma parte do processo de instalação requer a edição do /etc/fstab. Este sistema de arquivos é similar ao /proc, que por sua vez também é um pseudo sistema de arquivos. O comando "ls -l /selinux" mostra: total 0 Executando o comando cat no arquivo enforce, será mostrada 1 para o modo enforcing ou 0 para o modo permitido. Carregando o policiamento SELinux por meio de init O responsável por montar o arquivo de sistemas /selinux é o init, depois disso deve ser carregado o policiamento. Não usa-se SIDs e PSIDs Os SIDs (Security Identifiers) eram usados no antigo SELinux na Opção -Z Esta opção pode ser usada no lugar de –context, depois de um comando como ls ou ps. Comando chcon ao invés de chsid O comando chsid era usado no antigo SELinux para alterar o
|
|
Instalando o SELinux
Caso utilize uma distribuição Linux que não possua suporte a SELinux, é necessário instalar os seguintes pacotes:
Pacotes adicionais a serem instalados no Debian
Para isso basta usar o comando "apt-get install" em seu Configurações básicasEditando seu arquivo /etc/fstab e criando o /etc/selinux: Antes de fazer o "reboot" do sistema, primeiramente é
none /selinux selinuxfs noauto 0 0
Executando o comando "make relabel"Se seu kernel é 2.6.x com # make -C /etc/selinux relabel Este comando dá um novo rótulo para o arquivo de sistemas, com o correto contexto de segurança. Porém se seu Kernel é 2.4.x, este comando não pode ser dado agora. Editando /etc/pam.d/login e etc/pam.d/ssh Antes de fazer o
|
|
Contas de usuários
Criando novas contas de usuáriosVerifique se seu domínio de $ id Caso seu uid seja o da sua conta regular, então faça o login com "su" primeiramente e siga os comandos abaixo: $ useradd -c "SE Linux test user" -m -d /home/setest -g users -s /bin/bash -u 1005 nome_de_usuário Assim o novo usuário "nome_de_usuário" foi criado. Configurando regras para usuáriosComo exemplo, para que o usuário tenha acesso a user_r, é necessário configurar o arquivo /etc/selinux/users. Para isso, insira no final de seu arquivo:
user usuario roles { user_r };
Assim o usuário "usuário" é autorizado a ter acesso à user_r role. Então é necessário atualizar o arquivo /etc/selinux/users executando o seguinte comando: # make -C /etc/selinux load Ao terminar aparecerá algo como: Success Agora deve-se configurar um contexto de segurança default, o que será visto numa seção seguinte. Editando domínios de usuáriosO arquivo de configuração que contém os domínios dos usuários é /etc/selinux/domains/user.te, altere-o adicionando as seguintes linhas:
full_user_role(second)
allow system_r second_r allow sysadm_r second_r Também adicione o seguinte comentário:
#Ao adicionar novas regras, edite o macro in_user_role em macros/user_macros.te
Para editar o arquivo /etc/selinux/macros/user_macros.te, entre num editor de texto e procure (no final do arquivo) a string in_user_role e adicione: "role second_r types $1;"
Agora que já criamos um novo domínio de usuário (second_t), criaremos um novo usuário para usá-lo. Criando um novo usuário (newuser) para o novo domínio criadoCom o próprio comando useradd, crie um novo usuário e o adicione a /etc/selinux/users, que só tenha acesso a regra second_r. Execute o comando: # make -C /etc/selinux load Para aplicar o policiamento: Deve-se configurar o domínio default para a nova regra, editando o arquivo /etc/security/default_type e adicionando a linha:
second_r:second_t
Agora é necessário rotular manualmente o arquivo /home/newuser executando o seguinte comando: # find /home/newuser | xargs chcon -h system_u:object_r:second_home_t ; chcon -h system_u:object_r:second_home_dir_t /home/spike Agora que o novo usuário foi criado, tente fazer o login como sendo ele.
|
|
Regras
Alterando regras no SELinuxFornecendo um contexto de usuário no login: Bem, aqui supõe-se que o "reboot" na máquina já tenha sido feito. Ao instalar o pacote selinux-policy-default, Então, fazendo o login como root, o contexto de segurança será:
root:user_r:user_t
Assim o id e seu contexto de segurança devem ser similares a: uid=0(root) gid=0(root) groups=0(root) context=root:user_r:user_t Existem duas maneiras para mudar para uma nova regra: 1) Ao fazer o login: Se um usuário está autorizado a entrar no domínio sysadm_t, [1]user:user_r:user_t Neste exemplo o usuário user já tinha acesso a sysadm_r role e Assim, se o usuário user selecionar a opção 2, terá o contexto 2) Com o comando newrole -r A sintaxe deste comando é: newrole -r regra Substitui-se "regra" pela nova regra desejada. Então será preciso entrar com a senha do usuário, que poderá user:sysadm_r:sysadm_t is not a valid context Esta mensagem significa que o usuário "user" não pode ter este contexto, porque não está autorizado. Após mudar regras, execute o comando id para verificar seu contexto de segurança. É isso! Agora aproveite a instalação e crie novos usuários e grupos para testar diferentes configurações de regras. Espero que testem e gostem. [ ]’s a todos!
|
|
|
|
http://www.vivaolinux.com.br/artigo/SELinux-Security-Enhanced-Linux |