Mostrando entradas con la etiqueta Seguridades. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seguridades. Mostrar todas las entradas

martes, agosto 27, 2013

HTTPS: así funciona

Muchos de los sitios que visitamos diariamente están protegidos por HTTPS. Gmail, Twitter, Facebook o Google son sólo unos ejemplos. Nos dicen que es por nuestra seguridad pero, ¿cómo nos protege ese protocolo? ¿Qué ventajas tiene frente a HTTP normal? Y, lo más importante: ¿Cómo funciona?

Vamos a intentar dar respuesta a todas esas preguntas en este artículo, empezando por la más importante: ¿por qué necesitamos HTTPS?

Imagino que todos sabréis qué es HTTP, el protocolo que utilizan los navegadores para comunicarse con los servidores web y que te permite ver páginas web como esta. Funciona bien pero tiene un problema: la seguridad.

Con HTTP, cualquier dato se transmite en texto plano, sin cifrar. Es decir, que cualquiera que se conecte a tu red WiFi, o que tenga acceso a la comunicación entre tu ordenador y el servidor (tu ISP, por ejemplo) puede ver todos los datos que recibes y envías. Por ejemplo, podrían ver las contraseñas que usas para entrar en tu correo, o realizar operaciones adicionales cuando navegas por la web de tu banco.

¿Qué es HTTPS?

Hay que cifrar esos datos para evitar que nadie más pueda verlos. Para eso está el protocolo HTTPS (Hyper Text Transfer Protocol Secure). En sí mismo HTTPS no es más que HTTP normal sobre SSL/TLS. 

SSL/TLS (Secure Sockets Layer/Transmission Layer Security) son dos protocolos para enviar paquetes cifrados a través de Internet, siendo el último el más moderno. Sirven igual para HTTP que para cualquier otro protocolo de comunicación, aunque en este artículo veremos únicamente su aplicación en HTTPS.

¿Cómo se establece una conexión segura?

Como bien sabéis, para cifrar datos se necesita una clave. Esa clave tendrá que saberla tanto el navegador como el servidor para poder comunicarse. El primer problema aparece rápidamente: ¿cómo compartimos una clave de forma segura (sin que nadie más pueda saberla)? Está claro que la clave tiene que ser única para cada conexión, por lo que no puede venir preconfigurada en los ordenadores. 

Aquí entra en juego una de las maravillas de la criptografía moderna: un sistema de clave pública/clave privada, cifrado asimétrico que ya nos explicaron en Genbeta Dev.

La pre-clave se genera en el navegador, y se comparte con el servidor usando criptografía asimétrica

Las claves pública y privada son un par de números relacionados de una forma especial, de tal forma que un mensaje cifrado con una clave sólo puede ser cifrado con su par correspondiente. Por ejemplo, si quiero enviar un mensaje a un servidor, lo cifro con su clave pública para que sólo se pueda descifrar con su clave privada.

Y precisamente este es el primer paso esencial de una conexión HTTPS. Después de haber acordado detalles técnicos entre navegador y servidor (versión del protocolo, algoritmos de cifrado asimétrico y simétrico que se usarán…), el navegador cifra una preclave generada en el momento con la clave pública del servidor al que nos queremos conectar. Eso se envía al servidor, que descifra la preclave con su clave privada. 

Tanto el servidor como el navegador aplicarán un cierto algoritmo a la preclave y obtendrán la misma clave de cifrado. De esta forma hemos superado el primer (y mayor) problema que teníamos: intercambiar la clave. A partir de entonces, simplemente se cifran y descifran los datos con esa clave. 

Como nadie más sabe esa clave, nuestras comunicaciones serán seguras y nadie podrá verlas (siempre y cuando el algoritmo de cifrado simétrico sea seguro, claro).

Alguno se preguntará por qué intercambiar una clave y no cifrar directamente los datos usando cifrado asimétrico. La principal razón es que el cifrado simétrico es muchísimo más rápido que el asimétrico, e intercambiar la clave no resulta un problema que haya que sortear.

¿Qué datos protege HTTPS?

La pregunta obvia es saber qué datos se protegen cuando usamos una conexión HTTPS. Como está basado en SSL/TLS, que funciona en la capa más baja de comunicación, se cifran todos los datos de HTTP. Esto es, no sólo la página web sino también la URL completa, los parámetros enviados, las cookies… Lo único que se queda al descubierto son los datos del paquete TCP: el servidor y el puerto al que nos conectamos. 

HTTPS sólo deja al descubierto el servidor y puerto al que nos conectamos.
Por lo tanto, HTTPS no sólo impide que alguien vea las páginas web que estamos visitando. También impide que puedan conocer las URLs por las que nos movemos, los parámetros que enviamos al servidor (por ejemplo, los usuarios y contraseñas se envían como parámetros POST normalmente) o las cookies que enviamos y recibimos (alguien con acceso a estas cookies podría robar nuestra sesión, como demostraba la herramienta Firesheep).

