Top Banner
Security Enhanced Linux SELinux
42

SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Jun 06, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Security Enhanced Linux

SELinux

Page 2: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Segurança da Informação A segurança da informação é um conjunto

de medidas que se constituem basicamentede controles e política de segurança

Objetivando a proteção das informações dosclientes e da empresa

Controlando o risco de revelação ou alteraçãopor pessoas não autorizadas.

2

Page 3: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

O que é SELinux? Segundo a NSA (National Security Agency):

◦ “Security-enhanced Linux” é um conjunto depatches ligados ao kernel Linux que somados aalguns utilitários têm a função de incorporaruma forte e flexível arquitetura de controle deacesso mandatório na maioria dos subsistemasdo kernel”.

SELinux (Security-Enhanced Linux) é umaimplementação de controle de acessomandatório (MAC) no kernel Linux usando oframework LSM (Linux Security Modules).

3

Page 4: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Por que SELinux? O modelo convencional de segurança do

Linux, baseado sinteticamente empermissões de acesso no formato usuário-grupo-outros, é uma característica queremonta ao surgimento dos sistemas Unix.

Embora essas permissões sejam relativamentesimples de entender, elas não sãosuficientes para bloquear determinados tiposde ataques, que só poderiam ser evitados comum sistema de segurança mais sofisticadocomo o SELinux.

4

Page 5: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Controle de Acesso O controle de acesso, na segurança da

informação, é composto dos processos:◦ autenticação,

◦ autorização e

◦ auditoria (accounting).

Neste contexto o controle de acesso podeser entendido como a habilidade depermitir ou negar a utilização de umobjeto (uma entidade passiva, como umsistema ou arquivo) por um sujeito (umaentidade ativa, como um indivíduo ou umprocesso).

5

Page 6: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Modelos de Controle de Acesso: DAC – Discretionary Acess Control

A principal característica da DAC é que um recursopossui um ou mais donos e grupos, que especificaquem pode ou não acessar um recurso específico.

Com DAC existem apenas duas grandes categoriasde usuários: Administradores e Não-administradores.

Para alguns serviços e programas rodarem comnível elevado de privilégio, as escolhas são poucase muitas vezes opta-se pelo completo acesso deadministrador.◦ Para os serviços e programas funcionarem de maneira

segura, é usado o princípio de dar privilégios mínimospara sua execução.

Porém o DAC possui uma estrutura ainda assimmuito permissiva.

6

Page 7: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Modelos de Controle de Acesso: DAC – Discretionary Acess Control

Todos os mecanismos DAC possuem umafalha fundamental que é de nãoreconhecer a diferença entre usuárioshumanos e programas de computador,portanto o DAC não está fornecendo aousuário a habilidade de usar o acesso, aoinvés disso, está passando essa habilidadeaos softwares.

Ex.: quando um usuário executa umprograma qualquer, o software executadoherda todos os poderes de acesso dousuário que o executou.

7

Page 8: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Modelos de Controle de Acesso: MAC – Mandatory Acess Control

O mecanismo MAC prevê que usuários individuais não têm escolha em relação às permissões de acesso que eles possuem ou que objetos podem acessar.

No MAC, apenas os administradores do sistema têm controle sobre as políticas de segurança, que são definidas em nível organizacional.

Mecanismo de controle de acesso no qual se baseia o SELinux.

8

Page 9: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

DAC x MAC

9

Page 10: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

ObjetivoSELinux tem por objetivos de segurança

primários:

Isolamento das aplicações

Fluxo de informações

Confidencialidade

Integridade

Auto-proteção

Menor privilégio

Separação de papéis

10

Page 11: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Como o SELinux melhora a Segurança

11

Page 12: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Arquitetura SELinuxA arquitetura consiste nos seguintes

componentes:

Código a nível de Kernel

O AVC (Access Vector Cache)

Biblioteca compartilhada

Política de segurança

Ferramentas

12

Page 13: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Arquitetura do Módulo LSM SELinux

13

Page 14: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Arquitetura do Servidor de Políticas

14

Page 15: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Contexto de Segurança Contextos de segurança são um conjunto de

propriedades que são associados à objetos esujeitos.

Essas propriedades são:◦ usuário,◦ papel,◦ tipo e◦ nível/categoria de segurança.

A combinação desses campos forma ocontexto de segurança.

O SELinux armazena os contextos desegurança nos atributos extendidos (xattr)dos sistemas de arquivos.

15

