Preços do ApexSQL

Este artigo explicará vários aspectos do teste de segurança para o ambiente do SQL Server. A segurança é uma área muito crítica para qualquer ambiente de banco de dados. Devemos planejar, implantar e auditar adequadamente as medidas de segurança do banco de dados para proteger e impedir qualquer acesso não autorizado aos dados. Também devemos realizar testes de segurança regulares para garantir que tenhamos o conjunto certo de regras e políticas em vigor para proteger nosso ambiente de banco de dados. As medidas de segurança do banco de dados também ajudam qualquer organização a proteger seus dados para manter sua privacidade e integridade.

security testing for SQL Server environments

O teste de segurança é um processo através do qual tentamos comprometer várias medidas de segurança de aplicativos, bancos de dados ou sistemas. É também um processo de desenvolvimento ou criação de casos de teste que podem desestabilizar as verificações de segurança de um sistema. Vamos primeiro entender todas as medidas de segurança que aplicamos em várias camadas dos sistemas em execução no ambiente do SQL Server.

Camadas de segurança para o SQL Server

Podemos categorizar a segurança do SQL Server em várias camadas para proteger e proteger suas instâncias e bancos de dados e para facilitar o gerenciamento. Essas camadas podem ser:

  • Segurança física
  • Segurança de rede
  • Segurança do sistema operacional
  • Segurança do banco de dados
  • Segurança de aplicativos

A imagem abaixo está dando objetivos de alto nível de cada camada dada acima.

Security testing in SQL Server

A segurança físicapara sistemas de bancos de dados é, além disso, sobre a proteção dos servidores e todos os dispositivos de rede e hardware relacionados hospedados em seu data center. Você pode restringir as pessoas a acessarem as instalações do seu data center onde você hospedou fisicamente esses sistemas. Certifique-se de configurar uma cópia de backups para todos os sistemas críticos para outro local para proteger seus dados caso algo aconteça com este site. Certifique-se de ter auditoria em vigor sobre quem todos estão visitando este lugar e por qual motivo. Você pode auditar quem todos têm acesso a esse local, certifique-se de ter um processo de aprovação adequado em vigor se alguém precisar ter acesso às instalações do data center. Instale câmeras de CFTV para monitorar a segurança do edifício. Tentamos comprometer todas essas regras e políticas durante seus testes de segurança.

Se você hospedou todos os seus sistemas em um ambiente de nuvem, então você deve confiar em seus provedores de nuvem, pois todos os provedores de nuvem seguem as práticas recomendadas para proteger seus data centers.

Em seguida, vem a segurança de rede, onde garantimos que todas as comunicações sejam seguras e protegidas. Também garantimos que o tráfego de rede malicioso não está sendo direcionado usando bots ou quaisquer programas ou por qualquer meio para nossos sistemas para torná-los degradados ou inacessíveis. O objetivo da camada de segurança de rede é garantir que:

  • Todas as portas indesejadas estão bloqueadas
  • Políticas de firewall estão em vigor para evitar tráfego de rede externo mal-intencionado
  • Todos os endpoints de rede são protegidos por qualquer meio, como criptografia ou ferramentas de terceiros
  • Todos os pacotes que estão entrando ou saindo dos sistemas são criptografados
  • Corrigir todas as vulnerabilidades identificadas em qualquer componente de rede ou software para minimizar os riscos de segurança, eles podem comprometer o sistema para ameaças externas

A segurança do sistema operacional envolve segurançano nível da plataforma e impede qualquer acesso não autorizado ao sistema de banco de dados. Segurança do sistema operacional

  • melhora a segurança do gerenciamento de acesso adotando políticas de senha complexas e autenticação multifator
  • protege sistemas com a ajuda de firewalls para restringir chamadas indesejadas do sistema
  • inclui a proteção de binários do SQL Server ou de qualquer sistema ou arquivo de aplicativo armazenado no computador
  • aborda a verificação de vulnerabilidades e aplica atualizações para corrigir riscos de segurança do sistema operacional e do SQL Server
  • Restringir serviços indesejados limitando a área de superfície do SQL Server

