16 de noviembre de 2010

Gestión de dispositivos de almacenamiento II

Continuando con los apuntes dirigidos al “Módulo Profesional de Seguridad informática” (del FP.“Téc. Sist. Microinformáticos y Redes”), y como prometí en la entrada anterior seguimos.

Criptografía.


La criptografía es el proceso mediante el cual un texto en claro (o texto plano) pasa a ser un criptograma (o texto cifrado).

El arte de la criptografía ha sido usada desde la época de los griegos y romanos. Existen gran numero de cifrados de hecho cada uno de nosotros podríamos imaginar una técnica distinta para cifrar de forma simple texto o bytes.

Para simplificar vamos a dividir las técnicas en varios tipos:

  • Cifrado simétrico: Estos algoritmos hace uso de la misma clave para cifrar que para descifrar (DES o AES por ejemplo).

  • Cifrado asimétrico: Estos algoritmos hacen uso de dos claves, una pública y una privada. Con la clave privada se cifra el mensaje, con la clave pública se descifra el mensaje y viceversa (RSA por ejemplo).

  • Cifrado resumen: Con este cifrado realizamos un resumen del mensaje. Estos cifrados no son de una sola vía, es decir, no se puede obtener el texto original con el resumen (MD5 o SHA1 por ejemplo).

  • Esteganografía: Esta técnica permite ocultar un mensajes, dentro de un portador, de modo que no se conozca su existencia. Por ejemplo podríamos ocultar un texto usando una imagen como portador.

  • Firma digital: Esta técnica es usada para conseguir la integridad y no repudio de un documento. Se varias de las técnicas anteriores para realizar esta labor. Consiste en realizar un cifrado resumen al cual se le añade un cifrado asimétrico y se añade al documento. De este modo podemos saber quien es el propietario del documento (no repudio) y que el documento no ha sido modificado (integridad).


Si pensáis en un modo de cifrar un mensaje es muy posible que estés pensando en técnicas de transposición ( 'A'+n donde n es el desplazamiento ) o de sustitución ('A' = 'B' como pasa en Base64 por ejemplo).
Los cifrados por transposición o sustitución son fáciles de saltar usando técnicas de análisis de frecuencias. Esta técnica se basa en sustituir el símbolo que más a parezca por el carácter más común del lenguaje origen del texto.

Copias de seguridad e imágenes de respaldo.


Como ya comentamos en la introducción para una organización lo más importante son los datos, por ello, estos deben de mantenerse siempre a salvo.
Dado que es imposible garantizar que un disco no va a romperse es importante realizar copias de seguridad o backup de los datos y configuraciones de los sistemas.
Podemos diferenciar como realizamos el backup según el estado del disco:

  • Copia en frío: Las copias frías se llaman así porque se realizan con el disco duro sin uso, es decir no hay ningún fichero en uso. La mejor forma es hacerlo arrancando con otro sistema operativo Live (ya que corre en la memoria RAM) y copiar las particiones de los discos de forma completa tal cual están, sin ni siquiera acceder a los ficheros en sí. Este tipo de copias se usan habitualmente para realizar instalaciones típicas ya que no solo incluyen los datos sino que también el sistema y los programas.

  • Copia en caliente: Consiste en copiar los datos más importantes de un sistema, estando el sistema en uso.


Pero también podemos realizar una separación según lo que vallamos ha abarcar:

  • Copias totales: En este tipo de copias se copia la totalidad de los datos. Es similar a la copia en frío sin incluir el sistema.

  • Copias incrementales: Solo se copiaran los datos nuevos o modificados (Necesitamos una copia total inicial que sirva de referencia).

  • Copias diferenciales: Solo se copian las diferencias entre los ficheros (Necesitamos una copia total inicial que sirva de referencia). Se usan en programación como controladores de versiones.

Medios de almacenamiento


Los materiales físicos en donde se almacenan los datos se conocen como medios de almacenamiento o soportes de almacenamiento (disquetes, discos duros, CD, discos Zip, ...).

Los elementos donde se escriben o leen datos en los medios de almacenamiento se conocen como dispositivos o unidades de almacenamiento (disquetera, una unidad de disco óptico, ...).

