<?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/" version="2.0">

<channel>
	<title>Daniel Vigueras</title>
	
	<link>http://www.danielvigueras.com</link>
	<description>Escalabilidad y Arquitectura Web</description>
	<lastBuildDate>Tue, 21 Jun 2011 01:00:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DanielVigueras" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="danielvigueras" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">DanielVigueras</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Google App Engine: nuestros proyectos en la nube</title>
		<link>http://www.danielvigueras.com/escalabilidad/google-app-engine-nuestros-proyectos-en-la-nube</link>
		<comments>http://www.danielvigueras.com/escalabilidad/google-app-engine-nuestros-proyectos-en-la-nube#comments</comments>
		<pubDate>Thu, 28 Oct 2010 20:52:31 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Escalabilidad]]></category>
		<category><![CDATA[bigtable]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[escalabilidad]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google app engine]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=104</guid>
		<description><![CDATA[Tal y como comenté en el post anterior sobre Amazon EC2, cuando diseñamos una aplicación es difícil a priori determinar cuáles van a ser los recursos que vamos a necesitar. Para lidiar con este problema podemos usar diferentes soluciones. En este artículo voy a explicar qué es Google App Engine y cómo podemos aprovecharnos de él para el [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-106  aligncenter" title="Google App Engine" src="http://www.danielvigueras.com/wp-content/uploads/2010/10/appengine_lowres.gif" alt="Google App Engine" width="142" height="109" /></p>
<p>Tal y como comenté en el post anterior sobre <a title="Amazon EC2" href="http://www.danielvigueras.com/escalabilidad/escalabidad-en-nuestros-servidores-con-amazon-ec2">Amazon EC2</a>, cuando diseñamos una aplicación es difícil a priori determinar cuáles van a ser los recursos que vamos a necesitar. Para lidiar con este problema podemos usar diferentes soluciones. En este artículo voy a explicar qué es <a title="Google App Engine" href="http://code.google.com/appengine/">Google App Engine</a> y cómo podemos aprovecharnos de él para el desarrollo de nuestros proyectos.</p>
<p>Google App Engine es un servicio que ofrece Google en el cual podemos subir y ejecutar nuestros proyectos. Nosotros como desarrolladores únicamente hemos de preocuparnos de escribir código y subirlo al servicio. A partir de este momento nuestro proyecto se servirá desde la URL que tengamos asociada al servicio sin tener que preocuparnos de cosas como instalar un servidor, configurar los distintos servicios, agregar usuarios, agregar los dominios a alojar, comprobar que el servidor no se queda pequeño y ver si hay que contratar otro, etc. Además Google se encarga de que a medida que se necesiten más recursos ampliar el número de servidores en los que tu aplicación se ejecuta, sin que tú tengas que intervenir, de una manera transparente. Así te olvidas de tener que preocuparte por actualizar tus servidores, estar pendiente de que no te hayan hackeado el servidor y tienes alta disponibilidad y tolerancia a fallos de una manera sencilla.</p>
<p>Al igual que en Amazon EC2, en Google App Engine se paga en función del uso que le demos a nuestra aplicación, <a title="Google App Engine" href="http://code.google.com/appengine/docs/billing.html">en esta página</a> podéis consultar los precios del servicio. Una característica del servicio que nos viene muy bien en la época de desarrollo de la aplicación es que los primeros 500 MB de almacenamiento en disco, el primer GB de salida de datos y el primer GB de entrada son totalmente gratis.</p>
<p>Está claro que no todo son ventajas, algunos inconvenientes tiene en relación a EC2. Por ejemplo no puedes ejecutar código de cualquier lenguaje de programación ni usar la base de datos que quieras, estás limitado a usar o bien Java o Python como lenguaje de programación y su base de datos <a title="BigTable database" href="http://labs.google.com/papers/bigtable.html">BigTable</a>. Sin embargo desde mi punto de vista si tienes soltura con Python y un framework como Django y estás dispuesto (cosa que recomiendo si vas a desarrollar un proyecto grande en el que la escalabilidad va a ser un factor crítico) a usar una base de datos no relacional schemaless como podría ser MongoDB es una opción que recomendaría sin lugar a dudas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/escalabilidad/google-app-engine-nuestros-proyectos-en-la-nube/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escalabilidad en nuestros servidores con Amazon EC2</title>
		<link>http://www.danielvigueras.com/escalabilidad/escalabilidad-en-nuestros-servidores-con-amazon-ec2</link>
		<comments>http://www.danielvigueras.com/escalabilidad/escalabilidad-en-nuestros-servidores-con-amazon-ec2#comments</comments>
		<pubDate>Wed, 27 Oct 2010 21:01:41 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Escalabilidad]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[escalabilidad]]></category>
		<category><![CDATA[google app engine]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=93</guid>
		<description><![CDATA[Cuando desarrollamos una aplicación web que tiene proyección de convertirse en un proyecto grande a largo plazo siempre nos surgen una serie de preguntas que deberíamos de tener resueltas antes de poner nada en funcionamiento: ¿Cuántos recursos necesito para ejecutar la aplicación? ¿Qué servidor dedicado contrato? ¿Se quedará corto y se caerá el servicio enseguida [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danielvigueras.com/wp-content/uploads/2010/10/logo_aws.gif"><img class="aligncenter size-full wp-image-96" title="Amazon AWS" src="http://www.danielvigueras.com/wp-content/uploads/2010/10/logo_aws.gif" alt="Amazon AWS" width="164" height="60" /></a></p>
<p>Cuando desarrollamos una aplicación web que tiene proyección de convertirse en un proyecto grande a largo plazo siempre nos surgen una serie de preguntas que deberíamos de tener resueltas antes de poner nada en funcionamiento:</p>
<ul>
<li>¿Cuántos recursos necesito para ejecutar la aplicación?</li>
<li>¿Qué servidor dedicado contrato?</li>
<li>¿Se quedará corto y se caerá el servicio enseguida o por lo contrario me sobrará servidor por todas partes y estaré pagando un dinero extra de forma inútil?</li>
<li>Cuando el servidor tienda a quedarse pequeño ¿Cuánto tiempo voy a tardar en montar otro servidor y balancear la carga?</li>
</ul>
<p>Este tipo de preguntas no son nada fáciles de responder a priori. Si nuestro servidor se satura la experiencia del usuario será muy mala y conllevará una mala imagen y un menor uso por parte de los usuarios, pudiendo hacer hasta que la aplicación fracase rotundamente.</p>
<p>Una solución a este tipo de problemas sería usar <a title="Amazon EC2" href="http://aws.amazon.com/ec2/">Amazon EC2</a> (Elastic Cloud Computing). Se trata de un servicio de Amazon en el cual tú contratas instancias de servidores dedicados, que no son más que máquinas virtuales, en función de tus necesidades. Hay <a title="Amazon EC2 Instances" href="http://aws.amazon.com/ec2/instance-types/">varios tipos de instancias</a> en función del uso que se le vaya a dar, instancias pequeñas para empezar y luego instancias que tienen mucha CPU (orientadas a ser servidores web) y/o instancias con mucha RAM (orientadas a alojar servidores de bases de datos).</p>
<p>El hecho de usar máquinas virtuales nos proporciona muchas ventajas. Podemos partir de una imagen base de una instalación de Linux y a partir de ahí configurarla a medida como queramos y guardarla como un modelo de instancia a usar en adelante. Cuando necesitemos un servidor nuevo lo único que tendremos que hacer es solicitar una nueva instancia y ejecutar ahí nuestra imagen personalizada (es un proceso que dura pocos minutos). Esta versatilidad nos permite ir añadiendo servidores o quitando en función de nuestras necesidades, de esta manera el gasto va acorde también al uso que requiera en cada momento nuestra aplicación. Es posible también automatizar este proceso mediante un script que controle el uso de recursos medio en nuestro conjunto de servidores, y que añada o quite servidores en función de la carga media total.</p>
<p>El <a href="http://aws.amazon.com/ec2/pricing/">precio de Amazon EC2</a> va en función del tiempo que tenemos en funcionamiento una instancia, del tipo de instancia, del uso de espacio en discos EBS (es un tipo de espacio en disco que nos proporciona Amazon ya que el disco de las instancias es volátil) y de la cantidad de datos transferidos.</p>
<p>Un ejemplo real en el que se usa Amazon EC2 es el caso del agregador de noticias Menéame, <a href="http://gallir.wordpress.com/2009/12/30/como-montamos-meneame-en-amazon-ec2/">Ricardo Galli en su blog relata</a> cómo tienen montada toda la arquitectura de red en EC2.</p>
<p>En resumen podemos decir que EC2 es una buena alternativa para montar nuestras aplicaciones web &#8220;en la nube&#8221;, ya que nos permite escalar recursos de acuerdo a nuestras necesitades. En una futura entrada hablaré de Google App Engine y de sus ventajas e inconvenientes respecto a Amazon EC2.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/escalabilidad/escalabilidad-en-nuestros-servidores-con-amazon-ec2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Memcached: almacenamiento distribuido de objetos en memoria</title>
		<link>http://www.danielvigueras.com/desarrollo-web/memcached-almacenamiento-distribuido-de-objetos-en-memoria</link>
		<comments>http://www.danielvigueras.com/desarrollo-web/memcached-almacenamiento-distribuido-de-objetos-en-memoria#comments</comments>
		<pubDate>Wed, 04 Aug 2010 23:19:49 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Optimización]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=75</guid>
		<description><![CDATA[El objetivo de este artículo es el de explicar qué es Memcached y cómo puede ayudarnos a la hora de optimizar nuestras aplicaciones web a medida que crecen en número de usuarios y por tanto en consumo de recursos. Memcached es simple pero a la vez muy potente, su objetivo es el de almacenar objetos [...]]]></description>
			<content:encoded><![CDATA[<p>El objetivo de este artículo es el de explicar qué es Memcached y cómo puede ayudarnos a la hora de optimizar nuestras aplicaciones web a medida que crecen en número de usuarios y por tanto en consumo de recursos.</p>
<p>Memcached es simple pero a la vez muy potente, su objetivo es el de almacenar objetos en memoria RAM a los que podamos acceder a posteriori cuando sea necesario. Se puede almacenar cualquier clase de objeto que estará asociado a un identificador único.</p>
<p>Memcached no está pensado para sustituir a una base de datos ya que los objetos almacenados en ella no son persistentes, es decir, se almacenan únicamente en memoria RAM y nunca son volcados a disco. La clave es colocar a Memcached entre nuestra aplicación web y el sistema gestor de bases de datos que estemos usando (por ejemplo, MySQL). Cuando en la aplicación web se necesite un dato primero se consultará su existencia en Memcached, si el dato está disponible habremos obtenido el objeto deseado directamente de memoria RAM y a una velocidad mucho mayor que si se hubiera tenido que ir a buscar ese mismo dato a disco. En caso de que el dato no se encuentre en Memcached se procederá a obtener el dato del sistema gestor de bases de datos y a almacenarlo en Memcached para que la próxima vez que se intente acceder ya se encuentre en memoria. A continuación se puede observar el pseudocódigo equivalente a una parte de una aplicación web que use Memcached:</p>
<pre><code>funcion obtener_objeto(objid)
{
   objeto = memcached_get("obj".objid)
   si(definido(objeto))
      devolver objeto
   objeto = basedatos_get(objid)
   memcached_set("obj".objid, objeto)
   devolver objeto
}</code></pre>
<p>Por tanto sólo la primera vez que se necesite un objeto se tendrá que ir a disco a buscarlo y las sucesivas veces este objeto se encontrará en memoria para ser servido directamente. Esto es cierto mientras únicamente se produzcan lecturas en la base de datos, sin embargo cuando se producen escrituras la cosa cambia y hay que afrontar los problemas que surgen. Cuando se escribe un dato lo más sencillo es eliminar el objeto de memcached, de manera que la próxima vez éste no sea encontrado y se cargue desde el sistema gestor de bases de datos. Existen otras técnicas más complicadas para ganar en rendimiento en relación a las escrituras, pero se escapan de la visión general que se quiere dar en este artículo sobre este sistema. Para establecer un símil fácil de comprender para gente que ya conozca la arquitectura de un procesador podríamos decir que nuestra aplicación web es como la CPU, Memcached sería la caché L1 y el sistema gestor de bases de datos sería la caché L2. Memcached también permite agrupar servidores formando clústeres, de esta manera los datos se distribuyen entre los diferentes nodos del cluster y se gana en capacidad y en tolerancia a fallos.</p>
<p>En la propia <a title="Memcached" href="http://memcached.org/">página web de Memcached</a> se puede ver como es usado en sitios web con grandes cargas de usuarios como la Wikipedia, Twitter, Youtube, WordPress, etc.</p>
<p>En definitiva se puede decir que el uso de Memcached es algo muy recomendado en nuestras aplicaciones web, ya que ayudará a que sean más escalables y que expriman aún más la capacidad de nuestros servidores.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/desarrollo-web/memcached-almacenamiento-distribuido-de-objetos-en-memoria/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Actualizaciones semi automáticas en Debian y Ubuntu</title>
		<link>http://www.danielvigueras.com/utilidades/actualizaciones-semi-automaticas-en-debian-y-ubuntu</link>
		<comments>http://www.danielvigueras.com/utilidades/actualizaciones-semi-automaticas-en-debian-y-ubuntu#comments</comments>
		<pubDate>Sun, 24 May 2009 23:08:39 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[actualizaciones]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[aptitude]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=67</guid>
		<description><![CDATA[Como ya hemos comentado, es importante tener actualizado nuestro servidor, sobre todo si estas actualizaciones están relacionadas con la seguridad del mismo. En el caso de Debian/Ubuntu directamente podríamos realizar un pequeño script que ejecutara un aptitude update &#38;&#38; aptitude upgrade cada 3 horas, por ejemplo. Sin embargo no es algo que recomiende ya que [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya hemos comentado, es importante tener actualizado nuestro servidor, sobre todo si estas actualizaciones están relacionadas con la seguridad del mismo. En el caso de <strong>Debian/Ubuntu</strong> directamente podríamos realizar un pequeño script que ejecutara un <strong><em>aptitude update &amp;&amp; aptitude upgrade</em></strong> cada 3 horas, por ejemplo. Sin embargo no es algo que recomiende ya que (quizá sea paranoia mía) ¿ y si alguna de estas actualizaciones nos estropea algo del servidor ?</p>
<p>Sería interesante saber cuando hay actualizaciones disponibles para posteriormente entrar a mano y realizarlas bajo nuestra supervisión de forma manual. Para ello he elaborado un script de gran sencillez cuyo cometido es el de actualizar la lista de paquetes disponibles en <strong>Debian/Ubuntu</strong> y posteriormente realizar una simulación de actualización del sistema, en caso de que se necesite descargar algo nos avisa mediante correo electrónico.</p>
<p>El contenido del script es el siguiente:</p>
<pre class="brush: bash; title: ; notranslate">#!/bin/bash
LOGFILE=/tmp/log_aptitude
aptitude update  &amp;gt; $LOGFILE
aptitude -sy upgrade &amp;gt;&amp;gt; $LOGFILE
grep -q &quot;Necesito descargar 0B&quot; $LOGFILE
if [ $? -eq 1 ]
then
      cat $LOGFILE | mail -s &quot;Se necesita actualizar el servidor&quot; mi@correo.com
fi</pre>
<p>Sustituyendo mi@correo.com por nuestra dirección de correo electrónico donde recibir las notificaciones.<br />
Para añadirlo al crontab de forma que <strong>se ejecute cada 3 horas</strong> habría que ejecutar como <em>root</em></p>
<pre class="brush: bash; title: ; notranslate">crontab -e</pre>
<p>y añadir la siguiente línea:</p>
<pre class="brush: bash; title: ; notranslate">0 */3 * * * /root/scripts/aptupdates</pre>
<p>Una vez hecho esto en el momento en que haya alguna actualización pendiente de realizar se nos informarán por correo, evitando así tener que entrar periódicamente al servidor y comprobar esto de forma manual.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/utilidades/actualizaciones-semi-automaticas-en-debian-y-ubuntu/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Grsecurity: protegiendo aún más nuestros servidores</title>
		<link>http://www.danielvigueras.com/seguridad/grsecurity-protegiendo-aun-mas-nuestros-servidores</link>
		<comments>http://www.danielvigueras.com/seguridad/grsecurity-protegiendo-aun-mas-nuestros-servidores#comments</comments>
		<pubDate>Sun, 24 May 2009 22:25:48 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[grsecurity]]></category>
		<category><![CDATA[overflows]]></category>
		<category><![CDATA[parches]]></category>
		<category><![CDATA[xploits]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=62</guid>
		<description><![CDATA[Lo ideal es que hoy en día el administrador de un servidor esté suscrito a listas de correo/feeds rss sobre cada uno de los servicios que tiene ejecutando en el servidor (apache, proftpd, mysql, exim, dovecot, etc&#8230;) de forma que si aparece un nuevo bug de última hora se tomen las medidas necesarias para evitar [...]]]></description>
			<content:encoded><![CDATA[<p>Lo <strong>ideal </strong>es que hoy en día el administrador de un servidor esté suscrito a listas de correo/feeds rss sobre cada uno de los servicios que tiene ejecutando en el servidor (apache, proftpd, mysql, exim, dovecot, etc&#8230;) de forma que si aparece un nuevo bug de última hora se tomen las medidas necesarias para evitar su explotación, aún en esos momentos en los cuales no existe un parche oficial.</p>
<p>Esta práctica es muy recomendable, pero<strong> no significa que nos cubra completamente</strong>, ni mucho menos. Gran cantidad de bugs no se comunican a los creadores del software hasta pasados unos días, semanas e incluso meses posteriores a su descubrimiento, pero lo que sí se crean son los denominados xploits o-day que circulan dentro de los círculos privados de determinados grupos aficionados a la seguridad. Estos xploits permiten en multitud de casos aprovechar una vulnerabilidad remota para ganar acceso a la máquina, en algunos casos directamente como <em>root</em> y en otros casos como usuario normal, pero una vez dentro el conseguir acceso como <em>root</em> se basa en ejecutar otro xploit local, cosa que suele ser de menor dificultad una vez dentro del sistema.</p>
<p>Con el fin de minimizar la probabilidad de que nuestro servidor sea <em>hackeado</em> <em>es</em>te artículo quiere presentar (para los que no los conozcan) y recomendar encarecidamente el uso del conjunto de parches denominados <strong>Grsecurity</strong>. La definición que aportan en su web es la siguiente:</p>
<blockquote><p><span style="color: #808080;"><em>Grsecurity is an innovative approach to security utilizing a multi-layered detection, prevention, and containment model. It is licensed under the GPL.<br />
It offers among many other features:</em></span></p>
<ul type="disc">
<li><span style="color: #808080;"><em>An intelligent and robust Role-Based Access Control (RBAC) system that can generate least privilege policies for your entire system with no configuration</em></span></li>
<li><span style="color: #808080;"><em>Change root (chroot) hardening</em></span></li>
<li><span style="color: #808080;"><em>/tmp race prevention</em></span></li>
<li><span style="color: #808080;"><em>Extensive auditing</em></span></li>
<li><span style="color: #808080;"><em>Prevention of arbitrary code execution, regardless of the technique used (stack smashing, heap corruption, etc)</em></span></li>
<li><span style="color: #808080;"><em>Prevention of arbitrary code execution in the kernel</em></span></li>
<li><span style="color: #808080;"><em>Randomization of the stack, library, and heap bases</em></span></li>
<li><span style="color: #808080;"><em>Kernel stack base randomization</em></span></li>
<li><span style="color: #808080;"><em>Protection against exploitable null-pointer dereference bugs in the kernel</em></span></li>
<li><span style="color: #808080;"><em>Reduction of the risk of sensitive information being leaked by arbitrary-read kernel bugs</em></span></li>
<li><span style="color: #808080;"><em>A restriction that allows a user to only view his/her processes</em></span></li>
<li><span style="color: #808080;"><em>Security alerts and audits that contain the IP address of the person causing the alert</em></span></li>
</ul>
</blockquote>
<p>Este conjunto de parches podría en gran cantidad de casos, aún ejecutando en nuestro servidor un proceso que tenga alguna vulnerabilidad conocida, que esta vulnerabilidad pueda ser explotada.  Los mecanismos que añade al <em>kernel </em>para aumentar la seguridad son de un nivel que se escapa del objetivo de este artículo. Por poner un ejemplo, para aquellos que conozcan en que se basan las vulnerabilidades de tipo <a title=" Smashing The Stack For Fun And Profit" href="http://insecure.org/stf/smashstack.html" target="_blank">stack overflow</a> y que alguna vez hayan experimentado con un xploit de este tipo diremos que <strong>Grsecurity </strong>introduce aleatorización en la dirección <em>EIP </em>de ejecución de los procesos, de forma que un <em>offset </em>precalculado y almacenado en el xploit no serviría para nada en un servidor con estos parches.</p>
<p>La instalación de Grsec requiere parchear el kernel, aunque se pueden encontrar kernels ya parcheados por internet yo recomiendo bajarse los fuentes de la distribución y parchear uno mismo a mano el kernel.</p>
<p>Una característica que me gusta mucho también de Grsec es que si lo activas puedes permitir que los usuarios sólo vean los procesos que están ejecutando ellos mismos, así nunca podrán ver información sensible de los procesos que otros usuarios estén ejecutando en el sistema.</p>
<p>Como conclusión final podemos decir, al igual que en otros artículo que esto aumenta la seguridad de nuestros servidores, pero en ningún caso nos hemos de dormir ya que continuamente aparecen nuevas vulnerabilidades que podrían afectarnos.</p>
<p>Más enlaces de interés para aquellos que quieran profundizar en el tema:</p>
<p><a title="Grsecurity" href="http://www.grsecurity.net/" target="_blank">Página oficial de Grsecurity</a></p>
<p><a href="http://www.packetstormsecurity.org/" target="_blank">Packetstorm</a></p>
<p><a title="SecurityFocus" href="http://www.securityfocus.com/" target="_blank">SecurityFocus</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/seguridad/grsecurity-protegiendo-aun-mas-nuestros-servidores/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tripwire: comprobando la integridad del sistema</title>
		<link>http://www.danielvigueras.com/seguridad/tripwire-comprobando-la-integridad-del-sistema</link>
		<comments>http://www.danielvigueras.com/seguridad/tripwire-comprobando-la-integridad-del-sistema#comments</comments>
		<pubDate>Sat, 31 Jan 2009 01:06:42 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[integridad]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[Tripwire]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=53</guid>
		<description><![CDATA[Cuando un atacante explota un fallo en un servidor y logra acceso, lo primero que suele hacer es cubrir sus huellas mediante la instalación de un rootkit. Esto puede implicar modificar binarios o librerías del sistema con versiones creadas especialmente para el caso; por ejemplo se podría sustituir el binario /bin/ls del sistema con una [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-54 alignright" title="Tripwire" src="http://www.danielvigueras.com/wp-content/uploads/2009/01/tripwire-use-300x225.jpg" alt="Tripwire" width="300" height="225" /></p>
<p>Cuando un atacante explota un fallo en un servidor y logra acceso, lo primero que suele hacer es cubrir sus huellas mediante la instalación de un <em>rootkit</em>. Esto puede implicar modificar binarios o librerías del sistema con versiones creadas especialmente para el caso; por ejemplo se podría sustituir el binario <strong>/bin/ls</strong> del sistema con una versión que no mostrase los ficheros que empiecen por una cadena en especial, así el atacante podría dejar ficheros en el sistema cuyo nombre comenzasen por esa cadena y nadie más podría ver que existen usando el comando <strong>ls.</strong></p>
<p>Aunque existen mecanismos más complejos y eficientes para ocultar ficheros en el sistema (como por ejemplo modificando la <em>syscall table</em> del kernel con una versión alternativa de una llamada al sistema), este método es bastante común. El problema radica en que el administrador no se ha dado cuenta de que un binario ha sido reemplazado por una versión alternativa troyanizada, si tuviera algún método de realizar una comprobación automática podría detectar a tiempo este tipo de intrusiones.</p>
<p>Para conseguir detectar estas modificaciones de forma automática existe una estupenda herramienta denominada <strong>Tripwire</strong>, que genera una base de datos con un hash digital de los ficheros del sistema. Lo ideal es generar esta base de datos con el sistema recien instalado, antes de conectarlo a la red, así estaremos seguros de que está totalmente limpio. Una vez generada la base de datos podremos realizar chequeos periódicos de forma automática añadiendolo en el crontab, pudiendo configurar el software para que envíe un email al administrador en caso de detectar modificaciones en algún fichero.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/seguridad/tripwire-comprobando-la-integridad-del-sistema/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuración de /tmp con noexec para una mayor seguridad en servidores web Linux</title>
		<link>http://www.danielvigueras.com/seguridad/configuracion-de-tmp-con-noexec-para-una-mayor-seguridad-en-servidores-web-linux</link>
		<comments>http://www.danielvigueras.com/seguridad/configuracion-de-tmp-con-noexec-para-una-mayor-seguridad-en-servidores-web-linux#comments</comments>
		<pubDate>Thu, 29 Jan 2009 18:26:57 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[/tmp]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[exploits]]></category>
		<category><![CDATA[gusanos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[noexec]]></category>
		<category><![CDATA[servidores web]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=44</guid>
		<description><![CDATA[Una de las principales amenazas a las que se ven sometidos los servidores web en internet son los fallos existentes en las aplicaciones que ejecutan. Estos fallos, aprovechados convenientemente, pueden conllevar que un usuario malicioso consiga acceso al servidor con los mismos privilegios que el usuario que ejecuta el servicio web. En el caso de [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las principales amenazas a las que se ven sometidos los servidores web en internet son los fallos existentes en las aplicaciones que ejecutan. Estos fallos, aprovechados convenientemente, pueden conllevar que un usuario malicioso consiga acceso al servidor con los mismos privilegios que el usuario que ejecuta el servicio web. En el caso de Linux este usuario se suele llamar <em>nobody o apache</em>.</p>
<p>El primer paso que un atacante realiza cuando consigue explotar el fallo a través de la aplicación web es el de descargar en el servidor alguna aplicación que le permita acceder remotamente de forma cómoda, como por ejemplo mediante una <em>shell</em>. En el caso de los gusanos creados especialmente para este propósito el comportamiento es muy similar, explotan el fallo, descargan el mismo gusano en el sistema y lo ejecutan para seguir infectado otros servidores.</p>
<p>El usuario sube al servidor esta aplicación maliciosa en un directorio en el cual tenga permisos de ejecución el usuario que ejecuta el servicio web, pero como estos directorios pueden variar entre distintas distribuciones se recurre a utilizar en la mayoría de casos el directorio en el cual todos los usuarios pueden escribir, es decir, <strong>/tmp</strong> .</p>
<p>Para intentar minimizar las oportunidades de éxito de este tipo de ataques surge la idea de marcar de alguna manera el directorio <strong>/tmp </strong>como directorio donde no se puedan ejecutar aplicaciones, sin embargo esto no es posible aplicarlo directamente a directorios, sino que se debe realizar sobre particiones completas.</p>
<p>Para lograr conseguir este objetivo sin la necesidad de modificar la tabla de particiones de nuestro disco duro vamos a recurrir a <a title="dispositivos loop" href="http://en.wikipedia.org/wiki/Loop_device" target="_self">dispositivos loop</a>. Básicamente lo que haremos será crear un fichero del tamaño que deseemos que tenga el directorio <strong>/tmp</strong>, y posteriormente montaremos este sistema de ficheros en el mismo directorio, marcándolo como no ejecutable para conseguir así nuestro objetivo.</p>
<p>A continuación se puede ver un código de ejemplo que crea un directorio <strong>/tmp </strong>no ejecutable con un tamaño de 1GB:</p>
<pre>cd /var
dd if=/dev/zero of=tmploop bs=1024 count=$((1024*1024))
/sbin/mke2fs tmploop
cp -R /tmp /tmpbak
mount -o loop,noexec,nosuid,rw /var/tmp0 /tmp
chmod 0777 /tmp
cp -R /tmpbak/* /tmp/</pre>
<p>Esto nos dejaría <strong>/tmp</strong> preparado, ahora habría que borrar <strong>/tmpbak </strong>cuando hayamos comprobado que todo ha ido correctamente. Sin embargo cuando el servidor sea reiniciado estos cambios se van a perder. Para que esto no ocurra habría que añadir la siguiente línea al fichero <em>/etc/fstab</em> :</p>
<pre>/var/tmploop       /tmp    ext2    loop,noexec,nosuid,rw  0 0</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/seguridad/configuracion-de-tmp-con-noexec-para-una-mayor-seguridad-en-servidores-web-linux/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducción a la biometría</title>
		<link>http://www.danielvigueras.com/biometria/introduccion-a-la-biometria</link>
		<comments>http://www.danielvigueras.com/biometria/introduccion-a-la-biometria#comments</comments>
		<pubDate>Thu, 04 Dec 2008 23:36:50 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Biometría]]></category>
		<category><![CDATA[ADN]]></category>
		<category><![CDATA[Huella dactilar]]></category>
		<category><![CDATA[Reconocimiento de iris]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=20</guid>
		<description><![CDATA[La biometría abarca el estudio de todos aquellos métodos que permiten reconocer de forma única a una persona, estos métodos son denominados técnicas biométricas. Para que este reconocimiento sea efectivo el método usado se ha de basar en alguna característica reconocible que sea totalmente diferente entre dos personas, como por ejemplo el reconocimiento de la [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-21 alignright" title="Biometría" src="http://www.danielvigueras.com/wp-content/uploads/2008/12/biometria.jpg" alt="" width="207" height="287" /></p>
<p style="text-align: left;">La biometría abarca el estudio de todos aquellos métodos que permiten reconocer de forma única a una persona, estos métodos son denominados <strong>técnicas biométricas</strong>. Para que este reconocimiento sea efectivo el método usado se ha de basar en alguna característica reconocible que sea totalmente diferente entre dos personas, como por ejemplo el reconocimiento de la <strong>huella dactilar</strong>.</p>
<p style="text-align: left;">Gracias a la biometría se pueden agilizar muchos procesos que se ejecutan miles de veces cada día y también garantizar que se mantengan unos ciertos niveles de seguridad, como por ejemplo fichar al entrar y salir del trabajo o controlar el acceso a zonas restrigidas.</p>
<p style="text-align: left;">Sin embargo estas técnicas no son socialmente aceptadas; gran cantidad de veces los usuarios de estos métodos no ven con muy buenos ojos la introducción de estos sistemas, ya que se pueden sentir amenazados de diversas formas. Por un lado estos métodos permiten tenerlos más controlados y así evitar que se produzca la picaresca y por tanto se pierdan horas de trabajo (como el caso en el cual se ficha mediante tarjetas y los compañeros se las dejan unos a otros cuando saben que van a faltar al trabajo o llegar tarde).</p>
<p style="text-align: left;">Por otro lado hay ciertos métodos biométricos mediante los cuales un usuario puede ver comprometida cierta información de la cual no quisiera que nadie tuviera constancia; en el caso concreto del <strong>análisis de ADN</strong> además de reconocer al usuario podríamos conocer también si ha consumido ciertos tipos de estupefacientes en los últimos días (debido a que uno de los métodos para la realización de este test es el de tomar una muestra de cabello) . Este tipo de información podría provocar, aunque las sustancias que el empleado consuma fuera del horario laboral no estuvieran interfiriendo en el trabajo, el despido del mismo en la empresa.</p>
<p style="text-align: left;">En el caso concreto del <strong>reconocimiento de iris</strong>, algunos usuarios pueden ser un tanto escépticos ante la (inocua) luz que se proyecta en el ojo en la fase de reconocimiento, esto provoca un recelo a la hora de usar el mismo.</p>
<p style="text-align: left;">En resumen podemos decir que la biometría por sí sola no sirve para nada sino está asociada a una educación de los usuarios finales en el uso de la misma, que son los que terminarán haciendo uso o no de ella y por tanto determinando su eficacia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/biometria/introduccion-a-la-biometria/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo evitar el Hotlinking y aprovecharnos de ello</title>
		<link>http://www.danielvigueras.com/desarrollo-web/como-evitar-el-hotlinking-y-aprovecharnos-de-ello</link>
		<comments>http://www.danielvigueras.com/desarrollo-web/como-evitar-el-hotlinking-y-aprovecharnos-de-ello#comments</comments>
		<pubDate>Sun, 30 Nov 2008 19:21:38 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[hotlinking]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/?p=12</guid>
		<description><![CDATA[Los webmasters sufren a menudo lo que se denomina Hotlinking, es decir, otras páginas usan archivos (por ejemplo imágenes) alojados en su servidor directamente, haciendo que se consuma su ancho de banda. Lo correcto sería que la persona que quiera usar una imágen en tu web se la descargara a su disco duro y la [...]]]></description>
			<content:encoded><![CDATA[<p>Los webmasters sufren a menudo lo que se denomina <em><strong>Hotlinking</strong></em>, es decir, otras páginas usan archivos (por ejemplo imágenes) alojados en su servidor directamente, haciendo que se consuma su ancho de banda. Lo correcto sería que la persona que quiera usar una imágen en tu web se la descargara a su disco duro y la subiera posteriormente por FTP a su propia página, haciendo así que el ancho de banda gastado sea el propio y no el ajeno.</p>
<p>En varios blogs se pueden encontrar soluciones a este problema, un tanto radicales bajo mi punto de vista, que hacen que cuando un blog te enlace directamente una imágen esta sea sustituida por otra en tiempo de ejecución, o incluso que no se muestre nada, ahorrando así todo el ancho de banda.</p>
<p>Sin embargo si nos paramos a pensar un poco, lo que nos gustaría no es que nadie nos hiciera <em>hotlinking</em> de las imágenes, sino que ese blog acreditara en alguna parte que la imagen está extraída de nuestro blog. Como no podemos obligar al propietario del mismo a que nos enlace o nos nombre en algún sitio acerca de donde ha sido obtenida la imagen, vamos a aprovecharnos para incluir la URL de nuestro blog en la imagen enlazada, para ello haremos uso de los archivos <em>.htaccess</em> de <strong>Apache </strong>y de la librería <em><strong>GD </strong></em>de <strong>PHP</strong>. Lógicamente no queremos que las imágenes que incluyamos en nuestro blog tengan incrustada la URL del mismo.</p>
<p>La idea es simple, cuando un blog nos enlace una imágen directamente la petición GET llegará al servidor con un campo HTTP_REFERER que no corresponderá con la URL de nuestro blog, en ese momento se invocará un script PHP al cual le pasamos la ruta de la imagen solicitada. Este script PHP se encargá en tiempo real de abrir la imagen, incrustarle la URL de nuestro blog y mostrarla.</p>
<p>Este es un ejemplo de una imagen enlazada directamente por nuestro blog:</p>
<p><img class="aligncenter size-full wp-image-13" title="cd-security" src="http://www.danielvigueras.com/wp-content/uploads/2008/11/cd-security.png" alt="" width="340" height="370" /></p>
<p>Este es un ejemplo de como se mostraría la misma imagen si alguien nos hiciera <em>Hotlinking</em>:</p>
<p style="text-align: center;"><img class="size-full wp-image-14 aligncenter" title="cd-security2" src="http://www.danielvigueras.com/wp-content/uploads/2008/11/cd-security2.png" alt="" width="340" height="370" /></p>
<p>Para conseguir incluir este sistema en cualquier página web es necesario usar <strong>Apache</strong>, con soporte de archivos <em>.htaccess </em>y tener instalada la librería <em><strong>GD</strong> </em>en <strong>PHP.</strong></p>
<p>Paso 1: Editar el archivo .htaccess e incluir lo siguiente sustituyendo <strong>tudominio.com</strong> por tu dominio.</p>
<blockquote><p>RewriteEngine On<br />
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?<strong>tudominio</strong>\.com/ [NC]<br />
RewriteCond %{HTTP_REFERER} !^$<br />
RewriteCond %{REQUEST_URI} .*\.(jpe?g|gif|bmp|png)$<br />
RewriteRule ^(.*)$ /nohotlink.php?i=$1 [L]</p></blockquote>
<p>Paso 2: Crear un archivo en el directorio raiz de la web denominado nohotlink.php e incluir el siguiente contenido, sustituyendo <strong>www.tudominio.com</strong> por tu dominio</p>
<blockquote><p>&lt;?php<br />
function imagecreatefromfile($path, $user_functions = false)<br />
{<br />
$info = @getimagesize($path);</p>
<p>if(!$info)<br />
{<br />
return false;<br />
}</p>
<p>$functions = array(<br />
IMAGETYPE_GIF =&gt; &#8216;imagecreatefromgif&#8217;,<br />
IMAGETYPE_JPEG =&gt; &#8216;imagecreatefromjpeg&#8217;,<br />
IMAGETYPE_PNG =&gt; &#8216;imagecreatefrompng&#8217;,<br />
IMAGETYPE_WBMP =&gt; &#8216;imagecreatefromwbmp&#8217;,<br />
IMAGETYPE_XBM =&gt; &#8216;imagecreatefromwxbm&#8217;,<br />
);</p>
<p>if($user_functions)<br />
{<br />
$functions[IMAGETYPE_BMP] = &#8216;imagecreatefrombmp&#8217;;<br />
}</p>
<p>if(!$functions[$info[2]])<br />
{<br />
return false;<br />
}</p>
<p>if(!function_exists($functions[$info[2]]))<br />
{<br />
return false;<br />
}</p>
<p>return $functions[$info[2]]($path);<br />
}</p>
<p>header(&#8220;Content-type: image/png&#8221;);<br />
$im        = imagecreatefromfile($_GET['i']);<br />
$width    = imagesx($im);<br />
$height    = imagesy($im);<br />
putenv(&#8216;GDFONTPATH=&#8217; . realpath(&#8216;.&#8217;));<br />
$white = imagecolorallocate($im, 255, 255, 255);<br />
$grey  = imagecolorallocate($im, 128, 128, 128);<br />
$black = imagecolorallocate($im, 0, 0, 0);<br />
$orange = imagecolorallocate($im, 220, 210, 60);<br />
$tamano = 10;<br />
$texto = &#8220;<strong>www.tudominio.com</strong>&#8220;;<br />
$tb = imagettfbbox($tamano, 0, &#8220;arial&#8221;, $texto);<br />
$altura = $tb[3] &#8211; $tb[5];<br />
imagefilledrectangle  ($im  , 0  , $height-$altura-2  , $width  , $height, $black);<br />
$x = ceil(($width &#8211; $tb[2]) / 2);<br />
imagettftext($im, $tamano, 0, $x, $height-4, $orange, &#8220;arial&#8221;, $texto);<br />
imagepng($im);<br />
imagedestroy($im);</p>
<p>?&gt;</p></blockquote>
<p>Paso 3: Descargar en el directorio raiz de vuestra web la fuente arial.ttf, la podeis obtener <a title="Arial" href="http://alxr.usatlas.bnl.gov/lxr/source/atlas/Tools/AtlasDoxygen/fonts/ttf/arial.ttf?raw=1">desde aqui</a>.</p>
<p>Y listo, ya tendríamos todo en funcionamiento. Podemos hacer una prueba de si el sistema funciona usando el siguiente comando desde wget:</p>
<blockquote><p>wget http://<strong>www.tudominio.com</strong>/alguna_imagen.jpg &#8211;referer=http://<strong>www.otrodominio.com</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/desarrollo-web/como-evitar-el-hotlinking-y-aprovecharnos-de-ello/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Autenticación multifactor mediante RSA SecurID</title>
		<link>http://www.danielvigueras.com/seguridad/autenticacion-multifactor-mediante-rsa-securid</link>
		<comments>http://www.danielvigueras.com/seguridad/autenticacion-multifactor-mediante-rsa-securid#comments</comments>
		<pubDate>Thu, 06 Mar 2008 22:12:48 +0000</pubDate>
		<dc:creator>Daniel Vigueras</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[autenticación multifactor]]></category>
		<category><![CDATA[rsa securid]]></category>

		<guid isPermaLink="false">http://www.danielvigueras.com/seguridad/autenticacion-multifactor-mediante-rsa-securid</guid>
		<description><![CDATA[Normalmente en los procesos de autenticación interviene lo que denomicamos un único factor, entendiendo como factor cualquier método de autenticación en el sistema, como podría ser una contraseña, un código PIN, una huella dactilar, una secuencia de ADN&#8230; Sin embargo si queremos que este proceso de autenticación en el sistema sea más robusto lo ideal [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.danielvigueras.com/wp-content/uploads/2008/03/securid.jpg" alt="securid.jpg" /></p>
<p>Normalmente en los procesos de autenticación interviene lo que denomicamos un único factor, entendiendo como factor cualquier método de autenticación en el sistema, como podría ser una contraseña, un código PIN, una huella dactilar, una secuencia de ADN&#8230;  Sin embargo si queremos que este proceso de autenticación en el sistema sea más robusto lo ideal es hacer que intervengan dos factores (tres sería mejor, pero el proceso sería demasiado tedioso) siendo a esto a lo que denominamos <strong>autenticación multifactor</strong>.</p>
<p>Al comienzo de este artículo se puede ver la imágen de un <strong>RSA SecurID</strong>, un pequeño aparato con forma de llavero que únicamente posee una <strong>pantalla LCD</strong> en la cual es muestra un número, lo primero de todo hay que destacar que este aparato no posee ningún método de comunicación con el exterior, ni puerto USB, ni Wi-Fi, ni bluetooth, ni infrarrojos ni nada parecido, funciona aislado del mundo exterior. Cada 30 segundos el número que aparece en pantalla cambia por otro generado aleatoriamente, es decir, incorpora un generador de números pseudoaleatorios en su interior y una semilla que permite que esta secuencia sea diferente en cada SecurID. Esta semilla también está almacenada en el servidor de autenticación y por tanto haciendo una serie de cálculos rápidos puede saber en cada momento que número muestra nuestro aparato por pantalla.</p>
<p>Cuando vamos a autenticarnos en el sistema introducimos nuestro nombre de usuario y un número PIN que sólo nosotros conocemos seguido del número que aparezca en ese mismo instante en la pantalla del SecurID, a continuación si esta primera fase de autenticación se realiza correctamente el sistema procede a solicitarnos nuestra contraseña de usuario para acceder al sistema.</p>
<p><strong>¿ Por qué ganamos seguridad usando este sistema ?</strong> Sencillamente porque si usamos un método tradicional de usuario y contraseña un atacante que por fuerza bruta logre adivinar la contraseña tendrá acceso al sistema, sin embargo con este método si el atacante conoce el nombre de usuario y contraseña no concerá ni el PIN necesario ni tendrá el RSA SecurID en su posesión para ver el número que aparece en pantalla. El caso de que el usuario pierda el RSA SecurID tampoco es problema ya que un atacante no conocerá el PIN necesario aunque pueda ver en pantalla el número que aparece en el momento de la autenticación.</p>
<p>Este tipo de medidas se han de tomar debido a que no podemos dejar que toda la seguridad asociada al proceso de autenticación recaiga en el usuario del sistema ya que se convertiría en la mayor brecha potencial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielvigueras.com/seguridad/autenticacion-multifactor-mediante-rsa-securid/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->

