¿Qué es Microsoft SQL Server?
Microsoft SQL Server es un sistema de administración de bases de datos relacionales (RDBMS) que contiene pocos componentes y subcomponentes. Cada componente en SQL Server tiene su propio mecanismo de seguridad que está casi separado el uno del otro. La seguridad de Database Engine incluye la cuenta de servicio, la instancia y la seguridad de las bases de datos.
La mayoría de los desarrolladores y profesionales de TI solo piensan en el cifrado como único mecanismo para proteger sus datos o aplicaciones. La seguridad en el entorno de SQL Server no está limitada a la encriptación: SQL Server debe tener seguridad física para proteger todo el rack del servidor contra cualquier problema vulnerable y también la seguridad raíz de la instancia de SQL Server. La seguridad en SQL Server puede ser Autenticación y Autorización de usuarios contra datos e instancia de SQL Server. Recuerde siempre crear un entorno seguro para su SQL Server, debe tener seguridad en las fases de Diseño, Desarrollo e Implementación de su software y bases de datos. La mayoría de los problemas de seguridad surgen de la fase de Diseño y Desarrollo.
Cuenta de servicio de Microsoft SQL Server
Microsoft SQL Server es una aplicación de modo de usuario, aunque se ejecuta en el servicio de Windows. La cuenta de servicio es completamente una cuenta de usuario de Windows y proporciona privilegios de seguridad para que el servicio SQL Server acceda a los recursos de la plataforma Windows, como el sistema de archivos, la red y el registro. El punto más importante es que SQL Server Service Account no se debe compartir con otras instancias de SQL Server y se prefiere estar en un controlador de dominio (DC).
Capas de seguridad de SQL Server
Microsoft SQL Server tiene varias capas de seguridad, la primera capa es la seguridad del canal de comunicación que es aplicada por TSL o protocolo SSL. La segunda capa está en el nivel de instancia que está protegido por la API de
protección de datos de Windows (DPAPI), DPAPI es en la función de cifrado en la plataforma de Windows para cifrar y descifrar datos y el algoritmo es diferente en cada máquina. Los inicios de sesión, los roles de servidor y las credenciales son objetos de seguridad de nivel de instancia en SQL Server y el usuario, el certificado, las funciones, los esquemas y las claves de cifrado son objetos de seguridad de nivel de base de datos. La figura siguiente muestra las capas de seguridad de SQL Server.
SQL Server Service Key es la clave de cifrado básica en la plataforma SQL Server y está protegida por DPAPI, la clave de servicio siempre se crea mediante el proceso de SQL Server durante el primer inicio y el usuario no puede crearla, el usuario tiene la capacidad de hacer una copia de seguridad y restaurarla en la misma instancia u otras instancias. La clave maestra es una clave opcional en cada base de datos y puede protegerse mediante la clave de servicio o una contraseña segura proporcionada por el usuario. El usuario puede hacer una copia de seguridad de la clave maestra y restaurarla en la misma base de datos u otra base de datos. Regenerar la clave del servicio regenerará todas las claves secundarias, como las claves maestra y de encriptación (simétrica o asimétrica).
Algoritmos y mecanismo de cifrado de SQL Server
El algoritmo de cifrado varía en SQL Server y depende de la clave de cifrado, no todas las claves de cifrado admiten todos los algoritmos en SQL Server. SQL Server puede admitir algoritmos de cifrado como AES, AES_128, AES_192, AES_256, DES, Triple_DES, RSA_2048, MD5, SHA1, SHA2_512 (Introducido en SQL Server 2012) y RC4.
Encriptar la base de datos
SQL Server proporciona una función para encriptar la base de datos para evitar que se lea la base de datos robada. El cifrado de la base de datos es una opción opcional en cada base de datos. SQL Server no cifra la base de datos completa al mismo tiempo cuando la característica está habilitada en una base de datos, SQL Server encriptará cada página cuando el proceso ‘Lazywriter’ necesita escribir la página en el disco y descifrarla cuando lee la página del disco. La función de cifrado de la base de datos se denomina ‘Cifrado transparente de la base de datos’ y solo está disponible en las ediciones ‘Enterprise’ y se presentó en SQL Server 2005.
La seguridad de SQL Server no está completa en la instancia, debe haber un entorno de red seguro para reducir o evitar ataques al servidor. Para garantizar la seguridad del SQL Server, existen algunos factores, como la cuenta de servicio, el protocolo de comunicación y la configuración del firewall.
SQL Server es un proceso de servicio de Windows y la plataforma de Windows lo ejecuta como un proceso de modo de usuario, luego necesita una cuenta de Windows para iniciarlo y proporciona privilegios de seguridad. La cuenta de servicio puede ser una cuenta de usuario o una cuenta de sistema, la plataforma Windows Server 2008 R2 y, más adelante, la ‘Cuenta de servicio virtual’ que comienza con ‘NT Service ‘. Tenga en cuenta que SQL Server no necesita privilegios de seguridad del administrador, solo necesita tener privilegios para enumerar directorios y acceder a los archivos de registro de errores, archivos de datos y archivos de registro. Hay tres cuentas integradas de Windows tales como ‘Sistema local’, ‘Servicio de red’ y ‘Servicio local’, que ninguno de ellos necesita contraseña.
Usando la cuenta de servicio virtual
La cuenta de servicio virtual se introduce en Windows Server 2008 R2 y no requiere administración de contraseñas. Se crea una vez que el servicio SQL Server se instala correctamente y el administrador no tiene derecho a eliminar o agregar ninguna cuenta de servicio virtual. El nombre de la cuenta del servicio virtual se inicia con ‘NT Service ‘.
Encriptando la sesión con SSL
SQL Server transfiere datos a través de la red con el protocolo Tabular Data Stream (TDS), que es el formato estándar para que SQL Server se comunique con la aplicación cliente. Los piratas informáticos pueden detectar la red mediante la aplicación ‘WireShark’ y explorar los datos transferidos a través de la red. Para proteger los datos en la red, SQL Server puede encriptar el protocolo TDS con protocolo SSL. Para habilitar el protocolo SSL, SQL Server necesita un certificado auto firmado o un certificado autorizado de los proveedores de certificados. Los administradores pueden habilitar el protocolo SSL en SQL Server habilitando la opción ‘Forzar cifrado’ o mediante la opción ‘Encriptar’ en la cadena de conexión de la aplicación.
Configurar un servidor de seguridad para acceso a SQL Server
Para proteger el entorno SQL Server, los administradores usan Firewall para controlar la conexión entrante y saliente, en el entorno SQL Server algunos números de puerto deben configurarse correctamente para las conexiones entrantes y salientes; de lo contrario, SQL Server no podrá acceder a las aplicaciones cliente. Debajo de los puertos de SQL Server no se deben bloquear en la configuración del Firewall.
- Puerto TCP 1433 (motor de base de datos)
- Puerto UDP 1434 (navegador)
- Puerto TCP 2383 (Analysis Services)
- Puerto TCP 4022 (Service Broker)
El siguiente código devuelve todos los puertos que SQL Server usa actualmente en su entorno.
SELECT * FROM Sys.Endpoints WHERE Type = 4;
El explorador de SQL Server es un proceso de servicio de Windows para proporcionar el número de puerto de la instancia con nombre de SQL Server y administrar los números de puerto dinámico. Deshabilitar el Navegador del Servidor SQL puede causar una falla en la conexión del usuario.
Cifrado de base de datos transparente
La característica Transparent Database Encryption (TDE) se presenta en SQL Server 2008, la característica TDE encripta toda la base de datos con la clave proporcionada y puede encriptar los datos y el archivo de registro al mismo tiempo. TDE es totalmente transparente desde la perspectiva del usuario y la aplicación. TDE puede admitir claves de cifrado como ‘Tripple_DES’, ‘AES_128’, ‘AES_192’ y ‘AES_256’. Solo las ediciones ‘Enterprise’, ‘Developer’ y ‘Data Center’ de SQL Server tienen esta característica única.
La detención de servicios no utilizados puede mejorar el rendimiento general de SQL Server y reducir el riesgo de seguridad, y los administradores pueden detener servicios no utilizados de SQL Server como ‘Integration Services’, ‘Analysis Services’ o ‘Reporting Services’. Y los administradores pueden desactivar de forma segura los servicios a continuación, especialmente cuando hay un servidor dedicado para el entorno de SQL Server.
- Cliente DHCP
- Cliente DNS
- Conciencia de ubicación de red
- Cola de impresión
- Servicio de informe de errores de Windows
- Firewall de Windows (si hay un firewall de red)
- Detección de hardware de Shell
Asegurar el sector vinculado
Linked-Server es otra característica de SQL Server que puede conectar la instancia de SQL Server a otra instancia de SQL Server u Oracle Database para transferir datos. Linked-Server tiene algunas opciones de seguridad como la siguiente tabla.
Opción | Descripción |
No se ha hecho | El acceso está limitado a inicios de sesión definidos explícitamente en la lista de mapeo |
Estar hecho sin usar un contexto de seguridad | El servidor vinculado aplicará el permiso de usuario invitado en la base de datos |
Conéctese utilizando el contexto de seguridad actual de inicio de sesión | Aplica la suplantación para todos los inicios de sesión no mapeados, igual que la casilla de verificación de suplantación |
Hacerse usando este contexto de seguridad | Permite que todos los inicios de sesión no mapeados se conecten usando el inicio de sesión de SQL Server distante |
Las primeras medidas que suelen tomar los administradores es desactivar las características ‘XP_CMDShell’, ‘Procedimiento de automatización OLE’, ‘OpenRowSet’ y ‘OpenDataSource’ en SQL Server para reducir el riesgo de seguridad de los ataques de SQL Server. Endpoint es una especie de puerta para que SQL Server se comunique con usuarios y aplicaciones. Endpoint puede ser creado y utilizado por el usuario o el sistema. El protocolo del punto final puede ser HTTP o TCP en SQL Server 2005 y SQL Server 2008 – R2 y solo TCP en SQL Server 2012. El extremo definido por el usuario puede ser para TSQL, Service Broker o Database Mirroring.