selinux

23
SELINUX 24 de novembro de 2006

Upload: hudson-augusto

Post on 25-Dec-2014

576 views

Category:

Technology


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Selinux

SELINUX24 de novembro de 2006

Page 2: Selinux

Sumário

I Sobre essa apostila 3

II Informações Básicas 5

III SELinux 10

1 Visão Geral 11

2 Plano de ensino 122.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Modulo I - Introdução 153.1 Lição 1 - Conceitos Inciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.1 Vantagens na utilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 Modulo 2 - Instalação 174.1 Lição 2 - Pré-Requisitos e novas ferramentas . . . . . . . . . . . . . . . . . . . . . . 17

4.1.1 Pré-Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.1.2 Novas Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.2 Lição 3 - Instalando o SELinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.2.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.3 Configurações Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5 Modulo 3 - Configuração e uso 205.1 Lição 4 - Contas de usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.1.1 Configurando contas de usuários . . . . . . . . . . . . . . . . . . . . . . . . . 205.1.2 Editando dominios de usuários . . . . . . . . . . . . . . . . . . . . . . . . . . 215.1.3 Configurando contextos de segurança . . . . . . . . . . . . . . . . . . . . . . 21

5.2 Lição 5 - Regras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1

Page 3: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.3 Alterando regras no SELinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2

Page 4: Selinux

Parte I

Sobre essa apostila

3

Page 5: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Conteúdo

O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.

O formato original deste material bem como sua atualização está disponível dentro da licençaGNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção demesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC ([email protected]), desde outubrode 2006. Criticas e sugestões construtivas são bem-vindas a qualquer tempo.

Autores

A autoria deste conteúdo, atividades e avaliações é de responsabilidade de Frederico Braga([email protected]) .

O texto original faz parte do projeto Centro de Difusão de Tecnolgia e Conhecimento, que vemsendo realizado pelo ITI em conjunto com outros parceiros institucionais, atuando em conjuntocom as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiandoinclusive a comunidade Free Software junto a outras entidades no país.

Informações adicionais podem ser obtidas atráves do email [email protected], ou dahome page da entidade, atráves da URL http://www.cdtc.org.br.

Garantias

O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizamdireta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença

Copyright ©2006,Frederico Braga ([email protected]) .

Permission is granted to copy, distribute and/or modify this document under the termsof the GNU Free Documentation License, Version 1.1 or any later version published bythe Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-TILA. A copy of the license is included in the section entitled GNU Free DocumentationLicense.

4

Page 6: Selinux

Parte II

Informações Básicas

5

Page 7: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Sobre o CDTC

Objetivo Geral

O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito dodesenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.

