Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Seguridad de BD Violada con embedded (https://www.clubdelphi.com/foros/showthread.php?t=75711)

CarlosG 14-09-2011 01:55:48

Seguridad de BD Violada con embedded
 
Saludos Foro.
Resulta que he podido abrir una BD creada con la seguridad normal, con firebird embebido,:eek: yo que pensaba que era segura y lo he abierto muy facilmente :(. os lo comento como lo hice:
Cita:

-Tenia una BD creada en el Servidor de Firebird 2.5 SuperClassic con la cuenta de usuario de sysdba (con clave x defecto cambiada).
-Detuve el Servidor de Firebird, y
-Copie el archivo de esta BD a otra carpeta donde estaba el Firebird 2.5 Embebido.
-Registre la BD copiada en la carpeta de Firebird embebido con IBExpert, configurando en "Client Library File" la libreria DLL del Firebird Embebido.
-Cuando la me pidio el usuario y la contraseña lo deje en blanco y di "OK".
Abrio la DB sin mas, :eek:.
Incluso repeti los pasos, revocando los permisos de todas la tablas antes copiar la BD. es decir de esta forma por cada Tabla:
Cita:

REVOKE ALL <Nombre_Tabla> ON PUBLIC
Pero siguio abriendo, con o todos(o casi la mayoria ) de los permisos que hasta puede eliminar tablas :(.

Disculpen la pregunta, es que soy recien llegado a Firebird: ¿tengo que hacer alguna configuración especial o adicional a la normal en Firebird para un usuario no pueda abrir mi DB?. Esta demas decir que hasta Access tiene una contraseña para impedir ingresar a la BD.
Tengo confianza en que Ud. me pueden ayudar :).

Gracias de Antemano.

CarlosG 14-09-2011 07:09:27

Por si no, exprese bien el tema.
 
Por si no me exprese bien.
mi preocupacion es como impedir que alguien pueda violar la medidas de seguridad (usuario y contraseña) y abrir una base de datos firebird; con solo copiarla desde una instalación Superclasic o SuperServer.

Como podeis ver en los pasos que he mostrado se puede abrir una base de datos de Firebird sin usar la contraseña y el usuario, usando para ello una intalación de Firebird embedded, ami que tengo poco tiempo solo me llevo 2 minutos abrirla.

O cualquiera con conocimientos basicos de firebird puede abrir una base datos para ver o alterar la información :mad: o para hojear los procedimientos almacenados y los triggers :eek:, Si es asi entonces por que piden contraseña y usuario y hasta los permisos GRANT o REVOKE, no servirian de nada, estarian de adorno :).

Sé que nada es 100% seguro y que un experto puede puede pasar por encima las medidas de seguridad, pero le costaria trabajo y experiencia. Pero lo yo he hecho es una cosa de niños :rolleyes:, vamos cualquier principiante lo puede hacer, hasta una BD Access es mas dificl de abrir.

Estoy migrando a Firebird desde MS Access, por las bondades que he leido, pero si es mas facil de abrir que un base de datos Access, bueno abra que pensarlo. no me imagino un sistema contable con alguien alterando el balance o en un programa de crédito modificando la deuda pendiente desde la base de datos.

Si hay manera de mejorar la seguridad de Firebird le agrederia mucho me lo haga saber.

Casimiro Notevi 14-09-2011 10:03:45

Bueno, bueno, es que son conceptos muy diferentes, te contesto con un simple ejemplo:
Yo llego a la empresa de tu cliente y digo:
"Buenos días, por favor, ¿me pueden llevar hasta donde esté el servidor de datos de su empresa, y una vez allí me darían ustedes el login y el password para entrar en el equipo, y de paso me dejarían ustedes copiar su base de datos en mi pendrive para llevármela?, muchas gracias.


La base de datos puede estar en un servidor y los clientes se redirigen a ella mediante un "alias", por lo que no tienen por qué saber dónde está físicamente. Ya sabes, el concepto cliente/servidor no tiene nada que ver con una BD de escritorio como access.

newtron 14-09-2011 10:37:15

Cita:

Empezado por Casimiro Notevi (Mensaje 412085)
"Buenos días, por favor, ¿me pueden llevar hasta donde esté el servidor de datos de su empresa, y una vez allí me darían ustedes el login y el password para entrar en el equipo, y de paso me dejarían ustedes copiar su base de datos en mi pendrive para llevármela?, muchas gracias.

Hombre, si te lo piden de una forma tan educada yo no me podría negar. :p

Toni 14-09-2011 12:35:24

Esto es asi como comenta Casimiro, pero yo la verdad que tambien hecho de menos que no tenga otro nivel de seguridad mas. Como tiene SQL Server por ejemplo o incluso el Access (aunque ya se que es una base de datos de escritorio)

En ocasiones es interesante para proteger tus datos o incluso el diseño de tu base de datos.

Casimiro Notevi 14-09-2011 12:44:32

Cita:

Empezado por newtron (Mensaje 412089)
Hombre, si te lo piden de una forma tan educada yo no me podría negar. :p

Sobre todo si te están apuntando con un arma :p

Cita:

Empezado por Toni (Mensaje 412096)
Esto es asi como comenta Casimiro, pero yo la verdad que tambien hecho de menos que no tenga otro nivel de seguridad mas. Como tiene SQL Server por ejemplo o incluso el Access (aunque ya se que es una base de datos de escritorio)
En ocasiones es interesante para proteger tus datos o incluso el diseño de tu base de datos.

Creo recordar que la versión 2.5 había sido cambiado el sistema de seguridad, yo no la he probado todavía ni he leído nada al respecto, sería conveniente buscar información en firebirdsql.org para ver exactamente qué han hecho.

Kipow 14-09-2011 12:45:55

una idea al aire, podrias implementar tu propio sistema de seguridad con los triggers de conexion de la base de datos y alguna UDF.

ecfisa 14-09-2011 13:41:39

Hola.

Algunos datos más sobre Firebird embedded:

Saludos.

Caral 15-09-2011 03:36:33

Hola
Me dio curiosidad esto:
Cita:

Empezado por Toni (Mensaje 412096)
.......pero yo la verdad que tambien hecho de menos que no tenga otro nivel de seguridad mas. Como tiene SQL Server por ejemplo o incluso el Access (aunque ya se que es una base de datos de escritorio)
.

Que seguridad tiene Access ?.:confused:
Que yo sepa solo se le puede poner clave, pero es tan fácil burlarla que hasta da pena..
En access hay otro nivel de seguridad que desconozco ???.
Saludos

CarlosG 15-09-2011 06:31:54

Cita:

Empezado por Casimiro Notevi (Mensaje 412085)
Yo llego a la empresa de tu cliente y digo:
"Buenos días, por favor, ¿me pueden llevar hasta donde esté el servidor de datos de su empresa, y una vez allí me darían ustedes el login y el password para entrar en el equipo, y de paso me dejarían ustedes copiar su base de datos en mi pendrive para llevármela?, muchas gracias.

Espera un poco abogado de Firebird :D. Pero que pasa si la persona que tiene acceso es un:

1.- Tecnico contratado por la empresa para dar mantenimiento a sus pc's incluido el servidor que de paso aprovecha para llevarse una copia de la base de datos y después de romperse la cabeza la abre en 2 minutos :rolleyes: puede ver todos tus procedimientos almacenados que tanto trabajo te han costado, ademas de los datos de la empresa y hasta le dice le dice al dueño no es necesario que llame al programador cuando quiere algun nuevo reporte que lo puede hacer por un poco menos :eek:, ma ha pasado mas de una vez.

2.- Un usuario del programa o aplicación confabulado con el Tecnico de la misma empresa. Por ejemplo:

-En una municipalidad en mi pais, el jefe de tributos prediales en base a un incentivo (coima) te rebaja el monto de los impuestos prediales confabulado con el tecnico de sistemas entrando directamente en la base de datos que no le pusieron contraseña y modificando el monto del impuesto adeudado, claro de ahi se reparten los ganancias.

-Otra, por si las dudas: Un capitan de la policia encargado de los papeletas por infracciones de transito ofrece el servicios de eliminar las papeletas :eek: por una modica bonificacion personal :rolleyes:, ¿como?, el sistema no te lo permite sin quedar registrada la eliminacion y quedar expuesto a una auditoria, pero si la base de datos no tiene contraseña es muy facil si se cuenta con un tecnico de sistemas que tiene acceso al servidor de BD, y le gusta el dinero facil.

Si el tecnico de sistemas es bueno, aunque tenga la BD. al menos se demorara unos dias :), si es poco inteligente (como la mayoria que se presta a la corrupción, por que no tiene la inteligencia para sobresalir por si mismo) puede tardar meses o años abrir una BD con una buena seguridad de contraseña y hasta puede que nunca abra la BD, claro a menos que se la pida al programador :D o al jefe de sistemas que en cualquiera de los dos casos es mas dificil.