O próximo é a segurança do banco de dados, onde protegemos os bancos de dados e seus objetos em vários níveis, adotando medidas adequadas de controle de acesso dentro do sistema debanco de dados. Podemos dividir a segurança do banco de dados nas 4 categorias abaixo.

  • Autenticação
  • Autorização
  • Proteção de dados
  • Configurações do SQL Server

A autenticaçãoé a primeira etapa para se conectar aos bancos de dados. É um processo para reconhecer que alguma pessoa autêntica está usando uma entidade de segurança ou login válido para se conectar ao banco de dados. Se você estiver usando uma entidade de segurança inválida, podemos dizer que sua autenticação falhou e você não pode se conectar ao banco de dados.

Abaixo estão os poucos pontos que você deve considerar ao permitir que alguém autentique seus sistemas:

  • Certifique-se de definir a política de senha para escolher senhas complexas e alterá-las em alguns intervalos
  • Atribua a todos os usuários o uso da autenticação multifator sempre que possível
  • Conceder apenas as permissões necessárias e restringir quaisquer privilégios mais elevados indesejados
  • Não permita que ninguém use contas genéricas como sa no SQL Server. Removê-los ou desativá-los.

A autorizaçãoé um processo para conceder acesso a objetos. Você pode restringir ou autorizar alguém em sua entidade de segurança a acessar esse objeto de banco de dados. Mesmo que você possa controlar o tipo de acesso, como se não quiser que eles escrevam ou atualizem nada no objeto de banco de dados, você pode fazer isso negando esses direitos nesse objeto especificado.

A proteçãode dados é a terceira opção que é muito popular nos dias de hoje para proteger os dados usando criptografia contra o uso não autorizado. Ele é usado para criptografar nossos dados em repouso ou em trânsito para bancos de dados do SQL Server. O SQL Server oferece várias opções para aplicar criptografia ou mascaramento para vários tipos de necessidades, como Criptografia de Dados Transparente, Criptografia Sempre, Mascaramento de Dados, etc. Os backups de banco de dados também podem ser criptografados para impedir qualquer acesso não autorizado de seus dados.

A última opção é configurar cuidadosamente a instância do SQL Server para que nenhum dos dados possa ser comprometido usando qualquer maneira. Devemos considerar a alteração da porta padrão do SQL Server para outra porta, desabilitar serviços indesejados do SQL Server, como o serviço do navegador SQL, podemos desabilitar alguns objetos do sistema, como xp_cmdshell, etc., remover contas genéricas, etc.

A segurança do aplicativoé a camada final em que precisamos aplicar todas as medidas possíveis para estabelecer uma conexão segura com o servidor de banco de dados para evitar execuções remotas de código não autorizadas. Os ataques de injeção de SQL também são categorizados e atendidos nessa camada para evitar que qualquer código mal-intencionado seja inserido em seu programa de aplicativo e executá-los no banco de dados para corromper os dados.

Existem várias ferramentas de terceiros no mercado que você pode usar para configurar as medidas de segurança acima.

Agora, entendemos todas as medidas e políticas de segurança que devemos adotar para proteger o ambiente de banco de dados. Em seguida, aprenderemos sobre testes de segurança através dos quais tentamos comprometer nossos sistemas e bancos de dados para entender as fraquezas presentes nos sistemas.

Teste de segurança no SQL Server

A seção acima explicou os conceitos básicos sobre medidas de segurança em várias camadas que podemos tomar para proteger nossos bancos de dados e sistemas nos quais eles estão hospedados. Depois de aplicar essas medidas e procedimentos, você também deve testá-los de tempos em tempos para garantir que tudo esteja no lugar e funcionando bem de acordo com nossas expectativas.

