Estou tendo 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. Estou com a porta do sql server aberta pelo firewall, porém no escopo, inseri o IP do outro SQL Server. Fazendo isso, eu esperava que as solicitações de conexão por meio dessa porta não alcançassem o SQL Server, a menos que as solicitações viessem de outro SQL Server (cujo IP está listado no escopo da regra de firewall). Mas, quando vejo o log, há centenas de entradas "login failed user sa" (e elas aparecem a cada segundo que passa). Parece que algum hacker está tentando com força bruta 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 venham do endereço IP listado no escopo do firewall? Qual é a maneira certa de proteger este SQL Server. Nenhum outro IP além do IP do outro SQL Server precisa se conectar a este SQL Server.
EDITAR - Mais informações:
Executei o telnet na porta do servidor sql de máquinas diferentes. O Telnet falha, exceto quando é executado na máquina especificamente mencionada no escopo do firewall. Parece que o firewall está bloqueando bem a porta do servidor sql. Mas então por que estou vendo essas solicitações de login 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 estão fechadas com exceção da porta do SQL Server (e que está aberta apenas para um IP específico). Não há nada em execução no servidor Web na porta 80 que possa levar um visitante ao servidor SQL. Na verdade, existe apenas um arquivo index.html (HTML puro sem conexão com SQL) no servidor Web. Este é apenas um servidor de teste sendo configurado para uso futuro. Teste apenas dados no SQL Server.
EDITAR:
Ativei o rastreamento do firewall para incluir conexões descartadas e bem-sucedidas. Agora está rastreando tudo. Em seguida, vou para o log do SQL Server, onde vejo essas tentativas de login malsucedidas 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 supor que alguma porta do firewall esteja aberta pela qual eles possam entrar, o log do firewall deverá mostrar uma entrada para esse endereço IP. Estou completamente perdido.
Responder1
Parece que seu firewall não está configurado corretamente. Este é o primeiro passo.
Normalmente eu não seria cafetão de um livro que escrevi, mas neste caso abrirei uma exceção. É chamadoProtegendo o SQL Servere isso lhe dará um bom começo.
Responder2
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.
Responder3
Além de configurar o firewall corretamente, aqui estão algumas recomendações gerais para manter o SQL Server protegido contra ataques de força bruta:
Desative a conta 'sa'. Saber o nome de login exato tornará os ataques mais fáceis
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 política de senha do Windows e bloqueia o login em caso de sucessivas tentativas de login malsucedidas
- Falha de logon na auditoria. A maneira mais fácil de fazer isso é definir a opção Auditoria de login nas propriedades do servidor, guia Segurança como Somente logins com falha ou Logins com falha e bem-sucedidos. Isso não o ajudará a se proteger contra ataques de força bruta, mas o ajudará a estar ciente dos ataques
Recomendações mais úteis aqui: Prevenindo um ataque de força bruta ou de dicionário: como manter os brutos longe de seu saque