Page 16: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Modelo de Segurança SELinux

O modelo de segurança SELinux é baseadoem conceitos gramaticais comuns à maioriadas linguagens humanas, assim comolinguagens de programação decomputadores.

Baseado em três elementos:

Sujeitos (onde são os processos são atores);

Objetos (“coisas” a proteger) e;

Ações/permissões.

16

Page 17: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Exemplos Como exemplo, para verificar o contexto de

segurança de um usuário no prompt, érodado o seguinte comando:

Ou então, como outro exemplo, paraverificar o contexto de segurança SELinuxde um arquivo, é usado o seguintecomando:

17

Page 18: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Decisão SELinux Típica

Obs: É importante lembrar que a decisão de acesso é sempre feitana seguinte ordem: primeiro a permissão DAC (a permissão comumdo Linux) e depois a permissão MAC.

18

Page 19: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Decisões de AcessoO servidor SELinux realiza basicamente dois

tipos de decisões:

Decisões de Acesso

Decisões de Transição

19

Page 20: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Decisões de Acesso Determinam se um dado sujeito tem

permissão de realizar uma dada operaçãoem um determinado objeto.

Cada classe de objeto possui um mapa debits associado chamando de vetor deacesso, contendo um bit para cada açãodefinida para a classe.

O servidor de segurança SELinux realizadecisões considerando o contexto desegurança do sujeito, do objeto da ação ea ação requisitada.

20

Page 21: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Decisões de Acesso Quando o servidor de segurança realizar a

decisão de acesso, caso ele encontre maisde uma regra da política, ele retornará trêsvetores de acesso como mostrado na figuraabaixo.

21

Page 22: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Decisões de Acesso Os três vetores de acesso da figura têm as

seguintes funções: Allow: o vetor de acesso allow identifica as

operações que o sujeito tem permissão derealizar no objeto. Nenhum registro de log éfeito nessa operação;

Auditallow: o vetor de acesso auditallowprovoca um registro no log quando a operação érealizada, mas não habilita nenhuma operação,somente o vetor allow permite isso.

Dontaudit: o vetor de acesso dontauditidentifica as operações que o sujeito não tempermissão de realizar no objeto, mas a negaçãode acesso não provoca uma entrada no log.

22

Page 23: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Decisões de Transição Determinam os tipos atribuídos a objetos

novos criados, particularmente processos earquivos.

Também são chamadas de decisões derotulagem.

Decisões de transição ocorrem em doiscontextos comuns:

Criação de Processos (sujeitos)

Criãção de Arquivos (objetos)

23

Page 24: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Criação de processos e seus contextos de segurança

24

Page 25: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Criação de arquivos e seus contextos de segurança

25

Page 26: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Administrando e Criando Políticas no SELinux

Política é um conjunto de regras que guia omotor do SELinux. Ela define tipos paraobjetos e domínios para processos, usa papéispara limitar os domínios, e possui identidadespara especificar os papéis que podem seratingidos por essas identidades.

Políticas permitem a flexibilidade de configuraro sistema conforme o propósito, controlando oque cada programa pode fazer, e comoprogramas interagem entre si, considerando ocontrole de acesso a arquivos,intercomunicação entre processos, etc.

26

Page 27: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Exemplo de política: executável passwd.

27

Page 28: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Políticas no SELinux A política é compilada para um formato

binário para ser carregada no kernel doservidor de segurança, e para aumentar aperformance, é realizado cache no AVC.Para visualizar as estatísticas de uso docache do SELinux, é utilizado o comandoavcstat:

28

Page 29: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Tipos de Políticas de Segurança SELinux

Basicamente existem três tipos de políticasSELinux:

Strict;

Targeted e;

MLS.

29

Page 30: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Política Strict Um sistema que usa a política de

segurança strict é aquele onde tudo énegado por padrão, e é necessáriohabilitar regras na política de segurançapara cada tarefa que cada aplicação ouprocesso irá realizar.

O SELinux foi concebido originalmentepara atender à política strict, pois aspolíticas utilizadas são somente depermissão e não de bloqueio.

30

Page 31: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Política Targeted Através da política targeted, cada sujeito e objeto roda em um

domínio chamado unconfined_t exceto alguns serviços alvosque possuem políticas pré-definidas.

Objetos que estão no domínio unconfined_t não possuemrestrições e usam a segurança Linux padrão (DAC), ou seja,rodam como se não existisse o SELinux para realizar oscontroles de segurança.