Objetivo Específico

Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário ede código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre osservidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercadonacional a adotar novos modelos de negócio da tecnologia da informação e de novos negóciosde comunicação com base em software não-proprietário e de código fonte aberto, oferecendotreinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar comoincentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento deprodutos de software não proprietários e de seu código fonte livre, articulando redes de terceiros(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-dutos de software livre.

Guia do aluno

Neste guia, você terá reunidas uma série de informações importantes para que você comeceseu curso. São elas:

• Licenças para cópia de material disponível

• Os 10 mandamentos do aluno de Educação a Distância

• Como participar dos foruns e da wikipédia

• Primeiros passos

É muito importante que você entre em contato com TODAS estas informações, seguindo oroteiro acima.

Licença

Copyright ©2006, Frederico Braga ([email protected]) .

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termosda Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior

6

Page 8: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSAAPOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-mentação Livre GNU".

Os 10 mandamentos do aluno de educação online

• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado épré-requisito para a participação nos cursos a distância.

• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-tica é necessário para poder executar as tarefas.

• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,dos colegas e dos professores.

• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seuscolegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.

• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisãoe a sua recuperação de materiais.

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações erealizá-las em tempo real.

• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.

• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagense descobertas.

• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente éponto - chave na comunicação pela Internet.

• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual nãocontrola a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.

Como participar dos fóruns e Wikipédia

Você tem um problema e precisa de ajuda?

Podemos te ajudar de 2 formas:

A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:

. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informaçõesque sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas atodos participantes. Assim, se o monitor ou algum outro participante tiver uma informação queinteresse ao grupo, favor postá-la aqui.Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico docurso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais

7

Page 9: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

efetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativopara solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadasa todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podemajudar.Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com aformalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópicoé recomendável ver se a sua pergunta já foi feita por outro participante.

A segunda forma se dá pelas Wikis:

. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podemser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece umótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, porpessoas de todas as partes do mundo. Acesse-a em português pelos links:

• Página principal da Wiki - http://pt.wikipedia.org/wiki/

Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!

Primeiros Passos

Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:

• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;

• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar dasferramentas básicas do mesmo;

• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;

• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.

Perfil do Tutor

Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.

O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivosvalores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita asidéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutorou instrutor:

• fornece explicações claras acerca do que ele espera, e do estilo de classificação que iráutilizar;

8

Page 10: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• gosta que lhe façam perguntas adicionais;

• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-que motivo a classificação foi ou não foi atribuída’;

• tece comentários completos e construtivos, mas de forma agradável (em contraste com umreparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, deameaça e de nervossismo’)

• dá uma ajuda complementar para encorajar um estudante em dificuldade;

• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;

• ajuda o estudante a alcançar os seus objetivos;

• é flexível quando necessário;

• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,talvez numa fase menos interessante para o tutor);

• escreve todas as correções de forma legível e com um nível de pormenorização adequado;

• acima de tudo, devolve os trabalhos rapidamente;

9

Page 11: Selinux

Parte III

SELinux

10

Page 12: Selinux

Capítulo 1

Visão Geral

A estrutura SELinux (Security Enhanced Linux) é uma camada de segurança extra para servido-res, e limita as ações dos usuários e programas pela imposição de políticas de segurança portodo o sistema operacional. As restrições impostas por suas políticas fornecem segurança extracontra acesso não autorizado. O SELinux, que toma como base o princípio do mínimo privilégioao extremo e restringe até o usuário root, foi uma criação da NSA (Agência de Segurança Nacio-nal norte-americana).

O curso, com base na distribuição Debian possui uma semana, começando na Segunda-Feirae terminando no Domingo. Todo o conteúdo do curso estará visível somente a partir da data deinício. Para começar o curso você deve ler o Guia do aluno a seguir.

11

Page 13: Selinux

Capítulo 2

Plano de ensino

2.1 Objetivo

Capacitar o usuário para o uso autônomo do SELinux e suas ferramentas mais utilizadas.

2.2 Público Alvo

Usuários finais ou novatos que desejam migrar os seus sistemas proprietários para software livre,em especial, o SELinux.

2.3 Pré-requisitos

Os usuários deverão ser, necessariamente, funcionários públicos e ter conhecimentos básicospara operar um computador.

2.4 Descrição

O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodlecomo ferramenta de aprendizagem. O curso tem duração de uma semana e possui um conjuntode atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas deacordo com as instruções fornecidas. O material didático está disponível on-line de acordo comas datas pré-estabelecidas em cada tópico.

2.5 Metodologia

O curso está dividido da seguinte maneira:

2.6 Cronograma

• Descrição das atividades

• Semana 1

12

Page 14: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Lição 1 - Conceitos Iniciais

• Lição 2 - Pré-requisitos e novas ferramentas

• Lição 3 - Instalando o SELinux

• Lição 4 - Contas de usuários

• Lição 5 - Regras

• Avaliação de aprendizagem

• Avaliação do curso