El propósito de los dispositivos de almacenamiento es almacenar y recuperar la información de forma automática y eficiente.

Los medios de almacenamiento han evolucionado mucho, desde las tarjetas perforadas hasta los nuevos sistemas ópticos o basados en semiconductores.

Sistemas RAID


Raid son las siglas de Redundant Array of Independent Disks, "conjunto redundante de discos independientes", es decir, un conjunto de discos independientes que funcionan como uno.
Existen múltiples formatos RAID, así como combinaciones de varios. Cuando se crea un formato de RAID se busca mejorar la fiabilidad, capacidad o rendimiento es los dispositivos independientes.

Para no extendernos vamos a ver solo tres tipos de ellos.

  • RAID 0 ó volumen dividido:
    Distribuye los datos equitativamente entre dos o más discos sin información redundante (paridad, checksum, ... ). El RAID 0 se usa normalmente para incrementar el rendimiento. Una buena implementación de un RAID 0 dividirá las operaciones de lectura y escritura en bloques de igual tamaño, por lo que distribuirá la información equitativamente entre los dos discos.

  • RAID 1 o copia espejo:
    Un RAID 1 crea una copia exacta de los datos de un disco en varios. Esto es útil cuando el rendimiento en lectura es más importante que la capacidad, dado que la capacidad de este viene dado por el volumen más pequeño. Un RAID 1 puede estar leyendo simultáneamente dos datos diferentes en discos diferentes, por lo que su rendimiento se incrementa. También se usa en seguridad dado que existen menos posibilidades que falle el hardware.

  • RAID 5:
    Un RAID 5 usa división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad. Gracias a la información de paridad en ocasiones se pueden reconstruir fallos de almacenamiento en bloques.

Programación de copias de seguridad


Dado que realizar copias de seguridad es algo muy importante para asegurar la información de la
organización, para facilitar esta labor, lo más cómodo es automatizarlo.
Cuando mantenemos un sistema lo más recomendable es combinar todas las técnicas de backup, buscando la optimización de recursos, así como el uso de los mismos.
TipoVelocidad. creaciónVelocidad. reparaciónSaturacion de red
TotalLentaRapidaAlta sat.
IncrementalRapidaLentaBaja sat.
DiferencialMediaMediaMedia sat.

Dado que cada organización tiene unos habitos de trabajo distintos, las horas en las que se realizarán las copias de respaldo puede cambiar.
Por ejemplo, podríamos hacer una copia fría del sistema cuando se modifica el kernel. Mensualmente realizar copias en caliente de tipo Total, y semanalmente copias incrementales o diferenciales, según la variación que se espere en los datos.

17 de octubre de 2010

LACON

LACON es una quedada de compañeros de seguridad informática. Una especie de congreso informál, pero con contenidos muy caldentes.

Este año ha sido genial, el nivel de las charlas muy alto y contenidos muy buenos e innovadores.

Algunas de las charlas las dieron compañeros de muchas empresas y blogs del sector.

Por poner algúnas de ellas:

  • Eloi de Riscure dió dos charlas muy chulas sobre seguridad en "smart cards".

  • Los compañeros de Taddong dieron una charla magistrál de telefonía GSM.

  • Joxean Koret dió uno taller practico sobre MyNav, un gran plugin para IDA.


Tras todas las charlas se votá a la mejor de ellas, en este año lo ganó Hugo Teso, un compañero de Hispasec Sistemas con una gran investigación (aún en proceso) que dejó ha los presentes impresionados.

Un fin de semana muy divertido donde volver a ver a compañeros y conocer a otros.

Gracias a los hermanos Santamarta por la gran organización.

8=====D

15 de septiembre de 2010

Proyectos para desarrolladores Android en GoogleCode

Ultimamente estoy bastante liado programando cosillas para Android, y el otro día me dio por buscar utilidades para desarrollo y APIs que pudieran venirme bien para hacer el proyecto en el que estoy metido.

Buscando cosas en "Google Code" proyectos libres de donde sacar algo de código he visto muchos proyectos interesante.

Este post no está orientado a programas para el telefono sinó para desarrolladores de software y/o hardware.