¿Cómo sé qué no me estoy comunicado con un impostor?



Hay un problema adicional en la comunicación por Internet. Pongamos que quiero navegar a Genbeta.com. ¿Cómo sé que me estoy comunicando con el servidor de Genbeta y no con un servidor falso que se está haciendo pasar por Genbeta (lo que se conoce como un ataque man-in-the-middle)?

Por lo tanto, hay que autenticar los servidores. No sirve de nada tener los datos cifrados si no nos aseguramos de que nos estamos conectando al servidor correcto. Para eso están los certificados SSL, que contienen la clave pública y los nombres de dominio en los que se pueden usar. 

Las CA (terceros de confianza) nos aseguran que el certificado es válido y que el servidor es quien dice ser.

El certificado SSL por sí sólo no sirve para nada. Cualquier atacante podría falsear uno y no te darías cuenta. Ahí entran en juego las CA, o Certificate Authority, las entidades emisoras de certificados SSL firmados, que sólo dan certificados sobre un dominio a su propietario. No podría, por ejemplo, ir cualquiera y pedir un dominio para google.com. Además, las firmas aseguran que el contenido del certificado no ha variado. No voy a extenderme viendo cómo es este proceso, ya lo vimos en un artículo anterior.

En resumen, una firma de una CA nos asegura que el servidor es quien dice ser. Por supuesto, hay que verificar esa firma para asegurarse de que es real. Para ello, el navegador busca el certificado en su almacén (en realidad es una anillo de confianza, algo más complejo) y verifica la firma. Si no es válida o no encuentra el certificado, te mostrará un aviso de que no puede autenticar la conexión al servidor.

Precisamente esto último ocurría hace un tiempo con Firefox (y otros navegadores, creo), cuando intentabas conectarte a servidores seguros de la administración española. Los certificados de esos servidores estaban firmados por la FNMT, pero Firefox no tenía en su almacén los certificados de la FNMT. Por esto mismo no podía asegurar que el certificado fuese válido y avisaba al usuario.

¿Qué debilidades tiene HTTPS?

El punto más débil de HTTPS son los certificados. Si, por ejemplo, alguien roba el certificado (con la clave privada) de Google, podría crear un servidor falso sin que hubiese forma de distinguirlo de uno legítimo. 

Un problema más grande puede ocurrir si se filtra la clave privada de una CA. Un atacante podría crear y firmar certificados válidos para cualquier dominio sin que nadie se lo impidiese, y por lo tanto engañar a los usuarios para que se conectasen a servidores falsos. 

Por suerte, todos los navegadores tienen un mecanismo para revocar certificados. Cuando se compromete un certificado, se pone su huella digital del certificado en una lista. El navegador se descarga esa lista y dejará de dar por válido cualquier certificado que aparezca ahí. El único problema está en que los navegadores no siempre aprovechan bien esas listas, pero el mecanismo está ahí.

Con esto, ya hemos acabado nuestra entrega de la serie “Así funciona…” sobre HTTPS. Podréis imaginar, especialmente los más legos en la materia, que hay cosas que he pasado por alto y otras que se han simplificado para hacer más fácil la lectura. Como siempre, intentaremos resolver las dudas y críticas que tengáis en los comentarios.

Tomado de: Articulo Original

lunes, agosto 26, 2013

Firmas Electronicas con Genexus

Tomado de: Tipo de dato Criptograpia




Las aplicaciones empresariales suelen tener necesidades de seguridad a la hora de almacenar, transportar o intercambiar información, de ahí que surge la necesidad de contar con un tipo de datos que permita manejar el cifrado de textos y la firma de documentos.
A través de los tipos de datos para Criptografía se puede:
  • Firmar digitalmente un texto.
  • Validar la firma digital.
  • Encriptar/desencriptar un texto.
  • Calcular el hash de un texto dado.
Estos métodos utilizados en conjunto pueden permitir asegurar la autenticación, integridad, la confidencialidad y el no repudio de los mensajes.

Escenarios de uso

  • Generalmente una contraseña no se debe almacenar en texto plano, sino que se almacena el resultado de aplicar el hash sobre la misma.
  • Factura electrónica. Se usan funciones de Hash y firma digital.

Implementación de los tipos de datos para Criptografía

Se cuenta con los tipos de datos: CryptoHash, CryptoSign, CryptoSymmetricEncrypt, CryptoAsymmetricEncrypt, CryptoCertificate, CryptoXMLSign, que permiten resolver las necesidades de criptografía de una aplicación GeneXus.
Se tiene un dominio enumerado CryptoAlgorithm que contiene los algoritmos de criptografía soportados.
A continuación se detallan los métodos asociados a cada uno de estos tipos de datos y ejemplos de uso.

CryptoHash