Estos no son casos hipoteticos, son casos reales que suceden en mi localidad. Aun le podria enumerar muchos mas,incluso con mi propio sistema, pero no es un foro de "informatica forense" :D.

Cita:

La base de datos puede estar en un servidor y los clientes se redirigen a ella mediante un "alias", por lo que no tienen por qué saber dónde está físicamente. Ya sabes, el concepto cliente/servidor no tiene nada que ver con una BD de escritorio como access
No se cual sera el medio en el que te desenvuelves (aunque parece el ideal). En mi caso, por lo general en muchos de mi clientes que son pequeñas y medianas empresas desde 4 hasta 25 terminales de usuario, el personal que usa el sistema esta en contacto con el servidor en la misma oficina o una cercana , y muchas veces el servidor funge de terminal. Y en el mejor de los casos solo tiene acceso al terminal un tecnivo externo a la empresa.

Pero para que no digan que me voy contra Firebird, he de decir a su favor que el hecho que en mi localidad casi nadie la conozca, hara que a pesar que se pueda abrir en 2 minutos :rolleyes:, no sepan como hacerlo :D.

CarlosG 15-09-2011 07:14:31

Cita:

Empezado por Caral (Mensaje 412158)
Que seguridad tiene Access ?.:confused:
Que yo sepa solo se le puede poner clave, pero es tan fácil burlarla que hasta da pena..
En access hay otro nivel de seguridad que desconozco ???.

