<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>HiperGalaxia &#187; Internet</title>
	<atom:link href="http://www.hipergalaxia.org/blog/tag/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hipergalaxia.org/blog</link>
	<description>El conocimiento, la frontera final.</description>
	<lastBuildDate>Thu, 09 Feb 2012 07:23:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Solucionando mis problemas con el modem Huawei HG530</title>
		<link>http://blog.jorgeivanmeza.com/2011/12/solucionando-mis-problemas-con-el-modem-huawei-hg530/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solucionando-mis-problemas-con-el-modem-huawei-hg530</link>
		<comments>http://blog.jorgeivanmeza.com/2011/12/solucionando-mis-problemas-con-el-modem-huawei-hg530/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solucionando-mis-problemas-con-el-modem-huawei-hg530#comments</comments>
		<pubDate>Fri, 16 Dec 2011 00:00:41 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[gateway]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[HG530]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Modem]]></category>
		<category><![CDATA[UNE]]></category>
		<category><![CDATA[VLAN]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49730</guid>
		<description><![CDATA[Introducción En el apartamento UNE me instaló un gateway Huawei HG530 ADSL.  Como es habitual en estos aparatos incluye cuatro puertos LAN para conectar mediante cable a un igual número de equipos, sin embargo los equipos que yo conectaba sólo &#8230; <a href="http://blog.jorgeivanmeza.com/2011/12/solucionando-mis-problemas-con-el-modem-huawei-hg530/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>En el apartamento UNE me instaló un gateway <a href="http://www.huaweidevice.com/worldwide/productFeatures.do?pinfoId=2664&amp;directoryId=5013&amp;treeId=3342&amp;tab=0" >Huawei HG530</a> ADSL.  Como es habitual en estos aparatos incluye cuatro puertos LAN para conectar mediante cable a un igual número de equipos, sin embargo los equipos que yo conectaba sólo funcionaban en el puerto #1, los demás obtenían una dirección IP del servicio DHCP pero no conseguían acceder a Internet.</p><h2>El problema y la solución</h2><p>Anoche le dí otra oportunidad al problema y estuve revisando las opciones de configuración web del dispositivo y encontré que bajo la opción <em>Advanced</em> &gt; <em>Port Mapping</em> es posible crear una especie de VLANs entre los puertos.  Tal y como me lo entregaron los técnicos de UNE parecía contener la definición de dos VLANs, la primera incluía al puerto LAN #1 y la segunda a los demás siendo esto coherente con los síntomas analizados.</p><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Modem-Port-Mapping.png"><img class="aligncenter size-full wp-image-49731" title="Modem Port Mapping" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Modem-Port-Mapping.png" alt="" width="560" height="514" /></a></p><p>Para solucionar esta situación removí la segunda VLAN y agregué los puertos LAN faltantes a la primera para permitir la comunicación entre ellos, el puerto WAN y el puerto WLAN.  La configuración resultante se muestra a continuación.</p><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_001.png"><img class="aligncenter size-full wp-image-49732" title="Selection_001" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_001.png" alt="" width="565" height="578" /></a></p><p>También es conveniente verificar bajo la opción <em>Basic</em> &gt; DHCP que este servicio se encuentre activo a través de todos los puertos LAN, de lo contrario los equipos conectados en ellos no obtendrán una dirección IP de manera automática.</p><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_002.png"><img class="aligncenter size-full wp-image-49734" title="Selection_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_002.png" alt="" width="563" height="382" /></a></p><h2>Mejorando la seguridad</h2><p>Con sorpresa encontré que el <em>firewall</em> también venía desactivado, permitiendo establecer conexiones web y telnet para la administración del router desde Internet.  Para impedir esto se activaron las opciones bajo <em>Advanced</em> &gt; <em>Security</em>.</p><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_0011.png"><img class="aligncenter size-full wp-image-49735" title="Selection_001" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_0011.png" alt="" width="559" height="250" /></a><br />Así como las ubicadas bajo <em>Advanced</em> &gt; <em>Firewall</em>.</p><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_0021.png"><img class="aligncenter size-full wp-image-49736" title="Selection_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Selection_0021.png" alt="" width="560" height="185" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/12/solucionando-mis-problemas-con-el-modem-huawei-hg530/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actualizar Empathy a la versión 2.32.1</title>
		<link>http://blog.jorgeivanmeza.com/2011/01/actualizar-empathy-a-la-version-2-32-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=actualizar-empathy-a-la-version-2-32-1</link>
		<comments>http://blog.jorgeivanmeza.com/2011/01/actualizar-empathy-a-la-version-2-32-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=actualizar-empathy-a-la-version-2-32-1#comments</comments>
		<pubDate>Wed, 12 Jan 2011 02:23:40 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[10.10]]></category>
		<category><![CDATA[Empathy]]></category>
		<category><![CDATA[GTalk]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Telepathy]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=13550</guid>
		<description><![CDATA[Introducción. Empathy es el software de mensajería que incluye por defecto GNU/Linux Ubuntu desde su versión 10.04.  Antes utilizaba Pidgin el cual es está mas maduro debido a su mayor trayectoria, sin embargo después de instalar esta última versión de Ubuntu -10.10- decidí darle una oportunidad a esta nueva aplicación. Tal y como lo mencioné, [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/01/64px-Hicolor_apps_scalable_empathy.svg_.png"><img class="alignleft size-full wp-image-13551" title="64px-Hicolor_apps_scalable_empathy.svg" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/01/64px-Hicolor_apps_scalable_empathy.svg_.png" alt="" width="64" height="64" /></a><a href="http://live.gnome.org/Empathy" >Empathy</a> es el software de mensajería que incluye por defecto GNU/Linux Ubuntu desde su versión 10.04.  Antes utilizaba <a href="http://pidgin.im/" >Pidgin</a> el cual es está mas maduro debido a su mayor trayectoria, sin embargo después de instalar esta última versión de Ubuntu -10.10- decidí darle una oportunidad a esta nueva aplicación.</p><p>Tal y como lo mencioné, a este software aún le faltan varias de las características que considero indispensables para su uso, entre ellas la posibilidad de permitir o negar la posibilidad de los contactos de ver nuestro estado o comunicarse con nosotros (privacidad).</p><div id="attachment_13553" class="wp-caption aligncenter" style="width: 367px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/01/Contact-List_031.png"><img class="size-full wp-image-13553" title="Contact List_031" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/01/Contact-List_031.png" alt="Estado de la sesión en Empathy" width="357" height="80" /></a><p class="wp-caption-text">Estado de la sesión en Empathy</p></div><p>Otra característica que extrañaba era la posibilidad de estar <em>invisible</em>, es decir, conectado a los diferentes servicios de mensajería pero sin aparecer conectado en las listas de mis contactos.  Esto era parcialmente factible, ya que con protocolos como el de Messenger era posible pero específicamente con el de GTalk (mensajería de Google) no lo era, cuando se tenían cuentas activas de este protocolo el estado era asignado automáticamente como <em>ocupado</em> lo que hacía a mi usuario evidentemente visible.</p><p>Pensé que era una limitación del protocolo de Google (basado en <a href="http://es.wikipedia.org/wiki/XMPP_Standards_Foundation" >XMPP</a>) sin embargo recientemente encontré que era realmente un <em>bug</em> de <a href="https://launchpad.net/~telepathy" >Telepathy</a> -la librería que da soporte a las conversaciones en Empathy- y que este ya ha sido corregido.</p><h2>Actualizar Empathy.</h2><p>La nueva versión de las librerías que corrige este problema no puede ser instalada automáticamente desde el repositorio, al menos para la versión actual de Ubuntu, aparentemente por un problema de dependencias.  Por este motivo es necesario realizar una actualización manual de los paquetes.</p><p>En primera instancia es necesario descargar las nuevas versiones de los siguientes archivos.  Para la versión de 32 bits de Ubuntu:</p><ol><li><a href="http://packages.ubuntu.com/natty/i386/telepathy-gabble/download" >http://packages.ubuntu.com/natty/i386/telepathy-gabble/download</a></li><li><a href="http://packages.ubuntu.com/natty/i386/libsqlite3-0/download" >http://packages.ubuntu.com/natty/i386/libsqlite3-0/download</a></li><li><a href="http://packages.ubuntu.com/natty/i386/libtelepathy-glib0/download" >http://packages.ubuntu.com/natty/i386/libtelepathy-glib0/download</a></li></ol><p>Para la versión de 64 bits de Ubuntu.</p><ol><li><a href="http://packages.ubuntu.com/natty/amd64/telepathy-gabble/download" >http://packages.ubuntu.com/natty/amd64/telepathy-gabble/download</a></li><li><a href="http://packages.ubuntu.com/natty/amd64/libsqlite3-0/download" >http://packages.ubuntu.com/natty/amd64/libsqlite3-0/download</a></li><li><a href="http://packages.ubuntu.com/natty/amd64/libtelepathy-glib0/download" >http://packages.ubuntu.com/natty/amd64/libtelepathy-glib0/download</a></li></ol><p>Posteriormente es necesario instalar los paquetes <span style="font-family: 'courier new', courier;">.deb</span> descargados anteriormente.  Esto se puede hacer de varias maneras, desde haciendo doble clic sobre ellos y dejando que el Ubuntu Software Center se encargue de ellos hasta, como yo lo prefiero, instalarlos desde línea de comando de la siguiente manera.</p><p><span style="font-family: 'courier new', courier;">$ sudo dpkg -i libsqlite3-*.deb telepathy-gabble_*.deb libtelepathy-*.deb</span></p><p>Finalmente es necesario reiniciar Empathy para utilizar la nueva versión recién instalada.</p><p><strong>Enlaces.</strong></p><ul><li>Stay Hidden on GTalk in Empathy: Fix.<br /> <a href="http://www.omgubuntu.co.uk/2010/11/stay-hidden-on-gtalk-in-empathy-fix/" >http://www.omgubuntu.co.uk/2010/11/stay-hidden-on-gtalk-in-empathy-fix/</a></li><li>Empathy.<br /> <a href="http://live.gnome.org/Empathy" >http://live.gnome.org/Empathy</a></li></ul><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2011/01/actualizar-empathy-a-la-version-2-32-1/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2011/01/actualizar-empathy-a-la-version-2-32-1/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/01/actualizar-empathy-a-la-version-2-32-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Permitir el acceso de los nodos del cluster a Internet a través del nodo principal</title>
		<link>http://blog.jorgeivanmeza.com/2010/12/permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal</link>
		<comments>http://blog.jorgeivanmeza.com/2010/12/permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal#comments</comments>
		<pubDate>Sun, 05 Dec 2010 23:59:12 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[enrrutamiento]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[redes]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=12774</guid>
		<description><![CDATA[Introducción. Es muy común que debido al alto tráfico que se genera entre los nodos trabajadores de un clúster y su nodo principal, estos se separen en una red independiente y el nodo principal, con dos interfaces de red, actúe como puente entre los clientes en la red LAN y los nodos trabajadores en la [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p>Es muy común que debido al alto tráfico que se genera entre los nodos trabajadores de un clúster y su nodo principal, estos se separen en una red independiente y el nodo principal, con dos interfaces de red, actúe como puente entre los clientes en la red LAN y los nodos trabajadores en la red finalmente <em>oculta</em>.</p><p>La configuración de esto es tan simple como la simple conexión física de los dispositivos y la configuración de direcciones IP estáticas para los nodos trabajadores si es que no se desea instalar un servidor DHCP en el nodo principal para que realice esta tarea a través de la interfaz de red específica.  El problema surge cuando es necesario actualizar los nodos trabajadores o en general, que estos accedan a Internet.  Como estos se encuentran en un red diferente de la LAN, no hay nada que los enrrute hacia la WAN, quedando completamente aislados.</p><p>La solución a este problema es muy fácil de implementar gracias a las características intrínsecas de enrrutamiento de Linux (y en general de los sistemas operativos <em>*nix</em>).  Simplemente es necesario indicarle al nodo principal que actúe como enrrutador entre sus interfaces de red: red LAN y red de nodos trabajadores, pudiéndose aplicar los controles que se consideren necesarios a través del uso de <span style="font-family: courier new,courier;">iptables</span>.</p><h2>El panorama.</h2><div id="attachment_12775" class="wp-caption aligncenter" style="width: 725px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/12/cluster_network.png"><img class="size-full wp-image-12775" title="cluster_network" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/12/cluster_network.png" alt="Estructura general del cluster" width="715" height="396" /></a><p class="wp-caption-text">Estructura general del cluster</p></div><p>El nodo principal del cluster cuenta con dos interfaces de red: <span style="font-family: courier new,courier;">eth0</span> que se comunica con la red LAN de la organización y <span style="font-family: courier new,courier;">eth1</span> que se conecta con los nodos trabajadores, los cuales sólo cuentan con una única interfaz de red <span style="font-family: courier new,courier;">eth0</span>.  Estos últimos se encuentran aislados del exterior ya que no son enrrutados inicialmente hacía la red LAN y eventualmente hacia Internet.</p><h2>Implementación del enrrutamiento.</h2><h3>Configuración en el nodo principal del cluster.</h3><p>Este actuará como enrrutador para la información enviada desde los nodos trabajadores y permitirles entonces acceder a las redes exteriores.  Para es necesario implementar en él las siguientes modificaciones de configuración.</p><h4>Activar el envío de paquetes del kernel.</h4><p>Esto se puede implementar de manera temporal, es decir, esta modificación no perdurará al reinicio del sistema, mediante la ejecución del siguiente comando.</p><p><span style="font-family: courier new,courier;"># echo 1 &gt; /proc/sys/net/ipv4/ip_forward</span></p><p>O puede implementarse de manera permanente mediante la edición de los parámetros del kernel de la siguiente manera.</p><p><span style="font-family: courier new,courier;"># vi /etc/sysctl.conf</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">net.ipv4.ip_forward = 1</span></p><p>Esta último método puede verifcarse mediante la ejecución del siguiente comando en el <em>shell</em>.</p><p><span style="font-family: courier new,courier;"># sysctl -p | grep ipv4</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">net.ipv4.ip_forward = 1<br /> net.ipv4.conf.default.rp_filter = 1<br /> net.ipv4.conf.default.accept_source_route = 0<br /> net.ipv4.tcp_syncookies = 1</span></p><h4>Establecer la regla de filtrado.</h4><p><span style="font-family: courier new,courier;"># iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j MASQUERADE</span></p><p>Esta instrucción le indica al nodo principal que permita el paso de los paquetes que vienen desde la red de los nodos trabajadores (<span style="font-family: courier new,courier;">192.168.56.0/24</span>) hacía la otra red, en este caso la LAN (<span style="font-family: courier new,courier;">192.168.1.0</span>), que se accede a través de la interfaz de red <span style="font-family: courier new,courier;">eth0</span>.</p><p>Esta modificación desde la línea de comando no es persistente, por lo cual se deberá configurar en alguno de los archivos que se ejecutan al inicio.  Probablemente el mejor sitio sea en <span style="font-family: courier new,courier;">/etc/sysconfig/iptables</span>, sin embargo debe tenerse cuidado si se utiliza <span style="font-family: courier new,courier;">system-config-securitylevel </span>para administrar el <em>firewall</em> ya que este puede sobreescribir el archivo y olvidar los cambios.</p><h4>Permitir el acceso al servicio DNS.</h4><p>Este paso es opcional, pero probablemente si no se lleva a cabo el enrrutamiento sea exitoso si se utilizan direcciones IP directamente mas no si se intenta acceder utilizando nombres FQDN ya que los intentos de acceso al DNS son filtrados por el nodo principal.</p><p>Para permitir el acceso al servicio DNS es necesario permitir el paso de paquetes UDP cuyo destino sea el puerto 53 de la siguiente manera.</p><p><span style="font-family: courier new,courier;"># iptables -A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT</span></p><p>Igual que en el paso anterior, para hacer persistente esta modificación es necesario incluírla en un archivo como <span style="font-family: courier new,courier;">/etc/sysconfig/iptables</span> o realizarla con el <span style="font-family: courier new,courier;">system-config-securitylevel </span>si se utiliza.</p><h3>Configuración de los nodos trabajadores.</h3><p>Es necesario finalmente indicarle a los nodos trabajadores que el nodo principal del cluster será a partir de ahora su nueva puerta de enlace.  Para hacer esto es necesario modificar el siguiente parámetro de su configuración con la dirección IP del servidor principal configurado anteriormente.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">GATEWAY = 192.168.56.100</span></p><p>Esta modificación puede realizarse uno de los siguientes puntos de configuración de los nodos trabajadores.</p><ol><li>El archivo <span style="font-family: courier new,courier;">/etc/sysconfig/network</span>.</li><li>El archivo <span style="font-family: courier new,courier;">/etc/sysconfig/network-scripts/ifcfg-eth0</span>.</li></ol><p>Si el cambio se aplica en el primero de ellos, la modificación tiene un alcance global sobre todas las interfaces de red.  Si se aplica sobre el segundo archivo, la modificación será específica para la interfaz de red <span style="font-family: courier new,courier;">eth0</span>.  En el caso de los nodos trabajadores, estos sólo tienen una única interfaz de red así que ambas opciones tienen igual implicación.</p><p>Finalmente es necesario reiniciar el servicio de red para garantizar que los cambios realizados tengan efecto.</p><p><span style="font-family: courier new,courier;"># /etc/init.d/network restart</span></p><div id="_mcePaste" style="position: absolute; left: -10000px; top: 570px; width: 1px; height: 1px; overflow: hidden;"><pre>echo 1 &gt; /proc/sys/net/ipv4/ip_forward
</pre></div><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2010/12/permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2010/12/permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/12/permitir-el-acceso-de-los-nodos-del-cluster-a-internet-a-traves-del-nodo-principal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Construír e instalar Firesheep en GNU/Linux Ubuntu 10.10</title>
		<link>http://blog.jorgeivanmeza.com/2010/11/construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10</link>
		<comments>http://blog.jorgeivanmeza.com/2010/11/construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10#comments</comments>
		<pubDate>Thu, 25 Nov 2010 03:54:27 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[10.10]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firesheep]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=12366</guid>
		<description><![CDATA[Introducción. Firesheep es un plugin de Firefox que permite fácilmente secuestrar sesiones HTTP en ciertas condiciones y de ciertas aplicaciones web gracias a que estas utilizan el protocolo seguro de transporte HTTPS únicamente durante la autenticación, transmitiendo el resto de la información plana permitiendo que otros usuarios se apoderen de la información de la sesión [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p><a href="http://codebutler.com/firesheep" ></a><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/11/firesheep.jpg"><img class="alignleft size-full wp-image-12368" title="firesheep" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/11/firesheep.jpg" alt="" width="140" height="140" /></a>Firesheep es un <em>plugin</em> de Firefox que permite fácilmente secuestrar sesiones HTTP en ciertas condiciones y de ciertas aplicaciones web gracias a que estas utilizan el protocolo seguro de transporte HTTPS únicamente durante la autenticación, transmitiendo el resto de la información plana permitiendo que otros usuarios se apoderen de la información de la sesión de usuario y puedan acceder a sitios como Facebook, Twitter y blogs de WordPress entre otros con las credenciales del usuario afectado.  Esto es notoriamente grave en las inalámbricas públicas que pueden ser accedidas sin autenticación alguna.</p><p>La solución a esta debilidad de las aplicaciones web será entonces utilizar el protocolo HTTPS durante toda la sesión del usuario, no sólamente durante la autenticación como estas aplicaciones afectadas hacen actualmente.  Como protección desde el lado del usuario es posible utilizar <em>plugins</em> como <a href="https://www.eff.org/https-everywhere" >HTTPS Everywhere</a> que obligan al navegador a utilizar el protocolo HTTPS todo el tiempo que se acceda a determinados sitios web.  De igual manera han aparecido aplicaciones que prometen detectar y combatir el uso de Firesheep en las redes y con las que estaré experimentando próximamente.</p><p>Actualmente este <em>plugin</em> puede <a href="http://codebutler.github.com/firesheep/" >descargarse para Firefox bajo Windows y OSX</a>, la versión para Linux no se encuentra actualmente disponible, sin embargo como el proyecto es de código abierto es muy fácil obtener el código y compilarlo para esta plataforma tal y como se describe a continuación.</p><h2>Construír el software.</h2><h3>Instalar <em>git</em>.</h3><p>El cliente de git es necesario para acceder al código fuente del <em>plugin</em> que se encuentra almacenado en un <a href="https://github.com/codebutler/firesheep" >repositorio de GitHub</a>.</p><p><span style="font-family: courier new,courier;">$ sudo aptitude install git-core</span></p><h3>Obtener el código fuente.</h3><p><span style="font-family: courier new,courier;">$ mkdir /tmp/firesheep &amp;&amp; cd /tmp/firesheep</span></p><p><span style="font-family: courier new,courier;">$ git clone https://github.com/codebutler/firesheep.git</span></p><p><span style="font-family: courier new,courier;">$ cd firesheep</span></p><p><span style="font-family: courier new,courier;">$ git submodule update --init</span></p><h3>Instalar las dependencias.</h3><p>Estos paquetes son necesarios para la construcción del <em>plugin</em> a partir de su código fuente.</p><p><span style="font-family: courier new,courier;">$ sudo apt-get install autoconf libtool libpcap-dev libboost-all-dev libhal-dev xulrunner-1.9.2-dev</span></p><h3>Construír el <em>plugin</em>.</h3><p><span style="font-family: courier new,courier;">$ ./autogen.sh </span></p><p><span style="font-family: courier new,courier;">$ make</span></p><h2>Instalar el software.</h2><p>Desde Firefox elija la opción de abrir un archivo (CTRL+O).</p><p style="padding-left: 30px;">File &gt; Open File...</p><p>Y seleccione el archivo <span style="font-family: courier new,courier;">/tmp/firesheep/firesheep/build/firesheep.xpi</span>.</p><h2>Usar el software.</h2><p>Una vez activado el <em>plugin</em> este puede visualizarse como una barra lateral mediante View &gt; Firesheep o la combinación de teclas CTRL+SHIFT+S.</p><div id="attachment_12369" class="wp-caption aligncenter" style="width: 699px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/11/Firesheep-Mozilla-Firefox_006.png"><img class="size-full wp-image-12369" title="Firesheep - Mozilla Firefox_006" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/11/Firesheep-Mozilla-Firefox_006.png" alt="Firesheep en Ubuntu 10.10" width="689" height="528" /></a><p class="wp-caption-text">Firesheep en Ubuntu 10.10</p></div><p>Su uso es muy sencillo, simplemente presione el botón <em>Start capturing</em> y espere a que la aplicación capture la información de las sesiones en la red, las cuales aparecerán en la barra lateral situada al lado izquierdo.</p><h2>Enlaces.</h2><ul><li>Firesheep plugin.<br /> <a href="http://codebutler.com/firesheep" >http://codebutler.com/firesheep</a></li><li>Firesheep en GitHub<br /> <a href="https://github.com/codebutler/firesheep" >https://github.com/codebutler/firesheep</a></li><li>Firesheep: Add-on the Firefox que permite el hijacking de sessiones HTTP<br /> <a href="http://blogs.eset-la.com/laboratorio/2010/10/27/firesheep-add-on-the-firefox-que-permite-el-hijacking-de-sessiones-http/" >http://blogs.eset-la.com/laboratorio/2010/10/27/firesheep-add-on-the-firefox-que-permite-el-hijacking-de-sessiones-http/</a></li><li>HTTPS Everywhere, Firefox plugin.<br /> <a href="https://www.eff.org/https-everywhere" >https://www.eff.org/https-everywhere</a></li></ul><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2010/11/construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2010/11/construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/11/construir-e-instalar-firesheep-en-gnulinux-ubuntu-10-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acceder a un servicio RDP de Windows a través de un túnel SSH</title>
		<link>http://blog.jorgeivanmeza.com/2010/10/acceder-a-un-servicio-rdp-de-windows-a-traves-de-un-tunel-ssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=acceder-a-un-servicio-rdp-de-windows-a-traves-de-un-tunel-ssh</link>
		<comments>http://blog.jorgeivanmeza.com/2010/10/acceder-a-un-servicio-rdp-de-windows-a-traves-de-un-tunel-ssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=acceder-a-un-servicio-rdp-de-windows-a-traves-de-un-tunel-ssh#comments</comments>
		<pubDate>Thu, 28 Oct 2010 20:10:27 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[rdesktop]]></category>
		<category><![CDATA[RDP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Tunel]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=10885</guid>
		<description><![CDATA[Introducción. Esta semana fue necesario acceder remotamente a unos servidores para desplegar en ellos un proyecto.  El servidor web es visible a través de Internet y utiliza GNU/Linux, este expone además del http el servicio ssh al exterior utilizando el puerto 45729.  En la red interna (por obvias razones) se encuentra un segundo servidor con [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p>Esta semana fue necesario acceder remotamente a unos servidores para desplegar en ellos un proyecto.  El servidor web es visible a través de Internet y utiliza GNU/Linux, este expone además del <em>http</em> el servicio <em>ssh</em> al exterior utilizando el puerto <span style="font-family: courier new,courier;">45729</span>.  En la red interna (por obvias razones) se encuentra un segundo servidor con Windows XP SP3 sobre el cual se ejecuta la base de datos MSSQL.</p><div id="attachment_10886" class="wp-caption aligncenter" style="width: 937px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/Red.png"><img class="size-full wp-image-10886" title="Red" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/Red.png" alt="Estructura general de la red" width="927" height="256" /></a><p class="wp-caption-text">Estructura general de la red</p></div><p>Trivialmente el acceso al servidor web es muy sencillo gracias al SSH.  La transmisión de archivos al servidor Windows también puede ser fácilmente implementada gracias al cliente de Samba que permite una interacción transparente con el protocolo SMB de este sistema operativo.  Pero qué pasa si es necesario acceder a la consola grafica de Windows ?  Desafortunadamente en esta etapa de despliegue es necsario hacer verificaciones y algunos cambios en la base de datos MSSQL y no fue posible encontrar herramientas de administración remotas o web que fueran realmente efectivas.  La única opción sería acceder al escritorio a través de Internet.</p><p>Para hacer esto, el primer paso es <a href="http://support.microsoft.com/kb/315328/es" >activar el servicio de escritorio remoto</a> (<em>Remote Desktop Protocol</em>) en Windows XP y autorizar su acceso desde la red LAN.</p><p>El segundo paso consiste en garantizar el acceso remoto a través de Internet.  Para esto se deberá aprovechar el protocolo SSH del servidor GNU/Linux.</p><p>Una primera aproximación es <a href="http://blog.jorgeivanmeza.com/2010/09/ejecutar-aplicaciones-x-remotas-a-traves-de-ssh-en-gnulinux/" >utilizar el <span style="font-family: courier new,courier;">ForwardX11</span> del servicio SSH</a> a través del cual es posible unrrutar el protocolo de la interfaz gráfica de usuario (<em>X11</em>) hacia el cliente a través de la conexión segura.  Después de establecida la conexión se utiliza la aplicación <a href="http://www.rdesktop.org/" ><span style="font-family: courier new,courier;">rdesktop</span></a>, local al servidor web, y su presentación es redirigida hacia el cliente gracias al protocolo SSH.</p><p>Esta aproximación fue exitosa, sin embargo los tiempos de respuesta aunque tolerables, fueron muy largos.</p><p>Una segunda aproximación consiste en la creación de un túnel SSH entre el servicio de RDP del servidor con Windows XP y el servidor GNU/Linux que pueda ser accedido desde Internet a través de conexiones seguras.  Esta aproximación, que se describe a continuación, nos dió unos mejores tiempos de respuesta a través de una implementación simple pero mas elegante que la anterior.</p><h2>Procedimiento.</h2><p>Como se mencionó anteriormente, el primer paso es la <a href="http://support.microsoft.com/kb/315328/es" >activación del servicio de escritorio remoto en la máquina Windows XP SP3</a> que se encuentra en la red privada, esto se debe realizar localmente.</p><p>El siguiente paso consiste en establecer el túnel entre el cliente y el servidor web (GNU/Linux) a través de Internet involucrando al servidor de bases de datos (Windows XP) asociándolo a un puerto específico del primero.  Para hacer esto se debe ejecutar el siguiente comando desde el cliente.</p><p><span style="font-family: courier new,courier;">$ ssh -L 33389:192.168.3.1:3389 -l usuario mi.servidor.com -p 45729 -Nf</span></p><p><span style="font-family: courier new,courier;">mi.servidor.com</span> es el nombre FQDN con el que se accede al servidor GNU/Linux que expone a Internet el servicio de SSH a través del cual se ingresa a la red remota.  El puerto que utiliza en este caso el servicio SSH es el <span style="font-family: courier new,courier;">45729</span>.  De manera similar, la dirección del servidor Windows XP es la <span style="font-family: courier new,courier;">192.168.3.1</span> y el puerto (por defecto) que utiliza el servicio de RPD es el <span style="font-family: courier new,courier;">3389</span> con el cual se establece un túnel con el puerto local <span style="font-family: courier new,courier;">33389</span>.</p><p>El proceso después de autenticado se envía automáticamente a <em>background</em> retornando el control del <em>shell</em> gracias al parámetro <span style="font-family: courier new,courier;">-N</span> especificado, sin embargo es posible verificar el establecimiento del túnel de la siguiente manera.</p><p><span style="font-family: courier new,courier;">$ ps -fea | grep ssh</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">jimezam  25009     1  0 14:46 ?        00:00:00 <strong>ssh -L 33389:192.168.3.1:3389 -l usuario mi.servidor.com -p 45729 -Nf</strong></span></p><div id="attachment_10887" class="wp-caption aligncenter" style="width: 654px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/esquema2.png"><img class="size-full wp-image-10887" title="esquema2" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/esquema2.png" alt="Esquema general del túnel SSH" width="644" height="385" /></a><p class="wp-caption-text">Esquema general del túnel SSH</p></div><p>En términos generales, el túnel SSH le permite al cliente acceder al servicio RDP remoto (<span style="font-family: courier new,courier;">192.168.3.1:3389</span>) desde <span style="font-family: courier new,courier;">localhost:33389</span> de manera transparente a través del servicio SSH de <span style="font-family: courier new,courier;">mi.servidor.com</span>.</p><p>Finalmente en el cliente se accede al escritorio remoto utilizando una aplicación como <span style="font-family: courier new,courier;">rdesktop</span> de la siguiente manera.</p><p><span style="font-family: courier new,courier;">$ rdesktop -z localhost:33389</span></p><p>La ejecución de este comando mostrará localmente la consola gráfica de la máquina Windows XP.</p><div id="attachment_10888" class="wp-caption aligncenter" style="width: 644px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/screenshot_006.png"><img class="size-full wp-image-10888" title="screenshot_006" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/screenshot_006.png" alt="Escritorio remoto del servidor Windows XP" width="634" height="489" /></a><p class="wp-caption-text">Escritorio remoto del servidor Windows XP</p></div><h2>Una nota acerca de clientes en Windows.</h2><p>Este procedimiento puede adaptarse para el uso de clientes Windows utilizando herramientas adicionales como el caso de <a href="http://blog.jorgeivanmeza.com/2010/03/crear-un-tunel-ssh-para-la-conexion-a-un-servidor-mysql-detras-de-un-firewall-con-windows-utilizando-putty/" >Putty para el establecimiento del túnel SSH</a> y la aplicación para conexión a escritorios remotos de Windows.</p><p>El primero de ellos es software libre y puede obtenerse en la <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" >página web de Putty</a> mientras que el segundo hace parte de las herramientas incluídas en Windows XP y se accede a través de los siguientes menúes.</p><p style="padding-left: 30px;">Inicio &gt; Accesorios &gt; Conexión a escritorio remoto.</p><div id="attachment_10889" class="wp-caption aligncenter" style="width: 421px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/cer.png"><img class="size-full wp-image-10889" title="cer" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/cer.png" alt="Conexión al escritorio remoto de Windows XP" width="411" height="250" /></a><p class="wp-caption-text">Conexión al escritorio remoto de Windows XP</p></div><h2>Enlaces.</h2><ul><li>Activación del escritorio remoto en Windows XP.<br /> <a href="http://support.microsoft.com/kb/315328/es" >http://support.microsoft.com/kb/315328/es</a></li><li>rdesktop: A Remote Desktop Protocol Client for accessing Windows Terminal Services.<br /> <a href="http://www.rdesktop.org/" >http://www.rdesktop.org/</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/10/acceder-a-un-servicio-rdp-de-windows-a-traves-de-un-tunel-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problemas de conexión a las cuentas de Messenger desde Empathy 2.32.0</title>
		<link>http://blog.jorgeivanmeza.com/2010/10/problemas-de-conexion-a-las-cuentas-de-messenger-desde-empathy-2-32-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problemas-de-conexion-a-las-cuentas-de-messenger-desde-empathy-2-32-0</link>
		<comments>http://blog.jorgeivanmeza.com/2010/10/problemas-de-conexion-a-las-cuentas-de-messenger-desde-empathy-2-32-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problemas-de-conexion-a-las-cuentas-de-messenger-desde-empathy-2-32-0#comments</comments>
		<pubDate>Thu, 21 Oct 2010 18:34:18 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Empathy]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Messenger]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=10555</guid>
		<description><![CDATA[Introducción. Desde hace un par de días las conexiones con el servicio de Microsoft Messenger Live han dejado de funcionar desde la aplicación de mensajería Empathy de Gnome mientras que los demás protocolos funcionan normalmente. Todo parece indicar que se trata de un problema introducido en una actualización de la librería papyon la cual es [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>Desde hace un par de días las conexiones con el servicio de Microsoft Messenger Live han dejado de funcionar desde la aplicación de mensajería <a href="http://live.gnome.org/Empathy" >Empathy</a> de Gnome mientras que los demás protocolos funcionan normalmente.</p>
<div id="attachment_10559" class="wp-caption aligncenter" style="width: 564px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/Selection_0011.png"><img class="size-full wp-image-10559" title="Selection_001" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/Selection_0011.png" alt="Conexión fallida a una cuenta de Messenger desde Empathy" width="554" height="403" /></a><p class="wp-caption-text">Conexión fallida a una cuenta de Messenger desde Empathy</p></div>
<p>Todo parece indicar que se trata de un problema introducido en una actualización de la librería <a href="http://www.freedesktop.org/wiki/Software/papyon" >papyon</a> la cual es la responsable de realizar las conexiones con el protocolo de Microsoft para esta aplicación (<span style="font-family: courier new,courier;">telepathy-butterfly</span>) y otras similares basadas en Python.</p>
<h2>Solución.</h2>
<p>Mientas se publica el paquete con la versión actualizada de esta librería en los repositorios oficiales es posible manipularla para introducir manualmente el parche necesario para superar este impase.  Para hacerlo, simplemente siga los pasos descritos a continuación.</p>
<p>Desactive las cuentas de Messenger en el Empathy.</p>
<p>Abra una terminal y ejecute los siguientes comandos.</p>
<p><span style="font-family: courier new,courier;">$ cd /usr/lib/pymodules/python2.6/papyon/service/description/SingleSignOn</span></p>
<p><span style="font-family: courier new,courier;">$ sudo vi RequestMultipleSecurityTokens.py</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">(busque la siguiente línea)<br />
CONTACTS = ("contacts.msn.com", "?fs=1&amp;id=24000&amp;kv=7&amp;rn=93S9SWWw&amp;tw=0&amp;ver=2.1.6000.1")</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">(reemplácela con la siguiente línea)<br />
CONTACTS = ("contacts.msn.com", "MBI")</span></p>
<p>Active nuevamente las cuentas de Messenger en el Empathy.</p>
<p>Deberán conectar exitosamente otra vez!</p>
<h2>Enlaces.</h2>
<ul>
<li>Bug #663670: empathy doesn't connect to msn - blocked connection.<br />
<a href="https://bugs.launchpad.net/ubuntu/+source/papyon/+bug/663670" >https://bugs.launchpad.net/ubuntu/+source/papyon/+bug/663670</a></li>
<li>Empathy.<br />
<a href="http://live.gnome.org/Empathy" >http://live.gnome.org/Empathy</a></li>
<li>Papyon Python MSN library.<br />
<a href="http://www.freedesktop.org/wiki/Software/papyon" >http://www.freedesktop.org/wiki/Software/papyon</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/10/problemas-de-conexion-a-las-cuentas-de-messenger-desde-empathy-2-32-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acceder al escritorio remoto de GNU/Linux Ubuntu 10.04 utilizando FreeNX</title>
		<link>http://blog.jorgeivanmeza.com/2010/09/acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-utilizando-freenx/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-utilizando-freenx</link>
		<comments>http://blog.jorgeivanmeza.com/2010/09/acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-utilizando-freenx/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-utilizando-freenx#comments</comments>
		<pubDate>Thu, 30 Sep 2010 05:06:24 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[FreeNX]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[llaves]]></category>
		<category><![CDATA[RDP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[VNC]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[X11]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=9707</guid>
		<description><![CDATA[Introducción. Después de experimentar el acceso al escritorio remoto de GNU/Linux a través de XDMCP (con Xephyr y como una terminal) encontré que los resultados fueron satisfactorios pero con algunas desventajas: la seguridad y la velocidad.  En pocas palabras no es prudente utilizar XDMCP en un ambiente diferente a LAN ya que su tráfico no [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>Después de experimentar el acceso al escritorio remoto de GNU/Linux a través de XDMCP (<a href="http://blog.jorgeivanmeza.com/2010/09/acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-utilizando-xephyr/" >con Xephyr</a> y <a href="http://blog.jorgeivanmeza.com/2010/09/acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-creando-una-nueva-consola-grafica/" >como una terminal</a>) encontré que los resultados fueron satisfactorios pero con algunas desventajas: la seguridad y la velocidad.  En pocas palabras no es prudente utilizar XDMCP en un ambiente diferente a LAN ya que su tráfico no está encriptado y el puerto abierto puede convertirse en un problema de seguridad.</p>
<p>Por esta razón decidí probar un software muy conocido pero que nunca utilizado.  <a href="https://launchpad.net/~freenx-team" >FreeNX</a> es la versión libre del <a href="http://www.nomachine.com/products.php" >NXServer de NoMachine</a>, el cual es descrito de la siguiente manera en su sitio de Launchpad.</p>
<p style="padding-left: 30px;"><em>NX technology is a computer program that handles remote X Window System  connections, and attempts to greatly improve on the performance of the  native X11 protocol to the point that it can be usable over a slow link  such as a dial-up modem ... </em>The open source alternative to NoMachines's commercial NX Server.</p>
<p>En términos generales me gustaron mucho los resultados, es rápido y aparentemente seguro (su tráfico se envía a través de SSH). El servidor inclusive puede servir de proxy para acceder a servidores RDP (Windows), VNC o de impresoras mediante los paquetes <span style="font-family: courier new,courier;">freenx-rdp</span>, <span style="font-family: courier new,courier;">freenx-vnc</span> y<span style="font-family: courier new,courier;"> freenx-smb</span> respectivamente.</p>
<p>En la instalación, a pesar de no ser compleja, encontré un par de bugs para Ubuntu 10.04 que fueron resueltos.  Este procedimiento se describe a continuación.</p>
<h2>Instalar el servidor.</h2>
<h3>Instalar los paquetes.</h3>
<p><span style="font-family: courier new,courier;">$ sudo aptitude install python-software-properties</span></p>
<p><span style="font-family: courier new,courier;">$ sudo add-apt-repository ppa:freenx-team</span></p>
<p><span style="font-family: courier new,courier;">$ sudo aptitude update</span></p>
<p><span style="font-family: courier new,courier;">$ sudo aptitude install freenx-server</span></p>
<h3>Crear las llaves de acceso (opcional).</h3>
<p>Como mencioné inicialmente, FreeNX utiliza el protocolo SSH para su transporte, por este motivo puede aprovechar la riqueza de opciones de autenticación que provee este servicio.  Por defecto el servidor instala una pareja de llaves por defecto, utilizarlas constituye un riesgo de seguridad.  Por este motivo se sugiere que se creen y popularicen las llaves propias.  Si la seguridad no es una preocupación, puede obviar este paso y continuar con la instalación del cliente.</p>
<p>Si recibe un mensaje de error al ejecutar <span style="font-family: courier new,courier;">nxsetup</span> indicándole que el comando no fue encontrado, realice primero los pasos descritos en la sección de <strong>solución de problemas</strong>.</p>
<p><span style="font-family: courier new,courier;">$ sudo sudo /usr/lib/nx/nxsetup --install</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">------&gt; It is recommended that you use the NoMachine key for<br />
easier setup. If you answer "y", FreeNX creates a custom<br />
KeyPair and expects you to setup your clients manually.<br />
"N" is default and uses the NoMachine key for installation.</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Do you want to use your own custom KeyPair? [y/N] <strong>y</strong><br />
Setting up /etc/nxserver ...done<br />
Generating public/private dsa key pair.<br />
Your identification has been saved in /etc/nxserver/users.id_dsa.<br />
Your public key has been saved in /etc/nxserver/users.id_dsa.pub.<br />
The key fingerprint is:<br />
90:d2:6b:93:58:35:09:7b:e4:cd:43:db:83:9b:e2:bf root@jimezam-notebook<br />
The key's randomart image is:<br />
+--[ DSA 1024]----+<br />
|      ..+..      |<br />
|     . *.= +     |<br />
|    . * o * o    |<br />
|     + =   + .   |<br />
|    . = S o      |<br />
|     . o .       |<br />
|        .        |<br />
|         .       |<br />
|          E.     |<br />
+-----------------+<br />
Setting up /var/lib/nxserver/db ...done<br />
Setting up /var/log/nxserver.log ...done<br />
Adding user "nx" to group "utmp" ...done<br />
Setting up known_hosts and authorized_keys2 ...Unique key generated; your users must install</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">/var/lib/nxserver/home/.ssh/client.id_dsa.key</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">on their computers.<br />
done<br />
Setting up permissions ...done<br />
Setting up cups nxipp backend ...<br />
cp: `/usr/lib/cups/backend/ipp' and `/usr/lib/cups/backend/ipp' are the same file</span></p>
<p>Copie la llave a los equipos cliente, la cual posteriormente podrá ser importada desde el cliente de NX.</p>
<p><span style="font-family: courier new,courier;">$ sudo scp /var/lib/nxserver/home/.ssh/client.id_dsa.key usuario@mi-cliente:~/client.id_dsa.key<br />
</span></p>
<p>Después de importada la llave en el cliente de NX de <span style="font-family: courier new,courier;">mi-cliente</span>, se recomienda que remueva el archivo <span style="font-family: courier new,courier;">~/client.id_dsa.key</span>.</p>
<h2>Crear nuevas llaves (Servidor)</h2>
<p>Es posible que por motivos de seguridad posteriormente desee crear nuevas llaves para reemplazar las existentes después de una cierta cantidad de tiempo.  Para hacer esto ejecute el siguiente comando.</p>
<p><span style="font-family: courier new,courier;">$ sudo dpkg-reconfigure freenx-server</span></p>
<p>Seleccione el tipo de llaves a utilizarse, utilice la opción <strong>Create new custom keys</strong> para crear un nuevo par.</p>
<div id="attachment_9715" class="wp-caption aligncenter" style="width: 657px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/Selection_011.png"><img class="size-full wp-image-9715" title="Selection_011" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/Selection_011.png" alt="Selección del tipo de llaves" width="647" height="558" /></a><p class="wp-caption-text">Selección del tipo de llaves</p></div>
<p>Seleccione el tipo de autenticación a utilizarse, en este caso se utilizará el servicio <strong>SSH</strong>.</p>
<div id="attachment_9716" class="wp-caption aligncenter" style="width: 660px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/Selection_012.png"><img class="size-full wp-image-9716" title="Selection_012" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/Selection_012.png" alt="Selección del tipo de autenticación" width="650" height="557" /></a><p class="wp-caption-text">Selección del tipo de autenticación</p></div>
<p>Finalmente transmita la nueva llave a los clientes para permitirles acceder nuevamente al servidor.</p>
<h2>Instalar el cliente.</h2>
<h3>Instalar el paquete.</h3>
<p>Descargue el paquete correspondiente a su sistema operativo de la siguiente dirección.</p>
<p style="padding-left: 30px;"><a href="http://www.nomachine.com/select-package-client.php" >http://www.nomachine.com/select-package-client.php</a></p>
<p>Para este caso, Ubuntu 10.04 de 64 bits, se descargo el paquete <span style="font-family: courier new,courier;">NX Client DEB for Linux - x86_64</span>.  A continuación se instala el paquete recién descargado.</p>
<p><span style="font-family: courier new,courier;">$ sudo dpkg -i nxclient_3.4.0-7_x86_64.deb</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">CUPS Printing Backend</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">The NX Client set-up procedure detected that your "IPP CUPS" printing<br />
backend doesn't allow printing from the NX session. In order to have<br />
printing support in your NX system, you need to set proper permissions<br />
on the IPP backend. Please execute:</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">chmod 755 /usr/lib/cups/backend/ipp</span></p>
<p><span style="font-family: courier new,courier;">$ sudo chmod 755 /usr/lib/cups/backend/ipp</span></p>
<h3>Ejecutar el cliente.</h3>
<p><span style="font-family: courier new,courier;">$ /usr/NX/bin/nxclient &amp;</span></p>
<h2>Crear una nueva cuenta de conexión con el asistente (cliente).</h2>
<p>Presione el botón <strong>Next</strong> para iniciar el asistente de creación de cuentas.</p>
<div id="attachment_9708" class="wp-caption aligncenter" style="width: 508px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_005.png"><img class="size-full wp-image-9708" title="NX Connection Wizard_005" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_005.png" alt="Iniciar el asistente de creación de cuentas" width="498" height="378" /></a><p class="wp-caption-text">Iniciar el asistente de creación de cuentas</p></div>
<p>Especifique la siguiente información relacionada con la conexión al servidor.</p>
<ul>
<li><strong>Session</strong>: nombre de la sesión (a gusto del usuario).</li>
<li><strong>Host</strong>: dirección IP o nombre del servidor FreeNX.</li>
<li><strong>Port</strong>: puerto donde se está ejecutando el servicio SSH.</li>
<li><strong>Connection Type</strong>: tipo de acceso a la red, en este caso es una red LAN.</li>
</ul>
<div id="attachment_9709" class="wp-caption aligncenter" style="width: 508px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_006.png"><img class="size-full wp-image-9709" title="NX Connection Wizard_006" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_006.png" alt="Información de conexión al sevidor" width="498" height="378" /></a><p class="wp-caption-text">Información de conexión al sevidor</p></div>
<p>Especifique la siguiente información relacionada con el administrador de ventanas a ejecutarse en el servidor.</p>
<ul>
<li><strong>Tipo</strong>: en este caso será una conexión nativa (Unix) y se ejecutará GNOME.</li>
<li><strong>Size</strong>: se permite utilizar el máximo tamaño disponible.</li>
</ul>
<div id="attachment_9710" class="wp-caption aligncenter" style="width: 508px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_007.png"><img class="size-full wp-image-9710" title="NX Connection Wizard_007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_007.png" alt="Información del escritorio" width="498" height="378" /></a><p class="wp-caption-text">Información del escritorio</p></div>
<p>Presione el botón <strong>Finish</strong> para terminar el asistente.</p>
<div id="attachment_9711" class="wp-caption aligncenter" style="width: 508px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_008.png"><img class="size-full wp-image-9711" title="NX Connection Wizard_008" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-Connection-Wizard_008.png" alt="Finalizar la instalación" width="498" height="378" /></a><p class="wp-caption-text">Finalizar la instalación</p></div>
<h2>Realizar una conexión con el servidor.</h2>
<div id="attachment_9713" class="wp-caption aligncenter" style="width: 338px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX_010.png"><img class="size-full wp-image-9713" title="NX_010" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX_010.png" alt="Registro de usuarios" width="328" height="218" /></a><p class="wp-caption-text">Registro de usuarios</p></div>
<p>Seleccione el tipo de sesión (<strong>Session</strong>) que se creó anteriormente a través del asistente y especifique su información de autenticación (<strong>Login</strong> y <strong>Password</strong>) para acceder al servidor.  Presione el botón <strong>Login</strong> para iniciar la sesión.</p>
<p>Si el servidor cuenta con sus propias llaves personalizadas (ver proceso de instalación) será necesario importarlas en el cliente para poder registrarse exitosamente (ver siguiente apartado).</p>
<h2>Importar las llaves del servidor en el cliente.</h2>
<p>Si el servidor cuenta con sus propias llaves personalizadas (que es lo mas conveniente) es necesario importarlas en el cliente para que se realice exitosamente la conexión al mismo.  Para esto es necesario transferir la llave (<span style="font-family: courier new,courier;">client.id_dsa.key</span>) de manera segura desde el servidor hasta el cliente (ver comando <span style="font-family: courier new,courier;">scp</span> en la instalación del servidor).</p>
<p>Para importar el archivo de llave seleccione editar la configuración de la sesión presionando el botón <strong>Configure</strong> del diálogo de registro (ver anterior).</p>
<div id="attachment_9712" class="wp-caption aligncenter" style="width: 380px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-jimezam-notebook_009.png"><img class="size-full wp-image-9712" title="NX - jimezam-notebook_009" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/NX-jimezam-notebook_009.png" alt="Configuración de sesión" width="370" height="450" /></a><p class="wp-caption-text">Configuración de sesión</p></div>
<p>Presione el botón <strong>Key...</strong> e importe o pegue la llave proveniente del archivo <span style="font-family: courier new,courier;">client.id_dsa.key</span> traído desde el servidor.  Después de importado se recomienda que remueva de manera segura este archivo.</p>
<div id="attachment_9714" class="wp-caption aligncenter" style="width: 346px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/General-Key-management_013.png"><img class="size-full wp-image-9714" title="General - Key management_013" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/General-Key-management_013.png" alt="Importar llave" width="336" height="328" /></a><p class="wp-caption-text">Importar llave</p></div>
<h2>Solución de problemas.</h2>
<h3>No existe la aplicación <span style="font-family: courier new,courier;">nxsetup</span>.</h3>
<p>Si obtiene el siguiente mensaje de error, el paquete de <span style="font-family: courier new,courier;">freenx-server</span> no incluyó erróneamente la aplicación nxsetup la cual es necesaria para realizar su instalación completa.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">nxsetup: command not found</span></p>
<p>Para corregir este problema realice los pasos descritos a continuación.</p>
<p><span style="font-family: courier new,courier;">$ cd /usr/lib/nx</span></p>
<p><span style="font-family: courier new,courier;">$ sudo wget "https://help.ubuntu.com/community/FreeNX?action=AttachFile&amp;amp;do=get&amp;amp;target=nxsetup.tar.gz"</span></p>
<p><span style="font-family: courier new,courier;">$ sudo mv "FreeNX?action=AttachFile&amp;amp;do=get&amp;amp;target=nxsetup.tar.gz" nxsetup.tar.gz</span></p>
<p><span style="font-family: courier new,courier;">$ sudo tar zxvf nxsetup.tar.gz</span></p>
<p><span style="font-family: courier new,courier;">$ sudo rm nxsetup.tar.gz</span></p>
<h2>Enlaces.</h2>
<ul>
<li>Clientes NX.<br />
<a href="http://www.nomachine.com/select-package-client.php" >http://www.nomachine.com/select-package-client.php</a></li>
<li>FreeNX, Ubuntu Documentation.<br />
<a href="https://help.ubuntu.com/community/FreeNX" >https://help.ubuntu.com/community/FreeNX</a></li>
<li>Bug #618906: freenx package incomplete in lucid.<br />
<a href="https://bugs.launchpad.net/freenx-server/+bug/618906" >https://bugs.launchpad.net/freenx-server/+bug/618906</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/09/acceder-al-escritorio-remoto-de-gnulinux-ubuntu-10-04-utilizando-freenx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizar un tar local y almacenarlo remotamente a través de SSH</title>
		<link>http://blog.jorgeivanmeza.com/2010/09/realizar-un-tar-local-y-almacenarlo-remotamente-a-traves-de-ssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=realizar-un-tar-local-y-almacenarlo-remotamente-a-traves-de-ssh</link>
		<comments>http://blog.jorgeivanmeza.com/2010/09/realizar-un-tar-local-y-almacenarlo-remotamente-a-traves-de-ssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=realizar-un-tar-local-y-almacenarlo-remotamente-a-traves-de-ssh#comments</comments>
		<pubDate>Tue, 28 Sep 2010 03:10:52 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Copias de seguridad]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[llave privada]]></category>
		<category><![CDATA[llave pública]]></category>
		<category><![CDATA[llaves]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[tar]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=9590</guid>
		<description><![CDATA[Introducción. Esta es la versión mas simple y menos elaborada que se me ocurre para hacer copias de seguridad esporádicas de archivos locales y almacenarlos en un servidor de archivos remoto.  No permite la facilidad de autenticación con llaves de propósito único como en los artículos anteriores (1 y 2), pero es posible utilizarlo con [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>Esta es la versión mas simple y menos elaborada que se me ocurre para hacer copias de seguridad esporádicas de archivos locales y almacenarlos en un servidor de archivos remoto.  No permite la facilidad de autenticación con llaves de propósito único como en los artículos anteriores (<a href="http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico/" >1</a> y <a href="http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico-2-el-camino-inverso/" >2</a>), pero es posible utilizarlo con la <a href="http://blog.jorgeivanmeza.com/2010/09/autenticacion-basada-en-llaves-para-ssh/" >autenticación basada en llaves</a> (de propósito general) y la autenticación basada en contraseñas.</p>
<p>En funcionalmente es un <span style="font-family: courier new,courier;">tar</span> y <span style="font-family: courier new,courier;">scp</span> resumidos en una única ejecución de comandos.</p>
<h2>Procedimiento.</h2>
<p>Se desea realizar la copia de seguridad de los archivos locales almacenados bajo el directorio <span style="font-family: courier new,courier;">/archivos/importantes</span> y almacenarlos en el servidor <span style="font-family: courier new,courier;">mis.backups.com</span> bajo la ubicación <span style="font-family: courier new,courier;">/u/backups</span>.  El procedimiento es tan sencillo como la única línea que se muestra a continuación.</p>
<p><span style="font-family: courier new,courier;">$ tar zcvf - /archivos/importantes | ssh usuario@mis.backups.com "cat &gt; /u/backups/miArchivoBackup.tgz"</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/09/realizar-un-tar-local-y-almacenarlo-remotamente-a-traves-de-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizar copias de seguridad remotas con llaves SSH de propósito único (2 &#8211; el camino inverso)</title>
		<link>http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico-2-el-camino-inverso/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico-2-el-camino-inverso</link>
		<comments>http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico-2-el-camino-inverso/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico-2-el-camino-inverso#comments</comments>
		<pubDate>Tue, 28 Sep 2010 02:34:08 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Copias de seguridad]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[llave privada]]></category>
		<category><![CDATA[llave pública]]></category>
		<category><![CDATA[llaves]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[tar]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=9575</guid>
		<description><![CDATA[Introducción. Después de encontrar una forma muy interesante de hacer las copias de seguridad mediante el uso de llaves de propósito único mi mente inquieta se ha quedado pensando acerca de la factibilidad de hacer lo mismo pero en sentido contrario y de la posible utilidad para el mismo problema: el método mas simple, seguro [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>Después de encontrar una forma muy interesante de hacer las <a href="http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico/" >copias de seguridad mediante el uso de llaves de propósito único</a> mi mente inquieta se ha quedado pensando acerca de la factibilidad de hacer lo mismo pero en sentido contrario y de la posible utilidad para el mismo problema: el método mas simple, seguro y fácil de implementar para hacer las copias de seguridad.</p>
<p>En el artículo anterior se configuró al servidor para que confiara en el cliente que portara el par de llaves adecuado, esta confianza le permitiría al servidor ejecutar un único comando y retornar la información resultante al cliente el cual podría tomar el flujo binario de bytes y crear con él un archivo.  En este caso, cualquiera que tuviera posesión de los archivos de la llave y la <em>passphrase</em> (si las llaves se crearon con ella) podrían ejecutar el comando único, en otras palabras, obtener la copia de seguridad del servidor.  En términos generales esto no debe suceder, no debe ser un riesgo ya que <em>supuestamente</em> las llaves se encuentran bien resguardadas, sin embargo estamos analizando el peor escenario.</p>
<p>Ahora, cómo sería el caso contrario en el que el antes cliente (quien almacena las copias de seguridad) confiara en el servidor (a quien se le va a hacer la copia de seguridad) y recibiera todos los archivos que este le envía y los almacenara en el sistema de archivos.  Es posible implementarlo ?  En caso de comprometerse la pareja de llaves, cuál sería el peor escenario ?</p>
<p>Como lo veo hasta el momento, el atacante estaría posibilitado a subir todos los archivos que quisiera llenando la partición del sistema de archivos (<a href="http://en.wikipedia.org/wiki/Denial-of-service_attack" >ataque por denegación de servicio - DOS</a>) e interfiriendo con el uso normal del sistema.  Podría además sobreescribir (dependiendo de como se cree el <em>script</em> local) los archivos sobre los cuales cuenta con suficientes permisos.  Estos efectos se minimizarían con el uso de un usuario específico para las copias de seguridad, la asignación de una cuota de disco, la implementación de un buen <em>script</em> en el cliente y un contínuo seguimiento al éxito de las copias de seguridad.  En términos generales es aún mas promisorio que la primera versión (directa).  Vale la pena explorar esta aproximación.</p>
<p>Desde el punto de vista funcional hay una diferencia que debe tenerse en cuenta, la primera aproximación es útil inclusive para realizar las copias de seguridad desde equipos que no siempre están activos o en línea, ya que puede realizarse por demanda; mientras que la segunda aproximación analizada a continuación, requiere que ambos equipos estén en línea al mismo tiempo ya que el procedimiento probablemente se inicie por un proceso <span style="font-family: courier new,courier;">cron</span> en el servidor.</p>
<h2>Crear la llave de propósito único.</h2>
<p>Para la creación de la llave de propósito único se siguen los mismos <a href="http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico/" >pasos realizados durante la experimentación con la versión directa</a>, con la diferencia que ahora el <em>servidor</em> es el equipo donde se almacenan las copias de seguridad y el <em>cliente</em> es el equipo que contiene la información a la cual se le desea hacer copia de seguridad.  De esta manera, las llaves (<span style="font-family: courier new,courier;">demokey</span> y <span style="font-family: courier new,courier;">demokey.pub</span> en el ejemplo) se crearían en el servidor web (por ejemplo) y se crearía el archivo <span style="font-family: courier new,courier;">~/.ssh/authorized_keys2</span> con el contenido apropiado en el servidor de copias de seguridad.</p>
<h2>Crear el <em>script</em> para recibir las copias de seguridad.</h2>
<p>Del lado del servidor de copias de seguridad (donde se almacenarán) se crea a manera de ejemplo la siguiente configuración.</p>
<p>Una ruta donde se almacenarán las copias de seguridad.</p>
<p><span style="font-family: courier new,courier;">$ mkdir -p /u/backups/datos</span></p>
<p><span style="font-family: courier new,courier;">$ chown -R bkpuser /u/backups</span></p>
<p><span style="font-family: courier new,courier;">$ chmod -R 700 /u/backups</span></p>
<p>Se crea un <em>script</em> para recibir los archivos con las copias de seguridad y almacenarlos en la ubicación creada anteriormente.</p>
<p><span style="font-family: courier new,courier;">$ vi /u/backups/recibir.sh</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;"># Fecha de creación de la copia de seguridad.<br />
FECHA=`date +%Y%m%d`<br />
# Hora de creación de la copia de seguridad.<br />
HORA=`date +%H%M%S`<br />
# Ubicación donde se almacenan las copias de seguridad.<br />
DIRECTORIO=/u/backups/datos<br />
# Nombre del archivo donde se almacenará la copia de seguridad.<br />
ARCHIVO="backup-${DATE}-${TIME}.data"</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;"># Almacenar la información de la copia de seguridad.<br />
cat &gt; $DIRECTORIO/$ARCHIVO</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;"># Reportar al cliente el nombre del archivo utilizado.<br />
echo $ARCHIVO</span></p>
<p><span style="font-family: courier new,courier;">$ chmod +x /u/backups/recibir.sh</span></p>
<p>Finalmente se configura la llave (<span style="font-family: courier new,courier;">authorized_keys2</span>) para que invoque a <span style="font-family: courier new,courier;">recibir.sh</span> como su propósito único.</p>
<p><span style="font-family: courier new,courier;">$ vi ~/.ssh/authorized_keys2</span></p>
<p style="padding-left: 30px;">(modificar la llave específica)<br />
<span style="font-family: courier new,courier;">from="<strong>*.jorgeivanmeza.com,10.20.*</strong>" command="</span><span style="font-family: courier new,courier;"><strong>/u/backups/recibir.sh</strong>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss AAAAB3Nza...(mas caracteres)... jimezam@mi-cliente</span></p>
<p>El modificador <span style="font-family: courier new,courier;">from</span> permite limitar desde cuales ubicaciones es posible utilizar la llave privada para acceder a la funcionalidad de las copias de seguridad.  En este caso sólo es posible acceder a través de SSH utilizando esta llave de propósito único desde cualquier equipo del dominio <span style="font-family: courier new,courier;">jorgeivanmeza.com</span> o desde cualquier equipo de la subred <span style="font-family: courier new,courier;">10.20.xxx.xxx</span>.</p>
<h2>Realizar una copia de seguridad.</h2>
<p>Para iniciar una copia de seguridad desde el servidor de aplicaciones (servidor web por ejemplo) sólo es necesario ejecutar el siguiente comando.</p>
<p><span style="font-family: courier new,courier;">$ tar zcvf - /ruta/a/resguardar 2&gt; /dev/null | ssh bkpuser@mi-servidor</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">...<br />
backup-20100927-205847.data</span></p>
<p>En el ejemplo anterior se realizó la copia de seguridad de los directorios bajo <span style="font-family: courier new,courier;">/ruta/a/resguardar</span> y se guardó en <span style="font-family: courier new,courier;">mi-servidor</span> en un archivo llamado <span style="font-family: courier new,courier;">backup-20100927-205847.data</span>.  Esta última información puede resultar útil para guardar el registro de los archivos de copias de seguridad generados.  Otra alternativa mas elegante sería utilizar llaves de propósito único para cada servidor al cual se le va a hacer copia de seguridad de forma que se pueda especificar claramente que archivo corresponde a que servidor.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico-2-el-camino-inverso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizar copias de seguridad remotas con llaves SSH de propósito único</title>
		<link>http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico</link>
		<comments>http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico#comments</comments>
		<pubDate>Mon, 27 Sep 2010 23:10:30 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Copias de seguridad]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[llave privada]]></category>
		<category><![CDATA[llave pública]]></category>
		<category><![CDATA[llaves]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[tar]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=9276</guid>
		<description><![CDATA[Introducción. Es muy común que se deban desarrollar actividades en los servidores así como el subir y descargar archivos necesarios para o producto de estas actividades.  Un caso muy especial de este tipo de necesidades es la realización de copias de seguridad. Del lado del servidor se acostumbra (si no se opta por una solución [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>Es muy común que se deban desarrollar actividades en los servidores así como el subir y descargar archivos necesarios para o producto de estas actividades.  Un caso muy especial de este tipo de necesidades es la realización de copias de seguridad.</p>
<p>Del lado del servidor se acostumbra (si no se opta por una solución mas elaborada) crear <em>scripts</em> (<a href="http://blog.jorgeivanmeza.com/2009/02/scripts-para-copias-de-seguridad-version-2008/" >1</a> y <a href="http://blog.jorgeivanmeza.com/2009/02/scripts-para-copias-de-seguridad-version-20090203/" >2</a>) que crean las copias empaquetadas de los archivos los cuales deben ser resguardados.  Generalmente la ejecución de esta tarea se realiza periódica y automáticamente a través de un proceso <em>cron</em> del sistema operativo.  Queda pendiente el problema de transferir esta información desde el servidor hasta el equipo local de manera segura y en lo posible automatizada.</p>
<p>La mejor opción para el transporte de los archivos es utilizar un método seguro basado en SSH, sin embargo el uso de contraseñas entorpece el desarrollo ya que estas dificultan la implementación y se constituyen como un riesgo ya que estas deben estar disponibles de manera legible en el cliente para ejecutar la utilidad de transferencia de archivos (como <span style="font-family: courier new,courier;">scp</span>).</p>
<p>Gracias a la flexibilidad del protocolo SSH, es posible obviar la autenticación por contraseñas y <a href="http://blog.jorgeivanmeza.com/2010/09/autenticacion-basada-en-llaves-para-ssh/" >utilizar un método basado en llaves</a>, a través del cual se autoriza en el servidor el acceso directo a los usuarios que tengan su llave registrada en él.  De esta forma el usuario puede acceder a los datos de la cuenta y transmitirlos si es necesario.  La <em>llave privada</em> envuelta en esta configuración se cifra con una <em>passphrase</em> para mayor seguridad.  Esto hace que sea necesario introducirla, al menos una vez por sesión, antes de poder realizar satisfactoriamente la autenticación basada en llaves.</p>
<p>Esta situación va en contra de los requerimientos de la automatización ya que sería necesaria la intervención humana para realizar las copias de seguridad, al menos al inicio de esta.  Por suerte es posible eliminar la necesidad de esta <em>passphrase</em> de la <em>llave privada</em>, sin embargo se incurre en un significativo riesgo de seguridad (especialmente en <em>servidores compartidos</em>) ya que quien se apodere de los archivos de la llave, tendrá <span style="text-decoration: underline;">acceso total</span> a la cuenta del usuario en el servidor remoto.</p>
<p>La solución final a este dilema es la utilización del esquema basado en llaves que he mencionado anteriormente pero utilizando llaves que tengan un fin único y específico, es decir, las llaves no permitirán el acceso total a la cuenta en el servidor sino que permitirán solamente la ejecución de una instrucción específica y previamente determinada, de esta manera no será <span style="text-decoration: underline;">tan</span> crítica la eliminación de la <em>passphrase</em>.</p>
<h2>Crear la llave de propósito único.</h2>
<h3>Generar la pareja de llaves.</h3>
<p><span style="font-family: courier new,courier;">$ ssh-keygen -t dsa -f ~/.ssh/<strong>demokey</strong></span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Generating public/private dsa key pair.<br />
Enter passphrase (empty for no passphrase):      [ENTER]   <strong><span style="color: #ff6600;">[1]</span><br />
</strong> Enter same passphrase again:                     [ENTER] </span><span style="color: #ff6600;"><strong><span style="font-family: courier new,courier;">[1]</span></strong></span><br />
<span style="font-family: courier new,courier;"> Your <strong>identification</strong> has been saved in /home/jimezam/.ssh/<strong>demokey</strong>.<br />
Your <strong>public key</strong> has been saved in /home/jimezam/.ssh/<strong>demokey.pub</strong>.<br />
The key fingerprint is:<br />
77:71:75:7e:d2:7a:f3:af:3f:77:cf:2d:77:6a:79:f3 jimezam@jimezam-ultra<br />
The key's randomart image is:<br />
+--[ DSA 1024]----+<br />
|                o|<br />
|               +.|<br />
|            . o +|<br />
|             o o.|<br />
|        S . . ...|<br />
|         . .   .o|<br />
|               ..|<br />
|              ++O|<br />
|             .oBE|<br />
+-----------------+</span></p>
<p>Especifique una <em>passphrase</em> vacía cuando se le solicite <strong><span style="color: #ff6600;">[1]</span></strong> para evitar que se le solicite nuevamente cada vez que vaya a ser utilizada la llave.  Tenga en cuenta el impacto de seguridad que esto pueda traer a su sistema.</p>
<p>Verifique la existencia de los archivos generados los cuales deberán ser similares a los siguientes.</p>
<p><span style="font-family: courier new,courier;">$ ls -l ~/.ssh/</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">-rw------- 1 jimezam jimezam  668 2010-09-23 00:56 demokey<br />
-rw-r--r-- 1 jimezam jimezam  611 2010-09-23 00:56 demokey.pub</span></p>
<h3>Especificar el propósito único de la llave.</h3>
<p>Cree una copia de la llave pública recién generada.</p>
<p><span style="font-family: courier new,courier;">$ cp ~/.ssh/demokey.pub tempkey</span></p>
<p>Esta tendrá un contenido similar al siguiente.</p>
<p><span style="font-family: courier new,courier;">$ cat tempkey</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">ssh-dss AAAAB3Nza...(mas caracteres)... jimezam@mi-cliente</span></p>
<p>Modifíquelo de la siguiente manera.</p>
<p><span style="font-family: courier new,courier;">$ vi tempkey</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;"><strong>command=</strong><strong>"</strong><strong>echo I\'m `/usr/bin/whoami` on `/bin/hostname`</strong><strong>"</strong></span><span style="font-family: courier new,courier;"><strong>,no-port-forwarding,no-X11-forwarding,no-agent-forwarding</strong> ssh-dss AAAAB3Nza...(mas caracteres)... jimezam@mi-cliente</span></p>
<h3>Transmitir la llave de propósito único al servidor.</h3>
<p><span style="font-family: courier new,courier;">$ cat tempkey | ssh jimezam@mi-servidor 'sh -c "cat - &gt;&gt;~/.ssh/authorized_keys2"'</span></p>
<p>Por seguridad remueva la copia de la llave de propósito único después de haberla transmitido al servidor.</p>
<p><span style="font-family: courier new,courier;">$ rm tempkey</span></p>
<h3>Verificar el funcionamiento de la llave de propósito único.</h3>
<p>La prueba se realiza intentando acceder al servidor utilizando SSH y la cuenta del usuario que posee la llave de propósito único.</p>
<p><span style="font-family: courier new,courier;">$ ssh jimezam@mi-servidor</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">I'm jimezam on mi-servidor<br />
Connection to mi-servidor closed.</span></p>
<h2>Modificar el propósito único de la llave.</h2>
<p>Siendo la precondición del artículo la necesidad de realizar copias de seguridad del servidor remoto, se va a modificar el propósito de la llave a crear un <span style="font-family: courier new,courier;">tar</span> que contenga los archivos importantes y que será posteriormente transmitido al cliente a través de SSH.  La complejidad de este comando depende de los requerimientos que se tengan, sin embargo el ejemplo a continuación servirá como lineamientos básicos para su elaboración.</p>
<p>Como fácilmente se podrá concluír el comando es referenciado por la sección <span style="font-family: courier new,courier;">command</span> al comienzo de la línea de la llave de propósito único.  Este comando puede ser especificado <strong>desde el cliente</strong> en el contenido de la llave si no se ha transmitido aún al servidor o podrá ser manipulado <strong>desde el servidor</strong> en el archivo <span style="font-family: courier new,courier;">~/.ssh/authorized_keys2</span>.</p>
<p><span style="font-family: courier new,courier;">$ vi ~/.ssh/authorized_keys2</span></p>
<p style="padding-left: 30px;">(modificar la llave específica)<br />
<span style="font-family: courier new,courier;">from="<strong>*.jorgeivanmeza.com,10.20.*</strong>" </span><span style="font-family: courier new,courier;">command="<strong>tar zcf - ~/tmp 2&gt; /dev/null</strong>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss AAAAB3Nza...(mas caracteres)... jimezam@mi-cliente</span></p>
<p>El modificador <span style="font-family: courier new,courier;">from</span> permite limitar desde cuales ubicaciones es posible  utilizar la llave privada para acceder a la funcionalidad de las copias  de seguridad.  En este caso sólo es posible acceder a través de SSH  utilizando esta llave de propósito único desde cualquier equipo del dominio <span style="font-family: courier new,courier;">jorgeivanmeza.com</span> o desde cualquier equipo de la subred<span style="font-family: courier new,courier;"> 10.20.xxx.xxx</span>.</p>
<p>En este caso particular, la llave de propósito único crea un <span style="font-family: courier new,courier;">tar</span> de un directorio específico (<span style="font-family: courier new,courier;">~/tmp</span>) y envía su flujo de bytes a través de la conexión SSH.</p>
<h2>Obtener el archivo de la copia de seguridad.</h2>
<p>Del lado del cliente el proceso inverso consiste en abrir una conexión SSH con el servidor utilizando la cuenta a la cual pertenece la llave de propósito único y obtener el archivo enviado a través de un flujo binario.</p>
<p><span style="font-family: courier new,courier;">$ ssh -T -i ~/.ssh/demokey jimezam@mi-servidor | cat &gt; miCopiaDeSeguridad.tgz</span></p>
<p>El parámetro <span style="font-family: courier new,courier;">-i</span> es opcional y permite especificar el archivo con la identidad (llave privada) que se va a utilizar, mientras que el parámetro <span style="font-family: courier new,courier;">-T</span> es necesario para transmitir un flujo binario de información.</p>
<p>Finalmente después de la ejecución anterior, en el cliente local se encuentra el archivo <span style="font-family: courier new,courier;">miCopiaDeSeguridad.tgz</span> con la copia de seguridad del directorio <span style="font-family: courier new,courier;">~/tmp</span> del servidor.</p>
<h2>Agradecimientos.</h2>
<p>Gracias a <a href="http://pkeck.myweb.uga.edu/" >Paul Keck</a> por ayudarme a encontrar la dirección correcta para solucionar el problema del flujo binario de información (<span style="font-family: courier new,courier;">-T</span>).</p>
<h2>Enlaces.</h2>
<ul>
<li>HOWTO: set up ssh keys.<br />
<a href="http://pkeck.myweb.uga.edu/ssh/" >http://pkeck.myweb.uga.edu/ssh/</a></li>
<li>Linux / Unix Command: ssh.<br />
<a href="http://linux.about.com/od/commands/l/blcmdl1_ssh.htm" >http://linux.about.com/od/commands/l/blcmdl1_ssh.htm</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/09/realizar-copias-de-seguridad-remotas-con-llaves-ssh-de-proposito-unico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