O teste de segurança para qualquer sistema nos ajuda a identificar possíveis falhas de segurança e vulnerabilidades presentes no sistema e nos permite corrigi-las a tempo, aplicando correções apropriadas para proteger os bancos de dados e seus sistemas de quaisquer ameaças de segurança internas ou externas. Também ajuda a manter a disponibilidade do SLA dos bancos de dados, detectando os riscos e corrigindo-os a tempo. Se você está confuso sobre por onde começar, então você pode seguir a mesma sequência que está mostrando na imagem abaixo. Você pode começar testando a segurança física e seguir a mesma ordem até o teste de segurança do aplicativo para garantir a segurança de ponta a ponta do seu sistema de banco de dados.

Security testing in SQL Server

Além disso, lembre-se de que o exercício de teste de segurança é um processo demorado que pode custar mais em termos de esforços e valores adicionais em dólares. Como aplicamos várias medidas de segurança em várias camadas, conforme definido na seção acima, da mesma forma, devemos realizar seus testes em cada camada onde quer que tenhamos implementado nossas políticas para proteger o ambiente. Essas camadas são as mesmas definidas na seção acima.

  • Segurança física
  • Segurança de rede
  • Segurança do sistema operacional
  • Segurança do banco de dados
  • Segurança de aplicativos

Os testes de segurança físicapodem ser realizados por meio de auditorias frequentes e documentações adequadas baseadas em listas de verificação. Certifique-se de bloquear corretamente as instalações onde os sistemas estão hospedados. Certifique-se de seguir todas as práticas recomendadas para manter a segurança física para se proteger de incêndios, inundações, roubos ou quaisquer tragédias provocadas pelo homem.

Como parte de seus testes, você pode planejar as etapas abaixo:

  • Tente entrar na sala do data center sem ter qualquer acesso ou você pode tentar a porta traseira para entrar na sala
  • Realize simulações de exercícios para proteger o edifício contra incêndios, terremotos ou acidentes provocados pelo homem
  • Tente contornar a barreira de segurança para garantir que todo o pessoal de segurança esteja atento ou não
  • Tente comprometer as câmeras instaladas para monitorar todas as atividades do data center

Reúna detalhes durante cada tentativa e analise se as práticas recomendadas ou políticas definidas foram seguidas durante os casos de teste ou não. Se você encontrar algum erro, então você pode tomar medidas adicionais para se certificar de que ele poderia ser seguido da próxima vez.

O testede segurança de rede envolve a varredura de portas para identificar todos os dispositivos que estão conectados e aceitar apenas conexões seguras, detectar qualquer porta que seja deixada aberta, varredura de vulnerabilidades para detectar qualquer risco de segurança que possa levar à exposição externa do sistema, auditoria de senhas fracas e identificação de onde a autenticação multifator não está configurada e testes de penetração para identificar vulnerabilidades de segurança existentes.

Você pode realizar todos esses testes usando várias ferramentas como Qualys, Acunetix, NMAP, Wireshark, etc. Os principais pontos que devemos abordar durante este teste são:

  • Execute a verificação de vulnerabilidades e identifique qualquer brecha que possa ser usada para comprometer seus dispositivos
  • Verificar todas as portas para identificar qual porta pode ser comprometida
  • Testes de penetração
  • Auditoria de controle de acesso

Certifique-se de tomar soluções de todos os riscos ou brechas identificadas durante os testes de segurança acima.

O testede segurança do sistema operacional envolve a verificação de segurança e vulnerabilidade do sistema, testes de detecção de intrusos, verificação de configuração e políticas para testar e auditorias de segurança no gerenciamento de controle de acesso.

O teste vem sob esta camada é:

  • Varredura de vulnerabilidades e avaliação de riscos
  • Tente comprometer o sistema usando quaisquer definições de configuração para garantir que tais configurações e diretivas tenham sido abordadas
  • Testes de detecção de intrusos para garantir que o acesso não autorizado não possa ser feito
  • Quebra de senha fraca
  • Tente usar contas genéricas, isso nos exporá a remover todas as contas genéricas do sistema