Métodos

Nombre Descripción
Compute(String text) Retorna el texto resultado de aplicar la función de hash sobre el texto ingresado.

Propiedades

Algorithm: String  Permite especificar el algoritmo de hash que se aplicará cuando se invoque al método Compute(String). Se utilizará el SHA256 por omisión.

Ejemplo

El siguiente ejemplo usa el algoritmo SHA1 de Hash.
&CryptoHash.Algorithm = CryptoAlgorithm.HashSHA1 //&CryptoHash es de tipo CryptoHash.
//CryptoAlgorithm es un dominio enumerado que contiene los algoritmos de criptografía soportados.
&resultstringSHA1 = &CryptoHash.Compute(&text) 

CryptoSign

Permite manipular firmas digitales con clave pública-privada según el estándar PKCS#7/CMS ó PKCS1 utilizando certificados X509.

Métodos

Nombre  Descripción
Sign(String text, [boolean detached]): String  Retorna el texto resultado de aplicar el algoritmo de firmado utilizando el certificado especificado sobre el texto ingresado. El parámetro detached indica si se devuelve solamente la firma o si se devuelve la firma junto con el contenido. El parámetro detached solamente es válido cuando se maneja el formato PKCS7.
Verify(String signature, String text, [boolean detached]): Boolean Dado un texto y una firma, verifica si la firma corresponde al texto utilizando la información del certificado configurado. El parámetro detached solamente es válido cuando se maneja el formato PKCS7.

Propiedades

Certificate: CryptoCertificate  Permite especificar el certificado que se utilizará para firmar el texto.
Algorithm: CryptoAlgorithm Permite especificar el algoritmo de firmado.
ValidateCertificate: Boolean Especifica si en el método Verify se debe validar o no que el certificado sea un certificado válido.

Ejemplo

A. Cómo firmar un texto

En el siguiente ejemplo dado un certificado en formato .pfx, se firma un texto usando el algoritmo de Hash SignSHA1withRSA.
Primero se carga el certificado de disco; si no hay errores en la carga del mismo, se pregunta si éste tiene clave privada para poder firmar el texto. En caso positivo se selecciona un algoritmo de Hash para el firmado y se firma el texto usando el método Sign.
&errorCode = &CryptoCert.Load("my_keystore.pfx", &pwd) //&CryptoCert es de tipo CryptoCertificate.
if &errorCode = 0
    if (&CryptoCert.HasPrivateKey())

     &CryptoSign.Algorithm = CryptoAlgorithm.SignSHA1withRSA //&CryptoSin es de tipo CryptoSign. 
     //CryptoAlgorithm es un dominio enumerado que contiene los algoritmos de criptografía soportados.
     &CryptoSign.Certificate = &CryptoCert
     &signedText = &CryptoSign.Sign(&textToSign, false)
     if &CryptoSign.ErrCode <> 0
       //Process Errors
     endif
   else
   //Process Errors
  endif
else
//Process Errors
endif

B. Cómo verificar la firma de un texto

Dado el certificado con clave pública, se verifica la firma del texto como se muestra en el ejemplo a continuación:
&errorCode = &CryptoCert.Load("MyPublicKey.cer")
if &errorCode = 0
    &CryptoSign.Certificate = &CryptoCert //&CryptoSign de tipo CryptoSign.
    &CryptoSign.ValidateCertificate = True //Truesignifica que el certificado es validado en el proceso de validación de la firma.
    &isOK = &CryptoSign.Verify(&SignedText,&TextToSign,false)
    if not &isOK
         //Process Errors
    else
        //OK
    endif
else
   //Process Errors
endif 

CryptoXMLSign 

Permite manipular firmas digitales para documentos XML con clave pública-privada según el estándar XMLDSIG utilizando certificados X509.

Métodos

Nombre Descripción
Sign(String text): String Retorna el texto resultado de aplicar el algoritmo de firmado utilizando el certificado especificado sobre el texto ingresado.
SignElements(String:text,String:Xpath) El primer parámetro es el XML y el segundo el Xpath. Retorna el texto resultado de aplicar el algoritmo de firmado utilizando el certificado especificado sobre el texto ingresado en el Xpath indicado.
Verify(String signature) Dado un texto y una firma, verifica si la firma corresponde al texto utilizando la información del certificado configurado.

CryptoSymmetricEncrypt

Permite cifrar un texto utilizando un algoritmo simétrico (DES, Rijndael, TripleDES).
El método Create permite especificar el algoritmo que se utilizará para encriptar el texto. De esta manera se puede elegir el algoritmo de encriptación sin necesidad de agregar un nuevo tipo de dato.

Métodos

Nombre Descripción
Encrypt(String text) Dado un texto retorna un texto cifrado utilizando criptografía simétrica según el algoritmo, clave (Key) y vector de inicialización (IV) especificados.
Decrypt(String text) Devuelve el texto dado descifrado según el algoritmo, clave (Key) y vector de inicialización (IV) especificados.

