Problemas de conexión

8 comentarios

A veces, cuando queremos realizar la conexión a una Base de Datos no podemos lograrlo, los intentos son rechazados.

¿Por qué no podemos conectarnos?

Los motivos pueden ser los siguientes:

  • No tenemos instalado el Servidor del Firebird
  • No se está ejecutando el Servidor del Firebird
  • No tenemos instalado el Cliente del Firebird
  • No tenemos instalado el driver ODBC del Firebird
  • Está registrado GDS32.DLL
  • Escribimos mal el nombre o la ruta de la Base de Datos
  • Escribimos mal el nombre del usuario
  • Escribimos mal la contraseña del usuario
  • La red no está funcionando correctamente
  • El Servidor no se está comunicando por ese puerto
  • El firewall del Windows está bloqueando ese puerto
  • Un programa antivirus está bloqueando ese puerto

No tenemos instalado el Servidor del Firebird

Para verificarlo, en la computadora donde supuestamente está instalado el Servidor del Firebird, hacemos click en:

Inicio | Panel de control

y deberíamos ver un icono llamado “Firebird Server Manager”. Si no lo vemos, el Firebird no está instalado

No se está ejecutando el Servidor del Firebird

Para verificar que el Servidor del Firebird se esté ejecutando:

Inicio | Panel de control

y luego click (o doble click) sobre el icono denominado “Firebird Server Manager”

Si vemos algo como la siguiente captura de pantalla:

Firebird is running

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

entonces el Servidor del Firebird se está ejecutando correctamente (la palabra “running” significa que está “corriendo”, o sea ejecutándose)

No tenemos instalado el Cliente del Firebird

Para verificarlo hacemos click en:

Inicio | Todos los programas 

y buscamos una carpeta llamada Firebird 2.5

si encontramos dicha carpeta entonces está instalado

ADVERTENCIA: En las computadoras de los usuarios debes instalar solamente el Cliente del Firebird, en esas computadoras no debes instalar el Servidor del Firebird. El Servidor debe ser instalado en una sola computadora, en aquella donde se encontrará la Base de Datos. El Cliente puedes instalarlo también donde se encuentra el .EXE de tu aplicación, eso es lo recomendable.

No tenemos instalado el driver ODBC del Firebird

Para verificarlo hacemos click en:

Inicio | Todos los programas | Firebird

y buscamos una carpeta llamada Firebird 2.5

si encontramos dicha carpeta entonces está instalado

Está registrado GDS32.DLL

El antecesor de Firebird se llama Interbase. Interbase usaba en el Cliente una librería de enlace dinámico llamada GDS32.DLL pero ahora el Firebird utiliza FBCLIENT.DLL

Si GDS32.DLL está registrado eso puede causarle conflictos a FBCLIENT.DLL, por lo tanto la solución es des-registrarlo y eso lo hacemos con:

Inicio

(y donde dice: “Buscar programas y archivos” escribimos):

REGSVR32 /u RutaDeAcceso\GDS32.DLL

Por ejemplo:

REGSVR32 /u C:\MisSistemas\Librerias\GDS32.DLL

Escribimos mal el nombre o la ruta de la Base de Datos

Si el nombre de nuestra Base de Datos es CONTA.FDB pero cuando quisimos conectarnos escribimos COMTA.GBF por supuesto que no lo conseguiremos. Siempre debemos verificar que el nombre esté correctamente escrito.

Si no usamos un alias (que se puede especificar en el archivo ALIASES.CONF) entonces también debemos verificar que la ruta sea la correcta. Por ejemplo si la ruta correcta es:

C:\MisDatos\BasesDatos\

y lo que escribimos fue:

C:\NuestrosDatos\Archivos\

por supuesto que no podremos conectarnos

Escribimos mal el nombre del usuario

El nombre del usuario debe estar correctamente escrito (no importan las mayúsculas ni las minúsculas). Por ejemplo si el usuario es:

VERONICA

pero al intentar conectarnos escribimos:

VERONISA

tampoco conseguiremos la conexión

Escribimos mal la contraseña del usuario

Si la contraseña es:

12345678

y lo que escribimos fue:

12345644

tampoco tendremos éxito

La red no está funcionando correctamente

Para comprobar que la computadora donde se encuentra el Cliente puede comunicarse con la computadora donde se encuentra el Servidor puedes abrir la ventanita “Símbolo del sistema” y luego escribir el comando PING seguido del número de IP de la computadora donde se encuentra el Servidor, como se ve a continuación:

PING

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

si no conoces cual es la dirección IP de la computadora donde se encuentra el Servidor puedes averiguarlo abriendo la ventanita “Símbolo del sistema” y escribiendo IPCONFIG, tal como se muestra en esta captura:

