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
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
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
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
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
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
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
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
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
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
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
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
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
Decisões de AcessoO servidor SELinux realiza basicamente dois
tipos de decisões:
Decisões de Acesso
Decisões de Transição
19
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
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
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
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
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
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
Tipos de Políticas de Segurança SELinux
Basicamente existem três tipos de políticasSELinux:
Strict;
Targeted e;
MLS.
29
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
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
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
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
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
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
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
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
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
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
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
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
Top Related