PDA

Ver la Versión Completa : seguridad en bases de datos firebird


anubis
21-02-2008, 05:39:57
Bueno, os agradezco a todos la ayuda, la verdad es que el firebird me ha gustado, sobretodo la flexibilidad, robustez...

Desgraciadamente cuando se hace una aplicacion con el firebird embebido, la seguridad de la base de datos es imposible, cualquiera puede abrir la bd y modificar los datos de las tablas, ya se que me habeis dicho que con el firebird 3.0 esto ya no sera problema, pero mientras, que soluciones habeis probado para proteger esos datos.

De momento lo unico que hice fue encryptar los datos sensibles pero que otras soluciones se os han ocurrido.

saludos y gracias

Lepe
21-02-2008, 12:15:29
Si de verdad te hace falta seguridad, no uses el embebido. Usa la versión c/s, vale que tendrás que distribuir algunos megas más, pero la instalación puedes hacerla transparente y con toda la seguridad que tiene FB 2.

Para la distribución silenciosa, revisa los archivos de la carpeta fb2, en concreto installation_scripted.txt

Saludos

anubis
21-02-2008, 16:42:57
tienes razon, una c/s iria mejor, pero estamos hablando de instalarla en un solo ordenador, entonces como se bloquea el acceso a la base de datos o evitar copiarla, porque si uno la copia y se la lleva a otro sitio, ya puede manipularla con tranquilidad.
No es que me haga extremadamente falta la seguridad, pero seria mas ayuda.

gracias

jachguate
21-02-2008, 17:07:01
Si en una base de datos hace falta seguridad, la solución es seguridad física y de sistema operativo

Para el tema de seguridad física, ponla en un servidor que esté en un data-center con control de acceso, o cuándo mínimo, en un espacio de acceso restringido solamente al personal de mas confianza.

Para el tema de seguridad lógica, que el servidor esté detrás de un buen firewall, de manera que no estén accesibles mas que los servicios mínimos para administrarlo, siempre que estos sean confiables. Por ejemplo, tengo un par de servidores en que lo único visible desde fuera es ssh y gds_db.

Y luego, claro, que el sistema operativo esté configurado por alguien que sepa y tenga la seguridad en mente.

Hasta luego.

;)

Casimiro Notevi
21-02-2008, 18:44:23
[..] Por ejemplo, tengo un par de servidores en que lo único visible desde fuera es ssh y gds_db.[..]

E incluso, en según qué ocasiones, ni el ssh.

Aunque, claro, si el programa tiene una opción de backup que puede usar cualquiera... ;)

jachguate
21-02-2008, 18:54:23
Aunque, claro, si el programa tiene una opción de backup que puede usar cualquiera... ;)

:D:D:D buen punto!

anubis
25-02-2008, 21:07:00
Gracias a los dos. Total, que si tengo mi aplicacion en un solo ordenador, como es el caso, aunque le isntale el firebird servidor para proteger la base de datos, siempre se podra copiar puesto que fuera del ordenador, la base de datos no tiene seguridad ninguna. Imagino que con otras bases de datos tipo postgres y mysql ocurre lo mismo, salvo que en esos casos si esta la contraseña dentro de la base de datos?. Como se puede evitar que solo mi aplicacion pueda acceder al directorio donde esta la base de datos? en linux creo que hay opcion, aunque solo sea para evitar que se escriba pero leer se pueden leer tambien los archivos de los directorios del root gracias de nuevo

jachguate
26-02-2008, 03:51:58
Se puede crear una pseudo-seguridad, fácil de romper para cualquiera con un mínimo de conocimiento y un usuario con privilegios de administrador, pero mejor que nada.

Quien accede al archivo físico de la base de datos es el usuario que ejecuta el servicio de firebird. Si restringes todo el acceso a la carpeta donde está dicho archivo de base de datos solo a este usuario, los demás, no podrán copiar físicamente dicho archivo.

También podrías "blindar" con una capa adicional, que es usando alias de firebird. Así la cadena de conexión de tu aplicación será algo como localhost:nombre_alias, sin revelar la ubicación real de la base de datos, y obviamente denegar todo acceso al archivo aliases.conf, permitiendo también solamente al usuario que corre el servidor de base de datos.

Como digo, nada dificil de romper... pero con usuarios mas o menos normales, ya hay algo de seguridad.

Hasta luego.

;)

anubis
26-02-2008, 06:58:59
Se agradece jachguate, me podrias dar una pista, todo lo que me estas contando es a nivel de tener firebird instalado o vale tambien para el embedded.
Si agarro el windows xp y le meto otra cuenta que no sea de administrador y protejo la carpeta para el administrador solamente, como le haria para poder usarlo desde el programa que estaria siendo usado desde otra cuenta.

Gracias de nuevo

Lo del aliases.conf si me puedes orientar para poder usarlo desde el programa y evitar como dices, que accedan fisicamente a el. Todo se puede hacer con el embedded.

jachguate
26-02-2008, 07:11:50
Había olvidado ya que hablamos del motor incrustado. Acá la cosa es, prácticamente, imposible, pues el motor corre dentro de la aplicación (de allí su nombre), y por tanto, con los permisos del usuario que ejecuta la aplicación.

Creo que si se debe tener tanta seguridad sobre los datos, la elección del incrustado es erronea. Como yo lo veo, esta es una solución ideal para aplicaciones "móviles", que se ejecutarán desde un CD, desde una llave USB o mediante descarga instantánea, en cualquier PC, por lo que no requerir de una instalación "formal" de la base de datos es una fortaleza, y en cambio, cualquiera podría perder la llave USB, dejar olvidado el CD en cualquier sitio, por lo que no es para llevar por allí información muy sensible, al menos no sin encriptar dentro de la propia BD, lo que ya trae otras consideraciones al caso.

Sinceramente, debes plantearte el considerar la instalación de un servidor firebird en toda regla si no es esa movilidad lo mas importante de la aplicación, sino la seguridad de los datos que almacene.

Hasta luego.

;)

anubis
26-02-2008, 20:40:07
cierto lo que dices. Si instalo el servidor en un ordenador sin conexion a red, tengo que ya enredar con los permisos pero imagino que serian permisos del windows xp para evitar que se acceda al directorio en cuestion.

Imagino que pasaria lo mismo con mysql o postgres no?.

gracias de nuevo