Propiedades

Algorithm: CryptoAlgorithm Permite especificar el algoritmo de encriptación.
Key: String Clave de cifrado, se genera automaticamente al crear la instancia.
IV: String Vector de inicialización de cifrado, se genera automáticamente al crear la instancia.
KeySize: Numeric  
BlockSize: Numeric  

Ejemplo   

A. Encriptar un texto usando un algoritmo simétrico.

En el siguiente ejemplo se encripta el texto contenido en la variable &text, usando el algoritmo TripleDES.
&CryptoEncrypt.Key ="jSYUCTshqx0kOuDs58Nshb1OkZj7mh1S" //CryptoEncrypt es de tipo CryptoSymmetricEncrypt
&CryptoEncrypt.Algorithm = CryptoAlgorithm.EncryptTripleDES
&result = &CryptoEncrypt.Encrypt(&Text) //Se encripta el texto y se obtiene el resultado.

B. Desencriptar un texto encriptado con un algoritmo simétrico.

&Text = &CryptoEncrypt.Decrypt(&EncryptedText) //CryptoEncrypt es de tipo CryptoSymmetricEncrypt
//Process Errors
msg(format("Error %1 %2", &Cryptoencrypt.ErrCode.ToString(), &Cryptoencrypt.ErrDescription))

CryptoAsymmetricEncrypt

Permite cifrar un texto utilizando un algoritmo asimétrico.

Métodos

Nombre Descripción
Encrypt(String text) Dado un texto lo retorna cifrado utilizando criptografía asimétrica según el algoritmo y clave pública del certificado especificado.
Decrypt(String text) Devuelve el texto dado descifrado según el algoritmo y clave privada del certificado especificado. Requiere que el certificado contenga la clave privada.
 

 Propiedades

Algorithm: String Permite especificar el algoritmo de hash que se usará. Se utilizará el SHA256 por omisión.
Certificate: GXCertificate Permite especificar el certificado que se utilizará para encriptar o desencriptar.

Ejemplo
     

A. Encriptar un texto usando un algoritmo de encriptación asimétrico.

En el siguiente ejemplo, se encripta un texto dado un certificado de clave pública.
&ErrorCode = &cryptoCert.Load("MyPublicKey.cer")
if &ErrorCode = 0
      &CryptoEncrypt.Certificate = &cryptoCert //&CryptoEncrypt es de tipo CryptoAsymmetricEncrypt
      &result = &CryptoEncrypt.Encrypt(&Text)
      if &CryptoEncrypt.ErrCode <> 0
           //Process Errors
      endif
endif

B. Desencriptar un texto encriptado con un algoritmo asimétrico.

En este ejemplo se muestra como se desencripta un texto encriptado usando un algorimto asimétrico.
&ErrorCode = &cryptoCert.Load("MyPFX.pfx",&pwd) //&CryptoCert es de tipo CryptoCertificate.
 if &ErrorCode= 0
    if &cryptoCert.HasPrivateKey() 
        &CryptoEncrypt.Certificate = &cryptoCert //&CryptoEncrypt es de tipo CryptoAsymmetricEncrypt
        &Text= &CryptoEncrypt.Decrypt(&EncryptedText)
    else
       //Process Errors
  endif
else
//Process Errors
endif

CryptoCertificate

Es una API que permite la manipulación de certificados.

Métodos

Load(String certPath, [password]): Int ErrCode Permite inicializar un certificado a partir de la ruta y el password en caso de que sea necesario.
FromBase64(String data) Inicializa el certificado a partir de su representación en base64.
ToBase64(): String Obtiene una representación del certificado en base64.
KeyInfo: StringCollection Permite especificar que información del certificado debe ser agregada a la firma cuando se genera una firma XML.
HasPrivateKey(): Boolean Devuelve true si el certificado tiene asociado una private key. La private key es imprescindible para desencriptar un texto.
Verify(): Boolean   Indica si el certificado es confiable.    

Propiedades

 Issuer: Character 
Subject: Character 
SerialNumber: Character  
Thumbprint: Character  
NotAfter: DateTime 
NotBefore: DateTime
Version: Character 
ErrCode  Retorna el error de la última operación
ErrDescription  Retorna la descripción del error de la última operación

Certificados soportados

NET (para el firmado digital, se necesita que tenga asociada la clave privada)
  • DER Encoded Binary X.509 (.cer)
  • Base64 Encoded X.509 (.cer)
  • PKCS#7 / Cryptographic Message Syntax Standard (.p7b)
  • PKCS#12 / Personal Information Exchange (.pfx o .p12)
JAVA
  • DER Encoded Binary X.509 (.cer)
  • Base64 Encoded X.509 (.cer)
  • PKCS#7 / Cryptographic Message Syntax Standard (.p7b)
  • PKCS#12 / Personal Information Exchange (.pfx o .p12)
  • Java Key Store (.jks)
 

