Transcript
Page 1: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Projeto de Segurançaem Software Livre

Segurança para um Servidor Linux

Page 2: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em 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.

Page 3: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em 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

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.

Page 4: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em 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

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.

Page 5: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em 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

O equilíbrio dos dois minimizam o risco, mas antes disso devem estar conciliados com o negócio da empresa.

Page 6: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em 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

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.

Page 7: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em 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

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.

Page 8: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 9: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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. ???

Page 10: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 11: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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)

Page 12: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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, ...)

Page 13: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 14: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 15: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 16: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 17: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 18: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 19: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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 ?

Page 20: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 21: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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 ...

Page 22: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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>

Page 23: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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, ... )

Page 24: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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).

Page 25: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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() .

Page 26: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 27: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Colocar senha no LILO ou grupo

Page 28: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Fechar terminais

Page 29: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Não permitir Ctrl+Alt+Del

Page 30: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Restringir acesso

Page 31: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Mudar permissões e atributos de arquivos

Page 32: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Mudar atributos dos logs

Page 33: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Senhas seguras

Page 34: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Tirar SuidBit e Gdbit

Page 35: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

PAM

Page 36: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Segurança de Terminal

Page 37: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Configurando a placa de rede

Page 38: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Habilitando SSH

Page 39: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Configurando segurança em serviços TCPD

Page 40: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Verificando portas abertas

Page 41: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 42: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Trabalhando com Logs

Page 43: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Backup do sistema

Page 44: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Instalar o Proxy Web

Page 45: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Instalar o Ntop

Ntop é um analisador de rede.

Page 46: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Instalando o Nessus

Nessus é o analisador de vulnerabilidades.

Page 47: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Instalando o Sussen:o cliente Nessus

Page 48: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Instalando o Tripware

HIDS – Host Intrusion Detection System Verifica integridade de arquivos.

Page 49: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

VPN

Com OpenVPN

Com IPSec

Page 50: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

Segurança de Sistemas

Prof. João Bosco M. Sobral

Firewall com IPTables

Page 51: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 52: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 53: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 54: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 55: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 56: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 57: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 58: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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).

Page 59: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 60: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 61: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 62: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 63: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 64: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 65: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 66: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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".

Page 67: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 68: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 69: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 70: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 71: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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)

Page 72: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 73: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 74: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 75: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 76: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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:

Page 77: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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;}

Page 78: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 79: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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():

Page 80: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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;}

Page 81: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 82: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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).

Page 83: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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().

Page 84: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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:

Page 85: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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;}

Page 86: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 87: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 88: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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/

Page 89: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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.

Page 90: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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/

Page 91: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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/

Page 92: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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/

Page 93: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 94: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 95: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 96: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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

Page 97: Segurança de Sistemas Prof. João Bosco M. Sobral Projeto de Segurança em Software Livre Segurança para um Servidor Linux

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


Recommended