Tengo un problema y no pude encontrar la forma de manejarlo. Tengo un servidor SQL en un servidor Windows 2008 R2. Este SQL Server 2005 se está utilizando para recibir suscripciones de DB de otro servidor SQL ubicado en otra parte de Internet. Tengo el puerto del servidor sql abierto a través del firewall, sin embargo, en el ámbito, he ingresado la IP del otro servidor SQL. Al hacerlo, esperaba que las solicitudes de conexión a través de ese puerto no llegaran al Servidor SQL a menos que las solicitudes provengan del otro Servidor SQL (cuya IP figura en el alcance de la regla del firewall). Pero, cuando veo el registro, hay cientos de entradas de "usuario fallido de inicio de sesión sa" (y vienen cada segundo que pasa). Parece que algún hacker está intentando usar la fuerza bruta para adivinar una contraseña de usuario. Pero la pregunta es: ¿Por qué Windows permite que estas solicitudes lleguen al Servidor SQL aunque no provengan de la dirección IP que figura en el alcance del firewall? ¿Cuál es la forma correcta de proteger este servidor SQL? Ninguna otra IP que la IP del otro SQL Server necesita conectarse a este servidor SQL.
EDITAR - Más información:
Ejecuté telnet en el puerto del servidor sql desde diferentes máquinas. Telnet falla, excepto cuando se ejecuta desde la máquina que se menciona específicamente en el alcance del firewall. Entonces parece que el firewall está bloqueando bien el puerto del servidor sql. Pero entonces, ¿por qué veo esas solicitudes de inicio de sesión fallidas para el usuario "sa" desde diferentes direcciones IP en el registro de SQL Server? ¿Es posible que el pirata informático ingrese a la máquina a través del puerto 80 y luego de alguna manera intente conectarse al servidor sql? Los puertos 80 y 443 están abiertos a todos. Todos los demás puertos están cerrados con la excepción del puerto del servidor SQL (y que está abierto solo para una IP específica). No hay nada en ejecución en el servidor web en el puerto 80 que pueda conducir a un visitante al servidor SQL. De hecho, solo hay un archivo index.html (HTML puro sin conexión a SQL) en el servidor web. Esto es solo un servidor de prueba que se está configurando para uso futuro. Solo pruebe datos en SQL Server.
EDITAR:
Encendí el rastreo del cortafuegos para incluir conexiones tanto de caída como de éxito. Ahora está rastreando todo. Luego voy al registro de SQL Server donde veo estos intentos fallidos de inicio de sesión desde diferentes direcciones IP en China. Pero no hay entradas para estas direcciones IP en el registro del firewall. ¿Cómo es esto posible? ¿Pueden llegar al servidor SQL sin pasar por el firewall por completo? Si se supone que hay algún puerto de firewall abierto por el que podrían ingresar, el registro del firewall debe mostrar una entrada para esa dirección IP. Estoy completamente perdido.
fuente
Respuestas:
Parece que su firewall no está configurado correctamente. Este es el primer paso.
Normalmente no chulo un libro que escribí, pero en este caso haré una excepción. Se llama Asegurar SQL Server y le dará un buen comienzo.
fuente
Simplemente dije: no lo haces. No usaría un firewall, etc., un servidor SQL no tiene derecho a estar en Internet. Muy, muy pocas excepciones.
Para la replicación, configure una VPN adecuada.
fuente
Además de configurar el firewall correctamente, aquí hay algunas recomendaciones generales para mantener SQL Server a salvo de ataques de fuerza bruta:
Deshabilita la cuenta 'sa'. Conocer el nombre de usuario exacto facilitará los ataques
Otra opción es cambiar el nombre de la cuenta 'sa' por un nombre menos obvio
Más recomendaciones útiles aquí: Prevención de una fuerza bruta o ataque de diccionario: cómo mantener a los brutos lejos de tu botín
fuente