Mecanismos de Segurana Sistemas Linux Bruno Loureiro bruno.loureiro@fe.up.pt 2 Segurana em Sistemas Informticos Bruno Loureiro 2009 Sumrio Conceitos introdutrios Tcnicas de Controlo de Acesso Modelo Bell-LaPadula Mecanismos de segurana Linux Abordagem DAC Vs MAC Concluses Bibliografia 3 Segurana em Sistemas Informticos Bruno Loureiro 2009 4 Segurana em Sistemas Informticos Bruno Loureiro 2009 5 Segurana em Sistemas Informticos Bruno Loureiro 2009 Voc no pode entrar nesta rea, no est autorizado. Voc no pode entrar nesta rea, no est autorizado. 6 Segurana em Sistemas Informticos Bruno Loureiro 2009 Conceitos Introdutrios Controle de Acesso: Mtodo utilizado para conceder ou proibir acesso (leitura, escrita, etc.) a determinados recursos de um sistema. Modelos Clssicos de Controle de Acesso: Bell-LaPadula; Biba; Clark-Wilson; Chinese Wall. 7 Segurana em Sistemas Informticos Bruno Loureiro 2009 Este modelo baseado na ideia que utilizadores so donos dos objectos e portanto controlam quem pode aceder a estes. O dono do objecto pode conceder permisso para outro acederr, podendo revogar tal permisso posteriormente. Ex: Permisses ficheiros e directorias Windows e Linux DAC (Discretionary Access Control Controle de Acesso Discricionrio) MAC (Mandatory Access Control Controle de Acesso Mandatrio) O utilizador no tem escolha a que objecto ele pode acessar ou a que permisso ele possui, o administrador quem d as permisses. EX: SELinux, AppArmor, GRSecurity, RBAC e Smack etc Tcnicas de Controlo de Acesso 8 Segurana em Sistemas Informticos Bruno Loureiro 2009 Modelo Bell-LaPadula Histrico Desenvolvido por David Elliott Bell e Len LaPadula; Projetado entre 1972 e 1975; Cumpre o modelo Multilevel Security (MLS): Segurana de Multinveis (trabalha com relao entre recursos, utilizadores e aplicaes). Foi uma resposta s necessidades de proteco da Fora Area Americana em 1973, que naqueles momentos estava preocupada com a segurana do acesso a sistemas de grande porte 9 Segurana em Sistemas Informticos Bruno Loureiro 2009 Mecanismos de segurana Linux DAC Tipos de Utilizadores (Normal e Root) Comandos Su e Sudo Permisses acesso especiais (suid, guid, stickbit) MAC SELinux (modelo Bell Lapadula) 10 Segurana em Sistemas Informticos Bruno Loureiro 2009 Tipos de Utilizadores Utilizador normal Tem privilgios limitados, o que limita as hipteses de cometer erros de sistema. Super-utilizador, administrador ou root o Utilizador cujo ID , por norma, 0 (zero) o Pode executar qualquer operao sobre o sistema o Tem acesso a todos os ficheiros de todo o sistema o ele quem cria os outros utilizadores 11 Segurana em Sistemas Informticos Bruno Loureiro 2009 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 no fez o bloqueio. Algum mal-intencionado percebe isso e vai at seu computador, apaga directrios importantes do sistema e "sai de mansinho". Se estivesse utilizando um utilizador comum, isto , um utilizador sem permisses para mexer nesses directrios, o invasor no teria conseguido apag-los. 12 Segurana em Sistemas Informticos Bruno Loureiro 2009 Tipos de Utilizadores Root Recomendaes Deve-se evitar a utilizao sistemtica de um utilizador com privilgios root. recomendvel que a senha de root tenha ao menos 8 caracteres e que misture letras, nmeros e smbolos. Alm disso, recomendvel mudar essa senha a determinados intervalos de tempo (por exemplo: em cada 3 meses) 13 Segurana em Sistemas Informticos Bruno Loureiro 2009 Comandos Su e Sudo Comandos Su e Sudo Estou a trabalhar com uma conta utilizador normal o que posso fazer para ter privilgios de root. Posso usar os comandos Su e Sudo. ( Quais as diferenas) 14 Segurana em Sistemas Informticos Bruno Loureiro 2009 Mecanismos de Segurana Comando Su Comando su (substitute user). Permite a troca para outro utilizador (root ou outro) Uma maneira rpida e segura de fazer troca utilizador. Modo funcionamento Escreve su o sistema pedir a senha root. Em seguida, voc poder fazer a modificao necessria. Ao concluir, basta digitar exit ou fechar o terminal e os privilgios de root estaro desabilitados novamente. su utilizador su (para utilizar como root) Comando Sudo um recurso mais poderoso que o su. O uso do sudo interessante porque o utilizador no precisa saber a senha do root, apenas ter que ter permisso para usar determinados comandos pelo sudo. possvel definir quem pode utiliz-lo e quais comandos podem ser executados por esses utilizadores (/etc/sudoers). Alm disso, o sudo permite registrar em um arquivo de log todas as actividades efetuadas, algo que bem limitado no su. sudo [-u utilizador] comando 15 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais O controle de acesso em ficheiros e directrios a segurana fundamental para qualquer sistema multi-utilizador. Os sistemas de ficheiros nativos do Linux implementam controle de acesso utilizando algumas propriedades dos ficheiros/directrios. No Linux h trs modelos de controlo de acesso bsicos: Read, Write e Execution. 16 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais No Linux h trs modelos de controlo de acesso bsicos: Read, Write e Execution. Vejamos um exemplo de permisso bsica na figura abaixo: Tipo de Objecto d => diretrio b => bloco c => arquivo especial de caractere p => canal s => socket - => ficheiro normal r => significa permisso de leitura (read); w => significa permisso de gravao (write); x => significa permisso de execuo (execution); - => significa permisso desabilitada. 17 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais Mas somente as trs permisses bsicas (rwx), no do toda flexibilidade para controlar acesso aos ficheiros e directrios. Por isso o Linux tem mais trs modelos especiais para controle de acesso, chamados suid (set user id), sgid (set group id) e sticky (Sticky bit). 18 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais (Suid) A propriedade SUID somente para ficheiros executveis e no tem efeito em directrios. No ficheiro executvel com a propriedade SUID aplicada, o programa rodar com o ID do dono do ficheiro, no com o ID do utilizador que executou o programa. Normalmente o utilizador dono do programa executvel tambm dono do processo sendo executado. A permisso de acesso especial SUID aparece no campo Dono. 19 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais (Suid) Comandos: Aplicando a propriedade SUID em um ficheiro executvel utilizando formato simblico (s): # chmod u+s programa.sh # ls -lah programa.sh -rwsr-xr-x 1 root roberto 0 2006-09-26 22:57 programa.sh 20 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses 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 executvel utilizando formato simblico (s): # find /home/roberto -perm u=s /home/roberto/programa.sh 21 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais (SGID) SGID ( Set Group ID ): A propriedade SGID funciona com directrios. Quando SGID aplicado em um directrio, os novos ficheiros que so criados dentro do directrio assumem o mesmo ID de Grupo do directrio com a propriedade SGID aplicado. A permisso de acesso especial SGID aparece no campo Grupo. 22 Segurana em Sistemas Informticos Bruno Loureiro 2009 Comandos: - Aplicando SGID: Aplicando a propriedade SGID em um directrio utilizando formato simblico (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 Permisses Especiais (SGID) 23 Segurana em Sistemas Informticos Bruno Loureiro 2009 Procurando SGID: Procurando a propriedade SGID em um directrio utilizando formato simblico (s): # find /home -perm /g=s /home/equipa Permisses Especiais (SGID) 24 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais (Sticky bit) Sticky ( Sticky bit): Em ficheiros executveis, a propriedade Sticky faz com que o sistema mantenha uma imagem do programa em memria depois que o programa finalizar. Esta capacidade aumenta o desempenho, pois ser feito um cache do programa para a memria, e da prxima vez que ele for executado, ser carregado mais rpido. Evita que os utilizadores eliminem ficheiros dos quais no so donos, sendo s o dono a poder elimina-lo. A permisso especial Sticky, pode ser especificada somente no campo outros utilizadores permisses de acesso. 25 Segurana em Sistemas Informticos Bruno Loureiro 2009 Permisses Especiais (Sticky bit) Aplicando a propriedade Sticky em um ficheiro executvel utilizando formato simblico(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 26 Segurana em Sistemas Informticos Bruno Loureiro 2009 SELinux O SELinux ("Security-Enhanced Linux") uma implementao de uma flexvel 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 vrias distribuies, como Debian, Ubuntu, Fedora, etc. 27 Segurana em Sistemas Informticos Bruno Loureiro 2009 SELinux - Funcionamento SELinux prov uma poltica de segurana sobre todos os processos e objectos do sistema baseando suas decises em etiquetas contendo uma variedade de informaes relevantes segurana. A lgica da poltica de tomada de decises encapsulada dentro de um simples componente conhecido como servidor de segurana ("security server") com uma interface geral de segurana. 28 Segurana em Sistemas Informticos Bruno Loureiro 2009 SELinux Baseado em trs elementos: sujeitos, objectos e aces/permisses: Sujeitos: Sujeitos so os intervenientes num sistema computacional (utilizadores, processos) Objectos: Objectos so as potenciais coisas que queremos proteger. Podem ser: ficheiros, directrios, processos, etc. (classes). Aces/Permisses: As aes que sujeitos SELinux realizam em objectos variam de acordo com a classe do objecto. Podem ser: criar, executar, ler, renomear, escrever, etc. 29 Segurana em Sistemas Informticos Bruno Loureiro 2009 SELinux Contexto de Segurana O SELinux aplica a poltica que baseada na relao de atributos de um sujeito para atributos de um objecto. Essa relao entre os atributos do sujeito e os atributos dos objectos so referenciados como contextos de segurana. Contextos de segurana so um conjunto de propriedades que so associados objectos e sujeitos. Essas propriedades so: utilizador, papel, tipo e nvel/categoria de segurana. A combinao desses campos forma o contexto de segurana. 30 Segurana em Sistemas Informticos Bruno Loureiro 2009 SELinux Contextos de Segurana Modelo Bell La-Padula (Reviso) Nveis de Segurana 31 Segurana em Sistemas Informticos Bruno Loureiro 2009 Contexto de Segurana - Exemplo Nesse exemplo, o arquivo /usr/bin/passwd mostra que seu contexto de segurana do utilizador SELinux system_u, com o papel object_r, do tipo passwd_exec_t e nvel de segurana s0. S3-Top Secret S2- Secret S1- Confidential S0 Unclassified 32 Segurana em Sistemas Informticos Bruno Loureiro 2009 DAC VS MAC Um utilizador pode expor ficheiros ou directrios brechas de segurana utilizando incorrectamente o comando chmod. Com DAC existem apenas dois tipos de utilizadores: Administradores e No-administradores. Para alguns servios e programas rodarem com nvel elevado de privilgio basta fazer um simples comando su. 33 Segurana em Sistemas Informticos Bruno Loureiro 2009 DAC Vs MAC O MAC permite que seja definido permisses de como os processos iro interagir com outras partes do sistema tais como: ficheiros, dispositivos e outros processos. Com este modelo os processos podem garantir apenas permisses necessrias pela funcionalidade pretendida. 34 Segurana em Sistemas Informticos Bruno Loureiro 2009 Concluso Conhecimento das diferenas entre o comando su e sudo. Ficamos a conhecer algumas permisses especiais dos ficheiros do Linux. Verificamos a utilidade do SELinux de forma a poder trabalhar com vrios nveis (modelo de Bell-Lapadula). Comparao entre a abordagem MAC Vs DAC. 35 Segurana em Sistemas Informticos Bruno Loureiro 2009 Questes 36 Segurana em Sistemas Informticos Bruno Loureiro 2009 Bibliografia e Referncias Bibliografia Slides de Politicas de Segurana de SSI - J. Magalhes Cruz;FEUP; Permisses de acesso especiais SUID, SGID e Sticky - http://www.skiva.com.br/educ/Artigos/50.pdf Modelo de Segurana SELinux - http://jczucco.googlepages.com/node14.html Redhat Documentation - Multi-Level Security (MLS) - https://listman.redhat.com/docs/en- US/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