O teste de segurança de banco de dadostambém envolve as mesmas ações que discutimos para sistemas operacionais. Também envolve gerenciamento de controle de acesso para revisar as configurações de autenticação ou autorização do banco de dados, os dados são protegidos usando criptografia ou não, os recursos indesejados não são instalados junto com os serviços indesejados devem ser desativados para reduzir a área de superfície para os invasores.

  • Tente estabelecer conexões com a instância de banco de dados ou bancos de dados por várias ferramentas, outros logins presentes no sistema, como contas de serviço, usando contas genéricas como sa, números de porta ou comprometendo senhas fracas
  • Tentar acessar objetos de banco de dados que devem ser restritos para outros usuários para garantir que o roubo de dados seja possível ou não
  • Audite o gerenciamento de acesso para garantir que ninguém tenha privilégios mais altos desnecessários e logins não utilizados
  • Tentativa de acessar dados criptografados
  • Verifique se o SQL Server não foi instalado com componentes desnecessários

Aplique correções para pontos fracos identificados do sistema durante os testes de segurança acima para proteger seus sistemas.

Oteste de segurança de aplicativos garante conexões seguras com o sistema de banco de dados para evitar ataques por meio de injeções SQL. Podemos usar ferramentas de terceiros como SQLMap ou SQLNinja para realizar esse teste. Essas ferramentas nos ajudarão a identificar pontos fracos que um invasor externo pode usar para injetar códigos SQL mal-intencionados em chamadas do sistema (injeções de SQL) na camada de segurança do aplicativo.

Podemos testar os pontos abaixo nesta camada de teste para evitar ataques de injeção de SQL.

  • Tentativa de comprometer chamadas de execução remota
  • Tente inserir instruções SQL maliciosas para corromper seus dados

Tome medidas corretivas para corrigir as deficiências identificadas durante este teste de segurança.

O SQL Server também introduziu um recurso chamado Avaliação de Vulnerabilidade, que pode ser aproveitado para identificar todas as brechas existentes nos bancos de dados do SQL Server. Esse recurso nos ajuda a abordar as camadas de segurança do banco de dados e não as outras camadas restantes. Você deve envolver todas as respectivas equipes para examinar suas respectivas áreas para realizar testes semelhantes para garantir que você tenha medidas de segurança robustas em vigor para proteger seus sistemas de banco de dados. Você também pode usar o gerenciamento baseado em diretiva do SQL Server para identificar e corrigir um item de configuração específico relacionado à segurança.

O SQL Server também fornece várias exibições de catálogo, funções e exibições e funções de gerenciamento dinâmico usando as quais podemos executar auditorias ou revisões das configurações relacionadas à segurança existentes.

Conclusão

Os testes de segurança devem ser feitos regularmente para garantir que não estamos nos desviando de nossas rígidas políticas de segurança. O SQL Server oferece várias ferramentas e utilitários usando os quais podemos detectar riscos de segurança no nível do banco de dados do SQL Server e, consequentemente, podemos aplicar sua correção. Explicarei essas ferramentas, utilitários e objetos do sistema em meus próximos artigos. Fique atento ao meu próximo artigo, no qual explicarei uma dessas ferramentas Avaliação de Vulnerabilidade do SQL Server em um processo passo a passo sobre como usá-la para detectar e corrigir as vulnerabilidades existentes.

Ver mais

Para integrar o teste de unidade SQL diretamente no SSMS, considere o Teste de Unidade ApexSQL, uma ferramenta de teste de unidade SQL que permite criar e organizar classes de teste e testes de unidade, automatizar a execuçãodetestes usando a CLI e gerenciar todos os testes com um único formulário

Manvendra Singh

Manvendra é um entusiasta de banco de dados, atualmente trabalhando como arquiteto sênior em uma das principais multinacionais.

Ele adora falar e escrever sobre tecnologias de banco de dados. Ele liderou e entregou muitos projetos, desde o projeto até as implantações em migrações para a nuvem, migrações heterogêneas, consolidações de banco de dados, atualizações, replicação heterogênea, soluções de HA / DR, automação e grandes projetos de ajuste de desempenho.

Você também pode encontrá-lo noLinkedIn

Ver todos os posts de Manvendra Singh

Manvendra Singh


Artigo Original