<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Security Art Work</title>
	
	<link>http://www.securityartwork.es</link>
	<description>Blog de Seguridad de la Información de S2 Grupo</description>
	<lastBuildDate>Wed, 19 Jun 2013 08:16:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SecurityArtWork" /><feedburner:info uri="securityartwork" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>SecurityArtWork</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>La teoría es muy bonita, pero no recupera sistemas (BCP)</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/gsALBZJP9sg/</link>
		<comments>http://www.securityartwork.es/2013/06/19/la-teoria-es-muy-bonita-pero-no-recupera-sistemas-bcp/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 08:13:00 +0000</pubDate>
		<dc:creator>Adrián Capdevila</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12334</guid>
		<description><![CDATA[Al hilo de posts anteriores sobre continuidad de negocio (tipos de proyectos, pruebas, aspectos a tener en cuenta, tiempos, UNE 71599/BS 25999, &#8230;), hoy vamos a centrarnos en la realización de las pruebas, pero no de planes de prueba de esos que se revisan simbólicamente una vez al año para cumplir con requisitos de auditoría. [...]]]></description>
			<content:encoded><![CDATA[<p>Al hilo de posts anteriores sobre continuidad de negocio (<a href="http://www.securityartwork.es/2013/04/04/continuidad-de-negocio-tipos-de-proyectos/">tipos de proyectos</a>, <a href="http://www.securityartwork.es/2012/07/16/continuidad-de-negocio-las-pruebas-i/">pruebas</a>, <a href="http://www.securityartwork.es/2012/06/27/continuidad-de-negocio-aspectos-a-tener-en-cuenta/">aspectos a tener en cuenta</a>, <a href="http://www.securityartwork.es/2012/06/22/continuidad-de-negocio-analisis-de-impacto-sobre-el-negocio-tiempos-ii/">tiempos</a>, <a href="http://www.securityartwork.es/2011/05/27/continuidad-de-negocio-une-71599-bs-25999/">UNE 71599/BS 25999</a>, &#8230;), hoy vamos a centrarnos en la realización de las pruebas, pero no de planes de prueba de esos que se revisan simbólicamente una vez al año para cumplir con requisitos de auditoría. Hablaremos de porqué hace falta hacer pruebas de verdad.</p>
<p>Y es que si algo tiene que fallar algún día, está claro que fallará durante una presentación en directo, durante una importante migración o, como no, durante una contingencia.</p>
<p><strong>Empecemos por la parte organizativa:</strong></p>
<p>Uno de los grandes errores de los planes de continuidad es tener únicamente una serie de documentos técnicos para restaurar HW/SW. Evidentemente <strong>esto no podemos considerarlo como un plan de continuidad TIC</strong> (véase este post sobre los tipos de los proyectos: http://www.securityartwork.es/2013/04/04/continuidad-de-negocio-tipos-de-proyectos/) ya que se habrá quedado fuera toda la parte organizativa, pero es una situación que encontramos bastante frecuentemente. Esto suele ocurrir cuando no se aborda la tarea como un proyecto en condiciones, sino que se le encarga al departamento de TI <em>“Hacer un plan de esos por si esto explota. Y rapidito que tenéis más cosas que hacer”</em>.</p>
<p>Pues bien, dependiendo de la naturaleza del negocio, la parte organizativa seguramente será  mucho más importante que la parte técnica, ya que de nada sirve documentar como restaurar equipos si no hay un local donde hacerlo, si no hay personal de respaldo, o nadie que pueda tomar decisiones relevantes. Por culpa de este tipo de documentos puede pasar que ante una contingencia se dediquen recursos a recuperar antes la aplicación de gestionar las vacaciones del personal que la centralita de atención al usuario u otras situaciones similares.</p>
<p>Al respecto, además de crear la política y establecer prioridades, se tienen que crear los planes clásicos de continuidad organizativa como pueden ser reubicación de personal, sustitución de personal, contacto con proveedores y clientes, etc., los cuales deben ir acompañados de un <strong>Plan de Pruebas</strong>. Puede parecer que estos planes al no tener componente tecnológica no pueden fallar, pero fallan, y lo peor, hacen que otros planes no puedan ejecutarse. Puede parecer que un plan de reubicación de personal no puede fallar ya que solo hace falta tener, por ejemplo, comunicación con el CPD de respaldo, pero en el momento de la contingencia podemos darnos cuenta de que necesitábamos una impresora con la que no habíamos contado, que las comunicaciones no son suficientes, que el local no tiene mesas, que sin la libreta del 2º cajón del administrador de sistemas no se puede acceder a X servidor, o que nadie recuerda la IP a la que conectar para hacer una tarea ya que todo el mundo la tenía en favoritos y sus equipos están en la ubicación a la que no se puede acceder.</p>
<p>Por otro lado, además de probar los planes con el fin de buscar errores o detalles que hayamos dejado fuera, las pruebas de la parte organizativa <strong>sirven como entrenamiento</strong> por si llega el día en que hay que utilizarlos. Para un técnico restaurar un sistema puede ser algo relativamente rutinario, pero seguramente la responsabilidad de activar la contingencia y de empezar a lanzar planes recaerá en alguien que no se dedica a hacer esto frecuentemente. El cómo se actúe durante la primera hora será decisivo para el buen funcionamiento del plan ya que una mala decisión puede retrasar todo el restaurado, por lo que es imprescindible que quien tenga que tomar las decisiones tenga cierta soltura y que conozca perfectamente el plan, y esto solo se consigue <strong>practicándolo</strong>.</p>
<p><strong>¿Y qué ocurre con la parte técnica?</strong></p>
<p>Si en la parte organizativa lo más importante es probarlo todo para familiarizarse con el entorno y ver que no se han dejado cabos sueltos, en la parte técnica nuestro peor enemigo es el <em>“pues esto tendría que funcionar, peeeero&#8230;</em>. Por desgracia hoy en día tenemos un montón de tecnologías que nos deberían facilitar la vida ante una contingencia como pueden ser SAIs monstruosos, cabinas de discos inmensas, virtualización por todas partes, sistemas de alta disponibilidad, grupos electrógenos, etc. los cuales nos dan una (falsa) sensación de tranquilidad que puede hacer cundir el pánico si no todo es tan maravilloso como nos han prometido.</p>
<p>Todo es superseguro pero, ¿cuántos se atreven a cortar la luz del CPD sin avisar a nadie confiando en que los SAIs harán su trabajo y que los aires aguantarán? ¿Tirarías del cable de red del cortafuegos principal confiando en que el secundario balanceará perfecto? ¿Borrarías un servidor crítico tranquilamente sabiendo que según el fabricante del robot de copias en 20 minutos lo tienes restaurado? Si alguien contesta a todo que sí o es un valiente o lo tiene todo muy atado (lo cual efectivamente puede suceder).</p>
<p>En la práctica es relativamente frecuente encontrar copias de seguridad corruptas, lentitud en los restaurados o comunicaciones, backups de configuraciones de electrónica de red desactualizados o scripts de restaurado que ya no funcionan con el último cambio que se hizo, y la única forma de detectar estas situaciones es, una vez más, probar que todo funciona.</p>
<p>Resulta además muy recomendable (por no decir necesario) hacer las pruebas técnicas junto con la parte organizativa ya que, por ejemplo, ni se trabaja igual ni se dispone de los mismos recursos en la oficina y en la ubicación alternativa. Detalles como no tener una copia de los certificados de la VPN o del fichero de contraseñas disponible desde una ubicación alternativa, haber olvidado abrir algún puerto en el cortafuegos, o tener las instrucciones técnicas de cómo restaurar una copia dentro de la propia copia, son situaciones que se pueden solventar muy fácilmente, pero que se tienen que detectar antes&#8230; ¡PROBÁNDOLO!</p>
<p><strong>¿Y si montamos un teatrillo?</strong></p>
<p>A alguno le parecerá que esto es cosa de modernos, pero una buena forma de hacer las pruebas de la forma más realista posible es hacerlas sin avisar a nadie y añadir dramatismo teatrero como si algo realmente hubiese pasado (aunque todos sepan que no es así): en lugar de convocar una reunión para ver cómo se planifica la puesta en marcha de los planes, se puede montar un pequeño circo en la oficina un día que nadie lo espere y llegar a escenificar que ha sucedido alguna catástrofe y que el negocio no puede operar normalmente. También se puede activar el plan antes de la hora de entrar a la oficina llamando por teléfono a los implicados en las pruebas para que acudan directamente al centro de respaldo, de modo que a nadie le dará tiempo de “hacer trampas” y llevarse la documentación que necesita en un USB, o enviarse al correo la última versión del fichero de claves que ha olvidado actualizar en el repositorio de backup.</p>
<p>Para los más imaginativos se puede incluso montar un pequeño juego de rol, donde un “master” va lanzando cataclismos naturales sobre el CPD, o hace que los técnicos enfermen misteriosamente a medida que los pobres contingente recuperan servicios, pero eso lo contaremos en otra ocasión.</p>
<p>Esperamos que haya quedado claro que si realmente queremos que un plan de pruebas tenga sentido y queremos ver como funcionaríamos ante una contingencia real, no nos vale con restaurar un servidor de forma muestral, o firmar un contrato con un proveedor que nos garantiza el suministro: hay simular que el negocio no puede operar y no quedarse en pruebas de concepto o soluciones a medias.</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/gsALBZJP9sg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/19/la-teoria-es-muy-bonita-pero-no-recupera-sistemas-bcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/19/la-teoria-es-muy-bonita-pero-no-recupera-sistemas-bcp/</feedburner:origLink></item>
		<item>
		<title>¿Y ahora qué? Algunas ideas para seguir formándose</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/LDHG0fozFOE/</link>
		<comments>http://www.securityartwork.es/2013/06/18/y-ahora-que-algunas-ideas-para-seguir-formandose/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 08:45:00 +0000</pubDate>
		<dc:creator>Joel Sevilleja</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12313</guid>
		<description><![CDATA[Ahora con la llegada del buen tiempo es el momento de que los recién graduados en informática escojan entre las opciones disponibles para seguir formándose. Desde este blog queremos aportar nuestro granito de arena recordando algunas de las opciones disponibles: Seguridad de las tecnologías de la información y la comunicación (MISTIC). Máster oficial no-presencial impartido [...]]]></description>
			<content:encoded><![CDATA[<p>Ahora con la llegada del buen tiempo es el momento de que los recién graduados en informática escojan entre las opciones disponibles para seguir formándose. Desde este blog queremos aportar nuestro granito de arena recordando algunas de las opciones disponibles:</p>
<ul>
<li><a href="http://www.uoc.edu/estudios/masters-universitarios/seguridad-tecnologia-informacion-comunicacion/presentacion/index.html">Seguridad de las tecnologías de la información y la comunicación (MISTIC)</a>. Máster oficial no-presencial impartido por la UOC junto a profesores de la UAB y la URV. La duración estimada es de 1 año (60 créditos), y aunque los idiomas oficiales son el castellano y el catalán, los estudiantes no-parlantes de este último idioma no tendrán ningún tipo de problema. El precio se sitúa sobre los 4100 €. </li>
<li><a href="http://www.uem.es/postgrado/master-oficial-en-seguridad-de-las-tecnologias-de-la-informacion-y-las-comunicaciones/">Máster universitario en seguridad de tecnologías de la información y comunicaciones</a>. Máster oficial presencial (viernes tarde y sábados) impartido por la UEM. Al igual que el anterior, son 60 créditos. Para más información, consultar su página web. </li>
<li><a href="http://www.unir.net/postgrados-online/master-seguridad-informatica.aspx">Máster en Seguridad Informática</a>. Máster oficial no-presencial impartido por la UNIR. Cómo todos los anteriores, son 60 créditos. Para más información, consultar su página web.</li>
</ul>
<p>Por otra parte, existen otras certificaciones no-universitarias que son más que interesantes:</p>
<ul>
<li><a href="http://www.offensive-security.com/information-security-certifications/oscp-offensive-security-certified-professional/">Offensive Security Certified Professional</a>. Consta del curso “Penetration Testing with Backtrack”, cuya duración y precio es variable. Durante el curso, el alumno tendrá acceso a una red de ordenadores (averiguar cuántos es parte del curso), dónde se practicarán todas las fases de un pentest, atacando sin distinguir entre servidores, máquinas de cliente, y distintos sistemas operativos. Desde la experiencia, es posible sacárselo en 2 meses, aunque depende de lo agobiado que quiera y pueda ir cada uno. Los precios oscilan entre los 750 $ (1 mes) y 1100 $ (3 meses). Una vez finalizado el curso, el alumno tiene un periodo de 3 meses para realizar el examen de certificación, que dura 24 horas y en el que debe hacerse con el control de varias máquinas. Finalizadas las 24 horas, tiene otras 24 horas para realizar y entregar el informe. Un curso extremadamente divertido, dónde dormir no es una opción. </li>
<li><a href="https://www.offensive-security.com/information-security-training/cracking-the-perimeter/">Cracking the perimeter</a>. Es la versión avanzada del curso anterior. Para acceder es necesario superar unas pruebas de admisión, y desembolsar entre 1200 y 1500 $, dependiendo de si se opta por realizarlo en uno o dos meses. En este caso, la duración del examen es de 48 horas.</li>
<li>Cursos prácticos también son los ofrecidos por <a href="http://www.securitytube.net/">www.securitytube.net</a>. Son cursos prácticos bastante asequibles económicamente. Personalmente, me gustan los de desarrollo en Python y ensamblador. También ofrecen de manera gratuita un curso (sin certificación) de Metasploit.</li>
</ul>
<p>Y cómo siempre está la opción de la autoformación, de la que se ha hablado largo y tendido. Por suerte hoy día existen multitud de <em>sites</em> que ofrecen CTF (Capture The Flags), máquinas virtuales y multitud de documentación de forma totalmente gratuita y desinteresada.</p>
<p>Entiendo que nos dejamos muchas certificaciones (y muy buenas) en el tintero, pero con esta entrada sólo pretendíamos acercar a la gente al mundillo de la seguridad. Por este motivo, no hemos indicado ninguna certificación que requiera su renovación, como pueden ser SANS, CEH, CISSP, y un largo etc.</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/LDHG0fozFOE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/18/y-ahora-que-algunas-ideas-para-seguir-formandose/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/18/y-ahora-que-algunas-ideas-para-seguir-formandose/</feedburner:origLink></item>
		<item>
		<title>Nuevas tecnologías / viejas vulnerabilidades – Node.js (I)</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/v7vs6n4uyh4/</link>
		<comments>http://www.securityartwork.es/2013/06/17/nuevas-tecnologias-viejas-vulnerabilidades-node-js-i/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 08:27:43 +0000</pubDate>
		<dc:creator>Guillermo Mir</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12284</guid>
		<description><![CDATA[Cada día vemos aparecer en el mercado nuevas tecnologías que permiten nuevas formas de desarrollo para la innovación. Sin ir más lejos, en el mundo de la web, la innovación conduce a la popularidad, haciendo que sitios como Google, Twitter y Facebook triunfen. El principal problema de las nuevas tecnologías es que, aún teniendo la [...]]]></description>
			<content:encoded><![CDATA[<p>Cada día vemos aparecer en el mercado nuevas tecnologías que permiten nuevas formas de desarrollo para la innovación. Sin ir más lejos, en el mundo de la web, la innovación conduce a la popularidad, haciendo que sitios como Google, Twitter y Facebook triunfen.</p>
<p>El principal problema de las nuevas tecnologías es que, aún teniendo la posibilidad de evitar problemas de seguridad conocidos, desafortunadamente, la mayoría de las veces esta no es el objetivo principal, por lo que estos errores se vuelven a repetir una y otra vez. Además de esto, las nuevas tecnologías también tienden a inventar nuevas clases de vulnerabilidad, o nuevas formas para explotar problemas de seguridad conocidos.</p>
<p>Un ejemplo práctico de que lo estoy diciendo es <a href="http://nodejs.org/">Node.js</a></p>
<p><strong>¿Qué es Node.js?</strong></p>
<p><img class="alignleft size-full wp-image-12285" title="Imagen1" src="http://www.securityartwork.es/wp-content/uploads/2013/06/Imagen13.png" alt="" width="325" height="180" />El 8 de noviembre de 2009, Ryan Dahl presentó Node.js como un entorno de desarrollo en JavaScript de lado de servidor, totalmente asíncrono y <a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos">orientado a eventos</a>. Usa el motor de <a href="https://code.google.com/p/v8/">JavaScript V8 de Google</a>, dotando a este entorno de una gran velocidad y agilidad, y sumando además una capacidad de Entrada/Salida realmente ligera y potente. Esto permite construir aplicaciones altamente escalables y escribir código que maneje miles de conexiones simultáneas en un solo equipo. Entre las compañías que usan esta tecnología destacamos LinkedIn, eBay, Yahoo!, Microsoft y nosotros mismos (S2 Grupo).</p>
<p><strong>¿Qué es el V8?</strong></p>
<p>V8 es el motor de JavaScript que Google usa en su navegador Chrome. Un motor normal de JavaScript, interpreta el código y lo ejecuta. El V8 es ultra-rápido, está escrito en C++ y se puede descargar por separado e incorporarlo a cualquier aplicación. Así nace Node.js, cambiando el propósito por el que se creó V8 y usándolo en el lado del servidor.</p>
<p style="text-align: center;"><img class="size-full wp-image-12288 aligncenter" title="Imagen2" src="http://www.securityartwork.es/wp-content/uploads/2013/06/Imagen2.png" alt="" width="600" /></p>
<p><strong>¿Para qué JavaScript en el lado del servidor?</strong></p>
<p>La meta principal de Node.js es la de proporcionar una manera fácil de construir programas de red escalables. En lenguajes como Java™ y PHP, cada conexión genera un nuevo hilo con su respectiva reserva de memoria. Esto limita la cantidad de peticiones concurrentes que puede tener un sistema. Por ejemplo, un servidor muy común es Apache, el cual crea un nuevo hilo por cada conexión cliente-servidor. Esto funciona bien con pocas conexiones, pero a partir de 400 conexiones simultáneas, el número de segundos para atender las peticiones crece considerablemente. Así pues, Apache funciona bien en entornos clásicos, pero no es el mejor servidor para lograr máxima concurrencia.</p>
<p>Node.js resuelve este problema cambiando la forma en que se realiza una conexión con el servidor. En lugar de generar un nuevo hilo de SO para cada conexión, cada conexión entra en el bucle de ejecución y dispara el evento dentro del “pool” de trabajadores. De esta forma, nunca se quedará en punto muerto, dado que no se permiten bloqueos y no se bloquea directamente las llamadas de E/S, permitiendo así miles de sesiones concurrentes (en un sistema UNIX este límite puede rondar por las 65.000 conexiones).</p>
<p><strong>¿Cuándo usar Node.js?</strong></p>
<p>Node.js está extremadamente bien diseñado para situaciones en la que se espere una gran cantidad de tráfico y donde la lógica del servidor y el procesamiento requeridos sean sencillas para dar una respuesta lo antes posible. Node.js es especialmente bueno en aplicaciones web que necesiten conexiones persistentes con el navegador del cliente. Usando ciertas librerías, en concreto socket.io, puedes hacer que una aplicación envíe datos al usuario en tiempo real; es decir, que el navegador mantenga la conexión siempre abierta y reciba continuamente nuevos datos cuando se requiera. Hay que entender que, aunque se puede usar como servidor de páginas web “clásicas”, no se diseñó para ese fin. Algunos ejemplos de uso:</p>
<ul>
<li>Servicios Web que proporcionen APIs RESTful.</li>
<li>“Timelines” de Twitter.</li>
<li>Aplicaciones de única página.</li>
<li>Videojuegos de varios jugadores.</li>
<li>Aplicaciones tiempo real (Chats, cuadros de mando).</li>
</ul>
<p>Node.js dispone de un gestor de módulos (librerías, plugins, frameworks) npm (Node Package Manager), que amplían la funcionalidad de este y facilitan tareas. En otro futuro post trataremos de hablar de varios frameworks típicos de Node.js, en concreto de Fusker, que es un firewall de aplicación que previene y maneja una gran cantidad de ataques en Node.js.</p>
<p>Entre estas librerías, destacaremos la ya nombrada Socket.io, que es una librería que nos permite manejar eventos en tiempo real mediante una conexión TCP. Socket.io la cual tiene como objetivo hacer que las aplicaciones en tiempo real sean posibles en todos los navegadores y dispositivos móviles, borrando las diferencias entre los mecanismos de transporte (WebSocket, Adobe® Flash® Socket, AJAX long polling, AJAX multipart streaming, Forever Iframe, JSONP Polling).</p>
<p>Estas comunicaciones se pueden poner detrás de un servidor clásico como podría ser Apache o Nginx tal y como explica <a href="http://www.securityartwork.es/2013/06/13/abstrayendo-websockets-ssl/">Vicente Domínguez en su post</a>.</p>
<p><strong>Un poco de código</strong></p>
<p>Para comenzar, podemos descargar Node.js de la página de la aplicación http://nodejs.org/, para varios sistemas. En mi caso he realizado las pruebas con la última versión (tar.gz) para Linux.</p>
<p>Una vez descargado y funcionando vamos a comenzar escribiendo la aplicación en un fichero js. Editamos un archivo “ejemplo-1.js” y escribimos el siguiente código:</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 10px 35px 10px 35px; margin: 0px;">
<pre>var http = require('http');
http.createServer(function (req, res) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');</pre>
</div>
<p>Ahora desde la consola lanzamos la aplicación:</p>
<p><tt>$ node <strong>ejemplo-1.js</strong></tt></p>
<p>Para los que no estéis familiarizados con JavaScript, existen multitud de tutoriales en internet, no es el propósito de este post explicar línea por línea que hacen los programas. En resumen, vemos que “<strong>ejemplo-1.js</strong>” crea un servidor que escucha en el puerto 1337 y, ante cualquier petición a http://127.0.0.1 devuelve un texto plano “Hello World”.</p>
<p>En el siguiente post, apoyándome en la presentación que hizo Sven Vetsch (Redguard AG &#8211; <a href="https://www.redguard.ch/">www.redguard.ch</a>) para el Application Security Forum de 2012, trataré de mostrar cómo pueden afectar las clásicas vulnerabilidades (XSS reflejado, inyección de JS en el servidor, ejecución de código remoto).</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/v7vs6n4uyh4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/17/nuevas-tecnologias-viejas-vulnerabilidades-node-js-i/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/17/nuevas-tecnologias-viejas-vulnerabilidades-node-js-i/</feedburner:origLink></item>
		<item>
		<title>De que hablo cuando hablo de…</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/d8T-pO7iaKk/</link>
		<comments>http://www.securityartwork.es/2013/06/14/de-que-hablo-cuando-hablo-de/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 09:32:32 +0000</pubDate>
		<dc:creator>Antonio Huerta</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12267</guid>
		<description><![CDATA[Una de las cosas que más le llamó la atención a mi compañero de mesa en la oficina (quién venía de trabajar en el ámbito de la ingeniería industrial), fue la increíble capacidad que tenemos los profesionales del sector de las Nuevas Tecnologías para encadenar siglas en una misma frase, como en la siguiente frase: [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.securityartwork.es/wp-content/uploads/2013/06/pc-for-dummies.png" style="margin:0px 30px 20px 0px;float:left;" /></p>
<p>Una de las cosas que más le llamó la atención a mi compañero de mesa en la oficina (quién venía de trabajar en el ámbito de la ingeniería industrial), fue la increíble capacidad que tenemos los profesionales del sector de las Nuevas Tecnologías para encadenar siglas en una misma frase, como en la siguiente frase: <em>Las copias de respaldo se hacen en un dispositivo NAS que implementa RAID 5 configurado con cifrado AES de 256 bits, con mantenimiento NBD</em>. </p>
<p>El objetivo de este post es tratar de hacer un pequeño repaso de algunos términos que habitualmente se escuchan en el mundillo de las TIC, los cuales se refieren a aspectos como control de acceso, redes, cifrado, cumplimiento legal, cumplimiento de la normativa, entre otros. Les pido a nuestros estimados lectores que me concedan la licencia de resumirles de un modo breve y sencillo cada uno de estos conceptos:</p>
<p><strong>AD/DA (Active Directory / Directorio Activo): </strong>Sistema proporcionado por Microsoft para la gestión centralizada de recursos de red, incluyendo la gestión de políticas aplicables, gestión de usuarios y equipos, sistema de autenticación, etc.</p>
<p><strong>AES (Advanced Encryption Standard):</strong> Algoritmo de cifrado simétrico con tamaño de llave de 128 a 256 bits.</p>
<p><strong>ARCO (Acceso, Rectificación, Cancelación y Oposición):</strong> Derechos que los usuarios pueden ejercer sobre la gestión de sus datos personales por parte de una entidad (Responsable de Fichero). Estos derechos comprenden el acceso, la rectificación, cancelación y la oposición de los datos.</p>
<p><strong>BCP/PCN (Business Continuity Plan / Plan de Continuidad de Negocio): </strong>Procedimientos documentados que especifican el proceso que debe seguir una organización para recuperar y restaurar sus funciones críticas o niveles de servicio tras un evento disruptivo.</p>
<p><strong>DBMS/SGBD: (Data Base Management System / Sistema de Gestión de Base de Datos):  </strong>Software que permite la gestión tanto de acceso, almacenamiento, escritura y lectura de la información dispuesta en una base de datos. Ejemplos de estos sistemas son Oracle e Informix.</p>
<p><strong>CERT (Computer Emergency Response Team): </strong>Equipo de personas dedicado a la gestión de la seguridad de la información y a la repuesta ante incidentes y ataques. También conocido como CSIRT (Computer Security and Incident Response Team).</p>
<p><strong>CMDB (Configuration Management Data Base): </strong>Concepto del marco ITIL, que hace referencia a una base de datos que recoge los distintos activos dentro de los sistemas de información y la relación existente entre ellos.</p>
<p><strong>CPD (Centro de Proceso de Datos):</strong> Emplazamiento, sala o estancia donde se albergan los servidores de una organización.</p>
<p><strong>DLP (Data Loss Prevention): </strong>Solución diseñada para detectar potenciales fugas o filtración de información y prevenirlas mediante monitorización, detección y bloqueo de información sensible mientras está en uso (acciones del usuario), en transmisión (tráfico de red) y en almacenamiento. Incluyendo el uso de entornos email, web, equipos de usuario, smartphones, etc. Existen soluciones de diversas marcas como Symantec, McAfee o Cisco.</p>
<p><strong>DoS (Denial of Service): </strong>Ataque que pretende impedir a los usuarios hacer uso de determinados servicios de red, ya sea por consumo de recursos, alteración de información de configuración o de estado, etc. Los ataques emplean los protocolos TCP/IP y generalmente son ataques de inundación.</p>
<p><strong>DMZ (Demilitarized Zone):</strong> Segmento de red ubicado entre la red interna de una entidad y el acceso a internet. El acceso desde esta red a la red interna está bloqueado. En esta red se ubican servidores que gestionan servicios accesibles externamente como FTP, Email, etc.</p>
<p><strong>DRP (Disaster Recovery Plan):</strong> Estrategia que define una organización para restaurar los servicios TI.</p>
<p><strong>HA (High Availability):</strong> Término que hace referencia al diseño de sistemas  (generalmente mediante la redundancia de componentes), garantizando la disponibilidad de los servicios que soportan estos sistemas a pesar de haber potenciales fallos o averías de los componentes de dicho sistema. </p>
<p><strong>HVAC (Heating, Ventilation and Air Conditioning): </strong>Hace referencia a sistemas de climatización.</p>
<p><strong>IDS (Intrusion Detection System): </strong>Sistema software o hardware que mediante la monitorización del tráfico de una red permite la detección de ataques conocidos, así como de comportamientos o patrones sospechosos (escaneos de puertos, ataques de denegación de servicio, etc).</p>
<p><strong>IPS (Intrusion Prevention System): </strong>Sistema software o hardware que además de la funciones que proporciona un IDS, incluye el bloqueo o detención de ataques conocidos, así como comportamientos o patrones sospechosos.</p>
<p><strong>IPSEC (Internet Protocol Security):</strong> Extensiones del protocolo IP empleado para comunicaciones, proporciona autenticación y cifrado. Se implementa a nivel de capa 3 (OSI) y generalmente se emplea para la creación de túneles cifrados (VPN).</p>
<p><strong>LDAP (Lightweight Directory Access Protocol): </strong>Protocolo de acceso unificado que permite el acceso a un servicio de directorio ordenado y distribuido en un entorno de red. </p>
<p><strong>NAC (Network Access Control):</strong> Solución que emplea un conjunto de protocolos para permitir acceso únicamente a nodos de una red (equipos de usuarios) que cumplan determinadas políticas de seguridad, como puede ser: existencia de antivirus, actualizaciones o configuraciones del sistema operativo.</p>
<p><strong>NAP (Network Access Protection): </strong>Adaptación de la solución NAC propuesta por Microsoft.</p>
<p><strong>NAS (Network Attached Storage): </strong>Hace referencia a soluciones de almacenamiento compartido a través de red (normalmente TCP/IP), haciendo uso de un Sistema Operativo optimizado para dar acceso a  protocolos como CIFS, NFS o FTP. Por norma general son dispositivos de almacenamiento específicos, no obstante un servidor configurado para compartir archivos por red podría ser considerado un NAS.</p>
<p><strong>NBD (Next Bussines Day): </strong>Generalmente se utilizan para indicar que el tiempo de atención para el soporte, mantenimiento o cualquier otra garantía será atendida o resuelta en el siguiente día laborable.</p>
<p><strong>NOC (Network Operation Center): </strong>Instalaciones desde las que se controlan y monitorizan redes de comunicaciones.</p>
<p><strong>NTP (Network Time Protocol): </strong>Protocolo de sincronización de relojes para sistemas. Se suele referenciar al control 10.10.6 Sincronización de relojes de la ISO 27002.</p>
<p><strong>OLA (Operation Level Agreement): </strong>Acuerdo interno de una organización donde se establecen los niveles de servicio entre distintos departamentos de la misma organización.</p>
<p><strong>PCI-DSS (Payment Card Industry Data Security Standard): </strong>Normativa de seguridad de la información definida por el PCI Security Standards Council, aplicable a todas las entidades que participan en procesos de pago con tarjeta y el cual recoge los requerimientos técnicos y operativos desarrollados para proteger los datos de los usuarios. Su adopción es obligatoria desde junio de 2007 y las marcas pueden imponer sanciones a las entidades que no realicen las auditorías prescritas.</p>
<p><strong>RF (Resistente al Fuego):</strong> Criterio que evalúa la capacidad de un cerramiento de contener un incendio, se mide en minutos, por ejemplo RF90. Este criterio ha sido sustituido por tres criterios: R (Resistencia), E (Integridad) e I (Aislamiento).</p>
<p><strong>RPO (Recovery Point Objective): </strong>En continuidad de negocio, hace referencia al periodo de tiempo máximo de pérdida de datos tras un incidente. Este valor viene marcado por la política de copias de respaldo o sincronización de sistemas.</p>
<p><strong>RSA (Iniciales de Rives, Shamir y Adleman): </strong>Algoritmo de cifrado basado en clave pública. El tamaño mínimo de clave se considera 1024 bits lo cual equivale a 80 bits en cifrado simétrico.  No obstante se aconseja emplear claves de 2048 bits como mínimo.</p>
<p><strong>RTO (Recovery Time Objective): </strong>En continuidad de negocio, hace referencia al periodo de tiempo requerido para restaurar servicios o actividades tras un evento disruptivo.</p>
<p><strong>SAN (Storage Area Network): </strong>Es una red dedicada al almacenamiento que proporciona acceso a nivel de bloque. La principal diferencia con la NAS es que por norma general se emplea fibra para conectar los servidores a la SAN y los NAS van por red local, por otra parte para hacer uso de la SAN los equipos con acceso deben disponer de un interfaz de red específica para la SAN. Generalmente la SAN es empleada cuando se requieren un alto nivel de rendimiento y el coste de la infraestructura es mucho mayor que la de un NAS.</p>
<p><strong>SLA/ANS (Service Level Agreement/Acuerdo de Nivel de Servicio): </strong>Contrato escrito entre un proveedor de servicio y su cliente con objeto de fijar el nivel acordado para garantizar la calidad de dicho servicio.</p>
<p><strong>SFTP (Secure File Transfer Protocol): </strong>Protocolo del nivel de aplicación que proporciona la funcionalidad necesaria para la transferencia y manipulación de archivos sobre un flujo fiable de datos. Utiliza por norma general SSH para proporcionar la capa de seguridad.</p>
<p><strong>SNMP (Simple Network Management Protocol): </strong>Protocolo de nivel de aplicación para el intercambio de información de administración entre dispositivos de red. Permite a administradores la supervisión del funcionamiento de la red. Cuenta con tres componentes claves: dispositivo administrado, agentes y sistemas administradores de red.</p>
<p><strong>SSL (Secure Socket Layer): </strong>Protocolo de seguridad en las comunicaciones mediante el uso de cifrado. Este proporciona autenticación y confidencialidad de la información. Generalmente el servidor es el que se autentica. Implica el uso de cifrado de clave pública y posteriormente cifrado del tráfico mediante protocolos de cifrado simétrico.</p>
<p><strong>SSO (Single Sign On): </strong>Procedimiento de autenticación que habilita al usuario para acceder a varios sistemas con una sola instancia de identificación.</p>
<p><strong>TLS (Transport Layer Security): </strong>Protocolo que supone la evolución de SSL.</p>
<p><strong>UPS/SAI (Uninterruptable Power Supply/Sistema de Alimentación Ininterrumpido): </strong>Dispositivo que proporciona energía eléctrica por un tiempo limitado ante fallos en el suministro eléctrico. Se emplea para limitar los riesgos asociados a caídas repentinas de suministro que puedan afectar a los sistemas de información críticos.</p>
<p><strong>WSUS (Windows Server Update Server): </strong>Servicio para proporcionar las actualizaciones de seguridad para los sistemas operativos de Microsoft, permitiendo que las actualizaciones de los distintos equipos se descarguen de modo centralizado.</p>
<p><strong>XSS (Cross Site Scripting): </strong>Ataque asociado a aplicaciones web, que consiste en inyectar en páginas web vistas por el usuario código en lenguaje script, evitando medidas de control. Este tipo de ataque permite secuestrar sesiones de usuarios, entre otros.</p>
<p>Estoy seguro de que la mayoría de nuestros lectores conocían el significado de estos acrónimos. No obstante, nunca viene mal recordar… A veces la memoria nos juega malas pasadas. Es probable que me haya dejado algún término, pero creo que esto será suficiente para defenderse de los envites de los auditores a los que se enfrenten ;)</p>
<p>*<em>Para la definición de algunos de los términos anteriormente descrito se ha empleado como principal fuente <a href="http://es.wikipedia.org/wiki/Wikipedia:Portada">wikipedia.org</a></em></p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/d8T-pO7iaKk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/14/de-que-hablo-cuando-hablo-de/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/14/de-que-hablo-cuando-hablo-de/</feedburner:origLink></item>
		<item>
		<title>Abstrayendo WebSockets SSL</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/Hr1GjJhY7c8/</link>
		<comments>http://www.securityartwork.es/2013/06/13/abstrayendo-websockets-ssl/#comments</comments>
		<pubDate>Thu, 13 Jun 2013 08:55:41 +0000</pubDate>
		<dc:creator>Vicente Dominguez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12232</guid>
		<description><![CDATA[Ahora que la W3C y el IETF están cerrando la normalización de toda la implementación de websockets, no cabe duda de que el futuro RFC6455 está siendo cada vez más utilizado en multitud de plataformas donde la experiencia de usuario es un plus más sobre su oferta de servicios. El protocolo implementado ya en todos [...]]]></description>
			<content:encoded><![CDATA[<p>Ahora que la W3C y el IETF están cerrando la normalización de toda la implementación de websockets, no cabe duda de que el futuro <a href="http://tools.ietf.org/html/rfc6455">RFC6455</a> está siendo cada vez más utilizado en multitud de plataformas donde la experiencia de usuario es un plus más sobre su oferta de servicios.</p>
<p>El protocolo implementado ya en todos los navegadores permite unas nuevas líneas de comunicación cliente-servidor bidireccionales que desde el punto de vista de la seguridad se deben tener en cuenta. Además, desde la administración de sistemas (que es lo que toco), sí existe la responsabilidad de diseñar una buena arquitectura que ayude a la seguridad de todo el conjunto aunque al final uno queda a merced del buen código del propio desarrollo.</p>
<p>Mirando desde el lado del cliente ya existen en la red ciertos documentos (véase <a href="http://media.blackhat.com/bh-us-12/Briefings/Shekyan/BH_US_12_Shekyan_Toukharian_Hacking_Websocket_Slides.pdf">Shekyan Toukharian &#8211; Hacking Websocket Slides</a>) de cómo cualquier ejecución no autorizada sobre protocolos embebidos en el navegador, como puede ser javascript, pueden lanzar comunicaciones que vayan por estos canales bidireccionales que proporciona los <em>websockets</em> en background. Todo ello sin el conocimiento del usuario.</p>
<p>Por otro lado, desde el punto de vista del servidor, la perspectiva puede ser otra. </p>
<p>Como la comunicación entre el cliente (navegador) y el servidor es necesariamente directa para mantener esos canales, ciertas instalaciones acaban exponiendo sus servidores sobre los que se soportan los <em>websockets</em>. Realmente esto no sería mayor problema si se realizase  correctamente pero sí que lo puede ser cuando dicha exposición, para permitir la comunicación, conlleva que el <em>backend</em> quede alcanzado desde fuera para que los navegadores, y desde ese momento todo Internet, puedan acceder a él.</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2013/06/WebSockets1.png" alt="" title="WebSockets1" width="900" height="300" class="aligncenter size-full wp-image-12233" /></p>
<p>Los inconvenientes son dos muy claros:</p>
<ul>
<li>No es posible la aplicación eficiente de reglas cuando son los navegadores de móviles, navegadores de portátiles y n-mil dispositivos de internet los que tienen que acceder al server vía <em>websockets</em>. </li>
<li>Multitud de servidores necesitan de extensiones no instaladas en los ISPs para su uso.</li>
</ul>
<p>La conclusión de estos inconvenientes es que en ocasiones se opta por la exposición directa del <em>backend</em> como ya comentábamos (o la no implementación de websockets, con la renuncia evidente a sus características). Sin embargo, hay multitud de LB (<em>loadbalancers</em>) que SÍ soportan websockets: <em>haproxy</em>, <em>nginx</em> desde hace poquillo, varnish…. y también los hay que hasta la fecha usaban implementaciones más controvertidas: apache con <em>mod_pywebsocket</em>, que no obstante, no es de todos los gustos.</p>
<p>Realmente hay cientos de arquitecturas pero para hoy vamos a elegir como ejemplo <strong>Nginx con Node.js</strong> y <strong>Sockect.io</strong>.</p>
<p>Las implementaciones de <tt>Socket.io</tt> son sencillas. Es autocontenido y el trabajo con <em>sockets</em> del propio <tt>Socket.io</tt> permite que se pueda optar por un acceso directo contra el puerto del <tt>Node.js</tt>. No obstante, si el despliegue de <tt>Node.js</tt> lo hacemos desde el <em>backend</em> (por un tema de intercomunicación y escalabilidad) exponemos un servicio que tal vez no era necesario. La alternativa tal vez podría ser optar por &#8220;encapsular&#8221;, y por tanto abstraer el acceso al <tt>Node.js</tt> a través de un segundo dominio y gracias a un nginx por ejemplo.</p>
<p>Nginx nos permite también una exquisita creación de hilos en caso de picos y nos proporciona un buen nivel de abstracción para <em>websockets</em> desde su versión 1.3.x (<strong>que no recomiendo porque anda con algún importante bug de seguridad</strong>). Así que nos metemos en la 1.4.1 ya que las versiones anteriores no soportan estas comunicaciones.</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2013/06/WebSockets2.png" alt="" title="WebSockets2" width="650" height="450" class="aligncenter size-full wp-image-12246" /></p>
<p>El proceso es sencillo. Únicamente vamos a necesitar un nombre de dominio adicional a nuestra <em>config</em> (si ya hubiera una). Esto nos permite de forma muy sencilla desmarcarnos del resto de funciones que esté realizando nginx (web, vídeo, etc etc) y usar la funcionalidad de <em>websockets</em> únicamente para ese nombre de dominio (<tt>servers</tt> en nginx).</p>
<p>Tenemos que crear un upstream para el control de los <em>backends</em> y creamos <tt>sock.midominio.es</tt></p>
<p>Al final la implementación sería algo como:</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 10px 35px 10px 35px; margin: 0px;">
<pre>
upstream websockets_nodejs {
        server backend:9090;
}

server {
        listen       80;
        server_name  sock.midominio.es;
        root   /usr/local/app/sock/app/webroot;
        keepalive_timeout  512;

        location / {
                proxy_pass  http://websockets_nodejs;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header        Host            $http_host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        Upgrade $http_upgrade;
                proxy_set_header        Connection "upgrade";
        }
}
</pre>
</div>
<p>Varias anotaciones:</p>
<ul>
<li><strong>server backend:9090:</strong> <em>backend</em> es un nombre de <tt>/etc/hosts</tt> y 9090 es el puerto por defecto donde se levanta nodejs.</li>
<li><strong>keepalive_timeout:</strong> mejor corto que largo por tema de recursos pero si el código no es capaz de controlar la conexión es posible indicar un número superior para evitar algunos comportamientos anómalos.</li>
<li>El resto de líneas son de manual. Únicamente faltaría indicar en nuestro desarrollo como acceder al server que gestiona los <em>websockets</em> indicando nuestro nuevo dominio y si, todo por el puerto 80.</li>
</ul>
<p>Con esto acabamos de incorporar un nivel de abstracción más sobre nuestra arquitectura delegando al buen hacer de nginx el control y gestión de las conexiones contra el backend <tt>Node.js+Socket.io</tt>. </p>
<p>Evidentemente es posible configurarlo sobre SSL sin problemas:</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 10px 35px 10px 35px; margin: 0px;">
<pre>
upstream websockets_nodejs {
        server backend:9090;
}

server {
        listen       443;
        server_name  sckts.midominio.es;
        root   /usr/local/app/sock/app/webroot;
        index index.php;
        keepalive_timeout  512;

        ssl                  on;
        ssl_certificate      /etc/nginx/server.crt;
        ssl_certificate_key  /etc/nginx/server.key;

        ssl_session_timeout  5m;

        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;

        location / {
                proxy_pass  http://websockets_nodejs;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header        Host            $http_host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        Upgrade $http_upgrade;
                proxy_set_header        Connection "upgrade";
        }
}
</pre>
</div>
<p>Ahora en la configuración de vuestro desarrollo deberéis conectar sobre <em>https</em>.<br />
En nuestro entorno de pruebas ha ido de maravilla aunque siempre habrá alguien que podrá apuntar más datos interesantes sobre estas arquitecturas. En ese caso, bienvenido sea.</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/Hr1GjJhY7c8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/13/abstrayendo-websockets-ssl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/13/abstrayendo-websockets-ssl/</feedburner:origLink></item>
		<item>
		<title>Fundamentos sobre certificados digitales (III): Cadena de confianza</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/5H3Iml2A9Xc/</link>
		<comments>http://www.securityartwork.es/2013/06/12/fundamentos-sobre-certificados-digitales-iii-cadena-de-confianza/#comments</comments>
		<pubDate>Wed, 12 Jun 2013 07:16:49 +0000</pubDate>
		<dc:creator>David Cutanda</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12225</guid>
		<description><![CDATA[Siguiendo en la línea de los anteriores posts (Fundamentos sobre certificados digitales, primera y segunda parte), continuamos hablando de firma y certificación digital. En este caso, y a mi ver, siguiendo un orden lógico para la explicación, en la entrada de hoy nos centraremos en la cadena de confianza. Como ya se comentó en entradas [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo en la línea de los anteriores posts (Fundamentos sobre certificados digitales, <a href="http://www.securityartwork.es/2013/05/13/fundamentos-sobre-certificados-digitales/">primera</a> y <a href="http://www.securityartwork.es/2013/05/22/fundamentos-sobre-certificados-digitales-ii/">segunda parte</a>), continuamos hablando de firma y certificación digital. En este caso, y a mi ver, siguiendo un orden lógico para la explicación, en la entrada de hoy nos centraremos en la cadena de confianza.</p>
<p>Como ya se comentó en entradas anteriores de este hilo, de cara a emplear o validar un certificado o firma digital, uno de los puntos más importantes es la confiabilidad del mismo, ya que, como se comentó, cualquiera puede generar una clave asimétrica e incluir los campos que desee en el certificado. De nuevo en base a este hecho surge la necesidad de la existencia de Autoridades de Certificación (CA), quienes se encargan de emitir certificados confiables y reconocidos. Pero, ¿como sabemos que el certificado que tenemos entre las manos ha sido emitido por una de estas entidades?</p>
<p>Aunque se comentará en próximas entradas el formato X.509 como estándar de generación de certificados digitales, es importante destacar que, como es natural, dicho formato contiene campos para introducir los datos del emisor (<em>issuer</em>). Es obvio que estos campos nos pueden parecer útiles para este fin; pero del mismo modo que el resto de campos del certificado pueden ser fijados al gusto de quien lo genere, por lo que en absoluto suponen una garantía de procedencia y autenticidad del certificado digital.</p>
<p>Para cubrir estas necesidades surge el modelo de <strong>cadena de confianza</strong>. Este modelo establece una relación entre certificados que permite asegurar, sin duda alguna, que dicho certificado ha sido emitido por una Autoridad de Certificación. Veamos en primer lugar como se implementa este modelo.</p>
<p>Como algunos habrán adelantado, la solución más obvia será firmar el certificado emitido con un certificado que “represente” a la CA. De este modo, si el certificado que firma es confiable, tenemos total certeza de que el certificado ha sido emitido por una CA, y por tanto quien lo emplea debería ser quien dice ser (siempre y cuando no se vulnere su clave privada, en la próxima entrada veremos de qué mecanismos se vale la CA para revocar y validar certificados, así como cómo dispone esta información al alcance de los usuarios finales de los mismos). Todo esto parece que suena bien, sin embargo, nos sigue dejando en el mismo punto del que partimos, ¿cómo sé que el certificado que firma el anterior es válido?</p>
<p>En el modelo de cadena de confianza jerárquico, las Autoridades de Certificación disponen de un certificado conocido como Certificado Raíz (Root CA), y como su nombre indica es el certificado que validará todos y cada uno de los certificados emitidos por la CA; sin embargo, este certificado no es el que firmará los certificados de suscriptor (o certificados finales), sino se empleará únicamente para firmar los denominados Certificados Subordinados (Sub-CA), y estos últimos firmarán los certificados de suscriptor (o finales). Se muestra un diagrama ejemplo del modelo jerárquico para ilustrar el funcionamiento de la cadena de confianza de certificados: </p>
<p> <img src="http://www.securityartwork.es/wp-content/uploads/2013/06/00.png" alt="" title="00" width="709" height="241" class="alignnone size-full wp-image-12226" style="margin:15px 0px 15px 20px;"/></p>
<p>Es importante destacar que, en general, las Autoridades de Certificación emiten los certificados intermedios orientados a generar certificados de suscriptor en base a distintas tipologías, usos o unidades de negocio (por ejemplo certificados de persona física, persona jurídica, SSL, firma de código, etc.).</p>
<p>Sin embargo, el principal motivo de tomar esta decisión es proteger al máximo Certificado Raíz de la jerarquía. En base a los conceptos explicados en entradas anteriores, si un tercero consiguiera la clave privada de un Certificado Raíz, se comprometerían todos y cada uno de los certificados emitidos con la misma (es más sería capaz de emitir certificados en nombre de la CA). Visto de este modo, cobra sentido que los certificados finales no estén firmados con esta clave; además que en base a éste modelo jerárquico, un certificado de suscriptor firmado por el raíz no sería de suscriptor sino subordinado, con todo lo que conllevaría dar esa clave a un usuario. Este hecho propicia que se considere normalmente la clave privada del certificado raíz como la información de mayor valor y más crítica de la CA. Debido a ello, es habitual que la clave privada del certificado raíz se encuentre offline, en un dispositivo de seguridad cifrado y con medidas de alta seguridad (que también se comentarán en próximas entradas).</p>
<p>De cara a la validación del certificado firmado tanto por el certificado raíz como su subordinado, la CA mantiene online todas las claves públicas de su jerarquía; aunque habitualmente se suelen adjuntar al certificado de suscriptor (como se muestra en el ejemplo posterior). De modo que para validar un certificado de un suscriptor, se deberá comprobar la firma para toda la cadena de confianza de la CA emisora, quedando así clara la procedencia del mismo.</p>
<p>Por último, y siguiendo con la línea de ejemplos planteada en entradas anteriores, se muestra la información de la cadena de confianza del certificado SSL de <em>www.bankia.es</em>, que en este caso ha sido generado por VeriSign, Inc. (autoridad de certificación propiedad de Symantec).</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2013/06/01.png" alt="" title="01" width="580" height="680" class="alignnone size-full wp-image-12227" style="margin:15px 0px 15px 80px;"/></p>
<p>Como se puede observar en la imagen, se describe la jerarquía de certificados de VeriSign que ha generado este certificado se suscriptor. Lo detallamos a continuación:</p>
<ul>
<li><strong>Certificado Raíz</strong>: VeriSign Class 3 Public Primary Certification Authority</li>
<li><strong>Certificado Subordinado</strong>: VeriSign Class 3 Extended Validation SSL SGC CA</li>
<li><strong>Certificado de Suscriptor</strong>: www.bankia.es</li>
</ul>
<p>El proceso de validación lo suelen realizar de forma automática los navegadores web, de modo que aunque el certificado no estuviera auto firmado (self signed), si detectara una incoherencia en la cadena de certificación consideraría el certificado no confiable y avisaría al usuario como se detalló en la entrada Fundamentos sobre Certificados Digitales (II).</p>
<p>A modo de curiosidad, dejo unos cuantos enlaces que os ayudarán a ver un ejemplo práctico de jerarquía de certificados, concretamente la de Verisign (Symantec):</p>
<ul>
<li>Listado de Certificados Raíz de Verisign: <a href="http://www.verisign.com/repository/root.html">http://www.verisign.com/repository/root.html</a></li>
<li>Descarga de certificados Raíz de Verisign: <a href="https://www.symantec.com/page.jsp?id=roots">https://www.symantec.com/page.jsp?id=roots</a></li>
<li>Listado de Certificados Subordinados de Verisign: <a href="http://www.verisign.com/support/verisign-intermediate-ca/index.html">http://www.verisign.com/support/verisign-intermediate-ca/index.html</a></li>
<li>Jerarquía de Certificados de Verisign: <a href="http://www.verisign.com/repository/hierarchy/hierarchy.pdf">http://www.verisign.com/repository/hierarchy/hierarchy.pdf</a></li>
</ul>
<p>Dejo también una entrada referente al escándalo de TURKTRUST, en el que por error se firmaron dos certificados de suscriptor directamente con el certificado raíz, lo que tuvo consecuencias desastrosas: <a href="http://www.securitybydefault.com/2013/01/algunas-reflexiones-sobre-el-ultimo-ca.html">http://www.securitybydefault.com/2013/01/algunas-reflexiones-sobre-el-ultimo-ca.html</a></p>
<p>Gracias de nuevo por leernos y como siempre quedo a la espera de vuestros comentarios.</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/5H3Iml2A9Xc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/12/fundamentos-sobre-certificados-digitales-iii-cadena-de-confianza/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/12/fundamentos-sobre-certificados-digitales-iii-cadena-de-confianza/</feedburner:origLink></item>
		<item>
		<title>He leído y acepto los términos y condiciones de uso</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/w6v3rUtvNaY/</link>
		<comments>http://www.securityartwork.es/2013/06/11/he-leido-y-acepto-los-terminos-y-condiciones-de-uso/#comments</comments>
		<pubDate>Tue, 11 Jun 2013 06:51:36 +0000</pubDate>
		<dc:creator>María Ángeles Arqueros</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12219</guid>
		<description><![CDATA[Una de las mayores mentiras del siglo XXI. El que siempre haya aceptado los términos de uso tras una lectura detallada, siendo plenamente consciente de lo que aceptaba, que levante la mano. Prácticamente a diario, instalamos aplicaciones en nuestros PCs y smartphones, nos registramos en redes sociales o servicios diversos. Todos estos proveedores de aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las mayores mentiras del siglo XXI. El que siempre haya aceptado los términos de uso tras una lectura detallada, siendo plenamente consciente de lo que aceptaba, que levante la mano.</p>
<p>Prácticamente a diario, instalamos aplicaciones en nuestros PCs y smartphones, nos registramos en redes sociales o servicios diversos. Todos estos proveedores de aplicaciones y servicios se cuidan mucho sus espaldas, y no se arriesgan a dejar resquicios legales.</p>
<p>Y nosotros, como usuarios, aceptamos sin saber lo que estamos aceptando. Principalmente, yo diría que por dos razones:</p>
<div style="margin-left:50px;"><strong>1.</strong> Como <a href="http://www.securityartwork.es/2009/05/19/tuenti-o-porque-les-importa-tan-poco/">ya se comentó hace (mucho) tiempo en este mismo blog</a>, o lo tomas o lo dejas. Si quieres hacer uso del servicio, no tienes más remedio que aceptar las condiciones que establezcan.<br />
<strong>2.</strong> Vivimos estresados. Y no tenemos tiempo que perder leyendo un galimatías, frecuentemente en inglés, que nos va a aclarar poco o nada a qué nos estamos comprometiendo exactamente</div>
<p>Como todos, soy de esas personas que al llegar al paso de aceptar los términos y condiciones y ver ese <em>scroll</em> que parece ser infinito voy directamente a la famosa casilla y afirmo estar de acuerdo con algo que no he leído. </p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2013/06/acepto.png" style="margin:0px 0px 20px 20px;width:400px;float:right;" />Pero ahora que estoy rodeada de gente que sabe de <strong>seguridad</strong> y se preocupa por la privacidad, estoy empezando a plantearme cosas a las que antes no les daba <a href="http://www.securityartwork.es/2013/05/10/privacidad-libertad-seguridad/">tanta importancia</a>.</p>
<p>Así que como usuaria asidua de Google y sus servicios, me he propuesto leer y analizar <a href="http://www.google.com/intl/es/policies/terms/">las condiciones que acepté en su día</a> y que se aplican en unos servicios que utilizo <span style="font-decoration:underline;">a diario.</p>
<p>Lo primero que me ha llamado la atención es que el lenguaje utilizado no es tan incomprensible y rebuscado como me esperaba. En la mayoría de los puntos, queda bastante claro a qué hacen referencia y qué cabe esperar al respecto. De otros servicios no puedo hablar, pero al menos en este caso, descubrir que se pueden leer y entender sin ser licenciado en Derecho invalida el punto 2 que he mencionado antes.</p>
<p>Algunos puntos que considero merece la pena remarcar:</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 30px 35px 30px 35px; margin: 0px;line-height:1.5em;">
<h2>Tu contenido en nuestros Servicios</h2>
<p>Algunos de nuestros servicios te permiten enviar contenido. Si lo haces, seguirás siendo el titular de los derechos de propiedad intelectual que tengas sobre ese contenido. En pocas palabras, lo que te pertenece, tuyo es.</p>
<p>Al subir contenido o al enviarlo por otros medios a nuestros Servicios, concedes a Google (y a sus colaboradores) una licencia mundial para usar, alojar, almacenar, reproducir, modificar, crear obras derivadas (por ejemplo, las que resulten de la traducción, la adaptación u otros cambios que realicemos para que tu contenido se adapte mejor a nuestros Servicios), comunicar, publicar, ejecutar o mostrar públicamente y distribuir dicho contenido. Google usará los derechos que le confiere esta licencia únicamente con el fin de proporcionar, promocionar y mejorar los Servicios y de desarrollar servicios nuevos. Esta licencia seguirá vigente incluso cuando dejes de usar nuestros Servicios (por ejemplo, en el caso de una ficha de empresa que hayas añadido a Google Maps). Algunos Servicios te permiten acceder al contenido que hayas proporcionado y eliminarlo.</p></div>
<p>El principio suena muy bien, dejan muy claro que <em>lo tuyo es tuyo</em>. Pero luego resulta que estás autorizando a Google (y sus colaboradores, que no he conseguido determinar quiénes son) a usar, reproducir, crear obras derivadas etc. Y seguirán teniendo derecho a hacerlo incluso si tú dejas de usar sus servicios.</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 30px 35px 30px 35px; margin: 0px;line-height:1.5em;">
<h2>Cómo modificar y cancelar nuestros Servicios</h2>
<p>Google cambia y mejora sus Servicios constantemente. Por ello, es posible que añadamos o eliminemos algunas funciones o características, o que suspendamos o cancelemos un Servicio por completo.<br />
Puedes dejar de usar los Servicios en cualquier momento, aunque lamentaríamos que así fuera. De igual modo, Google puede dejar de proporcionarte los Servicios o añadir o crear nuevas limitaciones en cualquier momento.</p>
<p>Consideramos que eres el propietario de tus datos y que es importante preservar tu acceso a los mismos. Si interrumpimos un Servicio, en los casos en los que sea razonable, te informaremos con suficiente antelación y te permitiremos extraer la información del Servicio.</p></div>
<p>No deja de ser curioso que, en cualquier momento y sin justificación previa puedan modificar o cancelar los servicios que ofrecen. Hay quien dice que, siendo <em>gratis</em> no te puedes quejar ante posibles cambios o cierres de servicios (claro que no es gratis, ya que pagas con tus datos). Pero eso no ha evitado por ejemplo el revuelo provocado por el cierre de <a href="https://www.google.com/reader">Google Reader</a>. Al menos parece que han cumplido la parte de avisar con antelación y permitirte extraer la información. </p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 30px 35px 30px 35px; margin: 0px;line-height:1.5em;">
<h2>Acerca de estas condiciones</h2>
<p>Google puede modificar estas condiciones o las condiciones adicionales que se apliquen a un Servicio para, por ejemplo, reflejar cambios legislativos o en los Servicios. Te recomendamos que consultes las condiciones de forma periódica. Google publicará avisos relacionados con las modificaciones de estas condiciones en esta página. Asimismo, publicará avisos relacionados con las modificaciones que se hagan en las condiciones adicionales del Servicio correspondiente. Las modificaciones no se aplicarán con carácter retroactivo y entrarán en vigor en un plazo no inferior a 14 días a partir de la fecha de su publicación. No obstante, las modificaciones que afecten a nuevas funciones de un Servicio o los cambios que se hagan por cuestiones legales entrarán en vigor de forma inmediata. Si no aceptas las condiciones modificadas de un Servicio, deberás dejar de usar dicho Servicio.</p></div>
<p>Para acabar, el salvavidas definitivo: <span style="font-decoration:underline;">todos los usuarios hemos aceptado que los términos aceptados pueden ser modificados unilateralmente</span> (muy importante el “por ejemplo” de la segunda línea: se mencionan dos posibles motivos de cambio, pero no todas las razones que pueden alegar para modificar las condiciones). Y aceptamos que debemos ser nosotros quienes revisemos cada cierto tiempo las condiciones para detectar posibles cambios. Me gustaría conocer una estadística del número de usuarios que sigue esta recomendación&#8230; Pero lo hagamos o no, hemos aceptado estas condiciones y ellos tienen la sartén por el mango.</p>
<p>He de reconocer que la lectura no ha sido tan terrible como esperaba, y que no me quedo con la sensación de haber vendido mi alma a Google a cambio del uso de sus servicios. Pero varios de los puntos de las <strong>condiciones de servicio de Google</strong> remiten a la política de privacidad, a la que también he echado un vistazo y he encontrado bastantes cosas reseñables, pero ese análisis lo dejaremos para otra ocasión, por no extendernos demasiado. </p>
<p>Casualmente, mientras estaba terminando de redactar esta entrada, muy satisfecha por haberme leído los términos y la política de privacidad, me encuentro con <a href="http://www.elmundo.es/america/2013/06/07/estados_unidos/1370577062.html">esta noticia sobre &#8220;algo&#8221; llamado PRISM</a> que me genera nuevas inquietudes. ¿Son conscientes o no las empresas del acceso que los gobiernos tienen a la información que manejan? Si los gobiernos pueden acceder a ella sin consentimiento de las empresas ¿para qué sirve tanta política de privacidad, tantos términos de uso y tantas condiciones a aceptar?</p>
<p>Y lo más importante: ¿qué podemos hacer nosotros, como usuarios de a pie, para proteger nuestra información y nuestros datos?</span></p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/w6v3rUtvNaY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/11/he-leido-y-acepto-los-terminos-y-condiciones-de-uso/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/11/he-leido-y-acepto-los-terminos-y-condiciones-de-uso/</feedburner:origLink></item>
		<item>
		<title>En el ojo de la tormenta</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/EWzs9RiGSMU/</link>
		<comments>http://www.securityartwork.es/2013/06/10/en-el-ojo-de-la-tormenta/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 09:23:37 +0000</pubDate>
		<dc:creator>Nedim Šabić</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12181</guid>
		<description><![CDATA[Viviendo en la era digital no hay duda de que la información es un recurso muy valioso, y como mencionaba mi compañera María Ángeles en su entrada, el que tiene la información tiene el poder, pero ser capaz de sintetizarla y inferir nuevas evidencias o predicciones a partir de esta en un tiempo razonable es [...]]]></description>
			<content:encoded><![CDATA[<p>Viviendo en la era digital no hay duda de que la información es un recurso muy valioso, y como mencionaba mi compañera María Ángeles en su <a href="http://www.securityartwork.es/2013/05/10/privacidad-libertad-seguridad/">entrada</a>, <strong>el que tiene la información tiene el poder</strong>, pero ser capaz de sintetizarla y inferir nuevas evidencias o predicciones a partir de esta en un tiempo razonable es también muy importante.</p>
<p>Cada día se almacenan enormes cantidades de información, por lo que sistemas gestores de bases de datos relacionales están dando paso al fenómeno <em>big data</em>, que cada vez despierta más interés y expectativas en las organizaciones. De hecho, muchas empresas están abriendo nuevas líneas de negocio, creando plataformas <em>SaaS</em> que se dedican exclusivamente a analizar cantidades titánicas de información e identificar aquella que podría tener un valor importante para las decisiones estratégicas de muchas corporaciones.</p>
<p>Para aquellos que todavía no están familiarizados con el término, se trata de la nueva generación de tecnologías para el acceso, procesamiento, análisis y visualización de enormes volúmenes de datos. Entre estas surge toda una tipología de bases de datos <em>NoSQL</em> y plataformas de procesamiento <em>big data</em>, sistemas robustos que ofrecen elevadas capacidades de escalabilidad, baja latencia, y un esquema libre de modelo para el almacenamiento flexible de datos. Así, tenemos familias para el almacenamiento de datos en forma de clave-valor (<em>key-value</em>), orientados a colecciones, columnas, persistencia de estructuras de datos en forma de grafos, etc. Uno de ellos es <em>Storm</em> (el lector precavido ya puede estar intuyendo de donde proviene la inspiración para el título de esta entrada).</p>
<p><em>Storm</em> es el sistema distribuido para el procesamiento de flujo de datos, actualmente propiedad de <em>Twitter</em>, aunque originalmente fue desarrollado por la compañía <em>Blacktype</em>. Fiable y tolerante a fallos, garantiza que cada mensaje inyectado en el flujo se procesará de forma completa. A diferencia de otras plataformas de procesamiento de datos como <em>Hadoop</em> o <em>Cascading</em>, <em>Storm</em> realiza el procesamiento del flujo de datos en tiempo real. El componente encargado de llevar a cabo ese procesamiento se llama topología. A su vez, ésta está formada por varias abstracciones que explicaremos más adelante. Cuando la carga computacional se incrementa de forma considerable se hace trivial aumentar el paralelismo de la topología para que se ejecute en varios procesos distribuidos en multitud de máquinas físicas. Si se produce un fallo durante el procesamiento, <em>Storm</em> se encargará de reasignar el trabajo a las tareas, además de garantizar que no habrá pérdida de ningún mensaje gracias a la naturaleza transaccional de las topologías. Otra de las ventajas de <em>Storm</em>, es que permite la ejecución de consultas distribuidas (<em>DRPC</em>) paralelizables al vuelo, ideal para los escenarios donde es necesario lanzar <em>queries</em> intensas u otras operaciones exigentes.</p>
<p>Es usado por multitud de organizaciones tales como <em>Groupon</em>, <em>Alibaba</em>, <em>The Weather Channel</em>, y como no, <em>Twitter</em>. Podemos ver <a href="https://github.com/nathanmarz/storm/wiki/Powered-By">la lista completa de empresas y proyectos</a> que usan <em>Storm</em>. No tenemos que olvidarnos de mencionar que se trata de una plataforma <em>open source</em>, y aunque está desarrollada en una combinación de <em>Clojure</em> y Java, <em>Storm</em> es completamente agnóstico de lenguaje, por lo que nada nos limita a crear las topologías en otros lenguajes de programación.</p>
<p>El cluster de Storm está compuesto por dos tipos de nodos:</p>
<ul>
<li>Nodo maestro, es el nodo principal donde se ejecuta el demonio llamado Nimbus, encargado de asignar tareas a los nodos worker, monitorizar posibles fallos, distribuir el código a lo largo del cluster, etc.</li>
</ul>
<ul>
<li>Nodos worker alojan el demonio llamado Supervisor que ejecuta la porción de la topología entre varios procesos que incluso puedan estar ejecutándose en múltiples máquinas.</li>
</ul>
<p>La coordinación y el estado de ejecución entre los nodos se mantiene en <em>ZooKeeper</em>, o bien se persiste en disco duro cuando se ejecuta en modo local, y es precisamente esto lo que hace que <em>Storm</em> sea tan robusto y estable.</p>
<p>Las topologías se ejecutan continuamente hasta que se solicite explícitamente su terminación. Éstas están formadas por dos tipos de componentes que se agrupan en un grafo. Unos llamados <em>spouts</em> representan la fuente de entrada de flujo de datos en el sistema y generan listas de tuplas. Los <em>spouts</em> pueden inyectar datos en la topología bien consumiendo mensajes de las colas de los sistemas de mensajería, consultando la API de terceros vía REST, leyendo registros desde la base de datos, o cualquier otra fuente que se nos ocurra. Los <em>bolts</em> consumen las tuplas emitidas por <em>spouts</em> u otros <em>bolts</em>, para aplicar cualquier tipo de transformación o lógica específica al flujo de datos, ya sea filtrado, agrupaciones, funciones, agregaciones, etc. En el siguiente diagrama podemos ver la estructura simplificada del cluster de <em>Storm</em>.</p>
<p style="text-align: center;"><img class="size-full wp-image-12186 aligncenter" title="storm-cluster" src="http://www.securityartwork.es/wp-content/uploads/2013/06/storm-cluster.png" alt="" width="725" /></p>
<p>Para dar un enfoque pragmático e ilustrar las capacidades de <em>Storm</em>, vamos a desarrollar una sencilla aplicación para procesar datos obtenidos desde las redes sociales. Usaremos el API de <em>Facebook</em>, para recuperar los estados que han ido publicando nuestros amigos y los mandaremos a una cola <em>RabbitMQ</em>. A continuación desarrollaremos los componentes de la topología – uno se encargará de consumir los mensajes de la cola y generar tuplas con el estado y el publicador (<em>spout</em>), y el resto aplicarán las transformaciones correspondientes para separar cada estado en palabras, contar las ocurrencias de las mismas y mostrar el <em>top</em> 20 de palabras más utilizadas en los estados de nuestros amigos en tiempo real. En la imagen podemos ver el grafo de <em>spouts</em> y <em>bolts</em> que forman nuestra topología.</p>
<p style="text-align: center;"><img class="size-full wp-image-12192 aligncenter" title="storm-topology" src="http://www.securityartwork.es/wp-content/uploads/2013/06/storm-topology1.png" alt="" width="650" height="105" /></p>
<p><a href="https://github.com/bhnedo/storm-social-analyzer">El código completo de la aplicación se encuentra en el repositorio <em>github</em></a>, por lo que no vamos a entrar en detalles de implementación. Tan solo mencionaremos que los <em>spouts</em> deben implementar la interfaz <em>IRichSpout</em><em> y los </em><em>bolts</em> la interfaz <em>IRichBolt</em>. Los métodos importantes de los <em>spouts</em>, son <em>nextTuple</em> donde se obtiene el flujo de datos y se generan las tuplas, y el par <em>ack / fail</em> para confirmar o bien señalizar el fallo en el procesamiento de la tupla. Esto es importante, ya que la emisión de una tupla por un <em>spout</em> puede desencadenar la generación de muchas tuplas en otros componentes, por lo tanto se considera que un mensaje se ha completado satisfactoriamente cuando se procesa correctamente el árbol de tuplas generadas.</p>
<p>A la hora de ensamblar la topología podemos especificar las preferencias de paralelismo, tanto el número de tareas como el número de procesos <em>workers</em>. El último argumento del constructor de los componentes especifica el paralelismo. <em>TopologyBuilder</em> nos permite construir la topología que más tarde se desplegará en el cluster:</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size:10pt;padding: 10px 35px 10px 35px; margin: 0px;">
<pre>
TopologyBuilder topologyBuilder = new TopologyBuilder();
topologyBuilder.setSpout("status-emitter", new AmqpStatusEmitterSpout() );
topologyBuilder.setBolt("status-splitter", new StatusSplittingBolt())
        .shuffleGrouping("status-emitter");
topologyBuilder.setBolt("status-segmentator", new StatusSegmentatorBolt(),
        5).fieldsGrouping("status-splitter", new Fields("word"));
</pre>
</div>
<p><em>StatusSegmentatorBolt</em> se ejecutará de forma paralela entre 5 hilos de ejecución.</p>
<p>A raíz de todo lo que hemos dicho, podemos concluir que <em>Storm</em> es una plataforma prometedora y gracias a su modelo de programación sencillo, la curva de aprendizaje del mismo es corta y no tendremos que preocuparnos por detalles de sincronización, paralelismo o mantenimiento del estado y coherencia en el procesamiento de los mensajes.</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/EWzs9RiGSMU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/10/en-el-ojo-de-la-tormenta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/10/en-el-ojo-de-la-tormenta/</feedburner:origLink></item>
		<item>
		<title>Estrategia de Seguridad Nacional 2013. Ciberseguridad.</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/OFmxqAySQxc/</link>
		<comments>http://www.securityartwork.es/2013/06/07/estrategia-de-seguridad-nacional-2013-ciberseguridad/#comments</comments>
		<pubDate>Fri, 07 Jun 2013 08:03:37 +0000</pubDate>
		<dc:creator>Maite Moreno</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12167</guid>
		<description><![CDATA[Esta semana ha sido noticia la aprobación de la Estrategia de Seguridad Nacional 2013 la cual constituye la articulación fundamental de la Seguridad Nacional como Política de Estado, esto es, contiene directrices con el fin de reasignar todos los recursos disponibles del Estado de manera eficiente para la preservación de la Seguridad Nacional. Si ya [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana ha sido noticia la aprobación de la <strong>Estrategia de Seguridad Nacional 2013</strong> la cual constituye la articulación fundamental de la Seguridad Nacional como Política de Estado, esto es, contiene directrices con el fin de reasignar todos los recursos disponibles del Estado de manera eficiente para la preservación de la Seguridad Nacional.</p>
<p>Si ya en la <a href="http://www.lamoncloa.gob.es/NR/rdonlyres/D0D9A8EB-17D0-45A5-ADFF-46A8AF4C2931/0/EstrategiaEspanolaDeSeguridad.pdf">versión del 2011</a> el <strong>ciberespacio</strong> cobraba importancia como un nuevo ámbito en el que nuestro país se enfrenta ante amenazas y riesgos:</p>
<div style="border: 1px solid #aaa; background-color: #fdfbdf; font-size: 10pt; padding: 30px 35px 30px 35px; margin: 0px;line-height:1.5em;">
[...] <em>cada vez una mayor parte de nuestra actividad se desarrolla en el ciberespacio, donde las amenazas pueden ocasionar <strong>graves daños</strong> e incluso podrían <strong>paralizar la actividad de un país</strong>. Los ciberataques más comunes tienen fines comerciales, pero también estamos expuestos a agresiones por parte de <strong>grupos criminales, terroristas u otros, incluso de Estados</strong>. Las nuevas tecnologías de información y comunicación ofrecen nuevos y más sofisticados medios para el <strong>espionaje y la contrainteligencia</strong>. Mejorar la seguridad en el ciberespacio pasa por fortalecer la legislación</em> [...]</div>
<p>En la nueva versión se plantea <strong>la ciberseguridad como uno de los principales ámbitos de actuación de dicha Estrategia</strong>.</p>
<p>En el tercer capítulo de la Estrategia, “<strong>Los riesgos y amenazas para la Seguridad Nacional</strong>”, se describen los riesgos y amenazas que afectan a la Seguridad Nacional, y entre otros aparecen las <strong>ciberamenazas</strong>, el <strong>espionaje (este riesgo no era considerado como tal en la versión de 2011)</strong>, la proliferación de armas de destrucción masiva, o la <strong>vulnerabilidad de las infraestructuras críticas</strong> y los servicios esenciales. También se contemplan otros factores potenciadores como la generalización del <strong>uso nocivo de las nuevas tecnologías</strong> que, sin ser en sí mismos un riesgo o una amenaza pueden desencadenarlos.</p>
<p>En el cuarto capítulo se definen unas “<strong>Líneas de acción estratégicas</strong>” -dentro de doce ámbitos de actuación- que enmarcan las actuaciones concretas necesarias para la preservación de la Seguridad Nacional. Para el sector de la Seguridad de la Información podrían ser destacables los siguientes ámbitos y sus líneas de acción:</p>
<p><strong>Ciberseguridad</strong></p>
<p>Dentro de las líneas de acción se destaca lo siguiente:</p>
<ul>
<li>Incremento de la capacidad de prevención, detección, investigación y respuesta ante las ciberamenazas con apoyo en un marco jurídico. Impulso de los recursos necesarios.</li>
<li>Fortalecimiento de la seguridad de los sistemas de la información y las redes de comunicaciones que soportan las infraestructuras críticas. Se impulsará la normativa sobre protección de infraestructuras críticas con el desarrollo de las capacidades necesarias para la protección de los servicios esenciales.</li>
<li>Se impulsarán y liderarán actuaciones destinadas a reforzar la colaboración público-privada.</li>
<li>Promoción de la capacitación de profesionales en ciberseguridad e impulso a la industria española a través de un Plan de I+D+i.</li>
</ul>
<p><strong>No proliferación de armas de destrucción masiva</strong></p>
<p>Me llama la atención una de sus líneas de acción “<em>Se adoptarán medidas preventivas de vigilancia en relación con el <strong>uso de la red</strong></em>”. </p>
<p><strong>Contrainteligencia </strong></p>
<p>Se pretende, entre otros, garantizar la disposición de los medios técnicos necesarios para contrarrestar esta amenaza.</p>
<p><strong>Protección de Infraestructuras Críticas</strong> </p>
<p>Comentar que, en cuanto a líneas de acción llamativas, el que se dotará a estas instalaciones de sistemas redundantes e independientes de otras tecnologías y operadores.</p>
<h2>CIBERATAQUES. CONTEXTUALIZACIÓN</h2>
<p>Quizá se pueda entender un poco más esta Estrategia en el ámbito de la ciberespacio contextualizando un poco de manera histórica la implicación que tienen los ciberataques en la Seguridad Nacional. Recordemos que existen precedentes de cómo un país puede sufrir serios daños ante un ciberataque o cómo puede utilizarse en un acto de <a href="http://www.ceseden.es/centro_documentacion/boletines/317.pdf">terrorismo</a>. En el año <strong>1985</strong>, un grupo terrorista denominado Middle Core Faction atacó el sistema que controlaba los ferrocarriles de alta velocidad en Japón, cortando primero el suministro eléctrico y los cables de control informatizados del ferrocarril y luego interceptando e interfiriendo las radiocomunicaciones de la policía para ralentizar su capacidad de respuesta. Nadie resultó herido pero este ataque afectó a 6,5 millones de usuarios y tuvo un coste económico de unos <a href="http://www.apnewsarchive.com/1985/Hundreds-of-Police-Hunt-for-300-Rail-Saboteurs/id-eb2de145e6e22fb474d0500aa353cf28">seis millones de dólares</a>.</p>
<p>En la <strong>década de los 90</strong>, los ciberataques cobran mayor importancia y comienzan a usarse como una fuente más de ataque en diversos conflictos bélicos como la Guerra del Golfo, la Guerra entre Serbia y Croacia o la Guerra de Kosovo con diversos objetivos: robo de información estratégica, protesta o manipulación de la <a href="http://www.redsafeworld.net/news/dossier-sobre-ciberterrorismo-monica-belen-olvera-gorts-y-juan-carlosgonzalez-cerrato-/">información</a>. A partir del año 2000 y en especial en la segunda mitad de la década, este tipo de ataques se incrementan marcando importantes hitos. En 2008, Georgia sufre diversos ataques de DDoS contra <a href="https://www.ccn-cert.cni.es/index.php?option=com_content&#038;task=view&#038;id=1970&#038;Itemid=127">sitios gubernamentales</a> e Irán en 2010 recibe varios ciberataques que afectan a muchas de sus centrales <a href="http://cert.inteco.es/virusDetail/Actualidad/Actualidad_Virus/Detalle_Virus/Stuxnet_A">nucleares</a>.</p>
<p>Posteriormente, <a href="http://www.csirtcv.gva.es/es/noticias/el-gobierno-de-canad%C3%A1-sufre-un-ciberataque-del- extranjero.html">Canadá en 2011</a> detectó que se habían producido intrusiones en bases de información del Gobierno que contenían datos altamente confidenciales y durante <strong>2012</strong> países como Irán, Israel, Palestina, Siria o Sudán han visto como eran objetivo de un ataque dirigido diseñado para la recopilación y robo de información estratégica, y que hacía uso de una de las herramientas de ciberataque más sofisticadas descubiertas hasta la fecha: <a href="http://www.csirtcv.gva.es/es/noticias/flame-el-c%C3%B3digo-malicioso-m%C3%A1s-complejo-paraciberespiar.html">Flame</a>. Durante este <strong>2013</strong>, se descubre la operación “<a href="https://www.inteco.es/blogs/post/Seguridad/BlogSeguridad/Articulo_y_comentarios/octubre_rojo">Red October</a>”, diseñada para robar información de las instituciones gubernamentales de distintos países (entre ellos España), “<a href="http://intelreport.mandiant.com/Mandiant_APT1_Report.pdf">APT1</a>”, grupo militar del ejército chino encargada de <a href="http://www.securityartwork.es/2013/02/22/esto-ya-no-es-informatica-es-politica/">ciberinteligencia</a> a nivel mundial y la reciente operación de ciberespionaje que ha saltado a la palestra “<a href="http://www.csospain.es/Espana,-entre-los-diez-paises-con-mas-victimas-de--NetTravel/seccion-actualidad/noticia-133311">NetTraveler</a>” en la que España se encuentra entre los 10 países más afectados.</p>
<p>Es evidente que con el descubrimiento de malware avanzado capaz de manipular maquinaria industrial y la existencia de los ataques dirigidos (campañas de APT) contra objetivos críticos para la seguridad nacional, ha quedado demostrado que la posibilidad de que un ataque cibernético cause <a href="https://www.ccn-cert.cni.es/index.php?option=com_content&#038;view=article&#038;id=2620%3Alos-%20ciberataquespueden-causar-catastrofes-mundiales-segun-la-ocde&#038;catid=80&#038;Itemid=197&#038;lang=es">catástrofes</a> o altere el funcionamiento normal de un país, es un <a href="http://www.csirtcv.gva.es/es/noticias/nuevas-alertas-sobre-ciberataques-que-pueden-afectar-al-suministro-depetr%C3%B3leo.html">riesgo</a> <a href="http://www.csirtcv.gva.es/es/noticias/washington-investiga-un-ciberataque-al-sistema-de-distribuci%C3%B3n-deagua-en-illinois.html">presente</a>. Un análisis interesante sobre las implicaciones en la seguridad nacional por parte de los ataques dirigidos, los orígenes,objetivos y las consecuencias de los mismos puede encontrarse en el estudio que recientemente publicó <a href="http://www.csirtcv.gva.es/">CSIRT-cv</a> junto con <a href="http://cert.inteco.es/">INTECO-CERT</a> y en el que participó el equipo de <a href="http://www.s2grupo.com/">S2 Grupo</a> que trabaja en CSIRT-cv, “<a href="http://www.csirtcv.gva.es/sites/all/files/downloads/Detecci%C3%B3n_APT.pdf">Detección de APTs</a>” y del que ya hablamos en <a href="http://www.securityartwork.es/2013/05/21/deteccion-de-apts/">este post</a>.</p>
<p>Pero no solo la manipulación directa a infraestructuras críticas por parte de atacantes puede poner en jaque la seguridad de un país; el robo de determinada información sensible (sobre material armamentístico, patentes o tecnologías críticas, plantas nucleares, relativo a comunicaciones, estrategias gubernamentales, etc.) también puede poner en entredicho asuntos concernientes a la <a href="http://www.csirtcv.gva.es/es/noticias/ciberesp%C3%AD-chinos-entraron-durante-meses-en-la- c%C3%A1marade-comercio-de-eeuu.html18">seguridad nacional</a>. A día de hoy <strong>el ciberespionaje es un arma muy poderosa para desestabilizar la defensa de un Estado</strong>.</p>
<p>En el <strong>ámbito empresarial</strong>, hace unos años que el <strong>espionaje industrial</strong> a través de Internet está en auge y se ha consolidado como una práctica común; el robo de información valiosa para las empresas supone no sólo una pérdida económica importante causada por el robo de la propiedad intelectual y por el desembolso de dinero realizado para la remediación, sino porque también puede proporcionar ventajas a la competencia o provocar un daño reputacional, en algunos casos irreparable. </p>
<p>La <strong>manipulación del sistema financiero</strong> de un país también puede afectar de manera muy crítica a la estabilidad de un Estado. En la actualidad, no es descabellado pensar que a través de ataques cibernéticos, un grupo terrorista o país enemigo, sea capaz de detener, alterar o manipular el sistema financiero de un país. Es un hecho constatado que <strong>la economía tiene una gran dependencia de los sistemas informáticos y la infraestructura tecnológica de un país</strong>, por lo que la solidez y el progreso económico del país dependerá en parte de la seguridad de nuestro <a href="http://www.lamoncloa.gob.es/NR/rdonlyres/D0D9A8EB-17D0-45A5-ADFF- 46A8AF4C2931/0/EstrategiaEspanolaDeSeguridad.PDF">ciberespacio</a>.</p>
<p><strong>Fuentes:</strong> </p>
<ul>
<li>Estrategia de Seguridad Nacional 2013: <a href="http://www.lamoncloa.gob.es/NR/rdonlyres/5A600DAD-CFEF-45C1-84F0-DF5B06684E26/0/EstrategiaSeguridad_3105.pdf">http://www.lamoncloa.gob.es/NR/rdonlyres/5A600DAD-CFEF-45C1-84F0-DF5B06684E26/0/EstrategiaSeguridad_3105.pdf</a></li>
<li> Detección de APTs: <a href="http://www.csirtcv.gva.es/sites/all/files/downloads/Detecci%C3%B3n_APT.pdf">http://www.csirtcv.gva.es/sites/all/files/downloads/Detecci%C3%B3n_APT.pdf</a></li>
</ul>
<p><strong>Lecturas interesantes:</strong></p>
<ul>
<li>El Gobierno aprueba controles preventivos ante la ciberguerra: <a href="http://politica.elpais.com/politica/2013/05/31/actualidad/1370027040_282333.html">http://politica.elpais.com/politica/2013/05/31/actualidad/1370027040_282333.html</a></li>
<li>Cinco escenarios de ciberguerra en el nuevo orden mundial:<br />
<a href="http://www.eldiario.es/turing/escenarios-ciberguerra-nuevo-orden-mundial_0_129837338.html">http://www.eldiario.es/turing/escenarios-ciberguerra-nuevo-orden-mundial_0_129837338.html</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/OFmxqAySQxc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/07/estrategia-de-seguridad-nacional-2013-ciberseguridad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/07/estrategia-de-seguridad-nacional-2013-ciberseguridad/</feedburner:origLink></item>
		<item>
		<title>BotTrack: Tracking Botnets using NetFlow and PageRank</title>
		<link>http://feedproxy.google.com/~r/SecurityArtWork/~3/4YrFvKu1X_U/</link>
		<comments>http://www.securityartwork.es/2013/06/06/bottrack-tracking-botnets-using-netflow-and-pagerank/#comments</comments>
		<pubDate>Thu, 06 Jun 2013 10:23:09 +0000</pubDate>
		<dc:creator>José Miguel Holguín</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=12061</guid>
		<description><![CDATA[La semana pasada una compañera me hizo llegar una serie de papers de la Universidad de Luxemburgo. Entre ellos me llamó la atención uno cuyo título era el de esta misma entrada: BotTrack: Tracking Botnets using NetFlow and PageRank. Para el que no lo conozca, Netflow es un protocolo desarrollado por Cisco Systems que permite [...]]]></description>
			<content:encoded><![CDATA[<p>La semana pasada una compañera me hizo llegar una serie de <em>papers</em> de la Universidad de Luxemburgo. Entre ellos me llamó la atención uno cuyo título era el de esta misma entrada: <em><a href="http://hal.inria.fr/docs/00/61/35/97/PDF/networking11CR.pdf">BotTrack: Tracking Botnets using NetFlow and PageRank</a></em>. Para el que no lo conozca, <em><a href="http://es.wikipedia.org/wiki/Netflow">Netflow</a></em> es un protocolo desarrollado por Cisco Systems que permite a routers y switches, principalmente, enviar los flujos de comunicación de red hacia otro dispositivo que se le conocerá como colector y donde se podrá hacer un análisis de la información.</p>
<p>La investigación, realizada por Jérôme François, Shaonan Wang, Radu State, y Thomas Engel, en su documento intenta mostrarnos cómo detectar <em>botnets</em> P2P utilizando <em>NetFlow</em> y una extensión del algoritmo <em><a href="http://es.wikipedia.org/wiki/PageRank">PageRank</a></em> utilizado por Google.</p>
<p>El documento nos cuenta las arquitecturas habituales de <em>botnets</em> y la evolución que están sufriendo hacia arquitecturas distribuidas, para aumentar la escalabilidad principalmente. Para detectar estas nuevas arquitecturas, proponen lo siguiente:</p>
<p style="text-align: center;"><img class=" wp-image-12123; aligncenter" title="Imagen 1" src="http://www.securityartwork.es/wp-content/uploads/2013/06/Imagen-1.png" alt="" width="675" /></p>
<p>Tal y como explican, en primer lugar se dispone de un colector <em>netflow</em> (por ejemplo la herramienta ntop con el <em>plugin</em> de <em>netflow</em>) que recoge los flujos de routers, honeypots, etc. Con estos flujos se hace un grafo de relación entre <em>hosts</em>. Este grafo es analizado por un módulo que implementa una versión del algoritmo <em>PageRank</em> de Google que según el autor es un algoritmo apropiado para analizar los enlaces de comunicación entre los hosts en redes grandes. Como resultado de procesar el grafo con estos algoritmos se obtienen dos valores, el <em>hub rank</em> (Partiendo de los nodos origen tráfico hacia los nodos destino) y el <em>authority rank</em> (Partiendo de los nodos destino tráfico hacia los orígenes), que tienen en cuenta la dirección del tráfico para calcularlos. La puntuación de cada nodo será mayor dependiendo de la cantidad de conexiones que tenga con otros nodos y de la calidad de esas conexiones. Por ejemplo, el nodo que es un <em>honeypot</em> distribuirá mayor peso a los nodos con los que está relacionado, y se considerará por tanto una conexión importante (mayor peso), ya que la probabilidad de que un nodo relacionado con él forme parte de una <em>botnet</em> es muy alta.</p>
<p>Partiendo del <em>hub rank</em> y <em>authority rank</em> de cada nodo el módulo de <em>cluster</em> agrupará con el objetivo de identificar nodos con un rol similar dentro de la red. El ejemplo que ponen en el documento es el cálculo de <em>hub rank</em> y <em>authority rank</em> para el protocolo <a href="http://es.wikipedia.org/wiki/Kademlia"><em>kademlia</em></a>, para hosts normales y para <em>bots</em>, de manera que se vea la distribución de los valores y sea posible comparar. En este caso se ve cómo ha identificado dos <em>clusters</em> de <em>bots</em> principales:</p>
<p style="text-align: center;"><img class="size-full wp-image-12131 aligncenter" title="Imagen 2" src="http://www.securityartwork.es/wp-content/uploads/2013/06/Imagen-2.png" alt="" width="600" height="379" /></p>
<p>Es posible por tanto obtener unos rangos de valores que permitan identificar una <em>botnet</em> utilizando un protocolo p2p según lo que nos cuentan en este estudio. Os recomiendo su lectura dado que puede aportaros ideas para la explotación del tráfico <em>NetFlow</em> para la detección de <em>botnets</em> p2p.</p>
<img src="http://feeds.feedburner.com/~r/SecurityArtWork/~4/4YrFvKu1X_U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2013/06/06/bottrack-tracking-botnets-using-netflow-and-pagerank/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.securityartwork.es/2013/06/06/bottrack-tracking-botnets-using-netflow-and-pagerank/</feedburner:origLink></item>
	</channel>
</rss>
