Como proteger o SQL Server dos hackers

9

Estou com um problema e não consegui descobrir como lidar com isso. Eu tenho um SQL Server em um servidor Windows 2008 R2. Este SQL Server 2005 está sendo usado para receber assinaturas de banco de dados de outro SQL Server localizado em outro lugar na Internet. Eu tenho a porta do servidor sql aberta pelo firewall, no entanto, no escopo, digitei o IP do outro SQL Server. Fazendo isso, esperava que as solicitações de conexão por essa porta não chegassem ao SQL Server, a menos que as solicitações fossem provenientes do outro SQL Server (cujo IP está listado no escopo da regra de firewall). Mas, quando vejo o log, existem centenas de entradas "login com falha do usuário sa" (e elas estão chegando a cada segundo). Parece que algum hacker está tentando usar a força bruta para adivinhar a senha do usuário. Mas a questão é: por que o Windows está permitindo que essas solicitações cheguem ao SQL Server, mesmo que não sejam provenientes do endereço IP listado no escopo do firewall? Qual é o caminho certo para proteger este SQL Server. Nenhum outro IP além do IP do outro SQL Server precisa se conectar a este servidor sql.

EDIT - Mais informações:

Eu executei o telnet na porta do servidor sql de máquinas diferentes. O Telnet falha, exceto quando é executado a partir da máquina mencionada especificamente no escopo do firewall. Portanto, parece que o firewall está bloqueando bem a porta do servidor sql. Mas então por que estou vendo essas solicitações de logon com falha para o usuário "sa" de diferentes endereços IP no log do SQL Server? É possível que o hacker esteja entrando na máquina pela porta 80 e, de alguma forma, tentando se conectar ao servidor sql? As portas 80 e 443 estão abertas a todos. Todas as outras portas são fechadas, com exceção da porta do servidor sql (e aberta apenas para um IP específico). Não há nada em execução no servidor da Web na porta 80 que possa levar um visitante ao servidor SQL. De fato, existe apenas um arquivo index.html (HTML puro sem conexão com o SQL) no servidor da Web. Este é apenas um servidor de teste sendo configurado para uso futuro. Apenas teste dados no SQL Server.

EDITAR:

Ativei o rastreamento de firewall para incluir conexões drop e success. Agora está rastreando tudo. Depois, vou para o log do SQL Server, onde vejo essas tentativas de logon com falha de diferentes endereços IP na China. Mas não há entradas para esses endereços IP no log do firewall. Como isso é possível? Eles podem acessar o servidor SQL ignorando completamente o firewall? Se suponha que alguma porta do firewall estivesse aberta e que eles pudessem entrar, o log do firewall mostraria uma entrada para esse endereço IP. Estou completamente perdido.

Allen King
fonte
Que tal usar o Logon Trigger ? Além disso, o SQL Server não deve ser exposto à Internet (voltado para o público). Além disso, você pode usar as Regras do programa no Firewall do Windows para limitar o intervalo de endereços IP.
quer
Sim, eu poderia, mas no fundo isso não é realmente sobre o SQL Server. Estou tentando descobrir por que o firewall do Windows não está fazendo o que deveria estar fazendo, ou seja, não deixando essas solicitações passarem porque elas não são provenientes do único endereço IP permitido.
1
Sim, parece que o Firewall do Windows está configurado incorretamente. Talvez você tenha outra regra mais geral que permita a porta 1433 (ou permita tudo) ou talvez o Firewall do Windows esteja desabilitado na NIC voltada para a Internet. É difícil dizer sem ver a configuração. Mas isso é realmente mais uma pergunta para o ServerFault, como Max diz. Você quis dizer Windows 2008 R2, btw? 'RC' é o Release Candidate, software de pré-lançamento para teste.
James L
1
Você realmente está usando um sistema operacional candidato a uma versão antiga ?! Corrija isso primeiro.
Michael Hampton

Respostas:

12

Parece que seu firewall não está configurado corretamente. Este é o primeiro passo.

Normalmente, não daria uma olhada em um livro que escrevi, mas, neste caso, farei uma exceção. Chama-se Protegendo o SQL Server e dará um bom começo.

Mrdenny
fonte
Bem, seu livro é um ajuste exato para esta pergunta :-)
mfinni
Legal! Possui orientação prescritiva sobre o uso de certificados em vez da autenticação local / Windows para servidores voltados para a Internet? ;-)
Greg Askew
Veja minhas edições. O firewall parece estar funcionando bem. É outro truque que esses hackers chineses estão usando para acessar o SQL Server.
Allen rei
1
Se alguém estiver se conectando à porta SQL a partir de um endereço IP público, o firewall não está configurado corretamente. Se eles são provenientes de um IP interno, você tem algum outro tipo de problema. O SQL por si próprio não suporta certificados. Você deve fazer isso via mapeamentos de certificados e AD.
mrdenny
De volta ao desenho para o firewall. Eu retiraria o servidor SQL da Internet até que você resolvesse sua situação de firewall. Dessa forma, você poderá banir IP de intervalos inteiros de endereços IP com relativa facilidade.
Techie Joe
4

Simplesmente disse - você não. Eu não usaria um firewall etc. - um servidor SQL não tem o direito de estar na internet. MUITO, muito poucas exceções.

Para replicação, configure uma VPN adequada.

TomTom
fonte
Eu estou um pouco confuso. Se o servidor de banco de dados não estiver na Internet, como um servidor de back-end do Web App alcançará o servidor de banco de dados?
Allen rei
Através da rede interna. Configuração básica. O aplicativo da web fica nas duas redes.
TomTom
3

Além de configurar o firewall corretamente, aqui estão algumas recomendações gerais para manter o SQL Server a salvo de ataques de força bruta:

  • Desative a conta 'sa'. Saber o nome exato de login facilitará os ataques

    ALTER LOGIN sa DISABLE
    

Outra opção é renomear a conta 'sa' para um nome menos óbvio

ALTER LOGIN sa WITH NAME = SimonXZY
  • Use a autenticação do Windows em vez da autenticação de modo misto. A autenticação do Windows impõe a diretiva de senha do Windows e bloqueia o logon em caso de tentativas sucessivas de logon com falha
  • Falha na auditoria dos logons. A maneira mais fácil de fazer isso é definir a opção Auditoria de logon nas propriedades do servidor, guia Segurança, como Somente logins com falha ou Logons com falha e com êxito. Isso não ajudará a proteger contra ataques de força bruta, mas ajudará você a estar ciente dos ataques

Recomendações mais úteis aqui: Prevenção de uma força bruta ou ataque de dicionário: Como manter os brutos afastados do seu saque

Milena Petrovic
fonte