Entendiendo a GSTAT (2)

Deja un comentario

Ya hemos empezado a entender a GSTAT en el artículo:

Entendiendo a GSTAT (1)

así que ahora continuaremos interiorizándonos más sobre este muy útil programa.

Opción -fetch

A veces, estamos trabajando en una computadora pero no estamos solos, hay algunos curiosos cerca nuestro que están mirando lo que estamos haciendo. Desde luego que si escribimos nuestra contraseña podrán verla … y recordarla … y usarla cuando no estemos presentes.

gstat01

Captura 1. Si haces clic en la imagen la verás más grande

Claro, podríamos pedirles que desaparezcan, que se vayan a otro lado, que dejen de curiosear, que se dediquen a hacer algo productivo bien lejos de nosotros, etc., pero eso no siempre es posible. Y entonces ¿qué hacemos?

La solución es guardar nuestra contraseña en un archivo de texto (que podría estar en un pen-drive, por ejemplo) y extraer la contraseña desde ese archivo de texto.

gstat02

Captura 2. Si haces clic en la imagen la verás más grande

Desde luego que el nombre del archivo puede ser cualquiera, no necesariamente FIREBIRD.TXT, y nuestra contraseña también puede ser cualquiera, no necesariamente contra99. Esto es solamente un ejemplo.

Recuerda que una contraseña que todos conocen es lo mismo que no tener contraseña.

gstat03

Captura 3. Si haces clic en la imagen la verás más grande

En la Captura 3. vemos que la contraseña se obtiene desde el archivo de texto FIREBIRD.TXT que se encuentra en el pen-drive colocado en la unidad G: y en la carpeta \SQL

De esta manera, siempre y cuando no dejemos nuestro pen-drive al alcance de los curiosos, ellos no podrán conocer cual es nuestra contraseña.

Esta, es una muy importante medida de seguridad que deberíamos acostumbrarnos a adoptar: nunca escribir la contraseña, siempre obtenerla de un archivo de texto.

gstat04

Captura 4. Si haces clic en la imagen la verás más grande

En la Captura 4. estamos viendo la forma correcta de usar al programa GSTAT. Nuestra contraseña la obtenemos de un archivo de texto y la salida del programa GSTAT la enviamos a otro archivo de texto. Esta es la forma mejor y más recomendable.

Artículos relacionados:

Entendiendo a GSTAT (1)

El índice del blog Firebird21

El foro del blog Firebird21

 

 

 

 

 

Anuncios

Firebird 3: usando bases de datos anteriores

3 comentarios

Ok, ya hemos instalado a Firebird 3, ahora queremos empezar a utilizarlo. ¿Cómo lo hacemos?

Lo más probable es que tengamos bases de datos creadas con versiones anteriores de Firebird. Entonces hay que convertir esas bases de datos al formato que usa Firebird 3.

El Firebird utiliza un número interno llamado ODS (On Disk Structure) para saber con cual versión de Firebird fue creada una Base de Datos. Cada versión del Firebird tiene un número único de ODS. Esos números son:

FIREBIRD3_15

Captura 1. Si haces clic en la imagen la verás más grande

Si no coincide la ODS de una Base de Datos con la versión del Servidor del Firebird entonces no podremos conectarnos a esa Base de Datos.

¿Cómo cambiamos la ODS de una Base de Datos?

Mediante un ciclo backup/restore. Hacemos el backup con la versión actual y el restore con la nueva versión.

IMPORTANTE: Esto solamente funciona en una dirección: de una ODS menor a una ODS mayor.

Ejemplo: Usar una Base de Datos creada con Firebird 2.5 en Firebird 3

firebird3_16

Captura 2. Si haces clic en la imagen la verás más grande

Como podemos ver en la Captura 2. la conexión falló porque la ODS de la Base de Datos es 11.2 y la ODS que reconoce el Servidor del Firebird es 12.0

Entonces lo que debemos hacer es convertir la ODS de esa Base de Datos a 12.0, para que pueda ser reconocida. Para ello necesitaremos realizar un ciclo backup/restore.

FIREBIRD3_17

Captura 3. Si haces clic en la imagen la verás más grande