Emuladores de Android:


He visto varios emuladores para Android que nos permiten montar nuestras propias maquinar virtuales para que corran Android.

http://code.google.com/p/live-android/

http://code.google.com/p/android-x86/

http://code.google.com/p/android-pc/

Hardware develop:


Estos dos proyectos están enfocados a quien esté pensando hacer su propio cacharro con este SO.

http://code.google.com/p/magik/

http://code.google.com/p/0xdroid/

Ing. Inversa:


Estas utilidades ayudan a realizar un desempaquetado de un .apk para poder se analizado o editado.

http://code.google.com/p/dex-decomplier/

http://code.google.com/p/android-apktool/

Game Develop:


Existen multitud de librerías para crear tus propios juegos.

http://code.google.com/p/simple/

http://code.google.com/p/android-2d-engine/

http://code.google.com/p/candroidengine/

http://code.google.com/p/eadventure-android/ Este es un proyecto de la Universidad Complutense de Madrid llamado <e-Adventure> que parece bastante interesante

http://code.google.com/p/squeak-android-vm/ La primera vez que escuche sobre Squeak fue en la OSWC de extremadura. Este sistema estaba siendo usado en los PCs de 100$.

Librerias:


http://code.google.com/p/zxing/ Librería de procesamiento de códigos de barras.

http://code.google.com/p/libs-for-android/ Librearía con varias utilidades para no "picar" de más.

http://code.google.com/p/psqldroid/ Librería para PostgreSQL.

http://code.google.com/p/android-send-me-logs/ Esta librería te permite que te manden un mail con los logs del sistema si la aplicación falla.

http://code.google.com/p/acra/ Permite enviar los reportes de error a una cuenta de GoogleDocs.

http://code.google.com/p/sociallib/ Librerías para acceder a redes múltiples sociales.

Librearías para eBooks:


Incluso hay cosas para los libros electrónicos.

http://code.google.com/p/edgelibrarylib/

http://code.google.com/p/nookdevs/

Miscelanea:


http://code.google.com/p/androidemulatorcontroller/ Permite mover el (teléfono) emulador (Muy chulo).

http://code.google.com/p/linux-on-android/ Permite tener doble arranque es equipos pensados para correr Android.

Ejemplos para NDK:


http://code.google.com/p/android-ndk-stacktrace-analyzer/

http://code.google.com/p/androidndkgame/

1 de septiembre de 2010

Gestión de dispositivos de almacenamiento

He estado un poco liado y por eso todo este tiempo, pero bueno continuamos con los apuntes dirigidos al “Módulo Profesional de Seguridad informática” que pertenece a el FP. de grado medio de “Técnico en Sistemas Microinformáticos y Redes”.

Vamos a continuar con un nuevo apartado.

Gestión de dispositivos de almacenamiento


Como con cualquier equipo los sistemas/dispositivos de alamacenamiento han de ser mantenidos por los trabajadores. Dado que son estos dispositivos los encargados de almacenar la información tenemos que tener en cuenta nuestras necesidades para saber que dispositivo es el más adecuado a nuestras necesidades.

Almacenamiento de la información: rendimiento, disponibilidad, accesibilidad.


Cuando estamos diseñando un sistema de almacenamiento tenemos que pensar para que uso va a ser destinado, ya que dependiendo de esto los requerimientos los equipos y dispositivos que necesitaremos serán distintos.

Por ejemplo un sistema encargado de servir páginas web estaticas no necesitará el mismo dispositivo de almacenamiento que un equipo encargado de gestinar una base de datos.

  • Rendimiento: Cuando hablamos de rendimiento de un sistema de almacenamiento nos referimos a la relación 'velocidad de lectura'/'tamaño de almacenamiento'. El rendimiento depende de las limitaciones mecánicas, eléctricas y de la carga de E/S. Algunos dispositivos modifican su rendimiento con el uso de los mismos.

  • Disponibilidad: La disponibilidad de un sistema de almacenamiento es la facultad del mismo por ser accesible en cualquier momento.

  • Accesibilidad: La accesibilidad de un sistema de almacenamiento hace referencia al mecanismo por la cual podemos tener acceso al disco. Podemos usar distintos protocolos que nos permiten tener acceso a un disco bien sea local o externo.


