Você está na página 1de 46

o de

ç a d e Banc
ra n
Segu
Da d o s
pe Le i te
Lui s Feli
ro fe ss or:
P
Contato
luisleite@recife.ifpe.edu.br
Professorluisleite.wordpress.com
Roteiro
Conceitos de Segurança da Informação;
Medidas de Controle em Banco de Dados;
Recuperação de Falhas;
Sql-Injection;
Segurança em Banco de Dados Livre;
Segurança em Banco de Dados Proprietário;
Curiosidades e Recomendações;
Exercício.
Bibliografia recomendada
d a
n ça
u r a
s e g ? ?
ue ç ã o
ra q m a
a o r
P inf
Conceitos de Segurança

Vivemos hoje a era da informação. Em apenas


um clique, temos acesso a notícias, dados
financeiros, pesquisas, etc.

Essa quantidade exacerbada de informação


pode ser útil, bem como danosa.
Princípios de Segurança da
Informação
Confidencialidade:

É a garantia que os dados serão publicados apenas à pessoas
autorizadas a acessá-los.

Integridade:

Se refere ao objetivo de que a informação não sofrerá nenhum tipo de
alteração, mudança ou adição de seu conteúdo original.

Disponibilidade:

Garantia de que os dados estarão disponíveis no momento exato que
forem requisitados pelos usuários autorizados.
Princípios de Segurança da
Informação
Alguns dos principais motivos para se proteger uma
informação são:

Seu valor;

O impacto de sua ausência;

O impacto do uso não autorizado por terceiros;

A importância de sua existência e a relação de dependência
com a sua atividade.
(SÊMOLA, 2003)

IMPORTANTE: A informação deve ser protegida em


todo seu ciclo de vida, da criação ao descarte.
Segurança em SGBD

Sistemas de gerenciamento de banco de dados


devem possuir alguns controles e mecanismos
de segurança na sua implementação, visando
garantir integridade e consistência dos dados.
Controles de segurança em
SGBD
Dentre esses mecanismos e controles, podemos
citar:

Segurança Física:

Portas, trancas, blindagens, refrigeração, etc.

Segurança Lógica:

Criptografia;

Controle de acesso;

Controle de fluxo;

Controle de redundância;

Controle de concorrência;

Restrições de integridade.
Segurança Física

Muitos pensam que o uso de diferentes mecanismos


para segurança física são desnecessários.

Não pode existir engano maior!!!

O uso eficiente de trancas (digitais, íris, códigos),


blindagens e refrigeração podem prevenir que o
hardware, onde está o banco de dados, quebre, seja
roubado, sofra de outras intempéries e até pegue
fogo.
Criptografia

Criptografia é um meio de aprimorar a segurança de uma