Hola Caral, mira en Access se conecta directamente al archivo de base de datos, en firebird se conecta primero al servidor el cual a su vez se conecta con la BD. como lo explico Casimiro Notevi
Cita:

La base de datos puede estar en un servidor y los clientes se redirigen a ella mediante un "alias", por lo que no tienen por qué saber dónde está físicamente
Respecto a la Clave, en Firebird si el servidor esta lejos a unos kilometros o cerca en un lugar inaccesible para el personal comun, (con llave o cadena :D) accesible solo mediante conexiones al servidor con un alias, no hay mucho problema. Pero si esta en una máquina accesible a los usuarios, pues es mas facil de abrir que una base de datos de Ms Access, por que aunque la contraseña Access no es dificil de abrir al menos tiene una clave, y la base de datos firebird ninguna, los usuarios contraseña y permisos de firebird no funcionan una vez que se accede al archivo de BD. Como ves todo depende de las condiciones de accesibilidad y medidas de seguridad que se tomen.

En los casos de la vida real no todas las empresas que necesiten seguridad de su informacion (que son la mayoria) cumpliran con la condiciones para una instalación segura a la base de datos firebird.

Casimiro Notevi 15-09-2011 08:51:34

Para los casos que has descrito puedes crear triggers que guarden en otra tabla todos los cambios que se han hecho, así puedes hacer un seguimiento de cualquier manipulación en la BD.
Lo otro que se puede hacer, y que hay que hacer, es denunciar a esas personas, eso es corrupción, soborno, etc.
Es que por mucha clave que pongas, también pueden llegar con una pistola pidiendo que le entreguen el servidor.
Si ocurren esas cosas que comentas entonces hay que ponerles freno, un usuario no puede jamás tener acceso a la BD, sólo a las opciones del programa, y si tiene acceso entonces es que se ha hecho mal la instalación del sistema o no se ha tenido en cuenta algunos factores, por lo que habrá que buscarle solución.
También puedes cifrar los datos al guardar y descifrar al leer, así si se llevan la BD no podrán entender nada desde ibexpert o programas similares.

