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.
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
/
/tmp
/usr
/var
/home
/opt
Swap
15Mb
512Mb
128Mb
2048Mb
2048Mb
512Mb
256Mb
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/ldlinux.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 READONLY
Executáveis abaixo do /sbin estão como
"Trusted".
# lidsconf -A -o /lib -j READONLY
Libraries abaixo do /lib estão como "Trusted".
Segurança de Sistemas
Prof. João Bosco M. Sobral

# lidsconf -A -o /lib/modules -j READONLY
Mó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 Security
in 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://www124.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 + sshagend + 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

,mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmDebian Sarge + Snort + MySQL + Acidlab +
Apache
Segurança de Sistemas
Prof. João Bosco M. Sobral
Download

Projeto de Segurança em Software Livre