En la Captura 3. hicimos el backup con la versión 2.5 del Firebird ¿cómo sabemos eso? Por dos pistas: a) la carpeta donde se encuentra el programa GBAK.EXE y b) el puerto que usamos para conectarnos a la Base de Datos. En nuestros ejemplos usamos el puerto 3050 para Firebird 2.5 y el puerto 3053 para Firebird 3.

Ahora que ya tenemos el backup realizado el siguiente paso es restaurarlo. Para ello, nos ubicamos en la carpeta donde instalamos al Firebird 3 y escribimos:

FIREBIRD3_18

Captura 4. Si haces clic en la imagen la verás más grande

Cuando la restauración finalice tendremos una nueva Base de Datos, de nombre PRUEBA1-3.FDB y cuya ODS será 12.0 y por lo tanto nos podremos conectar a ella usando Firebird 3.

FIREBIRD3_19

Captura 5. Si haces clic en la imagen la verás más grande

Como podemos ver en la Captura 5. no fue necesario especificar el puerto 3053 ¿por qué no? porque para la conexión usamos el programa ISQL.EXE que se instala junto con el Firebird 3. Sin embargo, en otros casos sí necesitaremos especificar dicho puerto:

FIREBIRD3_20

Captura 6. Si haces clic en la imagen la verás más grande

En el string de conexión que vemos en la Captura 6. indicamos la dirección IP de la computadora donde se encuentra la Base de Datos y también el puerto de esa computadora que usa el Servidor del Firebird 3.

Como siempre, hay que indicar además el path completo a la Base de Datos (ese path es desde el punto de vista del Servidor), el nombre de un usuario, y la contraseña de ese usuario.

Conclusión:

Para que en Firebird 3 podamos usar una Base de Datos creada con una versión anterior del Firebird debemos hacer un ciclo backup/restore. El backup lo hacemos con la versión anterior del Firebird y el restore lo hacemos con Firebird 3.

Para conectarnos a la Base de Datos restaurada a veces será necesario especificar el puerto que utiliza el Firebird 3.

Artículos relacionados:

Instalando Firebird 3 (1)

Instalando Firebird 3 (2)

El índice del blog Firebird21

El foro del blog Firebird21

Agregando el usuario SYSDBA en Firebird 3

6 comentarios

En las versiones anteriores de Firebird, ya por defecto en el archivo de seguridad (SECURITY.FDB en 1.x y SECURITY2.FDB en 2.x) existía un usuario llamado SYSDBA y con la contraseña masterkey.

Bien, ese ya no es el caso con Firebird 3, ahora ningún usuario predeterminado existe, ni siquiera SYSDBA. Por lo tanto, nosotros debemos crearlos.

Siempre el usuario SYSDBA tendrá acceso al 100% de las bases de datos, pero como no existe un usuario SYSDBA nosotros lo crearemos. ¿Cuál es la ventaja de esto? Que SYSDBA ya no tendrá por defecto la contraseña masterkey sino la contraseña que a nosotros se nos ocurra asignarle.

Con las versiones 1.x y 2.x si un intruso quería conocer el contenido de una Base de Datos lo tenía muy fácil:

  1. Copiaba o hacía un backup de la Base de Datos
  2. Copiaba o restauraba esa Base de Datos en otra computadora, en una donde conociera la contraseña del usuario SYSDBA.
  3. Listo

Ahora, con Firebird 3 algo así ya no le será posible. ¿Por qué no? Porque si copia o restaura la Base de Datos en otra computadora tendrá un gran problema ¿cuál es la contraseña del usuario SYSDBA que se necesita para conectarse a la Base de Datos? Desde luego que no será masterkey (salvo que el Administrador sea un verdadero bobo) y si no conoce esa contraseña no conseguirá el acceso. Claro, puede copiar también el archivo de seguridad (SECURITY3.FDB por defecto) pero estará en la misma: si no conoce la contraseña no conseguirá la conexión. Y además, en un entorno donde la seguridad sea muy importante el archivo de seguridad no será SECURITY3.FDB sino otro archivo con totalmente otra estructura y ubicado donde se haya especificado en DATABASES.CONF (quizás en otra carpeta de otro disco duro de otra computadora).

En síntesis, la tarea del intruso ahora será mucho más dificultosa. No imposible, porque en Informática la seguridad al 100% es imposible de conseguir, pero sí muchísimo más dificultosa que en las versiones anteriores del Firebird.

¿Cómo agrego al usuario SYSDBA?

