Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre...
Transcript of Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre...
Segurança de Sistemas
Prof. João Bosco M. Sobral
Projeto de Segurançaem Software Livre
Segurança para um Servidor Linux
Segurança de Sistemas
Prof. João Bosco M. Sobral
Pensando em segurança antes da instalação
Com a Internet, seu servidor é acessível, de qualquer lugar do planeta, deixando de ser meramente um host para se tornar um alvo para invasão.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Pensando em segurança antes da instalação
Os sistemas operacionais utilizados nos computadores diretamente ligados à rede:
continuam vindo com um série de funcionalidades de facilidades pré-ativadas, que não contribuem para a criação de um ambiente seguro.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Pensando em segurança antes da instalação
Um projeto de segurança deve trabalhar com a premissa de que:
a segurança e a conveniência do ponto de vista do usuário final são inversamente proporcionais.
Conexões temporárias, discadas ou similares, devem permitir níveis de serviços um tanto limitados.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Pensando em segurança antes da instalação
O equilíbrio dos dois minimizam o risco, mas antes disso devem estar conciliados com o negócio da empresa.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Pensando em segurança antes da instalação
Seu sistema de firewall não é atuante para determinados tipos de ataque.
Sua configuração pode não ter sido feita suficientemente segura para certos tipos de ataques.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Pensando em segurança antes da instalação
Seu antivírus só será útil para ataques de vírus já conhecidos.
A segurança é como uma corrente, na qual seu elo mais fraco representa o nível de segurança da mesma.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partições
Discos rígidos podem ser divididos em um ou mais discos lógicos que chamamos de partições.
Esta divisão é descrito na tabela de partições do disco, que fica no setor 0.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partições
É recomendável criar várias partições: Facilitar a administração de backup. Facilitar a administração de segurança,
separando os programas com SUID em partição própria.
Limitar o tamanho dos diretórios. ???
Segurança de Sistemas
Prof. João Bosco M. Sobral
Antes da instalação ...
Regras para particionamento do HD : saber para qual finalidade será usado seu
servidor: Firewall e Proxy Web SMTP, POP FTP
Dá mais autonomia para se aplicar segurança a partir do próprio sistema de arquivos.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Particionamento do HD
Definir: uma partição para o próprio sistema e outra partição para a área de swap (64 Mb,
128Mb) Partição para backup. Partição para programas SUID.
Diretórios em partições diferentes ou em discos diferentes (HDA, HDB)
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partição para o sistema: diretórios Linux / - diretório raiz. /boot - diretório de arquivos estáticos de
inicialização (carga do sistema – boot
loader). /root - diretório local do super-usuário. /dev - diretório de arquivos de dispositivos
do sistema (modems, terminais virtuais, discos, ...)
Segurança de Sistemas
Prof. João Bosco M. Sobral
Particionamento do HD
/bin - diretório dos arquivos executáveis. /sbin - arquivos de sistema essenciais. /mnt - diretório ponto de montagem de
partições temporárias, como discos,
cd-rom, zip drive, ... /lib - arquivos das bibliotecas
compartilhadas utilizadas pelo sistema.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Diretórios Linux
/home – diretório local de diretórios dos usuários.
/usr - arquivos de perfis (profiles) e configurações pessoais de usuários.
/tmp - arquivos temporários gerados por utilitários.
/proc – pseudo-sistema de arquivos, que armazena em tempo real as informações geradas pelo kernel.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Diretórios Linux
/etc - principais arquivos de configuração dos utilitários ou programas do sistema.
/var - arquivos de informação variável, tais como arquivos de logs do sistema.
/opt - instalação de softwares opcionais de terceiros: BD Oracle, serviço de Backup CA ArcServer, aplicativos, entre outros.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Servidor Firewall / Proxy
Para um servidor Firewall / Proxy, os maiores diretórios devem ficar para o /usr e o /var dos logs locais.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Alguns tamanhos de diretórios /boot 15Mb / 512Mb /tmp 128Mb /usr 2048Mb /var 2048Mb /home 512Mb /opt 256Mb Swap 128Mb
Segurança de Sistemas
Prof. João Bosco M. Sobral
Para outros serviços específicos
Consultar a documentação do aplicativo.
O negócio da empresa depende do desempenho do seu servidor.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partição Swap
Num sistema em que a área de Swap está sendo usada com muita frequência, a máquina precisa de mais memória RAM.
64 Mb para memória de 128 Mb. 128 Mb para memória de 256 Mb ?
Segurança de Sistemas
Prof. João Bosco M. Sobral
Segurança Física
Trancar os servidores. Tirar o boot pelo disquete ou CD-ROM. Tirar o autorun. Tirar o teclado. Tirar o monitor. Permitir acesso físico somente às pessoas
autorizadas.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Listar os pacotes instalados
>rpm –qa > /root/pacotes_instalados
>dpkg –l > /root/pacotes_instalados
>apt-get ...
Segurança de Sistemas
Prof. João Bosco M. Sobral
Remover os pacotes desnecessários Informação sobre o pacote:
>rpm –qi <nome_pacote>
Remover >rpm –e <nome_pacote>
Remover
>apt-get remove <nome_pacote>
Segurança de Sistemas
Prof. João Bosco M. Sobral
Remover ... Deixe só o que é utilizado. Compiladores (gcc, g++, ...) Editor de texto (depois que tudo estiver
configurado). more Bibliotecas desnecessárias. cat Ferramentas clientes de serviços (ftp, telnet,
wget, lynx, ... )
Segurança de Sistemas
Prof. João Bosco M. Sobral
Loaders
No MBR (Master Boot Record) do HD reside um programa “loader”.
LILO (Linux Loader) GRUB (Grand Unified Boot-Loader) NTLDR A tarefa do “loader” é carregar o SO na memória. Podem ser configurados para carregarem:
Versões de kernel. SOs diferentes (dual boot).
Segurança de Sistemas
Prof. João Bosco M. Sobral
Loaders
Carrega o Kernel, que por sua vez, ao fim de sua inicialização, carrega o processo INIT, o primeiro e todos os processos, pai de todos os outros.
INIT cria os outros processos através da chamada fork() .
Segurança de Sistemas
Prof. João Bosco M. Sobral
Grupos de usuários
Permissões de acesso a grupo de usuários, para facilitar o gerenciamento de permissões aos recursos do sistema e controle dos usuários.
Base de dados de grupos do sistema ficam em: /etc/group e /etc/gshadow (senhas)
Senha para os grupos.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Colocar senha no LILO ou grupo
Segurança de Sistemas
Prof. João Bosco M. Sobral
Fechar terminais
Segurança de Sistemas
Prof. João Bosco M. Sobral
Não permitir Ctrl+Alt+Del
Segurança de Sistemas
Prof. João Bosco M. Sobral
Restringir acesso
Segurança de Sistemas
Prof. João Bosco M. Sobral
Mudar permissões e atributos de arquivos
Segurança de Sistemas
Prof. João Bosco M. Sobral
Mudar atributos dos logs
Segurança de Sistemas
Prof. João Bosco M. Sobral
Senhas seguras
Segurança de Sistemas
Prof. João Bosco M. Sobral
Tirar SuidBit e Gdbit
Segurança de Sistemas
Prof. João Bosco M. Sobral
PAM
Segurança de Sistemas
Prof. João Bosco M. Sobral
Segurança de Terminal
Segurança de Sistemas
Prof. João Bosco M. Sobral
Configurando a placa de rede
Segurança de Sistemas
Prof. João Bosco M. Sobral
Habilitando SSH
Segurança de Sistemas
Prof. João Bosco M. Sobral
Configurando segurança em serviços TCPD
Segurança de Sistemas
Prof. João Bosco M. Sobral
Verificando portas abertas
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalando NIDS
www.psionic.com Portsentry Network Intrusion Detection
System Instalação:
> rpm –ivh portsentry-*.rpm
Segurança de Sistemas
Prof. João Bosco M. Sobral
Trabalhando com Logs
Segurança de Sistemas
Prof. João Bosco M. Sobral
Backup do sistema
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalar o Proxy Web
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalar o Ntop
Ntop é um analisador de rede.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalando o Nessus
Nessus é o analisador de vulnerabilidades.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalando o Sussen:o cliente Nessus
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalando o Tripware
HIDS – Host Intrusion Detection System Verifica integridade de arquivos.
Segurança de Sistemas
Prof. João Bosco M. Sobral
VPN
Com OpenVPN
Com IPSec
Segurança de Sistemas
Prof. João Bosco M. Sobral
Firewall com IPTables
Segurança de Sistemas
Prof. João Bosco M. Sobral
Instalando o LIDS
LIDS: Linux Intrusion Detection System MAC – Mandatory Access Control (ACLs) Acrescentando segurança ao servidor, no
nível do kernel, em relação ao que o Firewall com o IPTables não faz.
Módulo de kernel.
Segurança de Sistemas
Prof. João Bosco M. Sobral
LIDS
LIDS é um patch de melhorias para a kernel do Linux escrito por Xie Huagang e Philippe Biondi.
Este patch adiciona esquemas de segurança extrema ao kernel e que não são possíveis apenas com as funções nativas do kernel.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Algumas funções do LIDS
Mandatory Access Controls (MACs). Detecção de Port Scanners. Proteção de acesso a arquivos e pastas
(incluindo pelo root). Proteção de processos, módulos e
interfaces.
Segurança de Sistemas
Prof. João Bosco M. Sobral
LIDS TPE (Trusted Path Execution)
Um dos novos features é o TPE (Trusted Path Execution).
Este novo recurso veio para criar uma lista de pathes de execução segura em nosso sistema.
Segurança de Sistemas
Prof. João Bosco M. Sobral
LIDS TPE (Trusted Path Execution)
Com ele criamos uma ACL que irá verificar toda a execução de programas e scripts em nosso sistema, ...
... visando assim barrar possíveis execuções de programas/usuários que não deviam ser executados e em pastas/paths que não deveriam estar.
Segurança de Sistemas
Prof. João Bosco M. Sobral
LIDS TPE (Trusted Path Execution) Para que os binários sejam executados, eles devem
ter no MÍNIMO proteção pelo LIDS como READONLY.
Para habilitar essa feature deve-se compilar o kernel com LIDS e habilitar esta linha:
[*] Enable LIDS Trusted Path Execution (TPE) feature.
Segurança de Sistemas
Prof. João Bosco M. Sobral
LIDS TPE (Trusted Path Execution) Para iniciar o modo TPE basta:
# lidsadm -S -- +TPE
Com o TPE podemos solucionar muitos problemas relevantes a usuários executando binários que não deveriam.
Ou de arquivos binários que não deveriam estar sendo executados pela sua máquina a dentro.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partes do TPE
Trusted Path:
Um path confiável é aquele que o diretório atual do binário e de propriedade do root (uid=0) é o seu grupo ou então que seja world writable (todo mundo pode escrever).
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partes do TPE
Trusted ACL:
Essa é a lista onde temos os usuários confiáveis (trusted users). Em adição ao 'root', todo usuário nesta lista será considerado confiável a executar nossos binários.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Partes do TPE
Regras:
Estas regras serão adicionadas com o lidsadm para dizer se determinado binário será executado ou não levando em consideração a lista de Trusted Path e Trusted ACL.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Lista de pathes
Digamos que já tenhamos uma lista com o Trusted path e com o Trusted ACL.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Lista de patches
A lista irá agir da seguinte maneira para verificar o que pode ou não ser executado:
Trusted User + Trusted Path = usuário pode executar o binário.
Trusted User + Untrusted Path = usuário pode executar o binário.
Untrusted User + Untrusted Path = usuário não pode executar.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Exemplo
Esse é um pequeno exemplo de implementação de regras onde apenas usuários não confiáveis e arquivos que não estão no TPE irão ser barrados.
Esta implementação teve apenas um caráter didático porque se formos realmente verificar, encontraremos muitas falhas de segurança nesse tipo de regra
Segurança de Sistemas
Prof. João Bosco M. Sobral
Ataque
Se um usuário não confiável executar um tipo de ataque que utilize por exemplo, /lib/ld-linux.so.X <executável>, que está no trusted path... veremos que ele não precisa de muito esforço para explorar essas vulnerabilidades.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Trusted Path
Não é muito usual devido que, para que o diretório seja protegido, deve ser do root e do grupo dele, já que a verdadeira função e essência do LIDS é proteger o sistema e tirar do usuário root o poder absoluto.
Então as melhores opções que temos para proteger determinados diretórios é a proteção mínima de marcá-los como READONLY.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Vamos ver alguns exemplos logo abaixo:
# lidsconf -A -o /sbin -j READONLYExecutáveis abaixo do /sbin estão como "Trusted".
# lidsconf -A -o /lib -j READONLYLibraries abaixo do /lib estão como "Trusted".
Segurança de Sistemas
Prof. João Bosco M. Sobral
# lidsconf -A -o /lib/modules -j READONLYMódulos abaixo do /lib/modules estão como "trusted".
# lidsconf -A -o /var/workdir -j READONLY# lidsconf -A -o /sbin/application_a -j READONLY# lidsconf -A -s /sbin/application_a -o /var/workdir -j WRITE
Segurança de Sistemas
Prof. João Bosco M. Sobral
Como application_a está protegido como READONLY e tem permissão de WRITE em workdir, então arquivos que estão dentro do /var/workdir serão considerados confiáveis.
Segurança de Sistemas
Prof. João Bosco M. Sobral
User Space
Vamos ver um pouco do user space do novo esquema do LIDS.
Bem parecido com o ACL_DISCOVERY mode, o modo 'tpe' também é usado para descrever o status do LIDS durante a sua execução.
Segurança de Sistemas
Prof. João Bosco M. Sobral
User Space
Para que possamos controlar facilmente este novo modo, um novo flag foi adicionado ao lidstools: a TPE flag.
Segurança de Sistemas
Prof. João Bosco M. Sobral
User Space
Esse flag pode ser usada para verificar se o TPE está em modo on ou off.
Assim como iniciar ou parar o modo.
# lidsadm -S -- +TPE (inicia o modo TPE)# lidsadm -S -- -TPE (desliga o modo TPE)
Segurança de Sistemas
Prof. João Bosco M. Sobral
User Space
Podemos também selar a kernel e ligar o TPE ao mesmo tempo:
# lidsadm -I +TPE
Se ligarmos o modo ALC_DISCOVERY podemos localizar facilmente que libraries devem estar protegidas durante o modo TPE ligado.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Kernel Space
Vamos ver um pouco de como o novo módulo do TPE age em nível de kernel no sistema Linux.
No kernel para verificar se um aplicativo é ou não protegido, existe uma função básica que já havia sido implementada no LIDS.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Kernel Space
O TPE é implementado basicamente nessas 3 funções a seguir:
lids_exec_tpe_permission (brpm):Esta função checa se o binário é protegido ou não.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Kernel space
lids_mmap_tpe_permission (file, protection):
Esta função checa se as libraries são protegidas ou não.
lids_module_tpe_permission (module):
Esta função verifica se o módulo é protegido ou não antes de carregá-lo no sistema.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Lugares onde estas funções estão colocadas podem ser considerados derivados dos LSM Hooks(8)*.
Para o lids_exec_tpe_permission(brpm), pode-se adicionar um hook para chamar a função fs/exec.c:do_exec(). Um algoritmo básico que poderia fazer isso pra gente seria:
Segurança de Sistemas
Prof. João Bosco M. Sobral
lids_exec_tpe_permission(bprm){ int error = 0
if (!lids_check_base(bprm->file->dentry, LIDS_APPEND)) error = -EACCES;
return error;}
Segurança de Sistemas
Prof. João Bosco M. Sobral
Estamos mostrando apenas como exemplo, não vamos nos aprofundar em kernel space com o novo LIDS.
Este código realmente não existe, é um pseudo-código. No caso ele apenas verifica dentro do arquivo se o binário a ser executado está protegido ou não.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Como sabemos, a maioria das libraries do Linux é carregada usando a função mmap(), podemos colocar um hook para verificar se a library está protegida ou não para ser carregada em mm/mmap.c:do_mmap_pgoff().
O exemplo que segue mostra um simples exemplo de como aplicar a função lids_mmap_tpe_permission():
Segurança de Sistemas
Prof. João Bosco M. Sobral
lids_mmap_tpe_permission(file, protection){ int error = 0;
if (!file) return 0;
if (!(protection & PROT_EXEC)) return 0;
if (!lids_check_base(file->dentry, LIDS_APPEND)) error = -EPERM;
return error;}
Segurança de Sistemas
Prof. João Bosco M. Sobral
Esse exemplo apenas checa se o arquivo com PROT_EXEC tem seu atributo de memória protegido. Se o arquivo não está protegido ele retorna uma mensagem de erro com -EPERM como error code.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Vamos ver agora também um exemplo de como proteger módulos usando a função lids_module_tpe_permission(module).
Segurança de Sistemas
Prof. João Bosco M. Sobral
Podemos utilizar para verificar módulos em nosso sistema usando seus famosos symbols information.
Para isso setamos a nossa função em kernel/module.c:sys_init_module().
Segurança de Sistemas
Prof. João Bosco M. Sobral
Vamos ver um exemplo de algoritmo que verifica integridade de proteção dos nossos módulos:
Segurança de Sistemas
Prof. João Bosco M. Sobral
lids_module_tpe_permission(module){ int error = 0;
modpath = get_module_path(module);
if (!lids_check_base(modpath->dentry, LIDS_APPEND)) error = -EPERM;
return error;}
Segurança de Sistemas
Prof. João Bosco M. Sobral
Depois de pegar o path do módulo corretamente, a função lids_module_tpe_permission() verifica se o próprio tem seu path protegido, caso contrário ele emitirá um erro para nós usando -EPERM como código de erro.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Espero que tenha sido o suficiente para que possamos pelo menos entender um pouco do que se passa por traz destas funções.
Vamos agora ver algo sobre o TDE.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Referências
US DoD,"Trusted Computer System Evaluation Criteria (DOD 5200.28-std)", 1985.
Loscocco, Smalley, et al, NSA, "The Inevitability of Failure: The Flawed Assumption of Securityin Modern Computing Environment", 1998.http://www.nsa.gov/selinux/papers/inevitability/
Segurança de Sistemas
Prof. João Bosco M. Sobral
Referências
route|daemon9 <[email protected]>,"Trusted Path Execution Patch fo Linux 2.0.0+", 1998. https://www.phrack.com/phrack/52/P52-06
Krzysztof G. Baranowski <[email protected]>,"Linux Trusted Patch Execution Redux",https://www.phrack.com/phrack/53/P53-08, 1998.
Segurança de Sistemas
Prof. João Bosco M. Sobral
Referências
route|Mike Schiffman|daemon9 <[email protected]>,"Trusted Path/ACL Execution Patches for OpenBSD 2.4-SNAP", 1998.https://www.phrack.com/phrack/54/P54-06
Brian <[email protected]>,"TPE in Stephanie for OpenBSD 3.4", 2003. http://kaizo.org/mirrors/stephanie/
Segurança de Sistemas
Prof. João Bosco M. Sobral
Referências
Niki Rahimi <[email protected]>"TPE LSM module for Linux 2.5.59 (2.6)", 2003.http://www-124.ibm.com/developer/opensource/linux/patches/?patch_id=770
LSM Developers/Community <[email protected]>,"LSM Linux Security Modules".http://lsm.immunix.org/
Segurança de Sistemas
Prof. João Bosco M. Sobral
Referências
Solar Designer et al, "Openwall Project".http://www.openwall.com/
PaX Team,"PaX Project".http://pax.grsecurity.net/
Segurança de Sistemas
Prof. João Bosco M. Sobral
Leitura recomendada
Escondendo banners de serviços
YASG (Yet Another Security Guide)
Race condition - vulnerabilidades em suids
Criptografar arquivos importantes no seu Linux
O que é e como funciona um ataque de força bruta
Segurança de Sistemas
Prof. João Bosco M. Sobral
Leitura recomendada
Segurança Física (Parte 1)
Instalando um firewall em ambientes gráficos leves
Proxy reverso e balanceamento de carga utilizando o Pound
Detectando vulnerabilidades com o Nessus
O que é e como funciona um ataque de força bruta
Segurança de Sistemas
Prof. João Bosco M. Sobral
Leitura recomendada
Utilizando SSH com método de autenticação publickey + ssh-agend + ssh-add
Criptografia quântica
Como recuperar a senha de root usando uma live distro
Segurança Física (Parte 1)
PSAD: Port Scan Attack Detector
Segurança de Sistemas
Prof. João Bosco M. Sobral
Leitura recomendada
ACCT - O contabilizador de processos do Linux
Backup/Restore de uma cópia fiel de um HD utilizando o DD
PaX: Solução eficiente para segurança em Linux
Os Vírus e o Linux
Prevenção e rastreamento de um ataque
Segurança de Sistemas
Prof. João Bosco M. Sobral
Leitura recomendada
Netcat - O canivete suíco do TCP/IP
Mantendo seu Slackware atualizado com o slackcurrent
YASG (Yet Another Security Guide)
Utilizando RPM para detecção de intrusos
,mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmDebian Sarge + Snort + MySQL + Acidlab + Apache