domingo, agosto 04, 2013

Algunas herramientas útiles que te ayudarán a mejorar tu privacidad en la red

Tomado de: ARTICULO ORIGINAL
original1-800x450
Hace unas semanas, se desató el escándalo por el programa de espionaje por parte de las agencias de investigación de Estados Unidos, llamado PRISM. A parte de crear revueltas en las calles, también tomaron fuerzas los movimientos activistas en la red, o por lo menos, más que antes, ya que estos existen hace bastantes años. A partir de esto, me permito preguntarles, ¿qué tan conscientes y preocupados son por su privacidad en Internet?
Esa es mi primera y única motivación para escribir esta entrada. Por mi parte, me considero un fanático de la seguridad y de la privacidad, e intento mantenerla lo más que pueda. Aunque existen herramientas y alternativas completamente extremas, en las cuales se debe dar un giro de 180° a la forma en la que usamos la tecnología, en este post voy a recomendar algunas herramientas sencillas, útiles y que no deben faltar a la hora de navegar en Internet. Luego ahondaré en algunas de ellas, y para los fanáticos como yo, entraré a mencionar las que nos pueden brindar un mayor grado de privacidad y seguridad.
Hay que aclarar una cosa, estas herramientas protegerán nuestra información de que otras personas puedan verla. Pero, si tú diste tu información voluntariamente a alguna página como Facebook (lo cual solemos hacer cada día), triste historia, no hay nada que hacer.
Las herramientas que voy a mencionar a continuación, nuevamente aclaro, son herramientas que cualquiera puede utilizar con dos clics, fueron sugeridas por la páginahttps://prism-break.org/ luego escribiré otra entrada sobre las otras que no voy a mencionar acá.

Navegadores

  • Firefox: Aunque es uno de lo más reconocidos, se preguntarán ¿Por qué Firefox y no Chrome? La respuesta es sencilla: Firefox es de código abierto, lo que quiere decir, que cualquiera puede revisar su código (valga la redundancia), y verificar si existen fallos,backdoors, etc. Lo que lo hace más seguro que un navegador propietario, es que en estos, solo unos pueden acceder al código, modificarlo sin que los usuarios sepan y hacer básicamente lo que sea. No pretendo menospreciar a otros navegadores, ya que son fanático de Chrome por sus funcionalidades, pero siempre es bueno tener a la mano una alternativa libre.

Extensiones

  • HTTPS Everywhere: Es una extensión que básicamente lo que hace es forzar a las páginas de Internet a usar el protocolo HTTPS, lo que hace que la información se encripte y viaje segura por la red. Por ejemplo, si tu Facebook, Twitter, Google, etc. acceden por medio de HTTP, porque no tienes la opción de HTTPS activada, o no sabías que existía, la extensión hará que la página use HTTPS y tu información quede confidencial a lo ojos de terceros. Existe para Chrome y Firefox
  • Adblock Edge (Firefox) o Adblock Plus (Firefox y Chrome): Esta extensión se encarga de bloquear todos lo anuncios y propagandas que aparecen en las páginas. Así de sencillo.
  • Disconnect: Esta extensión va un poco más allá de lo que hace Adblock Edge o Plus, y es buscar los rastreadores en la página en la que te encuentre y bloquearlos. En palabras más o palabras menos, lo que hacen estos rastreadores es crear un perfil tuyo de acuerdo a la información que visitas en la web y te muestra anuncios sobre eso, te relaciona búsquedas, y las compañías sabrán que te gusta y que no. De igual forma, con esta extensión puedes decidir cuales rastreadores bloquear y cuales no (incluyendo los addons de Facebook, Twitter y Google en páginas), verificar cómo mejoró la velocidad de tu conexión a la página, ver un mapa de los rastradores a donde envían tu información, y te da una opción de asegurar tu conexión. Se encuentra disponible para Firefox y Chrome. Acá dejo un video de mucha utilidad y para caer un poco en cuenta de lo fácil que es robar y que les roben su información: https://www.youtube.com/watch?v=g5mFbgxMHqQ

Buscadores

  • Duckduckgo y StartPage: Lo que hacen estas dos páginas es redireccionar tu búsqueda a Google, así quedarán registrados en sus servidores la IPs de estas páginas y no la tuya. Lo que intentan hacer es mantener tu privacidad y anonimato. Como plus, Duckduckgo tiene una sección de extras bastante interesantes https://duckduckgo.com/goodies

Sistema Operativo

  • GNU/Linux o BSD: Por que? Por la misma razón de los navegadores.