Recuerda que al instalar Firebird 3 ningún usuario existe, ni siquiera SYSDBA, entonces ¿cómo hacemos para agregar al usuario SYSDBA y con la contraseña que se nos ocurra asignarle?

Mediante el siguiente comando:


GSEC -add SYSDBA -pw Secreto -user SYSDBA

El programa GSEC.EXE lo encontrarás en la misma carpeta donde instalaste el Firebird 3.

Y la contraseña que elijas no será Secreto, ese es solamente un ejemplo.

Conclusión:

Para hacerle la vida muchísimo más difícil a los intrusos ahora en Firebird 3 el usuario SYSDBA no existe por defecto sino que debemos crearlo nosotros. Así mismo tampoco tiene una contraseña por defecto, su contraseña inicial será la que le asignemos al crearlo, la muy famosa masterkey ya no existe (salvo que alguien sea muy bobo como para asignársela al usuario SYSDBA).

Para agregar al usuario SYSDBA y asignarle su contraseña inicial (la cual no debería ser masterkey) usamos el programa GSEC.EXE que se encuentra en la misma carpeta donde instalamos al Firebird 3.

Artículos relacionados:

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

Parametrizando el archivo DATABASES.CONF

El índice del blog Firebird21

El foro del blog Firebird21

Cannot attach to password database

3 comentarios

El Firebird guarda los nombres de los usuarios y sus respectivas contraseñas en un archivo llamado SECURITY2.FDB (a partir de la versión 2.0, antes se llamaba SECURITY.FDB)