IPCONFIG

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

En este ejemplo la dirección IP es 192.168.0.2 pero por supuesto que en tu caso puede variar aunque si está en una red local siempre empezará con 192.168

Si el comando PING te dice:

PING-ERROR

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

que el 100% de los paquetes están perdidos entonces evidentemente ambas computadoras no están pudiendo comunicarse y en ese caso deberías buscar el motivo (cable suelto, router en mal estado, tarjeta de red dañada, cable roto, etc.)

El Servidor no se está comunicando por ese puerto

El Servidor del Firebird utiliza el puerto 3050 (por defecto, puede cambiarse si de lo desea) para comunicarse con el Cliente. Muchas veces, por seguridad o porque hay otra versión del Firebird instalada, se configura al Firebird para que lea otro puerto (eso se hace en la entrada RemoteServicePort del archivo FIREBIRD.CONF que se encuentra en la carpeta donde instalaste el Firebird).

Por ejemplo, en el archivo FIREBIRD.CONF podría haberse escrito:

RemoteServicePort = 3099

lo cual tendrá por efecto que el Servidor leerá el puerto 3099 (no el puerto 3050) para comunicarse con el Cliente. Si se cambia el puerto por defecto (o sea, si la entrada RemoteServicePort tiene cualquier número que sea distinto a 3050) entonces cuando queremos conectarnos a una Base de Datos deberemos especificar sí o sí el número del puerto en el string de conexión, por ejemplo:

CONNECT 192.168.0.2/3099:C:\MisBasesDatos\Contabilidad.fdb USER SYSDBA PASSWORD masterkey;

En otras palabras, si en RemoteServicePort hay cualquier número que no sea 3050 para conectarte a la Base de Datos tendrás que escribir ese número, tal como se muestra arriba.

El firewall del Windows está bloqueando ese puerto

Por defecto, el firewall del Windows lo tendrá bloqueado al puerto 3050 (y muy posiblemente a cualquier otro puerto que se haya especificado en RemoteServicePort) así que si el firewall del Windows está activo tendrás que liberar a dicho puerto. ¿Por qué? porque si no lo liberas te resultará imposible comunicarte con el Servidor del Firebird y por lo tanto tampoco podrás conectarte a tu Base de Datos.

Para liberar un puerto (para entrada) en el Firewall del Windows:

    • Inicio
    • Panel de control
    • Firewall de Windows
    • Configuración avanzada
    • Reglas de entrada
    • Nueva regla …
    • Puerto
    • Siguiente
    • ¿Se aplica esta regla a TCP o UDP? elegir TCP
    • Puertos locales específicos: escribir 3050 (o el número de puerto que deseas liberar)
    • Siguiente
    • Permitir la conexión
    • Siguiente
    • Marcar: Dominio, Privado, Público
    • Siguiente
    • En Nombre: asignarle un nombre a esta regla, por ejemplo: Firebird3050 (si el puerto liberado fue el 3050)
    • Finalizar

Un programa antivirus está bloqueando ese puerto