Estos factores dependen de los dispositivos, del bus de datos y de la tecnología en general.

Almacenamiento redundante y distribuido.



Nos referimos a almacenamiento redundante cuando los datos del dispositivo se encuentran replicados en otro. Lo más importante en la redundancia en los datos es que ambos discos se encuentren sincronizados, de forma que ambos tengan la misma información.

Los sistemas de almacenamiento distribuido se basan en separar la información de un fichero en distintos dispositivos. De este modo cuando se quiere leer un fichero el tiempo empleado para recuperar el fichero es menor dado que todas las partes llegan a la vez por distintos buses y/o puertos.

El almacenamiento distribuido es habitual en sistemas de cluster. Estos sistemas forman una red de nodos de tal modo que la información se encuentra repartida en distintos equipos y/o dispositivos.

La tecnología SAN (storage area network) está basada en el almacenamiento distribuido, pero permite accesos a bajo nivel.

Almacenamiento remoto y extraíble.



Cuando hablamos de almacenamiento remoto nos referimos a que el dispositivo donde se almacena la información no se encuentra en la máquina local. Hoy en día existen muchos servicios de almacenamiento remoto.

Las tecnología NAS (inglés Network Attached Storage) es un claro ejemplo de almacenamiento remoto, dado que estos sistemas permiten acceder a un disco situado en la red por protocolos como SMB, SFTP, FTP, ... .

Los métodos de almacenamiento extraíbles son sistemas de almacenamiento que se pueden conectar y desconectar de un sistema en caliente (si estar apagado el sistema).

Los dispositivos extraíbles se conectan al sistema por buses como USB o Firewire entre otros.

----
En el proximo capitulo de este tutorial, continuaremos será:
-Criptografía.
-Copias de seguridad e imágenes de respaldo.
-Medios de almacenamiento.
-Sistemas RAID.
-Programación de copias de seguridad.

11 de agosto de 2010

Regreso desde las JLA

Este fin de semana han sido las Jornadas Lúdico Andaluzas o JLA en Maracena.

Las jornadas se realizaron en un colegio de la zona. El lugar tenía varias zonas:

- Zona de acampada. En los alrededores de la guardería.

- Zona de organización y juegos. (La guardería) Esta zona constaba con stands de tiendas e informador, una habitación de consolas y varias  salas para jugar.

- Dormitorio. Se habilitó un pabellón cubierto para quienes no tenían tiendas.

- Campo de fútbol.

- Zona de carpas. Junto al colegio principal, tenía multitud de mesas para jugar a diversos juegos.

- Colegio. En el colegio se alojaban la organización y las asociaciones que colaboraban.

Desde el jueves al domingo se realizaron todo tipo de juegos, torneos y vivos.

El jueves estuve organizando todo y echando varias partidas a juegos de cartas.

El viernes por la mañana toco ir de compras y por la tarde torneo de StarWars, que duró hasta la madrugada del sábado, y me lo pasé genial.

El sábado por la mañana torneo de 7ºmar y por la tarde campeonato de Wii tenis, que gané, luego un concurso de "antonio carlos"(un niño que salía en el programa "gente con chispa", le ponía unos auriculares con música y tenía que intentar cantarla para que los concursantes la acierten), jugando a las cartas y por último una partida de rol (interpretativa, sin dados) improvisada.

El domingo la final de 7ºmar y a recoger, comimos en casa de un amigo y para casa.

Las próximas jornadas prometen, sobre todo porque el colegio se encontraba en obras y el año próximo serán mejores si cabe.

29 de julio de 2010

Nuevas versiones de PHP solucionan varios fallos de seguridad

Se han publicado recientemente nuevas versiones de PHP (versiones 5.2.14 y 5.3.3) que solucionan múltiples problemas de seguridad, que podrían permitir evitar restricciones de seguridad, provocar denegaciones de servicio, obtener información sensible o comprometer los sistemas afectados.