Como mostrado na tabela acima, a cada semana será disponibilizado um conjunto de módulos.É recomendável que o participante siga as datas estabelecidas. // As lições, disponíveis em cadamódulo, contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces-sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberáuma nota de acordo com o seu desempenho. Caso sua nota numa determinada lição for menordo que 6.0, sugerimos que você faça novamente esta lição. // Ao final do curso serão dispo-nibilizadas as avaliações referentes aos módulos estudados anteriormente. Somente a nota daavaliação será considerada para a nota final. Todos os módulos ficarão visíveis para que possamser consultados durante a avaliação final. // Para conhecer as demais atividades de cada móduloleia o tópico seguinte: "Ambientação do Moodle". // Os instrutores estarão a sua disposição aolongo de todo curso. Qualquer dúvida deve ser enviada ao fórum correspondente. Diariamenteos monitores darão respostas e esclarecimentos.

2.7 Programa

O curso oferecerá o seguinte conteúdo:

• Instalação e configuração do SELinux

2.8 Avaliação

Toda a avaliação será feita on-line.Aspectos a serem considerados na avaliação:

• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;

• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.

Instrumentos de avaliação:

• Participação ativa nas atividades programadas.

• Avaliação ao final do curso.

• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação eobtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordocom a fórmula abaixo:

• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições

• AF = Avaliações

13

Page 15: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

2.9 Bibliografia

• Página oficial do SELinux http://www.nsa.gov/selinux/

14

Page 16: Selinux

Capítulo 3

Modulo I - Introdução

Programas que provêem acessibilidade em informática são um conjunto de ferramentas que per-mitem que portadores das mais diversas necessidades especiais possam utilizar todos os re-cursos que o computador oferece. Este módulo abordará uma breve introdução aos conceitosenvolvidos no SELinux.

3.1 Lição 1 - Conceitos Inciais

O SELinux ("Security-Enhanced Linux") foi desenvolvido pela agência nacional de segurança dosEUA, a NSA (National Security Agency), e toma como base o princípio do mínimo privilégio aoextremo, restringindo até o usuário root.SELinux foi implementado usando uma flexível e refinada arquitetura MAC ("Mandatory AccessControl"). Desta forma, ele provê uma política de segurança sobre todos os processos e objetosdo sistema. Suas decisões são baseadas em labels, e contém uma variedade de informaçõesrelevantes à segurança. A lógica da política de tomada de decisões é encapsulada dentro de umsimples componente conhecido como servidor de segurança ("security server") com uma inter-face geral de segurança.Ele foi integrado ao Kernel do Linux usando o "framework"LSM ("Linux Security Modules").Inicialmente sua implementação utilizou os identificadores (IDs ou PSIDs) armazenados nos ino-des livres do sistema de arquivos ext2. Tal representação numérica era mapeada pelo SELinuxcomo um label do contexto de segurança. Porém, isso necessitaria de uma modificação em cadasistema de arquivo para suportar os PSIDs, o que não é uma solução escalável.Assim, a próxima etapa da evolução do SELinux foi um módulo carregável no Kernel 2.4 quearmazenava os PSIDs em um arquivo normal fazendo com que suportasse mais sistemas de ar-quivos.Entretanto, essa solução não possibilitava a ideal perfomance do sistema.Então o código do SELinux finalmente foi integrado ao kernel 2.6.x com total suporte por LSM econtendo atributos (xattrs) no sistema de arquivos ext3. E o SELinux foi alterado para usar xat-trs como forma de armazenamento da informação do contexto de segurança. Atualmente, vemsendo realizado um extenso trabalho com o objetivo de deixar o kernel pronto para o SELinuxbem como seu subseqüente desenvolvimento em esforços conjuntos da NSA, Red Hat, IBM e acomunidade de desenvolvedores do SELinux.

15

Page 17: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.1.1 Vantagens na utilização

