Mecanismos de Segurança
Sistemas Linux
Bruno Loureiro
[email protected]
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
1
Sumário
Conceitos introdutórios
Técnicas de Controlo de Acesso
Modelo Bell-LaPadula
Mecanismos de segurança Linux
Abordagem DAC Vs MAC
Conclusões
Bibliografia
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
2
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
3
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
4
Você
Vocênão
nãopode
podeentrar
entrarnesta
nestaárea,
área,
não
nãoestá
estáautorizado.
autorizado.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
5
Conceitos Introdutórios
Controle de Acesso:
• Método utilizado para conceder ou proibir acesso (leitura, escrita, etc.)
a determinados recursos de um sistema.
Modelos Clássicos de Controle de Acesso:
• Bell-LaPadula;
• Biba;
• Clark-Wilson;
• Chinese Wall.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
6
Técnicas de Controlo de Acesso
DAC (Discretionary Access Control – Controle de Acesso Discricionário)
Este modelo é baseado na ideia que utilizadores são donos dos
objectos e portanto controlam quem pode aceder a estes. O “dono” do
objecto pode conceder permissão para outro acederr, podendo revogar
tal permissão posteriormente.
Ex: Permissões ficheiros e directorias Windows e Linux
MAC (Mandatory Access Control – Controle de Acesso Mandatório)
O utilizador não tem escolha a que objecto ele pode acessar ou a que
permissão ele possui, o administrador é quem dá as permissões.
EX: SELinux, AppArmor, GRSecurity, RBAC e Smack etc
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
7
Modelo Bell-LaPadula
Histórico
• Desenvolvido por David Elliott Bell e Len LaPadula;
• Projetado entre 1972 e 1975;
• Cumpre o modelo Multilevel Security (MLS):
Segurança de Multiníveis (trabalha com relação entre recursos,
utilizadores e aplicações).
• Foi uma resposta às necessidades de protecção da Força Aérea
Americana em 1973, que naqueles momentos estava preocupada com a
segurança do acesso a sistemas de grande porte
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
8
Mecanismos de segurança Linux
DAC
• Tipos de Utilizadores (Normal e Root)
• Comandos Su e Sudo
• Permissões acesso especiais (suid, guid, stickbit)
MAC
• SELinux (modelo Bell – Lapadula)
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
9
Tipos de Utilizadores
Utilizador normal
Tem privilégios limitados, o que limita as hipóteses de cometer
erros de sistema.
Super-utilizador, administrador ou root
o
Utilizador cujo ID é, por norma, 0 (zero)
o
Pode executar qualquer operação sobre o sistema
o
Tem acesso a todos os ficheiros de todo o sistema
o
É ele quem cria os outros utilizadores
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
10
Tipos de Utilizadores
Root – Perigos
Imagine, por exemplo, que você está trabalhando com o utilizador
como root.
Necessitou de sair da frente do computador e não fez o bloqueio.
Alguém mal-intencionado percebe isso e vai até seu computador,
apaga directórios importantes do sistema e "sai de mansinho".
Se estivesse utilizando um utilizador comum, isto é, um utilizador
sem permissões para mexer nesses directórios, o invasor não teria
conseguido apagá-los.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
11
Tipos de Utilizadores
Root – Recomendações
Deve-se evitar a utilização sistemática de um utilizador com
privilégios root.
É recomendável que a senha de root tenha ao menos 8
caracteres e que misture letras, números e símbolos.
Além disso, é recomendável mudar essa senha a determinados
intervalos de tempo (por exemplo: em cada 3 meses)
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
12
Comandos Su e Sudo
Comandos Su e Sudo
Estou a trabalhar com uma conta utilizador normal o que posso
fazer para ter privilégios de root.
Posso usar os comandos Su e Sudo. ( Quais as diferenças)
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
13
Mecanismos de Segurança
Comando Su
Comando Sudo
É um recurso mais poderoso que o su.
Comando su (substitute user).
Permite a troca para outro utilizador (root
ou outro)
Uma maneira rápida e segura de fazer troca
utilizador.
Modo funcionamento
•
•
•
O uso do sudo é interessante porque o
utilizador não precisa saber a senha do root,
apenas terá que ter permissão para usar
determinados comandos pelo sudo.
Escreve su o sistema pedirá a senha root.
Em seguida, você poderá fazer a modificação
necessária.
Ao concluir, basta digitar exit ou fechar o terminal e os
privilégios de root estarão desabilitados novamente.
su utilizador
su (para utilizar como root)
É possível definir quem pode utilizá-lo e quais
comandos podem ser executados por esses
utilizadores (/etc/sudoers).
Além disso, o sudo permite registrar em um
arquivo de log todas as actividades efetuadas,
algo que é bem limitado no su.
sudo [-u utilizador] comando
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
14
Permissões Especiais
O controle de acesso em ficheiros e directórios é a segurança
fundamental para qualquer sistema multi-utilizador.
Os sistemas de ficheiros nativos do Linux implementam
controle de acesso utilizando algumas propriedades dos
ficheiros/directórios.
No Linux há três modelos de controlo de acesso básicos: Read,
Write e Execution.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
15
Permissões Especiais
No Linux há três modelos de controlo de acesso básicos: Read,
Write e Execution.
Vejamos um exemplo de permissão básica na figura abaixo:
Tipo de Objecto
d => diretório
b => bloco
c => arquivo especial de caractere
p => canal
s => socket
– - => ficheiro normal
r => significa permissão de leitura (read);
w => significa permissão de gravação (write);
x => significa permissão de execução (execution);
- => significa permissão desabilitada.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
16
Permissões Especiais
Mas somente as três permissões básicas (rwx), não dão toda
flexibilidade para controlar acesso aos ficheiros e directórios.
Por isso o Linux tem mais três modelos especiais para controle
de acesso, chamados suid (set user id), sgid (set group id) e
sticky (Sticky bit).
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
17
Permissões Especiais (Suid)
A propriedade SUID é somente para ficheiros executáveis e não tem
efeito em directórios.
No ficheiro executável com a propriedade SUID aplicada, o programa
rodará com o ID do dono do ficheiro, não com o ID do utilizador que
executou o programa.
Normalmente o utilizador dono do programa executável é também
dono do processo sendo executado.
A permissão de acesso especial SUID aparece no campo Dono.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
18
Permissões Especiais (Suid)
Comandos:
Aplicando a propriedade SUID em um ficheiro executável utilizando
formato simbólico (s):
# chmod u+s programa.sh
# ls -lah programa.sh
-rwsr-xr-x 1 root roberto 0 2006-09-26 22:57 programa.sh
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
19
Permissões Especiais (Suid)
- Retirando SUID:
# chmod u-s programa.sh
# ls -lah programa.sh
-rwxr-x--- 1 root roberto 0 2006-09-26 22:57 programa.sh
- Procurando SUID:
Procurando a propriedade SUID em um arquivo executável utilizando
formato simbólico (s):
# find /home/roberto -perm u=s
/home/roberto/programa.sh
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
20
Permissões Especiais (SGID)
SGID ( Set Group ID ):
A propriedade SGID funciona com directórios.
Quando SGID é aplicado em um directório, os novos ficheiros que
são criados dentro do directório assumem o mesmo ID de Grupo
do directório com a propriedade SGID aplicado.
A permissão de acesso especial SGID aparece no campo Grupo.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
21
Permissões Especiais (SGID)
Comandos:
- Aplicando SGID:
Aplicando a propriedade SGID em um directório utilizando formato
simbólico (s):
# chmod g+s /home/equipa
# ls -lah /home/equipa
drwxr-sr-x 2 roberto equipa 48 2006-09-26 23:21 .
- Retirando SGID:
# chmod g-s /home/equipa
# ls -lah /home/equipa
drwxr-xr-x 2 roberto equipa 48 2006-09-26 23:21
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
22
Permissões Especiais (SGID)
Procurando SGID:
Procurando a propriedade SGID em um directório utilizando
formato simbólico (s):
# find /home -perm /g=s
/home/equipa
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
23
Permissões Especiais (Sticky bit)
Sticky ( Sticky bit):
Em ficheiros executáveis, a propriedade Sticky faz com que o
sistema mantenha uma imagem do programa em memória depois
que o programa finalizar.
Esta capacidade aumenta o desempenho, pois será feito um
cache do programa para a memória, e da próxima vez que ele for
executado, será carregado mais rápido.
Evita que os utilizadores eliminem ficheiros dos quais não são
donos, sendo só o dono a poder elimina-lo.
A permissão especial Sticky, pode ser especificada somente no
campo outros utilizadores permissões de acesso.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
24
Permissões Especiais (Sticky bit)
Aplicando a propriedade Sticky em um ficheiro executável utilizando
formato simbólico(t):
# chmod o+t programa_pesado.sh
# ls -lah programa_pesado.sh
-rwxr-x--t 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
25
SELinux
O SELinux ("Security-Enhanced Linux") é uma implementação de uma
flexível e refinada arquitetura MAC("Mandatory Access Control").
O SELinux foi originalmente um projecto de desenvolvimento da NSA
("National Security Agency") e outros.
Ele foi integrado no Kernel do Linux usando o "framework" LSM
("Linux Security Modules").
As funcionalidades desenvolvidas no SELinux podem ser aplicadas em
várias distribuições, como Debian, Ubuntu, Fedora, etc.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
26
SELinux - Funcionamento
SELinux provê uma política de segurança sobre todos os
processos e objectos do sistema baseando suas decisões em
etiquetas contendo uma variedade de informações relevantes
à segurança.
A lógica da política de tomada de decisões é encapsulada
dentro de um simples componente conhecido como servidor
de segurança ("security server") com uma interface geral de
segurança.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
27
SELinux
Baseado em três elementos: sujeitos, objectos e acções/permissões:
Sujeitos: Sujeitos são os intervenientes num sistema computacional
(utilizadores, processos)
Objectos: Objectos são as potenciais coisas que queremos proteger.
Podem ser: ficheiros, directórios, processos, etc. (classes).
Acções/Permissões: As ações que sujeitos SELinux realizam em
objectos variam de acordo com a classe do objecto. Podem ser:
criar, executar, ler, renomear, escrever, etc.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
28
SELinux – Contexto de Segurança
O SELinux aplica a política que é baseada na relação de
atributos de um sujeito para atributos de um objecto.
Essa relação entre os atributos do sujeito e os atributos dos
objectos são referenciados como contextos de segurança.
Contextos de segurança são um conjunto de propriedades que
são associados à objectos e sujeitos.
Essas propriedades são: utilizador, papel, tipo e
nível/categoria de segurança.
A combinação desses campos forma o contexto de segurança.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
29
SELinux – Contextos de Segurança
Modelo Bell La-Padula (Revisão)
Níveis de Segurança
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
30
Contexto de Segurança - Exemplo
S3-Top Secret
S2- Secret
S1- Confidential
S0 – Unclassified
Nesse exemplo, o arquivo /usr/bin/passwd mostra que seu contexto de
segurança é do utilizador SELinux system_u, com o papel object_r, do
tipo passwd_exec_t e nível de segurança s0.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
31
DAC VS MAC
Um utilizador pode expor ficheiros ou directórios à brechas de
segurança utilizando incorrectamente o comando chmod.
Com DAC existem apenas dois tipos de utilizadores:
Administradores e Não-administradores.
Para alguns serviços e programas rodarem com nível elevado
de privilégio basta fazer um simples comando su.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
32
DAC Vs MAC
O MAC permite que seja definido permissões de como os processos
irão interagir com outras partes do sistema tais como: ficheiros,
dispositivos e outros processos.
Com este modelo os processos podem garantir apenas permissões
necessárias pela funcionalidade pretendida.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
33
Conclusão
Conhecimento das diferenças entre o comando su e sudo.
Ficamos a conhecer algumas permissões especiais dos ficheiros
do Linux.
Verificamos a utilidade do SELinux de forma a poder trabalhar
com vários níveis (modelo de Bell-Lapadula).
Comparação entre a abordagem MAC Vs DAC.
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
34
Questões
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
35
Bibliografia e Referências
Bibliografia
• Slides de Politicas de Segurança de SSI
- J. Magalhães Cruz;FEUP;
• Permissões de acesso especiais SUID, SGID e Sticky
- http://www.skiva.com.br/educ/Artigos/50.pdf
• Modelo de Segurança SELinux
- http://jczucco.googlepages.com/node14.html
• Redhat Documentation - Multi-Level Security (MLS)
- https://listman.redhat.com/docs/enUS/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/sec-mls-ov.html
-
Links
http://pt.wikipedia.org/wiki/Sudo
http://pt.wikipedia.org/wiki/Su
http://pt.wikipedia.org/wiki/SELinux
Bruno Loureiro 2009
Segurança em Sistemas Informáticos
36
Download

Mecanismos de Segurança Sistemas Linux