Algunos antivirus también actúan como firewall y en tales casos bloquean a la gran mayoría de los puertos de la computadora donde están instalados. Si la computadora del Servidor tiene uno de esos antivirus entonces deberás configurarlo para que libere al puerto 3050 (o al puerto que el Servidor del Firebird esté utilizando.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

 

 

 

Aumentando la seguridad con ALIASES.CONF

14 comentarios

En la carpeta donde instalaste el Firebird (por ejemplo en C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5) encontrarás un archivo cuyo nombre es ALIASES.CONF

¿Para qué sirve el archivo ALIASES.CONF?

Para que les des un nombre abreviado a tus bases de datos y con eso conseguirás dos cosas:

  • Escribir menos cuando quieras conectarte a una Base de Datos
  • Aumentar la seguridad

¿Cómo especifico cuál será el alias de mi Base de Datos?

Abres el archivo ALIASES.CONF y escribes el nombre del alias, un símbolo igual y la ruta y el nombre completos de tu Base de Datos, por ejemplo:

CONTA=C:\MisBasesDatos\Contabilidad.fdb

Escribir menos cuando quieras conectarte a una Base de Datos

Como tu Base de Datos tiene un alias (es decir: un apodo, un sobrenombre, un nombre alternativo) entonces el Firebird puede usar ese alias para la conexión, por ejemplo:

CONNECT CONTA USER SYSDBA PASSWORD masterkey;

En cambio, si no usas un alias tendrías que escribir:

CONNECT C:\MisBasesDatos\Contabilidad.fdb USER SYSDBA PASSWORD masterkey;

Como puedes ver, se escribió mucho menos al usar un alias y además es más fácil recordar una sola palabra (en este caso: CONTA) que toda la ruta y el nombre de la Base de Datos (en este caso: C:\MisBasesDatos\Contabilidad.fdb)

Aumentar la seguridad

Al usar un alias también aumentas la seguridad de los datos, sobre todo si lo combinas con la entrada DatabaseAccess, tal como puedes leer en este artículo:

https://firebird21.wordpress.com/2013/04/25/restringiendo-el-acceso-a-las-bases-de-datos/

Si alguien quiere atacar tu Base de Datos y lo único que sabe de ella es que se llama CONTA (por ejemplo, claro) pero no tiene la menor idea de donde se encuentra le resultará mucho más difícil que si sabe que se llama Contabilidad.fdb y que se encuentra en la carpeta C:\MisBasesDatos\

Al usar un alias (CONTA, en este ejemplo) le das muy poca información y le complicas la vida al atacante. Y muchísimo más se la complicarías si en lugar de llamar a tu alias CONTA lo llamaras de forma mucho menos informativa como por ejemplo: XDFDRT

(Encontrar algo así le puede dar un ataque cerebral a cualquier atacante)

Conclusión

Que tus bases de datos tengan alias es muy bueno porque te permite escribir menos y aumentar la seguridad. El Firebird te da esa posibilidad, por algo está allí, deberías usarla.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

Restringiendo el acceso a las Bases de Datos

4 comentarios

Cuando se instala el Servidor del Firebird por defecto permite que las bases de datos se encuentren en cualquier carpeta de cualquier disco que esté conectado a esa computadora.

Aunque esto les facilita la tarea a los programadores (porque pueden crear o copiar sus bases de datos en cualquier carpeta que deseen) tiene un potencial y grave riesgo de seguridad: ese mismo Servidor podría estar siendo usado para conectarse a otras bases de datos de esa computadora.

Afortunadamente, nosotros podemos restringir a cuales carpetas o a cuales bases de datos el Servidor permitirá que los usuarios se conecten.

En el archivo FIREBIRD.CONF que se encuentra en la carpeta donde instalaste el Firebird (por ejemplo en: C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5) hay una entrada denominada DatabaseAccess

DatabaseAccess puede ser:

  • None
  • Restrict
  • Full

Si es None entonces el Servidor solamente permitirá la conexión a las bases de datos listadas en el archivo ALIASES.CONF (que también se encuentra en la misma carpeta donde instalaste el Firebird)

Si es Restrict entonces el Servidor solamente permitirá conectarse a las bases de datos que se encuentren en la/s carpeta/s listada/s a continuación (separadas por punto y coma si hay más de una)

Si es Full entonces el Servidor permitirá conectarse a cualquier base de datos que se encuentre en cualquier carpeta de cualquier disco duro de esa computadora

Ejemplos:

DatabaseAccess = None

DatabaseAccess = Restrict C:\MisBasesDatos

DatabaseAccess = Restrict C:\MisBasesDatos;D:\MisBackups

DatabaseAccess = Full

En el primer ejemplo, como el acceso es None el Servidor solamente permitirá que los usuarios se conecten a las bases de datos listadas en el archivo ALIASES.CONF

En el segundo ejemplo, como el acceso es Restrict el Servidor solamente permitirá conectarse a las bases de datos que se encuentren en la carpeta C:\MisBasesDatos

En el tercer ejemplo, como el acceso es Restrict el Servidor solamente permitirá conectarse a las bases de datos que se encuentren en las carpetas C:\MisBasesDatos o D:\MisBackups (los nombres de las carpetas fueron separados con un punto y coma)

En el cuarto ejemplo, como el acceso es Full el Servidor permitirá conectarse a cualquier base de datos que se encuentre en cualquier carpeta de cualquier disco duro de la computadora

NOTA: Fíjate que se quitó el símbolo de numeral (#) que se encontraba delante de la palabra DatabaseAccess, eso es porque el símbolo de numeral (#) le indica al Firebird que lo que está a continuación es un comentario.

Conclusión

Para tener mayor seguridad y disminuir la probabilidad de ataques maliciosos debemos restringir el acceso a las bases de datos. Lo recomendable es que el valor de la entrada DatabaseAccess sea None lo cual nos asegurará que solamente a las bases de datos listadas en el archivo ALIASES.CONF los usuarios puedan conectarse. Si por algún motivo eso no es admisible entonces el acceso debería ser Restrict pero nunca deberíamos dejarlo en Full.

NOTA: Cualquier cambio que realices en el archivo FIREBIRD.CONF solamente tendrá efecto después que reinicies el Servidor del Firebird o reinicies la computadora donde se encuentra el Servidor del Firebird.