No sobra decir que es importante hacer uso de contraseñas seguras que utilicen mayúsculas, minúsculas, número y caracteres especiales. De lo contrario, sería muy fácil descubrirlas por distintos métodos. Acá dejo una página donde pueden verificar la seguridad de las contraseñas, y por favor, eviten escribir las suyas, nunca se debe confiar del todo en una página web, o ustedes confiarían en algún extraño que les dijera que les cuida sus objetos personales y les da una tarjeta solo con su nombre. https://howsecureismypassword.net/

martes, abril 30, 2013

De la A a la Z: plan para la recuperación de desastres (RD) TI

Tomado de: Articulo Original.
 
Los planes de recuperación de desastres (RD) en tecnologías de la información (TI) proporcionan un enfoque estructurado para responder a los incidentes no previstos que ponen en peligro la infraestructura de TI, compuesta por hardware, software, redes, procesos y personas. Proteger las inversiones realizadas por su firma en la infraestructura tecnológica y garantizar la capacidad empresarial para ejecutar sus operaciones corporativas son las principales razones para poner en marcha un plan de recuperación de desastres en TI.

En esta guía conoceremos todo lo necesario acerca de la elaboración del plan. Aprenderemos a desarrollar paso por paso el plan de RD de TI y los aspectos más importantes a tener en cuenta durante su elaboración.

ÍNDICE  DE LA PLANTILLA DEL PLAN DE RECUPERACIÓN DE DESASTRES TI
  • ¿Qué es un plan de recuperación de desastres TI?
  • Desarrollo paso a paso del plan de recuperación de desastres TI 
  •  Aspectos clave a considerar al planificar la recuperación de desastres TI
Análisis de la plantilla del plan de RD de TI
===============================================================
 
¿Qué es un plan de recuperación de desastres TI?
Los planes de recuperación de desastres TI proporcionan unos procedimientos detallados a seguir, paso a paso, para recuperar los sistemas y redes que han sufrido disrupciones y ayudar a resumir la normalidad en las operaciones. El objetivo de estos procesos es minimizar cualquier impacto negativo en las operaciones de la compañía. El proceso de recuperación de desastres identifica los sistemas y redes críticos de TI; fija las prioridades para su recuperación y dibuja los pasos necesarios para reiniciar, reconfigurar y recuperar dichos sistemas y redes. Todo plan integral de recuperación de desastres debería incluir también a todos los proveedores relevantes, las fuentes de experiencia para recuperar los sistemas afectados y una secuencia lógica de los pasos a seguir hasta alcanzar una recuperación óptima.

Asumiendo que hemos completado una evaluación de riesgos e identificado amenazas potenciales a nuestra infraestructura de TI, el siguiente paso será determinar qué elementos de dicha infraestructura son los más importantes para las operaciones corporativas. Además, asumiendo que todos los sistemas y redes TI funcionan con normalidad, nuestra empresa debería ser plenamente viable, competitiva y sólida desde el punto de vista financiero. Cuando un incidente —interno o externo— afecta negativamente a la infraestructura de TI, las operaciones corporativas pueden verse amenazadas.  

Según la Publicación Especial 800-34, Contingency Planning for Information Technology Systems (Planificación de contingencias para los sistemas de tecnologías de la información), del National Institute for Standards and Technology (NIST, o Instituto Nacional de Estándares y Tecnología) de los Estados Unidos, lo que viene a continuación resume la estructura ideal de un plan de recuperación de desastres TI.

1. Elaboración de la declaración de políticas para el plan de contingencia.
Contar con unas directivas formales proporciona la autoridad y orientación necesaria para elaborar un plan de contingencia efectivo.

2. Realización del análisis de impacto sobre el negocio (BIA).
El análisis del impacto sobre el negocio ayuda a identificar y priorizar los sistemas y componentes críticos de TI.

3. Identificación de controles preventivos. Medidas que reducen los efectos de las disrupciones al sistema y pueden aumentar su disponibilidad y reducir los costos de contingencia del ciclo de vida.

4.  Desarrollo de estrategias de recuperación. Tener una estrategia integral garantiza que el sistema se recuperará de manera rápida y efectiva después de una disrupción.

5.  Desarrollo de un plan de contingencia TI. El plan de contingencia debería contener orientaciones y procedimientos detallados para la restauración del sistema dañado.

6. Prueba, formación y ejecución del plan. La prueba del plan identifica lagunas en la planificación, mientras que la formación prepara al personal de recuperación para la activación del plan; ambas actividades mejoran la eficacia del plan y la preparación general de la entidad.

7. Mantenimiento del plan. El plan debería ser un documento vivo que se actualiza regularmente para mantenerlo al día con mejoras al sistema.

Desarrollo paso a paso del plan de recuperación de desastres TI
Utilizando la estructura apuntada en la publicación SP 800-34 del NIST, podemos ampliar esas actividades a la siguiente secuencia estructurada de actividades.

1. El equipo de desarrollo del plan debería reunirse con el equipo interno de tecnología, el equipo de aplicación y los administradores de redes, y establecer el alcance de la acción, como por ejemplo, elementos internos, activos externos, recursos de terceros y enlaces a oficinas/clientes/proveedores; debemos asegurarnos de informar a la dirección del departamento de TI sobre dichas reuniones para que estén bien informados.

2. Recopilar todos los documentos relevantes de la infraestructura de redes, como los diagramas de las redes, la configuración de los equipos y bases de datos.

3. Obtener copias de los planes de recuperación de redes y de TI existentes; si no los hay, proceder con los siguientes pasos.

4. Identificar las amenazas contra la infraestructura de TI que la dirección considere más preocupantes: por ejemplo, incendios, errores humanos, apagones de energía, fallo de los sistemas.

5. Identificar aquello que la dirección considera que son las principales vulnerabilidades de la infraestructura: por ejemplo, inexistencia de sistemas de respaldo en caso de apagón eléctrico, copias de bases de datos obsoletas.

6. Examinar el historial previo de apagones y disrupciones, y cómo fueron gestionados por la empresa.

7. Identificar los activos TI que la dirección considera de importancia crítica. Por ejemplo: centro de llamadas, granjas de servidores, acceso a internet.

8. Determinar el tiempo máximo de apagón eléctrico que está dispuesta a aceptar la dirección en caso de indisponibilidad de los equipos TI.

9. Identificar los procedimientos operativos que se utilizan actualmente para responder a los apagones críticos.

10.  Determinar cuándo se probaron estos procedimientos para validar si siguen siendo adecuados o no.

11.  Identificar el/los equipo/s de respuesta de emergencia para todas las disrupciones de la infraestructura crítica de TI; determinar su nivel de conocimientos y preparación para manejar los sistemas críticos, especialmente en casos de emergencia.

12.  Identificar las capacidades de respuesta de los proveedores en casos de emergencia; si se han utilizado alguna vez; si funcionaron correctamente; cuánto paga la compañía por estos servicios; el estado del contrato de servicio; la existencia del acuerdo de nivel de servicio (SLA) y si se usa alguna vez.

13.  Recopilar los resultados de todas las evaluaciones en un reporte de análisis de carencias que identifique lo que se está haciendo frente a lo que debería hacerse, con recomendaciones sobre cómo lograr el nivel requerido de preparación y las inversiones necesarias para ello.

14.  Lograr que la dirección lea el repote y acuerde tomar las acciones recomendadas.

15. Preparar un plan de recuperación de desastres IT que cubra los sistemas y las redes esenciales de TI.

16.  Realizar pruebas de los planes y activos de recuperación de sistemas para validar su operatividad.

17. Actualizar la documentación del plan de RD para que recoja los cambios efectuados.

18. Programar la próxima revisión/auditoría de capacidades de recuperación de desastres TI (Fuente: NIST SP 800-34).

Aspectos clave a considerar al planificar la recuperación de desastres TI
  • Apoyo de la alta gerencia. Asegúrese de tener el apoyo de la alta gerencia a fin de lograr alcanzar los objetivos del plan.
  • Tomarse en serio el proceso de planificación de RD de TI. Aunque la recopilación y análisis de los datos para el plan de RD de TI puede llevar mucho tiempo, no es necesario que tenga docenas de páginas. Los plantes simplemente necesitan la información correcta, y esa información debería ser actual y precisa.
  • Disponibilidad de estándares. Entre los estándares relevantes que podemos usar a la hora de desarrollar los planes de RD de TI están los siguientes: NIST SP 800-34, ISO/IEC 24762 y BS 25777.
  • La sencillez es un grado. Es esencial reunir y organizar la información correcta. 
  • Estudiar los resultados con las unidades de negocio. Una vez finalizado el plan de recuperación de desastres, debemos cotejar sus conclusiones con los líderes de las unidades de negocio para comprobar que nuestras premisas son correctas.
  • Flexibilidad. La plantilla sugerida en este artículo puede ser modificada en lo que sea necesario para conseguir nuestros objetivos.

Análisis de la plantilla del plan de RD de TI
A continuación, examinaremos el índice de la plantilla, señalando las cuestiones clave a tratar y las actividades a desarrollar.

1. Declaración de intenciones del departamento de TI — Marca la pauta y dirección del plan.

2. Declaración de políticas — Es muy importante incluir una declaración aprobada con las políticas relativas a la provisión de servicios de recuperación de desastres.

3. Objetivos — Principales metas del plan.

4. Información de contacto del personal clave — Muy importante tener la información clave de contacto cerca del comienzo del plan. Es la información más susceptible de ser utilizada de inmediato y debería ser fácil de ubicar.

5. Visión general del plan — Describe los aspectos básicos del plan, como la actualización.

6. Respuesta de emergencia — Describe lo que hay que hacer inmediatamente en caso de incidente.

7. Equipo de recuperación de desastres — Miembros y datos de contacto del equipo de RD.

8. Alerta de emergencia, escalada y activación del PRD — Pasos a seguir en las primeras fases del incidente hasta que se activa el plan de RD.

9. Medios — Consejos para tratar con los medios de comunicación.

10.  Seguro — Resume la cobertura de seguros asociada con el entorno TI y otras políticas relevantes.

11.  Cuestiones legales y financieras — Acciones a tomar para administrar las cuestiones legales y financieras.

12.  Ejecución del PRD — Subraya la importancia de ejecutar el plan de recuperación de desastres.

13.  Apéndice A — Plantillas del plan de recuperación de desastres tecnológicos — Plantillas modelo para una variedad de recuperaciones por incidentes tecnológicos; es útil tener disponible la documentación técnica de algunos proveedores selectos.

14.  Apéndice B — Formularios recomendados — Formularios listos para usar que ayudarán a facilitar la finalización del plan.
Teniendo en cuenta las inversiones que las empresas realizan en infraestructuras TI, sería conveniente que inviertan también tiempo y recursos para proteger dichas inversiones de acontecimientos no previstos y potencialmente destructivos.

Acerca del autor: Paul Kirvan, CISA, CISSP, FBCI, CBCP, tiene más de 20 años de experiencia en gestión de continuidad del negocio como consultor, autor y educador. Además, es secretario del Instituto de Continuidad del Negocio, capítulo de E.U.

lunes, agosto 29, 2011

Top 5 errores de seguridad en el mundo IT

Top 5 errores de seguridad en el mundo IT

Lo cierto es que ya estamos acostumbrados -y casi inmunizados- a los clásicos listados de errores típicos en materia de seguridad: No parchear sistemas, no realizar una buena monitorización etc etc ...

Es difícil aportar algo nuevo a esta clase de 'rankings', no obstante he encontrado este artículo de Network World en el que se aborda la problemática desde un punto de vista de enfoque que me ha gustado bastante. Me tomo la licencia de transcribir el artículo con mi propia interpretación

Error 1: Pensar que la mentalidad empresarial de la organización es la misma que hace cinco años

Hace cinco años el tipo de dispositivos que accedían a una red corporativa se limitaban a los equipos plataformados de la compañía, sean equipos de sobremesa o portátiles.

Actualmente eso no es así, cada vez más se imponen los 'smartphones' como elementos empresariales, y ahora asistimos a la moda de los tablets. En definitiva, un montón de nuevos equipos que ni de lejos han sido diseñados para ejercer sobre ellos el tipo de control que se puede tener sobre el típico equipo Windows dentro de un dominio.

Sumemos a este escenario la cantidad de aplicaciones 'Cloud' de uso ampliamente difundido, y tenemos un escenario bastante complejo de gestionar que requiere una estrategia mucho mas moderna.

Error 2: No saber establecer las relaciones correctas entre el equipo de seguridad y el resto de áreas IT

El ya clásico tira-y-afloja entre la división de seguridad y el resto de departamentos. Para cualquiera que haya trabajado en una empresa IT le sonarán altamente familiares las discusiones entre lo que quiere el grupo de desarrollo, los plazos del grupo de marketing, el coste que impone el grupo financiero y las objeciones del equipo de seguridad.

Tener muy clara y definida la 'cadena de decisión' es clave.

Error 3: No comprender que la virtualización requiere nuevas estrategias de seguridad

Es obvio que según se van integrando las tecnologías de virtualización el enfoque debe cambiar. Se ha puesto muy de moda el introducir servicios ya paquetizados en formato vmware -por ejemplo- que supuestamente son 'plug&play', pero en lo que pocas veces se piensa es en como se parchean estos equipos y como se gestiona su seguridad

Error 4: No estar preparados para una fuga de datos

Probablemente siempre se tiene claro que documentos son considerados sensibles dentro de una organización pero ¿y si aparecen fuera de la organización? Tener mecanismos para identificar accesos a documentos y disponer de una trazabilidad al respecto es clave

Error 5: Complacencia con los proveedores

Muy típico en España, una vez la organización establece su red clientelar de 'partners' pocas veces existe un espíritu crítico para revisar lo que nos están vendiendo. Hay que tener claro que la solución ofertada por un proveedor X no tiene porque ser la mas correcta aunque en anteriores ocasiones nos haya suministrado aplicaciones interesantes.

Hay que mantenerse alerta y al tanto de lo que hay en el mercado de una forma global, no solo a través de los ojos de nuestros partners.

Autor: Yago Jesús

Leer más: Segu-Info: Top 5 errores de seguridad en el mundo IT http://blog.segu-info.com.ar/2011/08/top-5-errores-de-seguridad-en-el-mundo.html#ixzz1WQPIZAtu
Under Creative Commons License: Attribution Non-Commercial Share Alike