46
Segurança de Banco de Dados Professor: Luis Felipe Leite

Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Segurança de Banco de

Dados

Professor: Luis Felipe Leite

Page 2: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Contato

[email protected]

Page 3: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 4: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Bibliografia recomendada

Page 5: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Para que segurança da

informação??

Page 6: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 7: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 8: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 9: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 10: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 11: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 12: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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)

Page 13: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 14: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 15: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 16: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 17: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 18: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 19: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 20: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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}

Page 21: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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;

Page 22: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 23: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 24: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

SQL Injection

O que é SQL Injection?

Page 25: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 26: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 27: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 28: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

SQL Injection - Prevenção

Addslashes ou magic_quotes_gpc● $song_title = addslashes($_POST['song']);

Page 29: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 30: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 31: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 32: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 33: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 34: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 35: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 36: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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:

Page 37: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Controle de Concorrência

AtomicidadeConsistênciaIsolamentoDurabilidade

Page 38: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 39: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 40: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 41: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 42: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

ORACLE

Page 43: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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

Page 44: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Curiosidades

HONDA;

MYSQL INJECTION;

PSN;

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

Ashley Madison

RSA!!!

Page 45: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

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.

Page 46: Segurança de Banco de Dados · Princípios de Segurança da Informação Confidencialidade: É a garantia que os dados serão publicados apenas à pessoas autorizadas a acessá-los

Até a próxima aula.