Fallos de seguridad en SQL SERVER 2005. Dudas.

Estimado experto:
Tengo una duda sobre seguridad que, la verdad, me tiene los pelos de punta. De miedo, claro.
Si tengo en un servidor determinado una base de datos con unos usuarios concretos y esa base de datos, a su vez, está en una instancia con sus usuarios predeterminados (los usuarios de windows deshabilitados) ¿Cómo es posible que pueda hacer lo siguiente sin ningún tipo de problema?
1.- Detener el servicio.
2.- Copia los archivos mdf y ldf
3.- Pegar esos archivos en otro directorio, de otro equipo (a 300 km. De distancia) y que tiene sus propios permisos de servidor (los usuarios windows habilitados)
4.- Ejecutar la opción, a través del management studio, "Adjuntar..."
5. -Poder adjuntar perfectamente esos archivos, creando la base de datos y, LO QUE ES MUCHO PEOR, con total acceso a todo lo que quiera ya que el usuario de windows ha tomado posesión de ello.
Supongo que me estoy saltando algo ya que me parece increíble que esto pueda ser posible. Imagina que tienes posibilidad de hacer un "copia pega" de una base de datos de un banco o de una empresa de seguridad, o de un hospital, por decir algo.
¿Cómo puedo evitar que esa base de datos no pueda ser adjuntada en otra instancia u otro equipo distinto?
¿No sería más lógico que los archivos mdf y ldf llevasen consigo los usuarios permitidos y sus contraseñas para que no se pudiese tomar posesión de ellos de una forma tan sencilla?
En fin, estimado experto, estoy realmente desesperado con este tema. Mi sistema de seguridad y protección se basa en disparadores de la base de datos y si algún usuario logra acceder a ellos, se acabó la seguridad y, sobretodo, la intimidad.
Muchísimas gracias por anticipado y recibe un cordial saludo.

1 Respuesta

Respuesta
1
Como bien mencionas si es posible hacer fácilmente una copia de la base de datos, no solo "adjuntandola", pudiera ser también a través de un respaldo. Pero la seguridad en tu base de datos la debes de ver desde diferentes capas. Para hacer esto que mencionas debe de ser alguien interno a tu organización que tenga acceso a site y más aún acceso al SO del servidor en donde se encuentra la Base de Datos.
Para las empresas que guardan información importante, como bancos por ejemplo, la seguridad empieza desde la ubicación y acceso físico a los servidores, acceso al sistema operativo. No cualquier persona debe de poder ver la Base de Datos. Incluso si tu aplicación es Web es recomendable separar el servidor Web del servidor de bases de datos.
Es más si la administración se puede hacer vía remota, y si es de forma segura mejor, por ejemplo a través de una VPN.
Con decirte que existen normas y especificaciones exclusivas sobre seguridad de la información que pueden aplicarse a tu empresa, por ejemplo la ISO27000: Sistemas de Gestión de la Seguridad de la Información (http://www.iso27000.es/)
Estoy totalmente de acuerdo contigo.
Pero es que no salgo de mi asombro. Imagina la situación en la que me encuentro y en la que se pueden encontrar multitud de desarrolladores.
Ten en cuenta que no puedo acceder a ese nivel de seguridad en las empresas que van a instalar mis desarrollos y que la seguridad de los mismos se basa en disparadores en el SQL a nivel de base de datos y/o de tablas.
Sabes que un programa con éxito es principal objetivo de hackers y demás. Si la seguridad se basa en el código interno que existe en el SQL y pueden acceder a él tan fácilmente como con un "copia pega". ¿No es algo realmente flojo (por ser suave) ese sistema de seguridad?
Lo que digo es que, al menos, si una copia se hace en un equipo en el que el usuario es el 'sa' y la contraseña 'pepitodelospalotes', al restaurarla en otro equipo cuyo usuario 'sa' y contraseña no coincida, debería pedirla.
Es algo realmente simple, digo yo.
En fin. Supongo que esto es así y no queda más que adaptarse. Supongo que intentaré algún tipo de script o código dentro del sql para intentar impedirlo en la medida de lo posible.
Muchas gracias y un saludo. Cierro el tema pero si quieres seguir debatiéndolo, por mí encantado.
Pues si como comentas solo queda adaptarse a la tecnología y que yo sepa todos los manejadores de bases de datos utilizan ese principio. Además si eres desarrollador y generas aplicaciones para vender, la seguridad física y en cuestión del servidor de bases de datos ya tendría que depender de la empresa que compre tu desarrollo no de la aplicación. La aplicación lo que debe asegurarse es que esté bien programada para evitar el SQLInjection pero hasta ahí. Eso creo yo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas