PDA

Ver la Versión Completa : Seguridad de BD Violada con embedded


CarlosG
14-09-2011, 01:55:48
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:

-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:

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 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
"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
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

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:


Embedded Firebird Security (http://web.firebirdsql.org/dotnetfirebird/blog/2005/02/embedded-firebird-security.html)
Firebird vs MSQL Compact (http://database-management-systems.findthebest.com/compare/13-27-30/Firebird-vs-Microsoft-SQL-Server-Compact-Embedded-Database-vs-MySQL)
Firebird Embedded in comparison to SQL Server Compact Edition 4 (http://blog.cincura.net/231742-firebird-embedded-in-comparison-to-sql-server-compact-edition-4/)


Saludos.

Caral
15-09-2011, 03:36:33
Hola
Me dio curiosidad esto:
.......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
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.


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
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
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
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
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

Casimiro Notevi
15-09-2011, 16:42:05
[..] 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...

Ahí m'asmatao :eek:

¿Qué valor tiene un procedimiento?, como mucho, para otro programador, sacar alguna idea para hacer algo similar, pero nada más.
Yo a eso no le doy ningún valor, si a alguien le puede servir para algo, que lo use.

mightydragonlor
15-09-2011, 16:52:03
depende del procedimiento almacenado, por ejemplo, yo hice uno que te dice la similitud que tiene un texto con otro algo así como "juan carlos"se parece a "Jhon Karlos" en un 65% y es fundamental en un programa que hicimos para una importante empresa de nuestro pais que para sus entregas necesita identificar específicamente que cada cliente sea único a partir de la información de todas las fuentes de ingreso de información, osea se tienen muchos puntos donde digitan o importan esa información, pero todo el mundo lo hace de manera diferente, la forma en que hacemos esto no nos gustaría que alguien la copiara.

Toni
15-09-2011, 16:55:19
¿Qué valor tiene un procedimiento?, como mucho, para otro programador, sacar alguna idea para hacer algo similar, pero nada más.
Yo a eso no le doy ningún valor, si a alguien le puede servir para algo, que lo use.

Que valor puede tener un procedimiento.....pues exactamente el mismo que un procedimiento o funcion de tu aplicación y no por eso vamos dejando los fuentes de las aplicaciones hechas en Delphi en los clientes.

Lo de compartir esta muy bien, pero para eso esta el foro y otros medios.

guillotmarc
15-09-2011, 17:01:22
Hola.

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...

Esto siempre se ha podido ocultar en Firebird, ya desde las primeras versiones.

http://www.clubdelphi.com/foros/showthread.php?t=8982

NOTA: Este proceso solo se debería ejecutar en las bases de datos que se envían a los clientes. En cambio las bases de datos de desarrollo se deberían mantener con el código fuente de los procedimientos almacenados y triggers, ya que en caso contrario, es imposible volver a recuperarlo (en la base de datos solo queda la versión compilada de los mismos).

Saludos.

Toni
15-09-2011, 17:20:40
Si, ya lo utilizo pero en las puestas en marcha que se alargan mucho y que hay que estar personalizando estso procedimientos, hasta que no es la version final no lo elimino porque con un simple error puedo liar una buena.

Casimiro Notevi
15-09-2011, 17:23:55
depende del procedimiento almacenado, la forma en que hacemos esto no nos gustaría que alguien la copiara.

Para mí esas cosas no tienen mucho valor, ¿qué pasa si consigo ese procedimiento que tanto valoras?, ¿qué ocurre si hago uno similar?, ten por seguro que si yo tengo uno que hace eso y tú lo necesitaras... aquí lo pondría para todo el mundo.

Que valor puede tener un procedimiento.....pues exactamente el mismo que un procedimiento o funcion de tu aplicación y no por eso vamos dejando los fuentes de las aplicaciones hechas en Delphi en los clientes.
Lo de compartir esta muy bien, pero para eso esta el foro y otros medios.

Yo sí, yo dejo el código fuente completo en un directorio del programa, ni que fuesen la fórmula milagrosa para la vida eterna, ¿a quién le interesa esas cosas?, si os paráis a pensarlo un poco, poneos en situación: una reunión de gente variada y dices: "tengo un procedimiento que compara cadenas similares y devuelve el porcentaje de similitud con un 95% de aciertos".
¿Qué ocurrirá entre los presentes?, que seguirán hablando de la película, del tiempo que hace o del último fichaje de su equipo favorito.
Lo dicho, esas cosas no tienen valor alguno.

Muy distinto es el valor que le damos nosotros, cuando acabamos una función/procedimiento que funciona tan bien, tan elegante, con tan poco código que parece mentira que haga lo que hace, la pondríamos en un marco y la colgaríamos en la pared con un texto: "Esto lo hice yo".
De verdad, bromas aparte, eso no vale nada para el resto del mundo.

mightydragonlor
15-09-2011, 17:42:28
Para mí esas cosas no tienen mucho valor, ¿qué pasa si consigo ese procedimiento que tanto valoras?, ¿qué ocurre si hago uno similar?, ten por seguro que si yo tengo uno que hace eso y tú lo necesitaras... aquí lo pondría para todo el mundo.
Yo tampoco encuentro problema en ponerlo acá si alguien lo necesita, solo la parte que necesite, como el algoritmo, pero comprenderás que empresas tan grandes como a la que le tenemos el "programa" instalado, tienen mas proveedores que nosotros y ademas competencia directa de la misma, sé que la competencia tiene el mismo problema que recién solucionamos acá, cualquiera que pueda acceder a ese sp podría ir a vender casi la misma implementación que ya hicimos a alguien mas, ya que ese sp es el 90% de la solución al problema, el otro 10% es la fuente de la información, así que casi que estarían copiando todo el "programa".

newtron
15-09-2011, 18:13:33
Yo estoy con Casimiro, me da exactamente igual que miren los triggers del programa. Ya vereis si me da igual que los tengo en ficheros de texto en la carpeta de la aplicación para regenerarlos con un procedimiento del programa de forma automática a partir de estos ficheros.

Casimiro Notevi
15-09-2011, 18:14:20
ese sp es el 90% de la solución al problema


Puede ser un caso muy particular :)

Toni
15-09-2011, 19:05:36
Si realmente creeis que todo eso no tiene valor, creo que vosotros mismos estais menospreciando vuestro trabajo y vuestro esfuerzo. Porque una cosa es compartir aqui conocimientos, trucos, incluso codigo y otra ir regalando vuestro trabajo.

Y por supuerto lo digo sin animo de ofender a nadie.

newtron
15-09-2011, 19:15:13
Si realmente creeis que todo eso no tiene valor, creo que vosotros mismos estais menospreciando vuestro trabajo y vuestro esfuerzo. Porque una cosa es compartir aqui conocimientos, trucos, incluso codigo y otra ir regalando vuestro trabajo.

Pues yo pienso que los triggers van intimamente relacionados con el programa y con la base de datos del programa. Si yo tengo un programa de facturación desarrollado no me sirve para nada usar los triggers de otro programa distinto, igual para sacar alguna idea de funcionamiento pero para nada más, no puedes implementarlos en tu programa así como así sin hacer un cambio importante en la base de datos y por tanto en la forma de funcionamiento de tu aplicación con lo cual me extraña que nadie se meta en esos "fregaos".

P.D.: y tendrás que esforzarte más para ofenderme. :D

CarlosG
16-09-2011, 07:21:03
Disculpen no me haya podido conectar antes.


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.

Esta parece la mejor opcion para acometer una solución el problema de seguridad en windows, incluso mas seguro que una contraseña, hasta ahora, le he realizado algunas pruebas preliminares y todo va bien :), ni copiar se puede el achivo de BD, ahi si tiene sentido los password y los usuarios. A la verdad la documentación que viene con firebird tambien menciona el tema (del usuario del sistema usado para el inicio del servidor firebird y la restriccion de permisos al archivo de bd) aunque no tan explicitamente como lo ha hecho guillotmarc, por lo que me paso desapercibida en un primer momento.
Eso de que el administrador del sistema del servidor(la cuenta de usuario claro) tampoco podria tener acceso a un archivo (como el de la BD) configurado con permisos exclusivos por otro usuario, es algo que no sabia, buen dato.

Para realizar esta configuración tampoco seria necesario tener acceso fisicamente al servidor para hacer la configuración, en Windows se podria hacer que el mismo instalador de la aplicacion cree un usuario del sistema (similar como hace el instalador de PosgreSql) que sea conocido solo por nosotros para correr el servidor y establezca los permisos del archivo de BD, Claro cuesta un poquitin mas de trabajo pero todo sea por la seguridad.

Aunque si le agregaran a firebird una constraseña para las base de datos, tampoco estaria mal por que como dijo Tony.

empezado por Tony
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.

Aunque sea solo un 80 u 90% de los usuarios ya es algo importante. Sobre todo para cuando se quiera una seguridad mas sencilla aunque menos segura que la que menciona guillotmarc (depende de las necesidades claro).

Gracias a todos por sus aportes al tema, ahora ya tengo mas claro el panorama, sobre todo como hacer que firebird sea mas seguro.

guillotmarc
16-09-2011, 12:22:30
Esta parece la mejor opcion para acometer una solución el problema de seguridad en windows, incluso mas seguro que una contraseña, hasta ahora, le he realizado algunas pruebas preliminares y todo va bien :), ni copiar se puede el achivo de BD, ahi si tiene sentido los password y los usuarios. A la verdad la documentación que viene con firebird tambien menciona el tema (del usuario del sistema usado para el inicio del servidor firebird y la restriccion de permisos al archivo de bd) aunque no tan explicitamente como lo ha hecho guillotmarc, por lo que me paso desapercibida en un primer momento.
Eso de que el administrador del sistema del servidor(la cuenta de usuario claro) tampoco podria tener acceso a un archivo (como el de la BD) configurado con permisos exclusivos por otro usuario, es algo que no sabia, buen dato.