O MAC mostra-se bem superior ao tradicional DAC ("Discretionary Access Control"), pois estepossui diversas limitações.Caso utilize somente o DAC, o dono de um arquivo/objeto provê um potencial risco de corrompê-lo. Um usuário pode expor arquivos ou diretórios à brechas de segurança utilizando incorreta-mente o comando chmod e uma não esperada propagação dos direitos de acesso. Um processoinicializado pelo usuário como um script CGI pode fazer tudo que quiser com quaisquer arquivospossuídos por este usuário. Por exemplo um Servidor HTTP pode realizar qualquer operaçãosobre arquivos que estão no grupo web ou softwares maliciosos podem conquistar nível root deacesso rodando como processo de root ou utilizando setuid ou setgid.O DAC prevê apenas duas grandes categorias de usuários: Administradores e Não-administradores.Para alguns serviços e programas rodarem com nível elevado de privilégio as escolhas são pou-cas e tipicamente resolvidas dando completo acesso de administrador.O MAC permite que sejam definidas permissões de como os processos irão interagir com outraspartes do sistema como arquivos, devices, sockets, portas e outros processos (todos chamadosde objetos para o SELinux).Isso é feito através de uma política de segurança definida administrativamente sobre todos osprocessos e objetos. Estes processos e objetos são controlados pelo Kernel e a decisão de se-gurança é tomada com todas as informações disponíveis ao invés de utilizar somente a identidadedo usuário. Com este modelo os processos podem garantir apenas permissões necessárias pelafuncionalidade seguindo um princípio de poucos privilégios.Sobre MAC, por exemplo, usuários que expõem seus dados utilizando chmod estão protegidospelo fato de seus dados têm um tipo único associado com seu diretório "home"e outros processosnão podem tocar nestes dados sem devida permissão dentro da política.

16

Page 18: Selinux

Capítulo 4

Modulo 2 - Instalação

Esta seção abordará como instalar o SELinux de forma simples e eficiente, bem como algunspré-requisitos e conhecimentos necessários à sua instalação.

4.1 Lição 2 - Pré-Requisitos e novas ferramentas

4.1.1 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 deserviços básicos, satisfazer o usuário /home/servidor via Apache HTTP, manipular o policiamentoda aplicação web PHP, ou realizar um policiamento que permita que certa aplicação seja prote-gida pelo SELinux.Para isso, é necessário ter:

• Elevado conhecimento em Linux

• Se pretender administrar serviços, manipular ou analisar policiamento, conhecimento emnível de administrador e a experiência necessária.

• Conhecimento em segurança no sistema Linux/UNIX

• Conhecimento sobre como o sistema Linux/UNIX opera em baixo-nível, tal como são reali-zadas as chamadas ao Kernel para operações (entrada, saída, ler, escrever, etc.)

• Conhecimento de programação e da teoria do sistema que é usado no policiamento.

• Familiaridade com a linguagem M4, o que ajudaria a entender algumas partes do policia-mento SELinux.

• Privilégios de administrador no sistema.

• Algum local para examinar e testar o policiamento.Pode ser uma máquina de teste ou de-senvolvimento, ou uma estação de trabalho.

17

Page 19: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

4.1.2 Novas Ferramentas

A versão nova do SELinux possui várias ferramentas novas, dentre elas, citaremos as mais im-portantes:Sistema de arquivos /selinuxO sistema de arquivos /selinux foi incluído. Assim, uma parte do processo de instalação requer aedição de /etc/fstab. Este sistema de arquivos é similar ao /proc, que por sua vez, também é umpseudo sistema de arquivos.O comando ls -l /selinux mostra:total 0 -rw-rw-rw- 1 root root 0 Sep 11 9:16 access -rw-rw-rw- 1 root root 0 Sep 11 9:16 context-rw-rw-rw- 1 root root 0 Sep 11 9:16 create -rw——- 1 root root 0 Sep 11 10:34 enforce -rw——-1 root root 0 Sep 11 10:34 load -r–r–r– 1 root root 0 Sep 11 10:34 policyversExecutando o comando cat no arquivo enforce, será mostrada 1 para o modo enforcing, ou 0 parao modo permitido.Carregando o policiamento SELinux do por meio de init O responsável por montar o arquivo desistemas /selinux é o init, depois disso deve ser carregado o policiamento.

Não usa-se SIDs e PSIDsOs SIDs (Security Identifiers) eram usados no antigo SELinux na interface com o kernel . E osPSIDs (Persistent SIDs) eram usados no código do kernel para mapear arquivos de contexto paradiretórios no disco rígido. No novo SELinux, os atributos extendidos contém o contexto, assimSIDs ePSIDs não são mais necessárias.