Si el problema es que los usuarios tienen acceso al servidor, pues NO le des acceso al servidor.

De todas formas, como dije antes, estas cosas son denunciables, pero lo de la clave a la BD es algo que en dos minutos o en dos días, pero terminas por descubrir cómo saltarla.

guillotmarc 15-09-2011 10:18:13

Firebird es una base de datos open-source. Su código está disponible para todo el mundo, eso quiere decir que cualquiera puede saber donde se guardan las contraseñas y su formato, o bien cualquiera puede recompilar Firebird eliminando el módulo de seguridad para que ese servidor modificado entre directamente a la base de datos. También es muy fácil preparar un proxy intermedio, al que se conecten los usuarios sin saberlo, y que redirija las peticiones al verdadero servidor, una vez puesto en marcha capturaría todas las contraseñas del sistema.

Es por esto por lo que los programadores de Firebird ni siquiera intentan añadir un módulo de seguridad, porqué dicen que no pueden hacerlo realmente seguro, y es por eso que prefieren que el usuario se base en la seguridad del sistema operativo (el cual sí que es verdaderamente seguro). Aunque no todo el mundo tiene los conocimientos para preparar las herramientas que he comentado, sí que todo el mundo tiene la información necesaria (con el acceso al código fuente), es por ello que hay mucha gente capacitada para hacerlo, y por tanto pronto empezarían a circular por Internet estas herramientas de pirateo, y solo sería cuestión de saber buscarlas o bien pagar por ellas.

Para los casos que has citado, pues si tu eres quien hace la instalación del software, utiliza la seguridad del sistema operativo (tal y como se ha dicho en todo momento). Una vez finalizada la instalación, establece la seguridad Windows/Linux del archivo de la base de datos de forma que ni siquiera los técnicos de mantenimiento o el Administrador de Sistema puedan tener acceso a ella, solo el servicio de Firebird y un usuario especial conocido solo por vosotros. Esto debería ser tan seguro como pueda serlo la seguridad incorporada en el SQL Server que comentabas, y por supuesto, mucho más seguro que el juego de niños que es piratear una base de datos Access.

Si no me crees, intenta acceder a un archivo sobre el que no tengas permisos (por muchos derechos generales de Administración que puedas tener). Si se pierde la contraseña del único usuario que tiene acceso a ese archivo, va a quedar allí inalterable e inaccesible para todo el mundo hasta que se formatee la máquina.

Saludos.

newtron 15-09-2011 10:29:38

Cita:

Empezado por guillotmarc (Mensaje 412176)
Firebird es una base de datos open-source. Su código está disponible para todo el mundo

Buena observación.

Casimiro Notevi 15-09-2011 11:11:12

Además de lo comentado por los compañeros, hay otro punto a tener en cuenta en relación a la seguridad:
Un servidor Linux, sólo el usuario Firebird tiene acceso a la BD, ningún otro usuario tendrá acceso ni para entrar al directorio de la BD, se acabó el problema.
Claro, que si das la clave del usuario root a cualquiera... es como dar las llaves de la caja fuerte del banco a un ladrón.
También se puede decir que se puede saltar la clave de acceso en Linux, evidentemente que se puede, todo se puede, depende del empeño que se ponga.

Toni 15-09-2011 11:19:10

Es cierto que casi todas las protecciones se pueden saltar o romper, pero pensar por un momento que con una simple clave a nivel de fichero se limita el acceso a esa información al 99.99% de las personas que puedan tener acceso al fichero, creo que si seria interesante.

