Cómo proteger SQL Server de los hackers

9

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.

Rey Allen
fuente
¿Qué tal usar Logon Trigger ? Además, SQL Server no debe exponerse a Internet (público). Además, puede usar Reglas de programa en Firewall de Windows para limitar el rango de direcciones IP.
Kin Shah
Sí, podría, pero en el fondo no se trata realmente de SQL Server. Estoy tratando de descubrir por qué el firewall de Windows no está haciendo lo que se supone que debe hacer, es decir, no permite que estas solicitudes pasen porque no provienen de la única dirección IP permitida.
1
Sí, parece que su Firewall de Windows está mal configurado. Tal vez tenga otra regla más general que permita el puerto 1433 (o que permita todo), o tal vez el Firewall de Windows esté deshabilitado en la NIC con conexión a Internet. Es difícil de decir sin ver la configuración. Pero esto es realmente más una pregunta para ServerFault como dice Max. ¿Quiso decir Windows 2008 R2, por cierto? 'RC' es Release Candidate, software de prelanzamiento para pruebas.
James L
1
¿Realmente estás usando un antiguo sistema operativo candidato de lanzamiento ? Arregla eso primero.
Michael Hampton

Respuestas:

12

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.

mrdenny
fuente
Bueno, su libro se ajusta exactamente a esta pregunta :-)
mfinni
¡Frio! ¿Tiene una guía prescriptiva sobre el uso de certificados en lugar de autenticación local / Windows para servidores con conexión a Internet? ;-)
Greg Askew
Mira mis ediciones. El cortafuegos parece estar funcionando bien. Es otro truco que estos hackers chinos están jugando para llegar al Servidor SQL.
Allen King
1
Si alguien se conecta al puerto SQL desde una dirección IP pública, el firewall no está configurado correctamente. Si provienen de una IP interna, entonces tienes otro tipo de problema. SQL por sí mismo no admite certificados. Tiene que hacer esto a través de AD y asignaciones de certificados.
mrdenny
De vuelta al dibujo de hecho para el firewall. Quitaría el servidor SQL de Internet hasta que resuelva su situación de firewall. De esa manera, podrá prohibir IP rangos completos de direcciones IP con relativa facilidad.
Techie Joe
4

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.

TomTom
fuente
Estoy un poco confundido. Si el servidor de base de datos no está en Internet, ¿cómo llegará un servidor backend de aplicación web al servidor de base de datos?
Allen King
A través de la red interna. Configuración básica. La aplicación web se encuentra en ambas redes.
TomTom
3

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

    ALTER LOGIN sa DISABLE
    

Otra opción es cambiar el nombre de la cuenta 'sa' por un nombre menos obvio

ALTER LOGIN sa WITH NAME = SimonXZY
  • Use la autenticación de Windows en lugar de la autenticación de modo mixto. La autenticación de Windows aplica la política de contraseña de Windows y bloquea el inicio de sesión en caso de intentos de inicio de sesión fallidos sucesivos
  • Auditar inicios de sesión fallidos. La forma más fácil de hacer esto es configurar la opción de auditoría de inicio de sesión en las propiedades del servidor, la pestaña Seguridad en Solo inicios de sesión fallidos o Ambos inicios de sesión fallidos y exitosos. Esto no lo ayudará a protegerse contra los ataques de fuerza bruta, pero lo ayudará a estar al tanto de los ataques.

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

Milena Petrovic
fuente