Opção -ZEsta opção pode ser usada no lugar de –context, depois de um comando como ls ou ps.Comando chcon ao invés de chsidO comando chsid era usado no antigo SELinux para alterar o contexto de um arquivo. O novoSELinux usa o comando chcon para mudar contextos de arquivo.

4.2 Lição 3 - Instalando o SELinux

4.2.1 Instalação

Caso utilize uma distribuição que não possua suporte a SELinux, é necessário instalar os seguin-tes pacotes:

• libselinux1: contém as bibliotecas necessárias para o novo SELinux

• selinux-policy-default: contém arquivos de policiamento para a maioria dos programas usa-dos, como postfix, sendmail, etc.

• checkpolicy: contém o compilador do policiamento de segurança

• policycoreutils: contém utilidades, como setfiles, load_policy, newrole etc.

• selinux-utils: contém utilitários para algumas aplicações, como para pesquisar o policia-mento

• selinux-doc: contém documentações

18

Page 20: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• libsemanage: contém algumas bibliotecas

• libsepol: contém algumas bibliotecas

Pacotes adicionais a serem instalados no debian

• coreutils: contém versões modificadas de comandos, como cp, mv e ls

• procps: contém versões modificadas de comandos, como ps e top

• sysvinit: contém um "pach"para carregar o policiamento

• dpkg: é necessário para rotular os arquivos corretamente, após o pacote ser instalado

• logrotate:contém uma versão modificada do pacote logrotate, o qual preserva a segurançados contextos dos novos arquivos no SELinux

• cron: é necessário para rodar scripts nos domínios corretos

Para isso, basta usar o comando apt-get install em seu terminal de comandos. E não énecessário realizar o boot na máquina antes de intalá-los, então eles podem ser instalados aqualquer momento.

4.3 Configurações Básicas

Editando seu arquivo /etc/fstab e criando o /etc/selinux:Antes de fazer o "reboot"do sistema, primeiramente é necessário editar o arquivo /etc/fstab e criaro diretório /etc/selinux, e configurar as permissões para o modo 500. Então edite seu /etc/fstab,incluindo o seguinte:none /selinux selinuxfs noauto 0 0Executando o comando make relabel:Se seu Kernel é 2.6.x, com suporte a XATTR, depois de criar o diretório etc/selinux e editar oarquivo /etc/fstab, é necessário executar o comando:make -C /etc/selinux relabel.Este comando dá um novo rótulo para o arquivo de sistemas, com o correto contexto de segu-ranç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/sshAntes de fazer o "reboot"do sistema, é necessário editar os arquivos /etc/pam.d/login e /etc/pam.d/ssh,para que o shell seja iniciado no contexto correto, então adicione "session required pam_selinux.so"emambos estes arquivos.

19

Page 21: Selinux

Capítulo 5

Modulo 3 - Configuração e uso

Nesta seção será visto como realizar algumas configurações no SELinux.

5.1 Lição 4 - Contas de usuários

5.1.1 Configurando contas de usuários

Criando novas contas de usuários:Verifique se seu domínio de contexto é sysadm_r:sysadm_t role, depois basta usar o comandouseradd para adicionar um novo usuário. Para verificar se seu uid é 0, e se está em sysadm_r:sysadm_trole, digite o seguinte comando:iduid=0(root) gid=0(root) groups=0(root) context=faye:sysadm_r:sysadm_tCaso seu uid seja o da sua conta regular, então faça o login como su primeiramente. E siga oscomandos abaixo:useradd -c "SE Linux test user-m -d /home/setest -g users -s /bin/bash -u 1005 nome_de_usuáriofinger nome_de_usuário Login: nome_de_usuário Name: SE Linux test user Directory: /home/nome_de_usuárioShell: /bin/bash Never logged in. No mail. No Plan. passwd nome_de_usuario Enter new UNIXpassword: senha Retype new UNIX password: senha passwd: password updated successfullyAssim o novo usuário "nome_de_usuário"foi criado