Os serviços que fazem parte da política targeted rodam emseus próprios domínios e são restritos à política para cadaoperação que realizam no sistema, dessa forma se essesserviços forem comprometidos ou de alguma maneiraexplorados por suas vulnerabilidades, os danos são limitados,podendo até ser controlados.

Ex: o servidor web apache é protegido pela política targeted, enão poderá comprometer os outros serviços do sistema, comoservidor de nomes, servidor ssh, arquivos privados deusuários, etc, conforme a política pré-definida.

31

Page 32: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Política MLS A política MLS é similar a política strict, mas

adiciona um campo nos contextos desegurança para separar níveis.

O SELinux pode usar estes níveis para separardados em um ambiente que necessite de umaseparação rígida hierarquicamente.

O exemplo mais comum desse tipo declassificação é o no uso militar, onde os dadossão classificados em determinados níveis.

◦ Ex. de Hierarquia dos níveis de segurança: Ultra-Secreto > Secreto > Confidencial > Não

Classificado

32

Page 33: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Administração de Políticas SELinux

O arquivo de configuração do SELinux é o/etc/selinux/config, e é lido somente em tempode boot (algumas mudanças necessitam que osarquivos sejam rotulados novamente e sistemaseja reinicializado para a configuração nessearquivo ser efetivada).

A biblioteca libselinux lê esse arquivo paradescobrir como o sistema está configurado.

Dentro desse arquivo, são configuradas quatrovaráveis: SELINUX, SELINUXTYPE,SETLOCALDEFS e REQUIRESUSERS.

33

Page 34: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Variável SELINUX SELINUX: Essa variável pode ter um desses

três valores:

Enforcing;

Permissive e;

Disabled.

SEstatus verifica em qual modo SELinux o sistema corrente está rodando

34

Page 35: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Variável SELINUXTYPE Essa variável define em qual diretório

verificar os demais arquivos deconfiguração do SELinux.

Esses diretórios são por padrão nomeadosde acordo com a política de segurança aser adotada, portanto pode ser targeted,strict, mls, ou mesmo uma políticapersonalizada (minha_política, porexemplo).

35

Page 36: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Variável SETLOCALDEFS Diz ao processo de inicialização e à carga

da política de segurança se está sendousada uma nova infra-estrutura degerenciamento ou não.

Se não estiver, ela carrega ascustomizações locais, variáveis booleanasSELinux e usuários. O valor dessa variáveldeveria ser sempre zero.

36

Page 37: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Variável REQUIRESUSERS Pode ser usado para questionar se existe

relação entre usuários SELinux e comalguma entrada padrão. Se não existir, nãoserá possível realizar o login e em últimaanálise assume o valor user_u.

Obs: É altamente recomendado não alteraros valores das duas últimas variáveis(SETLOCALDEFS e REQUIRESUSERS).

37

Page 38: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Carga da Política A carga (carregamento) da política de

segurança é feita durante o processo deinicialização (init), ou pode ser carregadano kernel em tempo real, sem necessidadede reinicialização do sistema.

Durante o boot, o SELinux realiza tarefasimportantes onde todos os processosprecisam ser rotulados com o seu domínioapropriado, init realiza algumas açõesessenciais para o seu bom funcionamento.

38

Page 39: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

O Sistema de Arquivos SELinux

O pseudo sistema de arquivos SELinuxdisponibiliza uma interface primária decontrole entre o SELinux LSM em espaçode kernel e os programas em espaço deusuário. Por padrão, o sistema de arquivosSELinux é montado em “/selinux”.

Muitos utilitários SELinux e APIs(disponibilizadas pela biblioteca libselinux)usam o sistema de arquivos SELinux paraacessar o módulo LSM.

39

Page 40: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Mensagens de Negação AVC Quando algum processo tenta realizar

alguma operação não permitida pelapolítica de segurança vigente e o SELinuxestá configurado para registrar a tentativa,isso irá gerar uma entrada no arquivo/var/log/audit/audit.log do tipo:

40

Page 41: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Modificando a Política SELinux

Se o administrador quiser modificá-la, amaneira primária de construir um arquivode política para o kernel é compilá-lo doarquivo de código fonte da política usandoo programa checkpolicy.

O arquivo fonte é tipicamente chamadopolicy.conf

41

Page 42: SELinux - DEINF/UFMA › ~geraldo › soii › 9.SELinux.pdf · SELinux O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas

Protegendo Serviços de Rede Usando SELinux

Ex no modo Targeted:

42