PHP es un lenguaje interpretado de propósito general ampliamente usado, que está diseñado para desarrollo web y puede ser embebido dentro de código HTML. PHP está orientado a la creación de páginas web dinámicas, ejecutándose en un servidor web (server-side scripting), de forma que primero se toma el código en PHP como entrada y se devuelven las páginas web como salida.

Los fallos están relacionados con errores de diseño, desbordamientos de búfer, errores de validación de entradas, y afectan a funciones como "shm_put_var()", XOR operator, "ArrayObject::uasort()", "parse_str()", "pack()", "strchr()", "strstr()", "substr()", "chunk_split()", "strtok()", "addcslashes()", "str_repeat()", "trim()", "addcslashes()", "fnmatch()", "substr_replace()", extensión sqlite, extensión phar, "mysqlnd_list_fields", "mysqlnd_change_user" y mysqlnd.

De todos estos errores sólo se han asignado cuatro CVEs. Dos comunes en ambas versiones y uno específico para cada una de ellas; un total de tres fallos (con CVE asignado) por versión.

CVE-2010-2225:
Esta vulnerabilidad fue anunciada en la conferencia SyScan'10 de Singapore y posteriormente publicada en "el mes de los fallos en PHP". Este fallo se provoca cuando se llama a la función "unserialize" con un objeto "SplObjectStorage". La función "unserialize" no filtra adecuadamente los datos al cargar el objeto. Esto podría permitir a un atacante remoto ejecutar código arbitrario y obtener información sensible. Para la versión 5.2.x solo son vulnerables la versiones de 32 bits. El impacto puede mitigarse con el módulo "Suhosin" pero sigue
siendo vulnerable.

CVE-2010-0397:
Este error había sido publicado por Debian en marzo. Es causado por no procesar correctamente los datos del primer parámetro de la función "xmlrpc_decode_request". Este error en el módulo "xmlrpc" puede provocar una referencia a puntero nulo. Un atacante remoto podría aprovechar este fallo para causar una denegación de servicio a través de una llamada a "xmlrpc_decode_request" especialmente manipulada. Existe una prueba de concepto que permite explotar esta vulnerabilidad.

En la versión 5.3.3 se ha solucionado un error (CVE-2010-2531) en la función "var_export" que podría permitir la fuga de información si ocurre un error grave. El fallo se debe a que los datos se van imprimiendo durante el transcurso de la función en vez de esperar al final para imprimir todo el contenido. Para solucionar esto se ha creado una variable de tipo "smart_str" donde se aloja el texto para imprimirlo tras comprobar que no hay errores.

En la versión 5.2.14 se ha solucionado un error (CVE-2010-2484) en la función "strrchr". Esta función no valida correctamente el valor del parámetro "$haystack". Un atacante remoto podría utilizar esto para obtener información de la memoria.

Las nuevas versiones se encuentran disponibles para descarga desde:

http://www.php.net/downloads.php

Referencias:

PHP Released:
http://www.php.net/archive/2010.php

Info sobre CVE-2010-2225:
http://www.php-security.org/2010/06/25/mops-2010-061-php-splobjectstorage-deserialization-use-after-free-vulnerability/index.html
http://svn.php.net/viewvc?view=revision&revision=300843
https://bugzilla.redhat.com/show_bug.cgi?id=605641

Info sobre CVE-2010-0397:
http://bugs.debian.org/573573
http://bugs.php.net/51288

Info sobre CVE-2010-2531:
http://svn.php.net/viewvc?view=revision&revision=301143

Info sobre CVE-2010-2484:
http://svn.php.net/viewvc?view=revision&revision=300916

27 de julio de 2010

Sistemas de alimentación ininterrumpida

Ya estamos en el último apartado de "Aplicación de medidas de seguridad pasiva" de estos apuntes de dirigidos para el "Módulo Profesional de Seguridad informática" que pertenece a el FP. de grado medio de "Técnico en Sistemas Microinformáticos y Redes".

El punto anterior a este apartado es "Ubicación y protección física de los equipos y servidores".

Sistemas de alimentación ininterrumpida.


Para que los sistemas informáticos funcionen adecuadamente es necesario que la alimentación eléctrica sea correcta. La corriente eléctrica tiene fluctuaciones que pueden afectar a los sistemas electrónicos.