Si al intentar conectarte a una Base de Datos obtienes el mensaje de error: “cannot attach to password database” eso significa que el Firebird no puede acceder a ese archivo. Las causas posibles son:

  1. No existe el archivo SECURITY2.FDB en la carpeta donde instalaste el Firebird (por ejemplo, en: C:\Archivos de Programa\Firebird\Firebird_2_5\”
  2. Hay instaladas dos o más versiones de Firebird. Y por algún motivo la versión que quieres usar se confundió (este es un caso rarísimo, pero a veces ocurre)
  3. No tienes permiso para leer archivos que se encuentran en esa carpeta. Puedes verificarlo fácilmente tratando de crear en la carpeta donde instalaste el Firebird (por ejemplo, en: C:\Archivos de Programa\Firebird\Firebird_2_5) un archivo de texto llamado PRUEBA.TXT, escribe alguna palabra, graba el archivo y trata de abrirlo con el Bloc de Notas u otro programa. Si no consigues crearlo o leerlo entonces el problema es que te faltan permisos en esa carpeta.

Artículo relacionado:

El índice del blog Firebird21

 

Evitando que los mirones averigüen nuestro password en ISQL

1 comentario

Cuando nos conectamos a ISQL todo lo que escribimos es visible para cualquier mirón que esté parado detrás nuestro.

Por ejemplo, si escribimos:

MIRONES1

(si haces clic en la imagen la verás más grande)

Cualquiera que esté a nuestro costado o atrás nuestro mirando nuestro monitor sabrá que nos conectamos a la Base de Datos con nombre de usuario SYSDBA y con password 12345678

Si eso ocurre mientras estamos en la oficina de nuestro cliente después que terminamos nuestra tarea, nos vamos a nuestra propia oficina …. y el mirón aprovecha para conectarse a la Base de Datos como SYSDBA ya que conoce el password de ese usuario.

Eso, es un gran riesgo de seguridad. Nunca faltan por ahí los que quieren hacerse de los hackers y estarán más que felices de entrar en un lugar donde se supone no deberían entrar.

Pero necesitamos usar ISQL para realizar nuestra tarea, y tampoco podemos ser tan desagradables como para decirles que se vayan lejos, que se manden a mudar, que se alejen de nosotros porque vamos a escribir algo que queremos mantener en secreto ¿qué hacemos entonces, cómo podemos solucionar este problema, cómo podemos evitar que conozcan el password de SYSDBA o del usuario que usamos para conectarnos?

Afortunadamente el programa ISQL cuenta con una opción -fetch (extraer) la cual nos permite tener guardado el password en un archivo de texto y usará ese password en la conexión.

Por lo tanto lo que debemos hacer es:

  1. En un archivo de texto (que puede tener cualquier nombre) escribir el password
  2. Al ejecutar el programa ISQL escribir -fetch NombreArchivoTexto
  3. De este modo, para conectarnos a la Base de Datos no deberemos especificar el password
  4. Si no le mostramos a los usuarios el contenido de nuestro archivo de texto jamás sabrán cual es nuestro password

MIRONES2

(si haces clic en la imagen la verás más grande)

En este ejemplo, el password del usuario SYSDBA está guardado en un archivo de texto llamado E:\SISTEMAS\PASS.TXT

Pero ¿cuál es ese password? Ningún mirón puede saberlo, ya que lo que él verá será la captura de pantalla que está arriba.

Nuestro archivo de texto E:\SISTEMAS\PASS.TXT puede estar en un pen-drive y de esa manera ningún mirón jamás tendrá la menor idea de cual es el password allí guardado.

Haciendo así nos aseguramos que ningún mirón se entere de nuestro password y además lo hacemos de una forma “políticamente correcta”, es decir sin necesidad de ser desagradables con otras personas.

Artículo relacionado:

El índice del blog Firebird21

El archivo SECURITY2.FDB

1 comentario

Firebird guarda los nombres y las contraseñas de los usuarios en un archivo llamado SECURITY2.FDB y que se encuentra en la misma carpeta donde instalaste al Firebird. Por ejemplo, en la carpeta: C:\Archivos de Programa\Firebird\Firebird_2_5\

SECURITY2.FDB es una Base de Datos internamente igual a cualquier otra Base de Datos de Firebird pero con una gran diferencia: no es posible conectarse a ella. Ni siquiera el usuario SYSDBA puede hacerlo.

SECURITY2_1

 

(Haciendo clic en la imagen la verás más grande)

Como ves, el intento de conexión fue rechazado.

Sin embargo, hay un truco para hacerlo, si te interesa ver su contenido y eres curioso:

  1. Detienes el Servidor del Firebird (Inicio | Panel de control | Firebird Server Manager | Stop)
  2. Copias el archivo SECURITY2.FDB con otro nombre (Por ejemplo con el nombre SECURITY_COPIA.FDB)
  3. Reinicias el Servidor del Firebird (Inicio | Panel de control | Firebird Server Manager | Start)
  4. Te conectas a la Base de Datos SECURITY_COPIA.FDB

SECURITY2_2

 

(Haciendo clic en la imagen la verás más grande)

Con la Base de Datos renombrada, la conexión se realizó exitosamente.

Si queremos ver las tablas que tiene esta Base de Datos usamos el comando SHOW TABLES;

SECURITY2_3

 

(Haciendo clic en la imagen la verás más grande)

Esta Base de Datos tiene una sola tabla, cuyo nombre es RDB$USERS.

Para ver la estructura de esa tabla escribimos el comando SHOW TABLE RDB$USERS

SECURITY2_4

(Haciendo clic en la imagen la verás más grande)

También podemos conectarnos usando el programa EMS SQL Manager, pero siempre con la copia, nunca podremos conseguirlo si lo intentamos con la Base de Datos original.

SECURITY2_5

(Haciendo clic en la imagen la verás más grande)

 Al hacer doble clic sobre el nombre de la tabla vemos su estructura:

SECURITY2_6

 

(Haciendo clic en la imagen la verás más grande)

Y al hacer click sobre la pestaña Data vemos el contenido de esa tabla:

SECURITY2_7

 

(Haciendo clic en la imagen la verás más grande)

Como puedes ver, las contraseñas (passwords) de los usuarios están encriptadas. El algoritmo usado es muy eficiente y no podrás conocer cual es la contraseña de un usuario aunque lo intentes.

Recuerda que el archivo SECURITY2.FDB no se puede copiar ni borrar ni renombrar si el Servidor del Firebird está corriendo. Para que puedas realizar esas tareas el Servidor debe estar detenido (si no recuerdas como detenerlo puedes leer al principio de este artículo).

Normalmente nunca tendrías que hacer algo así, pero hay una excepción: cuando copias la Base de Datos que está en producción (o sea: a la que normalmente se conectan los usuarios) a otra computadora. En este caso, en lugar de estar volviendo a escribir los nombres y contraseñas de cada usuario (que pueden ser decenas o cientos) es mucho más rápido, práctico y fácil, copiar el archivo SECURITY2.FDB a la nueva computadora.