mensagem ou arquivo embaralhando o conteúdo de modo
que ele só possa ser lido por quem tenha a chave de
criptografia correta para desembaralhá-lo. Por exemplo, se
você comprar algo em um site, as informações da
transação (como endereço, número de telefone e número
do cartão de crédito) normalmente serão criptografadas
para ajudar a mantê-la segura. Use a criptografia quando
desejar um alto nível de proteção para as suas
informações.
Fonte: (http://windows.microsoft.com/pt-br/windows/what-is-encryption#1TC=windows-7)
Criptografia Simétrica

A criptografia simétrica é caracterizada pelo uso de


uma chave única privada, tanto para criptografar
como para descriptografar os dados.

Dentre os algoritmos de criptografia simétrica temos


o DES, 3DES, IDEA, RC4.

O WEP, usado em redes sem fio usa RC4.


Criptografia Assimétrica

Já a criptografia assimétrica usa um par de chaves, uma


privada e uma pública, para realizar o processo de
encriptação e decriptação.

É usada para realizar o processo de encriptação da chave


pública, gerando confidencialidade ou o processo de
assinatura digital, gerando autenticidade.

O processo de assinatura digital geralmente é feito em


conjunto com algoritmos de HASH.
Criptografia Assimétrica

Dentre alguns algoritmos de criptografia assimétrica é


válido citar Diffie-Hellman e o famoso RSA.

Em relação aos algoritmos de HASH se tem


principalmente, MD5, MD4, SHA-1 e SHA-2.
Controle de Acesso – Responsabilidades do
DBA

Concessão de privilégios;
Revogação de privilégios;
Classificação dos usuários e dos dados de acordo com a
política organizacional e de segurança da instituição;
Criação de contas;
Atribuição de níveis de segurança;
Auditoria do banco de dados.
Controle de Acesso

Em um sistema de banco de dados devem ser oferecidas


técnicas para permitir que um conjunto de usuários tenha
acesso somente a parte que lhes cabe, sem que eles
tenham acesso ao banco inteiro.

Para que isso possa ser realizado, está incluído na maioria


dos SGBDs um sistema de autorização de acesso que
trabalha com dois controles primordiais.

Controle de acesso discricionário e controle de acesso


obrigatório.
Controle de Acesso Discricionário

O controle de acesso discricionário é determinado pelo


proprietário (owner) do recurso (um arquivo, por exemplo).
O proprietário, no caso o DBA decide quem tem permissão
de acesso em determinado recurso e qual privilégio ele
tem.

Ex: O DBA pode dar o privilégio CREATE ou DROP para
um outro usuário X, bem como revogar esse privilégio.

O DBA pode controla o acesso a cada relação e a visão


individual de cada usuário do banco.

Visões são importantes!!!


Controle de Acesso Discricionário

Privilégios discricionários são atribuídos através das


instruções de DDL GRANT e REVOKE.

GRANT/REVOKE

Cada objeto do banco de dados tem um owner que é seu
criador;

Apenas o criador pode acessar os objetos;

SQL oferece um esquema de permissões através dos
comandos GRANT e REVOKE
Controle de Acesso Discricionário

GRANT

Permissão de comandos:

GRANT {comando} to {usuario}


Permissão de objeto:

GRANT {comando} ON {object} to {usuario} [WITH
GRANT OPTION]

REVOKE

Retira privilégios:

REVOKE {comando} ON {object} FROM {usuario}
GRANT/REVOKE - Exemplos

grant alter tables to sala03turma03;

grant select, insert, update, delete on empregado


to sala03turma03;

revoke delete on empregado from


sala03turma03;

revoke all on empregado from luis;


Controle de Acesso Obrigatório

Ainda não tão comum nos SGBDs atuais.


Geralmente é um tipo de controle feito pelo próprio
sistema.
Estabelece perfis de usuários e objetos com níveis de
segurança diferenciados, associando os perfis de ambas
as partes.
Quando for realizada a tentativa de acesso a um objeto, o
usuário só terá permissão, se seu perfil de segurança for
igual ou maior que o possuído pelo objeto.
Controle de Fluxo

Controla estritamente o fluxo das informações analisando


quais canais e objetos são utilizados a fim de validá-los e
monitorá-los;

É um mecanismo que previne que as informações fluam


por canais secretos e violem a política de segurança ao
alcançarem usuários não autorizados.

Dessa maneira, um usuário não pode obter indiretamente


em B aquilo que ele ou ela não puder obter diretamente de
A.
SQL Injection

n ?
c t io
n j e
L I
S Q
e é
qu
O
SQL Injection

É uma ameaça a segurança do banco de dados como um


todo.

Acontece através da inserção de uma série de instruções


SQL dentro de uma query, manipulando a entrada de dados
de uma aplicação (geralmente web).
SQL Injection

O exemplo mais comum é o famoso ' or 1='1



$sql = "SELECT * FROM usuarios WHERE usuario='$user'
and password='$password' ";

Informações passadas ao banco diretamente.


SQL Injection

Uso de dorks:

Inurl:.php?id=

Esconder o erro da visão geral é muito importante.

testphp.vulnweb.com

Tentativa e erro.

É um problema de programação!!!
SQL Injection - Prevenção

Addslashes ou magic_quotes_gpc

$song_title = addslashes($_POST['song']);
Segurança contra falhas

A recuperação ou tolerância a falhas, remete ao objetivo


de restaurar o banco de dados, ou pelo menos parte dele,
para um estado íntegro, após a ocorrência de uma falha.

Os mecanismos de recuperação baseiam-se


principalmente na utilização de backups e logs de
transações.
Segurança contra falhas

Deve existir periodicidade no mecanismo de backup, sendo


esta calculada de acordo com o quanto a informação é
crítica.

Usado sempre como ponto de partida após uma falha, seja


ela grave ou não.

Backup incremental ou diferencial.


Segurança contra falhas

Logs de transação ou Transaction Logs são mecanismos


de repetição das transações ocorridas desde o último
backup.

Normalmente, nestes logs está guardada uma


identificação da transação e uma cópia dos dados
atualizados por ela (after image).

Algumas das transações acabam não sendo realizadas da


forma correta e falham. Estes registros também estarão
nos logs de transação (before image).
Segurança contra falhas

Juntando mecanismos de backup e logs de transação, é


possível se alcançar “Atomicidade” (desfazer uma
transação não sucedida) e “Persistência” (refazer os
efeitos de uma transação bem sucedida).
Segurança contra falhas

Entre as falhas mais comuns, temos a falha de disco


(geralmente mais catastrófica), a falha de sistema (mais
fácil recuperação) e a falha de transação.
Auditoria

Conjunto de ações tomadas para averiguar o que os


usuários estão fazendo.

Em geral são feitas no banco de dados com um conjunto de


logs de acesso e transações realizadas.

Esse conjunto de logs a principio é eficaz, mas pode gerar


problemas.

Criação de tabelas e triggers.


Controle de Concorrência

Qualquer banco de dados que seja utilizado por mais de um


usuário, terá que administrar o controle de concorrência.

Controle de concorrência é quando, em um banco de dados,


usuários distintos tentam acessar a mesma informação e então é
feito um controle entre essas transações.

E para a solução deste problema existem diversas técnicas de


controle de concorrência que são utilizadas como forma de
assegurar a propriedade de não interferência entre uma
operação e outra, ou o isolamento das transações executadas ao
mesmo tempo.
Controle de Concorrência

Grande parte dessas técnicas garante a serialização, que


é a execução das transações de forma serial.

Para gerenciar essas transações é necessário conhecer as


propriedades comumente chamadas de ACID (acrônimo de
Atomicidade, Consistência, Isolamento e Durabilidade) que
devem ser usadas pelos métodos de controle de
concorrência e recuperação do SGBD:
Controle de Concorrência

Atomicidade
Consistência
Isolamento
Durabilidade
Acesso via rede MYSQL

Problemas de segurança em um
acesso via rede.

Mais problemático que acesso local.

Dor de cabeça além do controle de


usuários local.
Acesso via rede MYSQL

Porta aberta...pode entrar!!

Mysql na instalação padrão permite


conexões locais e via rede.

Cuidado com sniffers.

skip-networking.
Acesso via rede MYSQL –
Soluções
Permitir conexões aos usuários apenas
das máquinas de onde eles tem permissão
para acessar o banco (GRANT e
REVOKE).

SSL.

VPN.
ORACLE

ORACLE OEM:

Conjunto de ferramentas gráficas administrativas
que provêm meios para gerenciar uma ou mais base
de dados em um computador.

O oracle OEM é composto por:

Conjunto de ferramentas administrativas;

Um monitor de eventos;

Um agendador de tarefas;

Uma interface gráfica para o Recovery Manager
Tools
ORACLE
ORACLE

ORACLE OSS:

Pode ser utilizado para implementar uma estrutura
mais complexa de segurança de dados.

O OSS é composto por:

Autenticação de usuário através de credenciais
eletrônicas;

Assinatura Digital;

Single Sign On (SSO).
Curiosidades

HONDA;

MYSQL INJECTION;

PSN;

Os russo de 1,2bilhão de usuários;

Ashley Madison

RSA!!!
Recomendações Finais

Não fornecer a ninguém acesso a tabela ACL.

Conceder apenas os privilégios necessários a cada


usuário.

Nunca manter senhas em texto puro, utilizando


criptografia.

Não escolher senhas que sejam fáceis e existam em


dicionário.

Utilizar Firewall.
Até a próxima aula.