Como hemos visto en este artículo:
Proteger a las Bases de Datos visibles en Internet
Internet es muy inseguro y siempre existe la posibilidad de que algún hacker esté metiendo sus narices donde no debe y es nuestra responsabilidad evitar que curiosee en la Base de Datos o peor aún, que la corrompa.
Si un hacker irrumpió en la Base de Datos la culpa es toda tuya por no haberla protegido debidamente.
Un programa que nos puede ayudar con la tarea de protección es Zebedee.
¿Qué hace Zebedee?
- Crea un túnel entre dos computadoras
- Envía y recibe datos comprimidos y encriptados a través de ese túnel
Al comprimir los datos, el tamaño de éstos disminuye, al encriptarlos evita (o disminuye muchísimo) la posibilidad de que alguien pueda ver lo que se está enviando.
Por lo tanto se consiguen dos cosas:
- que los datos viajen más seguros
- que la transferencia se realice más rápido.
¿Cómo funciona Zebedee?
En forma muy similar a como funciona Firebird, o sea a través de un Servidor y de uno o varios Clientes.
- En una computadora se instala el Servidor del Zebedee. Su tarea es «escuchar» las conexiones de los Clientes. En otras palabras, está atento para responder las peticiones de los Clientes. Cuando un Cliente le hace una petición el Servidor comprime y encripta los datos pedidos y luego se los envía al Cliente
- En las demás computadoras se instala el Cliente del Zebedee. Su tarea es pedirle al Servidor del Zebedee que le envíe datos. Cuando recibe esos datos los descomprime, los desencripta, y los envía a quien se los había pedido (el Cliente de Firebird).
El Cliente de Firebird —> a través del Cliente de Zebedee —> a través del Servidor de Zebedee —> le solicita algo al Servidor de Firebird
El Servidor de Firebird —> a través del Servidor de Zebedee —> a través del Cliente de Zebedee —> le responde al Cliente de Firebird
¿Dónde se instala el Servidor de Zebedee?
En cualquier computadora, no necesariamente en la misma donde está instalado el Servidor del Firebird
¿Dónde se instala el Cliente del Zebedee?
En cualquier computadora, no necesariamente en una que tenga instalado un Cliente del Firebird
¿Cómo se realiza la conexión?
A través de un puerto, el cual normalmente es el 11.965 y es el único puerto que debería estar libre para conectarse a Internet. Todos los demás puertos, incluyendo lógicamente el 3.050 (o el que use el Servidor del Firebird), deben estar bloqueados.
¿Cómo se abre un puerto?
El firewall del Windows (o cualquier otro firewall que estés usando) normalmente tiene bloqueados a los puertos. Desde luego que es obligatorio que uses un firewall, esa es una elemental medida de seguridad en cualquier computadora que esté conectada a Internet.
Para abrir el puerto 11.965 con el firewall de Windows:
Inicio | Panel de Control | Firewall de Windows | Configuración avanzada | Reglas de entrada | Nueva regla… | Puerto | TCP | Puertos locales específicos | 11965 | Permitir la conexión | (Dominio, Privado, Público) | Zebedee11965
Captura 1. Si haces clic en la imagen la verás más grande
Captura 2. Si haces clic en la imagen la verás más grande
Captura 3. Si haces clic en la imagen la verás más grande
Conexión no segura
En el Gráfico 1 puedes ver lo que sucede si el Servidor del Firebird está conectado a Internet sin usar a Zebedee (o algún programa similar)
Gráfico 1. Si haces clic en la imagen la verás más grande
Conexiones seguras
En el Gráfico 2 puedes ver algunas de las configuraciones de protección posibles:
Gráfico 2. Si haces clic en la imagen la verás más grande
El problema con la Opción 1 es que ambos Servidores están en la misma computadora. Y para que Firebird (o cualquier otro SGBDR) funcione al 100% lo recomendable es que se encuentre en una computadora dedicada, en una computadora donde está el Servidor del Firebird y ningún otro programa de uso autónomo, ni siquiera antivirus. Desde luego que la Opción 1 funcionará bien, pero de ser posible deberías elegir la Opción 3. Si usas la Opción 1 una medida elemental de precaución es que bloquees con tu firewall el puerto 3.050 (o el que sea que esté usando el Firebird) para evitar conexiones directas. Si no bloqueas el puerto 3.050 es como si no hubieras instalado el Zebedee, al menos en cuanto a seguridad se refiere.
La Opción 2 es la única que se puede usar si el usuario se conecta a través de su notebook (también llamada laptop) por ejemplo mientras está viajando.
La Opción 3 es posible (y preferible) dentro de la red local de la empresa. Se usa una computadora para tener en ella el Servidor del Firebird, cualquier otra computadora para el Servidor del Zebedee, cualquier otra computadora para el Cliente del Zebedee y todos los Clientes del Firebird se conectan al Servidor del Firebird a través primero del Cliente de Zebedee y luego del Servidor de Zebedee. La gran ventaja de la Opción 3 es que el Cliente del Zebedee se instala en una sola computadora y entonces no será necesario que cada vez que la empresa adquiera una nueva computadora se tenga que instalar en ella el Cliente del Zebedee. Las empresas medianas y grandes constantemente están aquiriendo nuevas computadoras y si se debe instalar en cada nueva computadora adquirida el Cliente del Zebedee eso causará un trastorno innecesario ya que puede ser evitado.
¿De dónde se puede descargar Zebedee?
http://www.winton.org.uk/zebedee/download.html
http://www.mediafire.com/download/3o4p0fs6eaxbqtb/Zebedee253setup.exe
Configurando a Zebedee
Zebedee debe ser configurado, sí o sí. No es un programa que se instala y ya funciona. Se lo puede configurar a través de la línea de comandos o a través de un archivo de configuración. Yo prefiero usar un archivo de configuración porque me da mucho más poder, pero en este artículo mostraré solamente como se usa con la línea de comandos. Puedes leer la documentación de Zebedee para saber como usar un archivo de configuración.
Opción 1. El Servidor del Firebird y el Servidor de Zebedee están en la misma computadora
En la computadora que quieres que actúe como Servidor de Zebedee debes escribir:
Captura 4. Si haces clic en la imagen la verás más grande
En el comando ZEBEDEE -s localhost:3050 la opción -s significa que Zebedee se está ejecutando como Servidor, localhost:3050 significa que estará escuchando al puerto 3.050. En otras palabras, que todo lo que envíe a través de ese puerto lo hará en forma comprimida y encriptada.
En las computadoras Cliente de Zebedee debes escribir:
Captura 5. Si haces clic en la imagen la verás más grande
El comando de arriba significa: «Zebedee, todo lo que leas a través del puerto 3.051 debes enviarlo al puerto 3.050 de la computadora que tiene el IP 99.999.999.99» (por supuesto que debes reemplazar los números 99.999.999.99 por los que correspondan a la IP de la computadora donde se encuentra el Servidor del Zebedee).
Para conectarte a una Base de Datos de Firebird debes escribir:
Captura 6. Si haces clic en la imagen la verás más grande
Con lo cual estás diciendo que quieres conectarte a través del puerto local 3051 a esa Base de Datos. Pero como ya habíamos visto todo lo que se envía al puerto local 3.051 se reenvía al puerto remoto 3.050, usando para ello al puerto remoto 11.965.
Local 3.051 —> remoto 11.965 —> remoto 3.050
Opción 2 y Opción 3. El Servidor del Firebird y el Servidor de Zebedee están computadoras distintas
Captura 7. Si haces clic en la imagen la verás más grande
Aquí lo que se le dice es: «Zebedee, utiliza el puerto local 3.050 para comunicarte con la computadora cuya IP es 192.168.0.2 a través del puerto 3.050 de esa computadora». Desde luego que la computadora remota podría estar usando otro puerto, no necesariamente el 3.050.
El comando en el Cliente de Zebedee es el mismo que vimos en la Captura 5.
La conexión a una Base de Datos es igual a como vimos en la Captura 6.
Conclusión:
Si necesitas que tu Base de Datos pueda ser accedida desde Internet entonces es obligatorio que uses Zebedee (o algún programa similar) para protegerla de intrusos. Internet es muy insegura y los hackers siempre están a la pesca de computadoras o bases de datos desprotegidas y aunque creas que no tienes algo valioso que les pueda interesar podrían destruir tu Base de Datos sólo por maldad y porque quieren y pueden hacerlo. Y de paso, para enseñarte una lección relacionada con la seguridad.
Si usas Zebedee entonces el único puerto abierto, el único puerto que puede ser usado para conectarse a Internet debe ser el 11.965 y todos los demás puertos (incluyendo por supuesto el 3.050 ó el que use el Servidor del Firebird), deben estar bloqueados.
Artículos relacionados:
Usando Zebedee con Firebird. Parte 2
Ejemplos del uso de Zebedee con Firebird
Proteger a las bases de datos visibles en Internet
El índice del blog Firebird21 | Firebird SQL
Sep 12, 2013 @ 03:58:45
Jaume
Sep 12, 2013 @ 05:53:48
Hace tiempo que lo probé precisamente por esto, pero no conseguí que funcionara correctamente y al final lo tuve que desinstalar.
Estuve buscando información y lo que encontré era muy antiguo, parece que está discontiunado. ¿ sabes algo sobre esto ?.
wrov
Sep 12, 2013 @ 09:37:04
HolaJaume
Yo nunca tuve problemas, siempre me funcionó 100 puntos, justamente por ese motivo estoy escribiendo estos artículos.
La última versión de Zebedee es la 2.5.3, es de Septiembre de 2005, ya no se continuó después de eso, desconozco el motivo.
Pero conozco gente que lo ha estado usando desde esa época y les funciona muy bien por eso nunca lo cambiaron.
Saludos.
Walter.
Usando Zebedee con Firebird. Parte 2 | Firebird SQL
Sep 12, 2013 @ 13:05:01
Jaume
Sep 12, 2013 @ 13:14:55
Gracias, volveré a probarlo con la ayuda que tu nos prestas.
wrov
Sep 12, 2013 @ 13:25:17
Avísame si encuentras algún problema, quizás podamos resolverlo juntos.
Saludos.
Walter.
Proteger a las Bases de Datos visibles en Internet | Firebird SQL
Sep 12, 2013 @ 13:44:22
YAcosta
Sep 12, 2013 @ 14:13:05
Hola Walter, celebro esta publicación, tengo algunas preguntas pero primero leere la parte 2 haber si alli esta resuelta mi inquietud. Gracias por este didáctica publicación.
Ejemplos del uso de Zebedee con Firebird | Firebird SQL
Sep 12, 2013 @ 18:04:45
Jorge Ernesto Arias
Nov 07, 2014 @ 15:54:08
Walter, antes que nada muchas gracias por esta informacion, solo que no eh podido hacerle funcionar, te explico: Tengo un VPS donde eh puesto Firebird, y el programa lo accesa sin problemas, pero como comentas hay que hacer ese tunel seguro de informacion, ya tengo corriendo ZEBEDEE en el vps tal cual nos has mostrado, pero en la maquina cliente no me puedo conectar al puerto 3051. ¿Crees que me podrias hechar la mano? De antemano agradezco tu atencion.
wrov
Nov 07, 2014 @ 21:30:35
Lo más probable es que el firewall tenga bloqueado el puerto 3051, tenés que pedirle que lo abra.
Saludos.
Walter.
William Malaver Amado
Mar 07, 2016 @ 15:16:58
Hola Walter, estoy buscando una herramienta similar el encontrado en esta entrada con el propósito de mejorar la velocidad de conexión remota. Me surge una inquietud, a la fecha (mar/2016) sigue siendo válida? se puede utilizar con firebird 2.5? En caso de no encontrarse vigente esta herramienta, me podrías recomendar alguna otra que cumpla este propósito?
Muchas gracias.
wrov
Mar 08, 2016 @ 02:11:55
Zebedee funciona muy bien y te permite mantener encriptado el tráfico en Internet. Como seguramente sabes Internet es una cueva de lobos y entrar sin protección es un suicidio.
Saludos.
Walter.
MALAVER AMADO WILLIAM
Abr 07, 2016 @ 13:05:55
Muchas gracias Walter
Eric Natareno Guerra
Mar 03, 2017 @ 04:41:29
Hola Walter, un par de preguntas:
1. En la versión 3 de Firebird aún se debe utilizar Zebedee para encriptar la información o ya cuenta con encriptador propio?
2. Zebedee se debe ejecutar cada vez que vas a hacer una conexión al servidor o basta con la instalación como servicio y ejecución de la configuración, o cada vez que se enciende la computadora se debe ejecutar?, te estaré muy agradecido por la información que me puedas aportar. Gracias
wrov
Mar 03, 2017 @ 13:22:29
Hola
1. Firebird 3.x ya tiene un encriptador propio
2. Zebedee se instala como un servicio, queda residente y puede ser utilizado mientras no se apague la computadora (o se detenga el servicio).
Saludos.
Walter.
Eric Natareno Guerra
Ene 15, 2018 @ 05:27:50
Gracias Walter, hasta ahora vi tu respuesta, justo despues de hacer la misma pregunta, perdon por eso, pero aprovechando, que se debe configurar para encriptar la información al conectarse a travez de internet? Gracias desde ya por tus comentarios. Saludos
wrov
Ene 15, 2018 @ 09:05:10
Zebedee encripta y desencripta automáticamente, nada debes hacer.
En Firebird 3.x, en cambio, tú puedes elegir como encriptar y como desencriptar.
Saludos.
Walter.