Por otro lado yo en muchas casos cuando instalo una aplicación en el servidor de una empresa no soy quien para cambiar politicas de seguridad del servidor ni nada. Y no se quien va a acceder el dia de mañana a dicho servidor.

Casimiro Notevi 15-09-2011 11:35:26

En cualquier sitio que manejen datos "sensibles" han de tener una política de control de esos datos, si no la cumplen es problema de ellos. Tú puedes informarles y aconsejarles, pero no puedes convertirte en el guardián de la seguridad de sus datos si tienen la puerta abierta y las llaves bajo el felpudo.

Además de lo comentado antes, eso es denunciable, no es una falta, es un delito penado con multas grandes y cárcel. Ten en cuenta también (si estás en España) que la empresa puede ser multada con multas astronómicas por no proteger esos datos de personas no autorizadas, por revelar datos a terceros, etc. Así que, lo dicho, que cumplan la ley y no te quieran hacer responsable buscando una clavecita para la BD. ¡¡¡Es que lo que has contado que hacen es muy fuerte!!!, eso es de juzgado... YA.

EDITO: es que aunque firebird tuviera para ponerte una clave como la que indicas, ¿de qué serviría si parece que ahí tiene acceso hasta el niño del botijo?, qué más da poner una clave "1234" que poner "jfdsklfjdsiof9r"... si luego va estar escrita en un post-it en la pantalla del ordenador?

CONTROL es lo que se necesita ahí.

guillotmarc 15-09-2011 12:27:36

Me parece que mi mensaje anterior no ha quedado muy claro.

Me refería a que si tienes dudas sobre el personal de administración y mantenimiento de la empresa donde se ubica tu aplicación, entonces cuando hagas la instalación quítales directamente los derechos sobre la base de datos.

Eso no creo que lo puedan llamar cambiar las políticas de seguridad de esa empresa, puesto que no modificas nada más de su sistema (aparte de añadir un usuario), solo proteges un archivo tuyo.

A partir de ese momento, ese archivo solo es accesible por un usuario y contraseña que solo tu conoces (y que es la cuenta de usuario sobre la que debes configurar que corra el servicio Firebird, con lo que el motor de la base de datos podrá acceder perfectamente al archivo de la base de datos).

No sé como funciona en Linux para el usuario Root, pero en Windows al usuario Administrador y al Rol Administradores le puedes quitar perfectamente los derechos sobre un archivo o una carpeta concreta.

NOTA: A los informáticos de la empresa no les va a gustar, pero es lo que hay que hacer si realmente no confías en ellos y les quieres impedir el acceso a tus datos. Así es como se configura la seguridad en Firebird, se delega en el sistema de archivos, y el resultado es tan seguro o más como en cualquier otra base de datos comercial.

Toni 15-09-2011 16:27:19

Cita:

En cualquier sitio que manejen datos "sensibles" han de tener una política de control de esos datos, si no la cumplen es problema de ellos. Tú puedes informarles y aconsejarles, pero no puedes convertirte en el guardián de la seguridad de sus datos si tienen la puerta abierta y las llaves bajo el felpudo.
Casimiro.......que estamos en España!!! Que las leyes se hacen para no cumplirlas! :o

Guillotmarc, me parece muy interesante lo que comentas, a mi principalmente mas que los datos me preocupa mas por todo el código que tengo en la base de datos (procedimientos), que esta al alcance de cualquiera años de trabajo...

mightydragonlor 15-09-2011 16:36:07

ahh pos eso es lo de menos, por algú lado leí, no estoy seguro, pero creo haber leido que firebird 2.5 ya dispone de una opción, algo así como empaquetar la base de datos con los sps, funciones y triggers, así estos no sean leidos por alguien, pero repito, no estoy seguro de esto, si alguien nos confirma eso, pos excelente xD


La franja horaria es GMT +2. Ahora son las 16:06:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi