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