Para realizar esta configuración tampoco seria necesario tener acceso fisicamente al servidor para hacer la configuración, en Windows se podria hacer que el mismo instalador de la aplicacion cree un usuario del sistema (similar como hace el instalador de PosgreSql) que sea conocido solo por nosotros para correr el servidor y establezca los permisos del archivo de BD, Claro cuesta un poquitin mas de trabajo pero todo sea por la seguridad.

Me alegro de que la solución te sirva.

Recuerda de proteger también de la misma forma la base de datos de seguridad de Firebird (security2.fdb).

Porqué en caso contrario, te pueden sustituir tus definiciones de seguridad por una base de datos security2.fdb estándar, y entonces, por muy protegido que esté el archivo de tu base de datos, podrán entrar a ella mediante una simple conexión por SYSDBA/masterkey, y acceder a todo su contenido.

Aunque si le agregaran a firebird una constraseña para las base de datos, tampoco estaria mal por que como dijo Tony.

Aunque sea solo un 80 u 90% de los usuarios ya es algo importante. Sobre todo para cuando se quiera una seguridad mas sencilla aunque menos segura que la que menciona guillotmarc (depende de las necesidades claro).

A mi también me gustaría que lo hicieran, pero al parecer han decidido que si no pueden hacer un sistema realmente seguro (al ser un proyecto open source todo está a la vista), no van a hacer una chapuza.

rastafarey
04-10-2011, 06:32:17
Es muy facil solo llegar preguntar en el foro copiar y pegar e ir a solucionar un problema que se te planteo en tu empresa y te lo resolvimos en el foro. Pero lo quieres proteger por que la persona de mente abierta que esta en la empresa y que no le gusta ganar indulgencia con escapulario ageno se valla aa dar cuenta que la solucion al problema de la empresa no la relizo la persona que dice hacerla sino un buen samaritano en el este foro. Por eso tanto empeño en proteger un codigo. Pero igual les encanta trabajar con firibird que es gratis. Saben como se llman esos tipos de personas que tienes la mente cerrada y solo quieren vivir de lso demas, se les dice parasitos o chupasangres. Si tanto odian lo que esta abierto y quieren proteger una estupides de lineas de codigo cambience a oracle o sql server. Enterense firebird es codigo abierto. Y a los chupsangre que vallan a otro lado.

guillotmarc
04-10-2011, 12:16:27
Es muy facil solo llegar preguntar en el foro copiar y pegar e ir a solucionar un problema que se te planteo en tu empresa y te lo resolvimos en el foro. Pero lo quieres proteger por que la persona de mente abierta que esta en la empresa y que no le gusta ganar indulgencia con escapulario ageno se valla aa dar cuenta que la solucion al problema de la empresa no la relizo la persona que dice hacerla sino un buen samaritano en el este foro. Por eso tanto empeño en proteger un codigo. Pero igual les encanta trabajar con firibird que es gratis. Saben como se llman esos tipos de personas que tienes la mente cerrada y solo quieren vivir de lso demas, se les dice parasitos o chupasangres. Si tanto odian lo que esta abierto y quieren proteger una estupides de lineas de codigo cambience a oracle o sql server. Enterense firebird es codigo abierto. Y a los chupsangre que vallan a otro lado.

Firebird es una base de datos libre, con una licencia muy flexible (a diferencia de las licencias virales GPL) que permite su uso tanto en entornos open source como en entornos comerciales.

Si eres un talibán del software libre y no te sientes cómodo con ello quizás seas tú el que prefiera deambular por otros lares, puesto que en Firebird hay y seguirá habiendo tanta gente (o más) haciendo software cerrado como gente haciendo software abierto.

Toni
05-10-2011, 00:18:31
rastafarey, creo que tu post esta totalmente fuera de lugar. Lo mas LIBRE que tiene que haber en los foros y mas importante es la libertad de expresion y el respeto.

rastafarey
05-10-2011, 01:39:17
rastafarey, creo que tu post esta totalmente fuera de lugar. Lo mas LIBRE que tiene que haber en los foros y mas importante es la libertad de expresion y el respeto.
Por la libertad de expresion es que digo lo que digo.

Chris
05-10-2011, 05:40:47
Libre o no libre, es como el comunismo vs. capitalismo. Nunca han de ponerse de acuerdo por que ambas partes tienen sus argumentos tan validos como los de la contraparte. Por eso, esas discuciones entre ser de código libre o no, no deberían subir de tono y siempre hay que mantener el respeto. Al final uno piensa a cómo le parecen que son las cosas y no podemos obligar a alguien a pensar igual que nosotros. Aunque nos creamos los masters en el conocimiento y la experiencia y veamos al prójimo como un estúpido que no sabe lo que habla.

En mí caso, sí elimino el código de los procedimientos almacenados. Lo hago por tres cosas:
1) No quiero que mis clientes descalabren el delicado equilibrio con que trabaja mi sistema al tratar de personalizar los procedimientos.
2) En Firebird, se pueden escribir procedimientos adicionales que sirvan de personalización sin necesitad de alterar el código del vendedor de la aplicación.
3) Creo que los verdaderos chupasangres o parásitos, son los que copian el código de otro y lo vuelven a cerrar como de su máxima obrra se tratase.

Existen ciertos códigos de procedimientos almacenados que son una lógica de negocios con un nivel de sofisticación en algoritmía medio o alto. Creo que ese tipo de código son los que valen la pena proteger como tu propiedad intelectual. Más si es ese código el que te da de comer.

Saludos!

Casimiro Notevi
05-10-2011, 12:17:25
3) Creo que los verdaderos chupasangres o parásitos, son los que copian el código de otro y lo vuelven a cerrar como de su máxima obrra se tratase.

Evidentemente si usa GPL o licencias derivadas, no puede hacerse legalmente. Eso sí es ser un parásito.

Diego827
15-10-2011, 04:50:25
Como las contraseñas se saltan en dos dias o que se yo...:o
Como si se copia el archivo se habre en dos minutos o que se yo...:rolleyes:
Como todo lo demas que se yo...:p

Mejor comprar un case asì:

http://static2.bigstockphoto.com/thumbs/0/0/8/large2/800837.jpg

Y ya :D

Esta idea estoy por venderla a Firebird e interbase asi que ni intenten adelantarce... ya voy avanzado en platicas con YALE y MasterLock.

Saludos :cool:

Casimiro Notevi
15-10-2011, 10:39:20
Sí, está muy bien, pero no pongas en tu programa una opción: "Hacer backup de la base de datos", porque sería una "puerta trasera" enorme y abierta, sin llave :D

Diego827
16-10-2011, 02:19:57
Sí, está muy bien, pero no pongas en tu programa una opción: "Hacer backup de la base de datos", porque sería una "puerta trasera" enorme y abierta, sin llave :D

JAJA añadire la prohibicion de backups. (mmm bueno creo que no esta tan mal la idea ::cool:)

Casimiro Notevi
16-10-2011, 11:12:04
JAJA añadire la prohibicion de backups. (mmm bueno creo que no esta tan mal la idea ::cool:)

Con ese comentario que he puesto quiero dar a entender que muchas veces, muchas personas, buscan una seguridad "engañosa", critican el sistema de seguridad de una BD con unos motivos que no son muy "reales". Porque es seguro que va a poner en el programa una opción de backup, por lo tanto, todo sistema de seguridad queda inutilizado.
La única solución sería la misma que se ha comentado, no hacer backup desde el programa y dejar esa función para el propio servidor, que no debe tener acceso a gente de fuera.
Ese es el auténtico sistema de seguridad, lo otro (claves, cifrado, etc.) normalmente no sirve para nada.