Configurando regras para usuários:Como 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 usúario "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 loadAo terminar, aparecerá algo como:Success touch tmp/load make: Leaving directory `/usr/share/selinux/policy/current’Agora, deve-se configurar um contexto de segurança default, o que será visto numa seção se-guinte.

20

Page 22: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.1.2 Editando dominios de usuários

O arquivo de configuração que contém os domínios dos usuários é /etc/selinux/domains/user.te,para altere-o, adicionando as seguintes linhas:full_user_role(second) allow system_r second_r allow sysadm_r second_rTambém adicione o seguinte comentário:#Ao adicionar novas regras, edite o macro in_user_role em macros/user_macros.tePara editar o arquivo /etc/selinux/macros/user_macros.te, entre num editor de texto e procure (nofinal do arquivo) a string in_user_role e adicione: "role second_r types"A linha full_user_role(second) cria o domínio second_t e os diretórios second_home_dir_t e se-cond_home_tO diretório second_tmp_t é criado para arquivos que estão em níveis inferiores a /tmp. O diretóriosecond_tmpfs_t é criado para dividir o espaço de memória criado no contexto tmpfsOs diretórios second_tty_device_t e second_devpts_t são criados para rotular os "tty devices"eos "pseudo tty devices"Agora que já criamos um novo domínio de usuário (second_t), criaremos um novo usuário parausá-lo.

Criando um novo usuário (newuser) para o novo domínio criado:Com o próprio comando useradd, crie um novo usuário e o adicione a /etc/selinux/users, que sótenha acesso a regra second_rExecute 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_typee adicionando a linha:second_r:second_tAgora é necessário rotular manualmente o arquivo /home/newuser, executando o seguinte co-mando:find /home/newuser | xargs chcon -h system_u:object_r:second_home_t ; chcon -h system_u:object_r:second_home_dir_t/home/spikeAgora que o novo usuário foi criado, tente fazer o login como sendo ele.

5.1.3 Configurando contextos de segurança

Configurando um contexto de segurança defaultUm contexto de segurança default deve ser associado às sessões de login. Para isso, acesse oarquivo /etc/security/default_context.A linha "system_r:local_login_t user_r:user_t"significa que quando um usuário faz o login local-mente, o programa /bin/login será executado no domínio local_login_t e será associada uma regrade usuário e um domínio de user_r e user_t respectivamenteA linha "system_r:sshd_t user_r:user_t"significa que todos que logarem via ssh serão associadosao usuário user_r:user_t role:domain.

21

Page 23: Selinux

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.2 Lição 5 - Regras

5.3 Alterando regras no SELinux

Fornecendo 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, os arquivos de policiamento foram instalados de modo a permitir que se realize ologin no sistema como usúario default (caso não tenha adicionado novos usuários).Então, fazendo o login como root, o contexto de segurança será:root:user_r:user_tAssim, 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. Então basta que essa pessoa façao login no terminal. Em "Your default context is faye:user_r:user_t. Do you want to choose a diffe-rent one? "selecione a opção desejada, e clique em enter[1]user:user_r:user_t [2]user:sysadm_r:sysadm_t Enter number of choice:Neste exemplo, o usuário user já tinha acesso a sysadm_r role e a sysadm_t domain. Assim, asopções que serão mostradas são somente aquelasas quais o usuário tem o acesso permitido.Assim, se o usuário user selecionar a opção 2, terá o contexto de segurança: context=faye:sysadm_r:sysadm_t,que significa que está na regra sysadm_r.

2) Com o comando newrole -rA sintaxe deste comando é:newrole -r regraSubstitui-se "regra"pela nova regra desejada.Então será preciso entrar com a senha do usuário, que poderá ser verificada com o comando id.Porém, caso não seja possível que você altere a regra, será retornado algo como:user:sysadm_r:sysadm_t is not a valid contextEsta mensagem significa que o usuário "user"não pode ter este contexto, porque não está auto-rizado.Após mudar regras, execute o comando id para verificar seu contexto de segurança.

22