Cada equipo dependiendo de su función tendrá distintas características de alimentación électrica. Es lógico pensar que un equipo compuesto por diez discos duros necesitará más potencia que un equipo de procesado o que un switch de red. Por tanto tendremos que saber que necesidades eléctricas necesita cada equipo, para ello consultaremos el manual de cada elemento de un equipo y haremos la suma de potencias.

Es recomendable que las fuentes de alimentación sean superiores a la suma de potencias, de este modo la fuente trabajará en mejores condiciones y evitaremos riesgos. En algunos servidores en normal ver fuentes de alimentación duplicadas, para evitar que fallen.

En la corriente eléctrica convencional podemos encontrar fenomenos adversos tales como:

  • Sobretensión/Picos de tensión.

  • La sobretensión abarca una gran variedad de fenómenos, pero todos implican el agotamiento de los transportadores de carga en la superficie del electrodo. Esto quiere decir que la tensión en bornas del enchufe sube por encima del 110% de la tensión habitual.
  • Caída de tensión.

  • Se provoca por cambios en la resistencia de la red eléctrica. Para que este efecto sea relevante la tensión ha de estar sobre el 80% de la tensión habitual.
  • Ruido eléctrico.

  • Se denomina ruido eléctrico o interferencias a todas aquellas señales, de origen eléctrico, no deseadas y unidas a la señal principal, de manera que la alteran el comportamiento normal de la señal produciendo efectos perjudiciales. Pueden producirse por efectos de inducción entre cables.

Como todos sabemos las empresas suministradoras de corriente no aseguran su suministro durante las 24 horas los 365 días, por tanto, es esperable que en algún momento falle el suministro.

Los sistemas de alimentación ininterrumpida son conocidos como SAIs o UPSs por sus siglas en castellano e ingles respectivamente.
Son elementos con la propiedad de ser activos encargados de alimentar a los sistemas conectados a ellos. Se sitúan entre la fuente de alimentación de los equipos y la red eléctrica. Algunos de ellos posen soporte para apagar los equipos de forma correcta si fuera necesario.

Es tan importante tener los equipos informáticos conectados a un SAI como los sistemas de red, ya que si se falla el suministro eléctrico y se pierde la conectividad con los equipos es igual que si estos estuvieran apagados.

Los equipos SAI se componen de varias partes:

  • Rectificador:

  • Este elemento permite convertir la corriente alterna procedente de la red eléctrica convencional a corriente continua. Esto es posible gracias a el uso de diodos rectificadores.
  • Inversor:

  • Este elemento opera de forma opuesta al rectificador, convierte la corriente continua procedente de la batería o del rectificador a corriente alterna con los valores de frecuencia, tensión y corriente deseados. A diferencia del rectificador la electrónica de este elemento es bastante compleja.
  • Batería:

  • Una batería es un acumulador eléctrico. Almacenamos la energía eléctrica que proviene del rectificador para poder usarla cuando sea necesario. Las baterías eléctricas son fabricada de distintas maneras según las necesidades:

    TipoEnergía/ pesoTensión (V)Duración
    (nun. recargas)
    Tiempo de cargaAuto-descarga
    por mes (% del total)
    Plomo30-50 Wh/kg2 V10008-16h5 %
    Ni-Cd48-80 Wh/kg1,25 V50010-14h *30%
    Ni-Mh60-120 Wh/kg1,25 V10002h-4h *20 %
    Li-ion110-160 Wh/kg3,16 V40002h-4h25 %
    Li-Po100-130 Wh/kg3,7 V50001h-1,5h10%
Otra manera de prevenir los cortes de alimentación es usar líneas redundantes de alimentación, a ser posible con diferentes origenes, es decir, que la energía provenga de subestaciones distintas, o fuentes renovables; esto protegerá ante la caída en una de las dos subestaciones.

Es habitual que los CPDs con muchas máquinas tengan sus propios generadores (de gasolina) eléctricos para caso de la caída del suministro eléctrico general. En un futuro los generadores de gasolina podrían sustituirse por generadores con hidrógeno o biomasas.