lunes, 29 de abril de 2013

Espejeo de Datos en un DBMS.



1.-Base de Datos Espejo (Database Mirroring).
Donde actúan dos servidores  o más para  mantener copias de la base de datos y archivo de registro de transacciones.
El servidor primario como el servidor espejo mantienen una copia de la base de datos y el registro de transacciones, mientras que el tercer servidor, llamado el servidor árbitro, es usado cuando es necesario determinar cuál de los otros dos servidores puede tomar la propiedad de la base de datos. El árbitro no mantiene una copia de la base de datos. La configuración de los tres servidores de base de datos (el primario, el espejo y el árbitro) es llamado Sistema Espejo (Mirroring System), y el servidor primarioy espejo juntos son llamados Servidores Operacionales (Operational Servers) o Compañeros (Partners).


2.-Beneficios
Esta característica tiene 3 modalidades que son Alto rendimiento, Alta Seguridad, y Alta Disponibilidad, este caso estamos hablando de las 2 primeras, las cuales el levantamiento es manual.
La creación de reflejo de la base de datos es una estrategia sencilla que ofrece las siguientes ventajas:
Incrementa la disponibilidad de una base de datos.
Si se produce un desastre en el modo de alta seguridad con conmutación automática por error, la conmutación por error pone en línea rápidamente la copia en espera de la base de datos, sin pérdida de datos. En los demás modos operativos, el administrador de bases de datos tiene la alternativa del servicio forzado (con una posible pérdida de datos) para la copia en espera de la base de datos. Para obtener más información, vea Conmutación de roles, más adelante en este tema.
Aumenta la protección de los datos.
La creación de reflejo de la base de datos proporciona una redundancia completa o casi completa de los datos, en función de si el modo de funcionamiento es el de alta seguridad o el de alto rendimiento. Para obtener más información, vea Modos de funcionamiento, más adelante en este tema.
Un asociado de creación de reflejo de la base de datos que se ejecute en SQL Server 2008 Enterprise o en versiones posteriores intentará resolver automáticamente cierto tipo de errores que impiden la lectura de una página de datos. El socio que no puede leer una página, solicita una copia nueva al otro socio. Si la solicitud se realiza correctamente, la copia sustituirá a la página que no se puede leer, de forma que se resuelve el error en la mayoría de los casos. Para obtener más información, vea Reparación de página automática (grupos de disponibilidad/creación de reflejo de base de datos).
Mejora la disponibilidad de la base de datos de producción durante las actualizaciones.
Para minimizar el tiempo de inactividad para una base de datos reflejada, puede actualizar secuencialmente las instancias de SQL Server que hospedan los asociados de creación de reflejo de la base de datos. Esto incurrirá en el tiempo de inactividad de solo una conmutación por error única. Esta forma de actualización se denomina actualización gradual. Para obtener más información, vea Instalar un Service Pack en un sistema con un tiempo de inactividad mínimo para bases de datos reflejadas.