Toni
17-10-2011, 09:11:45
Bueno, yo suelo cerrar la puerta de mi casa, aunque se que si quieren reventarla pueden hacerlo.... Pero si la del vecino esta abierta iran a por el primero. :D

Toni
26-10-2011, 12:25:51
Hola,

Para quien le pueda interesar he subido al ftp del Club Delphi una pequeña herramienta que permite a los desarrolladores de Firebird de una forma muy facil encriptar/desencriptar los procedimientos de sus base de datos.

http://www.terawiki.clubdelphi.com/Builder/Tools/proteger procedimientos firebird.rar

Casimiro Notevi
26-10-2011, 12:50:04
Estupendo http://www.clubdelphi.com/foros/images/icons/icon14.gif

Toni
26-10-2011, 14:01:21
Casimiro, como puedo subir el archivo ya con el exe y con un pequeño archivo leeme.txt?
Tienes que eliminar el anterior?

Casimiro Notevi
26-10-2011, 14:05:41
Súbelo si quieres con otro nombre, ejemplo: ProtegerProcedimientosFirebird_2.rar
Si quieres sustituyo el anterior por este con el nombre del anterior, o dejamos los dos, como quieras.

salvica
03-11-2011, 20:29:40
Esta parece la mejor opcion para acometer una solución el problema de seguridad en windows, incluso mas seguro que una contraseña, hasta ahora, le he realizado algunas pruebas preliminares y todo va bien :), ni copiar se puede el achivo de BD, ahi si tiene sentido los password y los usuarios. A la verdad la documentación que viene con firebird tambien menciona el tema (del usuario del sistema usado para el inicio del servidor firebird y la restriccion de permisos al archivo de bd) aunque no tan explicitamente como lo ha hecho guillotmarc, por lo que me paso desapercibida en un primer momento.
Eso de que el administrador del sistema del servidor(la cuenta de usuario claro) tampoco podria tener acceso a un archivo (como el de la BD) configurado con permisos exclusivos por otro usuario, es algo que no sabia, buen dato.

Para realizar esta configuración tampoco seria necesario tener acceso fisicamente al servidor para hacer la configuración, en Windows se podria hacer que el mismo instalador de la aplicacion cree un usuario del sistema (similar como hace el instalador de PosgreSql) que sea conocido solo por nosotros para correr el servidor y establezca los permisos del archivo de BD, Claro cuesta un poquitin mas de trabajo pero todo sea por la seguridad.

Si te trinca la Guardia Civil el ordenata, :D:D:D la contabilidad en "B", las películas porno y los programas que has bajado con el eMule te los sacan en 10 minutos :D:D:D

Saludos
salvica

Toni
04-11-2011, 10:24:13
Hola,

Esta misma semana en una instalacion que tengo montada en una empresa, alguien con acceso al servidor a entrado a la base de datos de mi programa y se le ha ocurrido realizar algunos cambios.

Se que tienen contratada una empresa que les administra toda la red informatica y servidores, y que tambien tiene contratado un mantenimiento con la empresa que tienen el ERP. Lo que ha sucedido es que al informatico que les realiza el mantenimiento del ERP, aprovechando que ya les esta haciendo tareas le han solicitado si podia añadir unos cambios en la base de datos de mi aplicación. Los cambios consistian simplemente añadir nuevas series en unos documentos, pero claro al no conocer la aplicación lo han realizado mal con el consecuente lio.

El cliente cuando ve que tiene un problema grave, se pone en contacto conmigo sin decirme nada de esto, por supuesto. Con prisas y arrogancias, porque claro mi sistema 'falla'. Ademas no es la primera vez que sucede con este cliente.

Los cambios que han realizado en unas tablas maestras, tienen dos campos que registran la fecha y hora de alta y modificación de los registros de la misma y solo se pueden modificar directamente en la base de datos. De esta forma me a sido muy facil hasta saber quien estaba conectado en ese momento al servidor.

La cuestion es que claro esta el cliente niega absolutamente que nadie haya modificado nada, cuando es mas que evidente y coinciden los cambios realizados con serie de documentos que tambien han dado de alta en el ERP.

Todo esto lo cuento a modo de anecdota.

Por suerte, todo los procedimientos estan protegidos y no pueden modificar nada de ellos. Pero si pudiesen tarde o temprano lo habrian realizado y me tocaria a mi solucionar el problema.