Categorias
SQL Server Virtual PASS BR

Melhorando a vulnerabilidade do seu ambiente

Recentemente estive envolvido em um projeto da equipe de segurança para melhorar a vulnerabilidade do ambiente SQL Server e a questão de segurança vai muito além de permissões de acesso a instancia e ao banco de dados.

Vou listar algumas dicas que podem melhorar a vulnerabilidade de seu ambiente.

  • Instalar o ultimo Service Pack e Hotfixes disponível: Verificar se o SQL Server possui as últimas atualizações de segurança e caso não possua, providencie a atualização. Alguns sites indicam qual a versão mais nova do SQL Server ( http://www.sqlteam.com/article/sql-server-versions e http://www.sqlsecurity.com/faqs-1/sql-server-versions)
  • Restringir o acesso aos arquivos do SQL Server: restringir o acesso às pastas do SQL Server que contém datafiles e arquivos de sistema. Nestas pastas deverão conter permissão apenas o grupo de DBAs, o grupo de administradores do sistema operacional, o usuário que inicializa os serviços do SQL e o usuário SYSTEM.
  • Restringir o acesso as chaves de registros do SQL Server: restringir o acesso ao registro do SQL Server. Nas chaves que fazem referência ao SQL Server deverá conter permissão apenas o grupo de DBAs, o grupo de administradores do sistema operacional, o usuário que inicializa os serviços do SQL e o usuário SYSTEM.
  • Habilitar a Auditoria de Login: habilitar a auditoria de sucesso e falha de conexões.
  • Aumentar a quantidade de ErrorLogs: aumentar a quantidade de ErrorLogs do SQL Server para um numero considerável para seu ambiente e facilitará uma análise de troubleshooting. Uma quantidade que tenho utilizado é de 30 arquivos.
  • Configurar um senha forte para conta SA: Criar uma senha forte para o usuário SA. Um bom exemplo é criar uma senha com mais de 14 caracteres alfa numéricos e caracteres especiais.
  • Usar um nome diferente para conta ‘sa’: alterar o nome do usuário “sa” para outro nome. O usuário “sa” é conhecido mundialmente é um dos primeiros pontos de ataque na sua instancia.
  • Criar um grupo administrador para o SQL Server: criar um grupo de usuários para ter acesso de administrador no SQL Server. Este grupo deve estar obrigatoriamente criado no AD e com os DBAs associados a ele.
  • Usar uma porta TCP diferente para o SQL Server: Mudar a porta padrão (1433) do SQL Server.
  • Desabilitar xp_cmdshell Extended Stored Procedure: Desabilitar a Store Procedure “xp_cmdshell”. Por padrão já vem desabilitada nas novas versões do SQL Server, mas é sempre bom validar essa opção.
  •  Habilitar a opção ‘Enforce password policy’: Habilitar a opção “Enforce password policy” faz com que SQL Server possa usar o mecanismo de senha do Windows.
  • Habilitar a opção ‘Enforce password expiration’: Habilitar a opção “Enforce password expiration” faz com que o SQL Server gerencie o tempo de vida de uma senha.
  • Habilitar criptografia de rede com SSL: Alterar a opção “ForceEncryption” para “Yes” irá criptografar os dados que são transmitidos através de uma rede entre uma instância do SQL Server e um aplicativo cliente.
  • Remover usuários desnecessários da role ‘System Administrator’ role: Deve-se verificar se os usuários realmente necessitam deste acesso. Em caso de algum usuário não necessitar do privilégio, deverá ser removido o privilégio. Lembre-se de conceder os privilégios necessários para que o usuário consiga trabalhar normalmente.
  • Remover o grupo BUILT-IN/Administrators: Excluir o login BUILT-IN/Administrators do SQL Server. É muito importante que ao remover este item, seja incluído um novo grupo de DBAs no SQL Server. Dessa maneira administradores do sistema operacional não terão privilégios no SQL Server.
  • Remover ‘Server Permissions’ dos usuários desnecessários: Remover privilégios de servidor de usuários que não necessitam dos mesmos. Por algum motivo os usuários podem ter permissões elevadas e é uma boa hora para efetuar uma limpeza.  
  • Remover usuários desnecessários do grupo MSSQLServer: Remover usuários que não deveriam estar neste grupo.
  • Remover usuários desnecessários do grupo SQLAgent: Remover usuários que não deveriam estar neste grupo.

Se tem você tem mais alguma dica de segurança, por favor compartilhe!!

Categorias
How To SQL Server

Aplicação de Service Packs, Cumulative Update e Hotfixes

Estive procurando algum documento oficial sobre melhores praticas para aplicação de Service Pack, Cumulative Update e Hotfix do SQL Server e não encontrei nada oficialmente.

Por isso resolvi criar algumas dicas sobre o assunto:

Regras básicas para aplicação são:

“The risk of implementing the service pack, hotfix and security patch should ALWAYS be LESS than the risk of not implementing it.”

“You should never be worse off by implementing a service pack, hotfix and security patch. If you are unsure, then take steps to ensure that there is no doubt when moving them to production systems.”

Melhores Praticas

  • Usar um processo de controle de mudança
  • Ler toda a documentação relacionada
  • Aplicar as atualizações somente quando necessário.
  • Testar
  • Plano para desinstalar
  • Consistência entre os clusters
  • Agendar donwtime do ambiente
  • Ter plano de Backup
  • Ter plano de Rollback
  • Informar Key Users
  • Nunca ficar mais de 2 Service Pack atrás do ultimo
  • Aplicar primeiramente em ambientes não críticos

Service Pack e Cumulative Update

  1. Revisar o arquivo Readme para o Service Pack, Cumulative Update, Hotfix. Quaisquer preocupações ou recomendações serão encontradas nesse arquivo;
  2. Executar o comando DBCC CHECKDB em TODOS os databases (user e system databases) e garantir que nenhum erro foi reportado;
  3. Realize Backup de TODOS os databases (user e system databases) e Full-Text Catalogs (se aplicável). Não é requerido, mas é altamente recomendado;
  4. Parar o monitoramento e serviço de antivírus;
  5. Certifique-se de ter permissões apropriadas para instalar (Privilégios de administrador no Servidor/Cluster Node);
  6. Os pontos abaixo são para instancias em cluster do SQL Server:
    • Certifique-se que TODOS os recursos SQL vêm online em TODOS os nós do cluster;
    • Certifique-se que todos os recursos de disco (mesmo os que não estão sendo usados pelo SQL Server) estão online e não estão em estado de falha;
    • Verifique se não há outras dependências além daquelas que são criadas pela instalação do SQL Server sobre os recursos do cluster do SQL Server;
    • Certifique-se que todas as conexões remotas estão fechadas. Você pode se conectar ao nó com Remote Desktop Connection, mas você deve desconectar quaisquer conexões remotas para outros nós do cluster.
    • Verifique se o MSDTC está corretamente clusterizado.
    • Aplique o Service Pack somente para aquela instancia que você planejou (no case de múltiplas instancias)
  7. Aplicar primeiramente em um ambiente SQL Server de Desenvolvimento/Teste;
    • Depois de ter confirmado que todas as aplicações estão funcionando como esperado, instalá-lo no ambiente de produção do SQL Server;
    • Esse processo de testar as aplicações deve ser em um período de no mínimo 30 dias;
  8. Reiniciar a instancia do SQL Server.
  9. Verifique todas as entradas no SQL Server Error Log sobre o Service Pack instalado e garanta que não haja erros.
  10. Verifique Service Pack level na Instancia SQL Server
  11. Envie um e-mail para Key Users informando que o Service Pack foi aplicado e SQL Server está funcionando perfeitamente.

Hotfix

  • Consistência de Service Pack
  • Não aplicar um hotfix até ter todos os Services Packs instalados;
  • Instalar o ultimo Service Pack ao invés de múltiplos hotfixes;
  • Se várias correções devem ser aplicadas e estas estão no Service Pack mais recente, deve-se aplicar o Service Pack mais recente ao invés de aplicar vários hotfixes, a menos que as questões relacionadas com o último Service Pack possam causar problemas para o servidor;