3.-Como se hace una  Activación de espejeo en un DBMS
1.    Asegúrese de que las versiones de MySQL instalado en el maestro y en el esclavo son compatibles , debe usar la versión más reciente de MySQL en maestro y servidor.
Por favor no reporte bugs hasta que ha verificado que el problema está presente en la última versión de MySQL.
2.    Prepare una cuenta en el maestro que pueda usar el esclavo para conectar. Este cuenta debe tener el privilegioREPLICATION SLAVE . Si la cuenta se usa sólo para replicación (lo que se recomienda), no necesita dar ningún privilegio adicional. (Para información sobre preparar cuentas de usuarios y privilegios.
Suponga que su dominio es mydomain.com y que quiere crear una cuenta con un nombre de usuario de replque puedan usar los esclavos para acceder al maestro desde cualquier equipo en su dominio usando una contraseña de slavepass. Para crear la cuenta, use el comando GRANT:
mysql> GRANT REPLICATION SLAVE ON *.*
    -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
Si quiere usar los comandos LOAD TABLE FROM MASTER o LOAD DATA FROM MASTER desde el servidor esclavo, necesita dar a esta cuenta privilegios adicionales:
§  De a la cuenta el privilegio global SUPER y RELOAD .
§  De el privilegio SELECT para todas las tablas que quiere cargar. Cualquier tabla maestra desde la que la cuenta no puede hacer un SELECT se ignoran por LOAD DATA FROM MASTER.
        Si usa sólo tablas MyISAM , vuelque todas las tablas y bloquee los comandos de escritura ejecutando un comandoFLUSH TABLES WITH READ LOCK :
mysql> FLUSH TABLES WITH READ LOCK;
Deje el cliente en ejecución desde el que lanza el comando FLUSH TABLES para que pueda leer los efectos del bloqueo. (Si sale del cliente, el bloqueo se libera.) Luego tome una muestra de los datos de su servidor maestro.
La forma más fácil de crear una muestra es usar un programa de archivo para crear una copia de seguidad binaria de las bases de datos en su directorio de datos del maestro. Por ejemplo. use tar en Unix, oPowerArchiver, WinRAR, WinZip, o cualquier software similar en Windos. Para usar tar para crear un archivo que incluya todas las bases de datos, cambie la localización en el directorio de datos del maestro, luego ejecute el comando:
shell> tar -cvf /tmp/mysql-snapshot.tar .
Si quiere que el archivo sólo incluya una base de datos llamada this_db, use este comando:
shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db
Luego copie el archivo en el directorio /tmp del servidor esclavo. En esa máquina, cambie la localización al directorio de datos del esclavo, y desempaquete el fichero usando este comando:
shell> tar -xvf /tmp/mysql-snapshot.tar
Puede no querer replicar la base de datos mysql si el servidor esclavo tiene un conjunto distinto de cuentas de usuario a la existente en el maestro. En tal caso, debe excluírla del archivo. Tampoco necesita incluir ningún fichero de log en el archivo, o los ficheros master.info o relay-log.info files.
Mientras el bloqueo de FLUSH TABLES WITH READ LOCK está en efecto, lee el valor del nombre y el desplazamiento del log binario actual en el maestro:
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73       | test         | manual,mysql     |
+---------------+----------+--------------+------------------+
La columna File muestra el nombre del log, mientras que Position muestra el desplazamiento. En este ejemplo, el valor del log binario es mysql-bin.003 y el desplazamiento es 73. Guarde los valores. Los necesitará más tarde cuando inicialice el servidor. Estos representan las coordenadas de la replicación en que el esclavo debe comenzar a procesar nuevas actualizaciones del maestro.
Una vez que tiene los datos y ha guardado el nombre y desplazamiento del log, puede reanudar la actividad de escritura en el maestro:
mysql> UNLOCK TABLES;
Si está usando tablas InnoDB , debería usar la herramienta InnoDB Hot Backup. Realiza una copia consistente sin bloquear el servidor maestro, y guarda el nombre y desplazamiento del log que se corresponden a la copia para usarlo posteriormente en el esclavo. InnoDB Hot Backup es una herramienta no libre (comercial) que no está incluída en la distribución de MySQL estándar. Consulte la página web de InnoDB Hot Backup enhttp://www.innodb.com/manual.php para información detallada.
Sin la herramienta Hot Backup , la forma más rápida de hacer una copia binaria de los datos de las tablasInnoDB es parar el maestro y copiar los ficheros de datos InnoDB, ficheros de log, y ficheros de definición de tablas (ficheros .frm). Para guardar los nombres de ficheros actual y desplazamientos, debe ejecutar el siguiente comando antes de parar el servidor:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Luego guarde el nombre del log y el desplazamiento desde la salida de SHOW MASTER STATUS como se mostró antes. Tras guardar el nombre del log y el desplazamiento, pare el servidor sin bloquear las tablas para asegurarse que el servidor para con el conjunto de datos correspondiente al fichero de log correspondiente y desplazamiento:
shell> mysqladmin -u root shutdown
Una alternativa que funciona para tablas MyISAM y InnoDB es realizar un volcado SQL del maestro en lugar de una copia binaria como se describe en la discusión precedente. Para ello, puede usar mysqldump --master-data en su maestro y cargar posteriormente el fichero de volcado SQL en el esclavo. Sin embargo, esto es más lento que hacer una copia binaria.
Si el maestro se ha ejecutado previamente sin habilitar --log-bin , el nombre del log y las posiciones mostradas por SHOW MASTER STATUS o mysqldump --master-data están vacíos. En ese caso, los valores que necesita usar posteriormente cuando especifica el fichero de log del esclavo y la posición son una cadena vacía ('') y 4.
        Asegúrese que la sección [mysqld] del fichero my.cnf en el maestro incluye una opción log-bin . Esta sección debe también tener la opción server-id=master_id , donde master_id debe ser un entero positivo de 1 a 2^32 - 1. Por ejemplo:
        [mysqld]
        log-bin=mysql-bin
server-id=1
Si estas opciones no están presentes, añádalas y reinicie el servidor.
        Pare el servidor que se vaya a usar como esclavo y añada lo siguiente a su fichero my.cnf :
        [mysqld]
server-id=slave_id
El valor slave_id , como el valor master_id , debe ser un entero positivo de 1 a 2^32 - 1. Además, es muy importante que el ID del esclavo sea diferente del ID del maestro. Por ejemplo:
[mysqld]
server-id=2
Si está preparando varios esclavos, cada uno debe tener un valor de server-id único que difiera del maestro y de cada uno de los otros esclavos. Piense en los valores de server-id como algo similar a las direcciones IP: estos IDs identifican unívocamente cada instancia de servidor en la comunidad de replicación.
Si no especifica un server-id, se usa 1 si no ha definido un master-host, de otro modo se usa 2. Tenga en cuenta que en caso de omisión de server-id, un maestro rechaza conexiones de todos los esclavos, y un esclavo rechaza conectar a un maestro. Por lo tanto, omitir el server-id es bueno sólo para copias de seguridad con un log binario.
        Si ha hecho una copia de seguridad binara de los datos del maestro, cópielo en el directorio de datos del esclavo antes de arrancar el esclavo. Asegúrese que los privilegios en los ficheros y directorios son correctos. El usuario que ejecuta el servidor MySQL debe ser capaz de leer y escribir los ficheros, como en el maestro.
Si hizo una copia de seguridad usando mysqldump, arranque primero el esclavo (consulte el siguiente paso).
        Arranque el esclavo. Si ha estado replicando préviamente, arranque el esclavo con la opción --skip-slave-start para que no intente conectar inmediatamente al maestro. También puede arrancar el esclavo con la opción --log-warnings (activada por defecto en MySQL 5.0), para obtener más mensajes en el log de errores acerca de problemas (por ejemplo, problemas de red o conexiones). En MySQL 5.0, las conexiones abortadas no se loguean en el log de errores a no ser que el valor sea mayor que 1.
        Si hace una copia de seguridad de los datos del maestro usando mysqldump, cargue el fichero de volcado en el esclavo:
shell> mysql -u root -p < dump_file.sql
        Ejecute los siguientes comandos en el esclavo, reemplazando los valores de opciones con los valores relevantes para su sistema:
        mysql> CHANGE MASTER TO
            ->     MASTER_HOST='master_host_name',
            ->     MASTER_USER='replication_user_name',
            ->     MASTER_PASSWORD='replication_password',
            ->     MASTER_LOG_FILE='recorded_log_file_name',
    ->     MASTER_LOG_POS=recorded_log_position;
La siguiente tabla muestra la longitud máxima para las opciones de cadenas de caracteres:
MASTER_HOST
60
MASTER_USER
16
MASTER_PASSWORD
32
MASTER_LOG_FILE
255
        Arranque el flujo esclavo:
mysql> START SLAVE;
Una vez realizado este procedimiento, el esclavo debe conectar con el maestro y atapar cualquier actualización que haya ocurrido desde que se obtuvieron los datos.
Si ha olvidado asignar un valor para server-id en el maestro, los esclavos no son capaces de conectar.
Si olvida asignar un valor para server-id en el esclavo, obtiene el siguiente error en el log de errores:

4.-Ejmplos de  Creación de espacios de disco con espejo.

Necesitaras el programa R-Drive Image
1
Ejecuta el programa R-Drive Image desde la ubicación en la que esté instalado.
2
Haz clic en el botón "Crear imagen", que se localiza en la sección superior de la ventana principal del programa.

3
Selecciona la unidad que quieres configurar como espejo de la lista de unidades disponibles y presiona el botón "Siguiente".
4
Selecciona un destino para el espejo nuevo en la ventaja de navegación y haz clic en el botón "Siguiente". Éste puede colocarse en cualquier medio, como un CD, DVD u otro disco duro, dependiendo del tamaño que elijas para hacerlo.
5
Presiona nuevamente el botón "Siguiente" de la página "Modo de imagen" y deja marcadas las opciones por defecto. Estas opciones son para usuarios avanzados que quieren crear espejos especializados en arreglos RAID o servidores NAS.
6
Si lo deseas, introduce una contraseña para el espejo nuevo y haz clic en el botón "Siguiente".
7
Presiona el botón "Iniciar" para comenzar a crear el espejo del disco duro. Este proceso tomará desde minutos a varias horas dependiendo de la velocidad y cantidad de información del disco duro que se esté configurando. Una ventana de diálogo aparecerá para informarte cuando el proceso haya sido completado exitosamente.

viernes, 26 de abril de 2013

Problemas de seguridad que se pueden presentar en una BD y soluciones


1.0 SEGURIDAD
Es la capacidad del Sistema para proteger Datos, Servicios y Recursos de usuarios no autorizados. El fin de la seguridad es garantizar la protección o estar libre de todo peligro y/o daño, y que en cierta manera es infalible.

 1.-Confidencialidad: nos dice que los objetos de un sistema han de ser accedidos únicamente por elementos autorizados a ello, y que esos elementos autorizados no van a convertir esa información en disponible para otras entidades.

2.-Integridad: significa que los objetos sólo pueden ser modificados por elementos autorizados, y de una manera controlada.

3.-Disponibilidad: indica que los objetos del sistema tienen que permanecer accesibles a elementos autorizados; es el contrario de la negación de servicio.

2.0  ENCRIPTACION
La mayor parte de bases de datos contienen la información sensible, propia, y/o privada. Esto puede incluir la información de cliente, salarios de empleado, registros pacientes, números de la tarjeta de crédito - la lista continúa y sobre. La llave al mantenimiento de esta información en una manera segura es la confidencialidad - y las empresas que no pueden asegurar la seguridad(el valor) para la vergüenza de riesgo confidencial de la información, penas financieras, y a veces aún el negocio sí mismo. ¿Haría usted el negocio con un banco (una orilla) si usted descubriera que la cuenta de otros clientes información (incluyendo la información que puede ser usada hacer transferencias de cable) con frecuencia se filtraba y usó por criminales?

3.0 ENCRIPTACION DE DATOS EN TRANSITO
La mayoría de los ambientes de base de datos utilizan TCP/IP y el servidor de base de datos
Escucha algunos puertos y acepta las conexiones iniciadas por los clientes de la base de datos.
Mientras que los puertos son configurables, la mayoría de la gente utiliza los puertos por defecto del servidor que esta usando, por ejemplo: puerto 1433 para el servidor de Microsoft SQL, puerto 1521 para Oracle, puerto 4100 para Sybase, puerto 50000 para DB2, y puerto 3306 para Mysql. Los clientes de la base de datos se conectan con el servidor sobre estos puertos predefinidos para iniciar una comunicación, dependiendo del tipo de la base de datos y la configuración del servidor, re direccionando a otro puerto o terminando la comunicación entera sobre el mismo puerto del servidor. En un de alto nivel, esto significa que con las herramientas derechas y el acceso correcto a la red, cualquiera puede golpear ligeramente en sus conversaciones de la base de datos y escuchar detrás de las puertas encendido el acceso de base de datos - capturando y robando ambas las declaraciones que usted publica tan bien como los datos volvió por el servidor de base de datos.


4.0 Anatomía de la Vulnerabilidad: Sniffing De Datos
Si un hacker va a espiar y robar datos, debe de suceder dos cosas:

(1) El hacker debe ser capaz de colgarse físicamente en las comunicaciones entre los clientes de la base de datos y el Servidor de bases de datos.

(2) El hacker debe ser capaz de entender el flujo de comunicación a un nivel que le permita la extracción de los datos sensibles. De los dos, el conseguir la llave física es seguramente la tarea más difícil, sobre todo en redes de conmutación bien diseñadas. Con el fin de aprovechar el flujo de comunicación TCP/IP, un hacker debe ejecutar sus herramientas en una máquina que sea capaz de ver los paquetes transmitidos desde el cliente al servidor y viceversa. Una opción es ejecutar estas herramientas en la máquina cliente, y otra es ejecutar las herramientas en el
Servidor de Base de Datos – en ambos casos las maquinas puede ver todo el flujo de la comunicación.

5.0  Implementar Opciones para Encriptación de Datos en Tránsito
El cifrado es una tecnología madura, y la obtención de base de datos de las comunicaciones implica generalmente asegurar TCP / IP de sesiones. Como resultado de ello, puede elegir entre un buen número de opciones de ejecución cuando se desea cifrar la base de datos sesiones. Estos van desde la base de datos específica de los servicios de cifrado para el uso de los servicios básicos prestados por el sistema operativo. En concreto, verás las siguientes opciones que ofrecen una muestra de la amplia gama de técnicas:
·         Características específicas de la Base de datos (ejemplo, Oracle Advanced Security).
·         Métodos de conexión de base (ejemplo, usar protocolo Secure Sockets Layar [SSL]).
·         Garantizar los túneles (ejemplo, mediante el sistema Secure Shell [SSH] túneles).
·         Basándose en el sistema operativo (ejemplo, el cifrado IPSec).


6.0 Uso de SSL para conexiones de base de datos segura
Gracias a la web y comercio electrónico, SSL se ha convertido en el estándar de facto para garantizar la información sensible a través de TCP / IP. Es, por tanto, no es de extrañar que la mayoría de entornos de base de datos de uso de SSL como una instalación para la base de datos de cifrado de comunicaciones. Por ejemplo, si desea habilitar el SSL para Sybase ASE, es necesario cambiar las interfaces de entrada en su archivo.

7.0 Túneles SSH
SSH es otro estándar de factor en el mundo de cifrado y es usado en una amplia variedad de usos, incluyendo sesiones de Shell Seguras (como un reemplazo para el protocolo inseguro telnet), copia segura de archivos (SCP y SFTP-USADO en vez del FTP), y creación de encriptados túneles. Estos túneles proporcionan una facilidad cifrada TCP/IP que puede ser usada (como su nombre implica) al túnel cualquier conversación, incluyendo sesiones de base de datos. La cosa es limpia realmente que la base de datos es ajena a esta acción, y es completamente transparente para la base de datos de cliente y el servidor de base de datos. Desde una perspectiva de servidor de base de datos, los paquetes que se envían a la base de datos en red las bibliotecas son "normales" ya que son descifradas antes de que lleguen a la base de datos. En la red los datos se cifran mientras viaja a través del túnel SSH, los cuales le ofrecen lo mejor de ambos mundos.Puede configurar túneles SSH para cifrar el tráfico de la base de datos la capacidad de reenvío de puertos de llamado. En este esquema de configurar un período de sesiones encriptadas entre la máquina cliente y el servidor utilizando SSH.
El puerto transmisión le da la opción especificar un puerto local en la máquina cliente que será el punto de entrada a un túnel SSH – la conexión a este puerto local serán recogidos por el túnel SSH y entregados al servidor en el puerto designado.

8.0 Caso Práctico
Supongamos que desea un túnel de conexiones desde la maquina cliente Linux con
192.168.1.168 a un servidor con MySQL instalado con dirección IP 192.168.3.33 el cual escucha el puerto estándar 3306. En este caso podría usar el siguiente comando para configurar el túnel: Este comando crea un túnel SSH enviando desde el puerto 10000 de la máquina cliente.


Aquí es donde se produce la magia: la base de datos de cliente y el servidor de bases de datos son ajenos a la encriptación de lugar, pero los datos en el cable será cifrada por el túnel SSH.
Algunos de los otros argumentos en la línea de comandos para crear el túnel SSH comose indica anteriormente son los siguientes:

9.0 IPSec (Internet Protocol security)
El uso de IPSec es otra opción de infraestructura que protege la base de datos de las complejidades de cifrado a nivel de cable, este proporcionan las instalaciones de cifrado al nivel de Sistema Operativo y el cifrado es por lo tanto transparente a la Base de Datos. Conceptualmente, IPSec también crea una especie de túnel cifrado, pero esta vez esto se hace por el sistema operativo y se hace para toda la pila TCP/IP. IPSec es un estándar del sector definido por la Internet Engineering Task Force (IETF).

10.0 ENCRIPTACION DE DATOS EN REPOSO
El otro uso de cifrado en entornos de base de datos es la encriptación de los datos propiamente dichos (es decir, la encriptación de los valores que están almacenados en la base de datos de las tablas).Esta capa adicional de seguridad a menudo es usada para datos sensibles, que, como se considera, son sumamente confidenciales y tienen que ser más protegidos que los medios de datos. La motivación puede estar en los reglamentos, directrices, la privacidad, o simplemente buenas prácticas.


11.0 Anatomía de la Vulnerabilidad: Buscar lo Interesante y Robo de Archivos
Hay dos escenarios al que el cifrado de datos en reposo se orienta. Estos no son vulnerabilidades en el sentido verdadero de la palabra, porque el cifrado de datos en reposo es más sobre una capa adicional de seguridad. El primer problema que la encriptación de datos en reposo abordar es el de los usuarios de la base de datos quienes buscan datos que no deberían de observar, aunque esto no tenga sentido de revocar estos permisos a los usuarios.
El otro problema en la encriptación de datos en reposo implica el robo de archivos o del disco duro. Incluso si el control de acceso a su base de datos es perfecta, un hacker todavía puede robar o copiar los archivos (sobre el sistema de archivos) ser usado por la base de datos o aún el disco entero.

12.0 Opciones de Aplicación: Implementar el Cifrado
En ambos escenarios mencionados, el cifrado de datos proporciona una capa de protección útil. El objetivo de encriptar es el reemplazar de texto plano con el texto de cifrado que incluso así sea visto por personas no autorizadas esto no presenta ninguna violación de seguridad. En ambos escenarios de vulnerabilidad, los datos cifrados que se almacenan dentro de la base de datos no puede utilizarse si se cae en las manos equivocadas. La principal decisión que tendrá que hacer a la hora de elegir una opción de ejecución es decidir en que capa se realizara el cifrado.

13.0 Cifrado en la Capa de Aplicación
Un enfoque sobre que consiste la encriptación de la capa de aplicación. Este enfoque pasa cuando los desarrolladores de aplicaciones utilizan algunas bibliotecas criptográficas para cifrar y descifrar los datos y el acceso a la base de datos es realizado usando texto cifrado.


14.0 Cifrado en el Sistema de Archivos
El segundo acercamiento toma el otro extremo, el paso de la carga al sistema operativo.
Este acercamiento usa las instalaciones que están por lo general disponibles en sistemas de archivos avanzados para almacenar datos sobre el disco dentro de un formato cifrado.

15.0 Cifrado de Bases de Datos
Finalmente, conseguimos a la opción más práctica, la de utilizar la base de datos para cifrar y descifrar datos. Esta categoría de métodos el poner en práctica incluye tanto rutinas empotradas en la Base de Datos o el empleo de extensiones de tercero a bases de datos populares. En ambos casos, los elementos importantes de un esquema de cifrado de datos bueno son el acceso a funciones criptográficas, administrar llaves seguras, y el manejo transparente de datos cifrados.