<?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>Rafael Bonifaz &#187; General</title>
	<atom:link href="http://rafael.bonifaz.ec/blog/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafael.bonifaz.ec/blog</link>
	<description>Blog personal de Rafael Bonifaz</description>
	<lastBuildDate>Thu, 26 Jan 2012 17:23:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Televisión por Internet con Blinkx</title>
		<link>http://rafael.bonifaz.ec/blog/2011/05/television-por-internet-con-blinkx/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/05/television-por-internet-con-blinkx/#comments</comments>
		<pubDate>Mon, 23 May 2011 00:58:56 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[series de televisión]]></category>
		<category><![CDATA[televisión]]></category>
		<category><![CDATA[televisión por Internet]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=483</guid>
		<description><![CDATA[Existen varias formas de ver programas de televisión por Internet y todas tienen sus ventajas y  desventajas. Recientemente descubrí blinkx que es una herramienta super fácil y práctica de usar para ver nuestras series de televisión favoritas. En Internet existen varios sitios similares a Youtube donde mucha gente ha subido videos. Blinkx es un lugar donde [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tv.blinkx.com"><img class="alignright size-medium wp-image-485" title="blinkx-logo" src="http://rafael.bonifaz.ec/blog/wp-content/uploads/2011/05/blinkx-logo-300x82.png" alt="" width="300" height="82" /></a>Existen varias formas de ver programas de televisión por Internet y todas tienen sus ventajas y  desventajas. Recientemente descubrí <a href="http://tv.blinkx.com">blinkx</a> que es una herramienta super fácil y práctica de usar para ver nuestras series de televisión favoritas.</p>
<p>En Internet existen varios sitios similares a Youtube donde mucha gente ha subido videos. <a href="http://tv.blinkx.com">Blinkx</a> es un lugar donde se hace referencia a programas completos de series de televisión. La analogía que ellos usan es la de un control remoto donde se puede escoger que ver y su eslogan es &#8220;pon celosa a tu televisión&#8221;. La verdad es que ese eslogan lo dice todo.</p>
<p>Una vez dentro de <a href="http://tv.blinkx.com">Blinkx</a> buscamos nuestra serie favorita y nos presentará una ventana con todas las temporadas ordenadas desde la más nueva a la más vieje. Seleccionamos el capítulo a ver y luego debemos seleccionar en donde queremos ver. Normalmente prefiero utilizar los de <a href="http://megavideo.com/">Megavideo</a> aunque los de <a href="http://www.videobb.com/">VideoBB</a> suelen tener mejor calidad. Existen otros y no nos queda más que probar.</p>
<p>Las principales ventajas de ver televisión por Internet es que podemos ver los programas de televisión que queremos ver a la hora que queramos.</p>
<p>Espero disfruten de <a href="http://tv.blinkx.com">Blinkx</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/05/television-por-internet-con-blinkx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenVPN how to 1</title>
		<link>http://rafael.bonifaz.ec/blog/2011/04/openvpn-how-to-1/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/04/openvpn-how-to-1/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 13:50:13 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[ASLE]]></category>
		<category><![CDATA[Comos]]></category>
		<category><![CDATA[FLISOL]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[seguridades]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=480</guid>
		<description><![CDATA[Introducción Una Red Privada Virtual (VPN por sus siglas en inglés) sirve para crear una conexión encriptada entre 2 o más puntos a través de Internet. Un caso de uso típico puede ser permitir al acceso a servicios de una intranet de forma segura desde Internet.  Otro caso típico de uso es interconectar redes locales [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2>
<p>Una<strong> Red Privada Virtual </strong>(VPN por sus siglas en inglés) sirve para crear una conexión encriptada entre 2 o más puntos a través de Internet. Un caso de uso típico puede ser permitir al acceso a servicios de una intranet de forma segura desde Internet.  Otro caso típico de uso es interconectar redes locales de 2 ó más sucrusales a través de Internet. En este artículo haremos la primera opción y en un futuro cercano publicaré cómo interconectar 2 redes.</p>
<p>Existen varias implementaciones de VPN y en el mundo de software libre una de las más populares es OpenVPN.  Una de sus grandes ventajas, es que se pueden tener clientes en distintos sistemas operativos com GNU/Linux, Windows, Mac y seguro que en todas las versiones BSD.</p>
<h2>Instalación</h2>
<p>OpenVPN viene por defecto en la mayoría de las distribuciones GNU/Linux. En mi caso suelo utilizar Debian o Ubuntu. La instalación la hice con aptitude:</p>
<p style="padding-left: 30px;"><code>aptitude install openvpn</code></p>
<p>En distros basadas en RPM la instalación se la hace con yum:</p>
<p style="padding-left: 30px;"><code>yum install openvpn</code></p>
<p>Listo , así de fácil y de sencillo.<span id="more-480"></span></p>
<h2>Crear los certificados digitales</h2>
<p>OpenVPN autentica sus clientes a través de llaves públicas y privadas. De esta manera cada cliente tiene su llave privada y debe enviar su llave pública al servidor. Estas llaves son creadas con un certificado conocido como &#8220;<em>Certificado de Autoridad</em>&#8220;. De esta forma cuando el servidor recibe una llave pública este revisa si esta firmado con el certificado de autoridad. Sino esta no aceptará la conexión.</p>
<p>La forma más fácil de crear estos certificados es utilizando la utilidad easy-rsa que viene en el paquete de OpenVPN. En el caso de debian esta aplicación se encuentra en: <em>/usr/share/doc/openvpn/examples/easy-rsa/2.0/ easy-rsa</em>. Otras distribuciones tendrán una ruta similar.</p>
<p>Copiamos la aplicación a una ruta más fácil de recordar. Personalmente opté por un subdirectorio dentro de /etc/openvpn. Para tener las cosas ordenadas:</p>
<p style="padding-left: 30px;"><code>cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa<br />
</code></p>
<p>Ahora ingresamos al directorio para crear las claves:</p>
<p style="padding-left: 30px;"><code>cd /etc/openvpn/easy-rsa/ </code></p>
<p>Dentro de esta carpeta tenemos un archivo que almacena algunas variables importantes. Recomiendo revisar este archivo y de ser el caso modificar algunas variables.</p>
<p style="padding-left: 30px;"><code>vim vars</code></p>
<p>En mi caso personalice la siguiente parte para que cuando cree los certificados los valores por defecto tengan que ver con mi realidad:</p>
<p style="padding-left: 30px;"><code>export KEY_COUNTRY="EC"<br />
export KEY_PROVINCE="Pichicha"<br />
export KEY_CITY="Cayambe"<br />
export KEY_ORG="Mi empresa"<br />
export KEY_EMAIL="yo@midominio.com" </code></p>
<p>Guardamos y cerramos el archivo. Si no queremos no modificamos el archivo, es algo netamente opcional.</p>
<p>Cargamos las variables de este archivo al shell que estamos utilizando:</p>
<p style="padding-left: 30px;"><code>. vars</code></p>
<p>Borramos las claves previamete creados en caso de existir. Hacer esto solo si es la primera vez que vamos a crear los certificados y las claves.</p>
<p style="padding-left: 30px;"><code>./clean-all </code></p>
<p>Creamos el certificado de autoridad:</p>
<p style="padding-left: 30px;"><code>./build-ca</code></p>
<p>Si modificaron las variables, se darán cuenta que ahora las estaremos utilizando.</p>
<p>Certificado y clave privada para el servidor</p>
<p style="padding-left: 30px;"><code>/build-key-server servidor </code></p>
<p>Esto generara los archivos servidor.crt y servidor.key. donde el archivo .key es la llave privada y .crt es la pública.</p>
<p>Generamos los parámetros <a href="http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange"> Diffie Helman</a></p>
<p style="padding-left: 30px;"><a href="http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange"></a><span style="font-family: monospace;">./build-dh</span></p>
<p>Generamos las claves de los clientes.</p>
<p style="padding-left: 30px;"><code>./build-key cliente1<br />
./build-key cliente2<br />
./build-key cliente3<br />
</code></p>
<p>De manera similar al servidor se crearán las claves *.key y *.crt que serán las claves privadas y públicas respectivamente. Las 2 claves las deberemos copiar al cliente.</p>
<p>Listo, hemos creado todos los certificados necesarios y estamos listos para configurar los clientes y el servidor. Es importante sacar un respaldo del directorio /etc/openvpn/easy-rsa ya que ahí están todas las claves, incluido el certificado de autoridad que nos permitirá crear nuevas claves a futuro.</p>
<h3>Resumen de las claves y certificados creados:</h3>
<table border="1">
<tbody>
<tr>
<th>Archivo</th>
<th>Utilizado en</th>
<th>Descripción</th>
<th>Secreto</th>
</tr>
<tr>
<td>ca.ca</td>
<td>Servidor y todos los clientes</td>
<td>Certificado de Autoridad</td>
<td>no</td>
</tr>
<tr>
<td>ca.crt</td>
<td>Máquina donde se crean los certificados</td>
<td>Llave del certificado CA principal</td>
<td>sí</td>
</tr>
<tr>
<td>dh{n}.pem</td>
<td>Servidor</td>
<td>Parámetros Diffie Hellman</td>
<td>no</td>
</tr>
<tr>
<td>servidor.crt</td>
<td>Servidor</td>
<td>Certificado del servidor</td>
<td>no</td>
</tr>
<tr>
<td>servidor.key</td>
<td>Servidor</td>
<td>Llave privada del certificado del servidor</td>
<td>sí</td>
</tr>
<tr>
<td>clienteX.crt</td>
<td>Solo en el cliente X</td>
<td>Certificado del Cliente X</td>
<td>no</td>
</tr>
<tr>
<td>clienteX.key</td>
<td>Solo en el cliente X</td>
<td>Llave privado del certificado del cliente X</td>
<td>no</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;"><strong>Nota:</strong> en clienteX, X quiere decir el número del cliente. En este ejemplo estamos trabajamos con 3 clientes para la VPN pr lo que deberíámos tener 3 pares de claves .crt y .key.</p>
<h2>Configurar el Servidor</h2>
<p>Copiamos los archivos que corresponden al servidor en una carpeta dentro del mismo. En mi caso copie la configuración en /etc/openvpn/claves. Si generamos las claves en una máquina que no es el servidor debemos usar <a href="http://rafael.bonifaz.ec/blog/2011/01/copiar-archivos-con-scp-ssh/">scp</a> u otra aplicación para subirlas a nuestro servidor.<br />
Copiamos un archivo de ejemplo de configuración del servidor y la adaptamos a nuestras necesidades.</p>
<p style="padding-left: 30px;"><code>cd /etc/openvpn<br />
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .<br />
gunzip server.conf.gz<br />
vim server.conf<br />
</code></p>
<p>Dentro del archivo modificamos algunas variables para que funcione. Aquí expico algunas:<br />
Protocolo a utilizar:</p>
<p style="padding-left: 30px;"><code># TCP or UDP server?<br />
proto udp<br />
</code></p>
<p>Vamos a configurar la vpn utilizando el protocolo UDP ya que esto nos dará un mejor rendimiento. No tiene sentido trabajar en TCP ya que dentro de nuestra vpn se correra el protocolo IP donde de ser necesario se volver a utilizar el protocolo TCP y no tiene sentido utilizar 2 veces este protocolo. En otras palabras, utilizar TCP solo cuando no lo puedan hacer con UDP.</p>
<p>Definimos las rutas a los certifiados. Recordar que en este ejemplo estamos utilizando /etc/openvpn/claves</p>
<p style="padding-left: 30px;"><code> ca claves/ca.crt<br />
cert claves/servidor.crt<br />
key claves/servidor.key<br />
dh dh1024.pem<br />
</code></p>
<p>Por último, en el mismo archivo, decimos a que redes queremos que los clientes vpn puedan acceder.</p>
<p style="padding-left: 30px;"><code>push "route 192.168.45.0 255.255.255.0" </code></p>
<p>Listo podremos iniciar el servidor:</p>
<p style="padding-left: 30px;"><code>/etc/init.d/openvpn start</code></p>
<p>En caso de necesitar corregir errores se puede iniciar el servicio así:</p>
<p style="padding-left: 30px;"><code>openvpn &lt;archivo de configuración&gt;</code></p>
<p><strong>Nota</strong>: El servidor VPN debería poder trabajar como ruteador por lo que debemos activar esto a nivel del kernel:</p>
<p style="padding-left: 30px;">echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>Para que la configuración quede grabada y no se pierda al reiniciar la máquina se debe editar el archivo /etc/sysctl.conf y poner el valor de 1 a la variable correspondiente:</p>
<p style="padding-left: 30px;"><code>net.ipv4.ip_forward=1</code></p>
<h2>Configuración de un Cliente</h2>
<p>Instalar OpenVPN en el cliente. En el caso de usar Linux, la instalación es igual a como se instala el servidor.<br />
Copiamos los archivos correspondientes al cliente dentro de la máquina del mismo (Ver la tabla de arriba). En mi caso los copie en /etc/openvpn/claves</p>
<p>Una vez que tenemos las claves, copiamos un archivo de configuración de ejemplo para cliente y lo configuramos para nuestras necesidades:</p>
<p style="padding-left: 30px;"><code>cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/<br />
vim client.conf</code></p>
<p>Definimos el protocolo como UDP igual que en el servidor:</p>
<p style="padding-left: 30px;"><code>proto udp<br />
</code></p>
<p>De manera similar al servidor, editamos las varialbes <strong>ca, cr y key</strong>:</p>
<p style="padding-left: 30px;"><span style="font-family: monospace;">ca claves/ca.crt<br />
</span><span style="font-family: monospace;">cert claves/clienteX.crt<br />
</span><span style="font-family: monospace;">key claves/clientX.key</span></p>
<p>El cliente debe saber a que servidor se debe conectar. Para esto debemos utilizar un nombre de dominio o el IP público y el puerto a conectarse. Por defecto OpeVPN corre en el puerto 1194.</p>
<p style="padding-left: 30px;"><code> remote miservidor.com 1194</code></p>
<p>Iniciamos OpenVPN en el cliente</p>
<p style="padding-left: 30px;"><span style="font-family: monospace;">/etc/init.d/openvpn start</span></p>
<p>En caso de tener errores podemos probar con</p>
<p style="padding-left: 30px;"><code>openvpn &lt;archivo de configuracion&gt;</code></p>
<p>Para probar la conectividad podemos hacer ping al ip 10.8.0.1 que es el ip de nuestro servidor. Si lo hacemos ya estamos con la VPN arriba. en caso de haber puesto la sentencia push podríamos hacer ping a ips dentro de la red LAN donde se encuentra la VPN. Ojo que las máquinas de la red LAN deberían saber como llegar a la red 10.8.0.0/24, para esto deberíamos ver la configuración del servidor.</p>
<h2>Referencias Adicionales</h2>
<ul>
<li><a href="http://openvpn.net/index.php/open-source/documentation/howto.html">How to OpenVPN</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/04/openvpn-how-to-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>11 Tips SSH</title>
		<link>http://rafael.bonifaz.ec/blog/2011/02/tips-ssh/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/02/tips-ssh/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 20:00:30 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=368</guid>
		<description><![CDATA[SSH es una herramienta esencial para cualquier administrador de sistemas basados en Unix. La mayoría sabemos que con SSH se puede ingresar de forma segura a un servidor remoto y administrarlo.  SSH hace mucho más que eso y por este motivo les comparto 11 tips que harán de su vida como administrador de sistemas más [...]]]></description>
			<content:encoded><![CDATA[<p>SSH es una herramienta esencial para cualquier administrador de sistemas basados en Unix. La mayoría sabemos que con SSH se puede ingresar de forma segura a un servidor remoto y administrarlo.  SSH hace mucho más que eso y por este motivo les comparto 11 tips que harán de su vida como administrador de sistemas más fácil y divertida.</p>
<ol>
<li><a href="http://bonifaz.ec/sshclaves">﻿﻿SSH con Llaves Públicas y Privadas</a>: Autentificar un usuario con contraseñas tiene sus problemas. Si administramos varios servidores debemos recordar la clave de todos y muchas veces para no olvidaras utilizamos claves débiles. Al utilizar llaves públicas y privadas solucionamos estos 2 problemas.</li>
<li><a href="http://bonifaz.ec/sshtunel1">Túneles SSH (parte 1)</a>: Es muy probable que alguna vez sea necesario ingresar a un servidor dentro de una Intranet con IP privada desde Internet. Si tenemos un servidor con acceso a SSH accesible desde Internet y que puede ver esta IP privada, asunto solucionado con túnles SSH</li>
<li><a href="http://bonifaz.ec/sshtunel2">Túneles SSH (parte 2)</a>: En este how to se aprende como compartir servicios desde mi máquina con IP privada hacia Internet gracias a los túneles SSH. El ejemplo más interesante es como con un servidor SSH en un ip pública, 2 máquinas con IPs privadas en distintas redes se pueden ver entre sí sin necesidad de VPNs.</li>
<li><a href="http://bonifaz.ec/sshgraficas">Aplicaciones Gráficas en Red con SSH</a>: Todos usamos SSH para acceder a línea de comandos en un servidor. No todos saben que también podemos usar SSH para acceder a aplicaciones gráfica en nuestra red.</li>
<li><a href="http://bonifaz.ec/sshsocks">SSH y Proxy Socks navegación segura en Internet﻿﻿</a>: Con una simple opción de SSH podemos navegar en Internet de forma encriptada y sin restricciones. Muy útil cuando navegamos en sitios done los servidores proxy no dejan navegar a ningún lugar o donde queremos tener mayor seguridad al navegar.</li>
<li><a href="http://bonifaz.ec/ssh443">SSH y HTTPS en el puerto 443</a>: Muchas veces el puerto 22 puede estar bloqueado en una red, haciendo que la mayoría de estos tips no sean útiles. Sin embargo, muy rara vez una red bloqueaa el puerto 443, en este ejemplo se enseña como hacer para compartir el puerto 443 para HTTPS y SSH de manera simultanea.</li>
<li><a href="http://bonifaz.ec/sshscp">Copia Remota con SCP</a>: La herramienta SCP permite copiar archivos a través de la red utilizando el protocolo SSH. En este tip aprenderemos como hacer esto y además como hacerlo limitando el ancho de banda si queremos copiar archivos muy grandes.</li>
<li><a href="http://bonifaz.ec/sshconfig">Simplifica tu vida gracias a  ~/.ssh/config</a>: Manejamos varios servidores, cada uno de ellos utiliza puertos diferentes. Podemos configurar nuestro cliente SSH para que algo como <em>&#8220;ssh -p 2200 usuariox@servidorremoto.com&#8221;</em> sea tan simple como &#8220;<em>ssh serv</em>&#8220;</li>
<li><a href="http://bonifaz.ec/sshchroot">SSH y SFTP con usuarios enjaulados</a>: Muchas veces se tiene la necesidad de dar acceso a nuestro servidor a personas en las que no confiamos. En este tip se aprende como hacer para crear un ambiente limitado para estos usuarios y que tengan solamente las herramientas que necesitan.</li>
<li><a href="http://bonifaz.ec/sshrsyc">Sincronizar Directorios con SSH y RSYNC</a>: RSYNC, es una poderosa herramienta de sincronización a través de la red. En este tip se aprende como combinar su poder con SSH y poder sacar respaldos o crear mirrors de forma segura.</li>
<li><a href="http://bonifaz.ec/sshfail2ban">Proteger SSH con Fail2Ban</a>: Muchas personas creen que cambiar el puerto de SSH significa asegurar su servidor. Cualquier persona que conoce poco de nmap y sabe usar Google seguro podrá descubrir en que puerto se ejecuta SSH. Fail2Ban es una herramienta mucho más poderosa que bloquea los IPs luego de X números de intentos fallido por un tiempo Y. De esta manera se hacen inútiles los ataques de diccionario.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/02/tips-ssh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Proteger SSH con Fail2Ban</title>
		<link>http://rafael.bonifaz.ec/blog/2011/02/proteger-ssh-con-fail2ban/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/02/proteger-ssh-con-fail2ban/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 02:49:16 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=422</guid>
		<description><![CDATA[Una de las principales formas de atacar un servidor SSH es através de ataques de diccionario o de fuerza bruta .Fail2Ban tiene una forma muy simple de solucionar el problema. Si después de X intentos escribo la clave de forma incorrecta, bloquea ese ip por un tiempo definido. Por defecto es 10 minutos. Con esta [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las principales formas de atacar un servidor SSH es através de ataques de diccionario o de fuerza bruta .Fail2Ban tiene una forma muy simple de solucionar el problema. Si después de X intentos escribo la clave de forma incorrecta, bloquea ese ip por un tiempo definido. Por defecto es 10 minutos. Con esta solución tan simple, nos tendrá protegidos de los ataques de diccionario.</p>
<h2>Instalar Fail2Ban</h2>
<p>En las distros basadas en Debian, basta con instalar el paquete fail2ban. Supongo que en otras distros la instalación es igual de simple</p>
<p style="padding-left: 30px;"><code>aptitude install fail2ban<span id="more-422"></span><br />
</code></p>
<h2>Configurar Fail2Ban</h2>
<p>Como cualquier aplicación de Linux, su configuración se encuentra dentro del directorio /etc. En este caso el directorio donde debemos buscar es /etc/fail2ban. El archivo que modicaremos en este mini tutorial es el /etc/fail2ban/jail.conf. Por defecto viene con varios templates para proteger servicios de nuestros servidores, no solo SSH. Algunas variables interesantes para modificar:<br />
Al inicio del archivo encontraremos las variables ignoreip y bantime La primera sirve para que no bloquee mi IP si algo sale mal y la segunda especifica el tiempo a bloquear un IP en segundos. Por defecto son 10 minutos (600 segundos).</p>
<p style="padding-left: 30px;"><code> ignoreip = 192.168.182.3<br />
bantime  = 600<br />
</code></p>
<p>Luego bajamos a la sección de SSH y verificamos que la configuración este correcta:</p>
<p style="padding-left: 30px;"><code> [ssh]</code></p>
<p style="padding-left: 30px;"><code> </code></p>
<p style="padding-left: 30px;"><code>enabled = true<br />
port    = ssh<br />
filter  = sshd<br />
logpath  = /var/log/auth.log<br />
maxretry = 6<br />
</code></p>
<p>Reiniciamos fail2ban<br />
<code><br />
/etc/init.d/fail2ban restart<br />
</code></p>
<p>Listo ahora estamos protegidos contra los ataques de diccionario a nuestro servidor SSH</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/02/proteger-ssh-con-fail2ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sincronizar y/o Respaldar directorios con SSH y RSYNC</title>
		<link>http://rafael.bonifaz.ec/blog/2011/02/sincronizar-yo-respaldar-directorios-con-ssh-y-rsync/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/02/sincronizar-yo-respaldar-directorios-con-ssh-y-rsync/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 02:20:56 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=417</guid>
		<description><![CDATA[Es muy probable que se requiera replicar la información de un directorio de una máquina o servidor a otro en mi red local o en Internet. Con RSYNC podríamos hacer cosas simples como sacar respaldos incrementales a un disco duro externo, a otra máquina en la red. También nos sirve para sincronizar directorios a través [...]]]></description>
			<content:encoded><![CDATA[<p>Es muy probable que se requiera replicar la información de un directorio de una máquina o servidor a otro en mi red local o en Internet. Con <a href="http://es.wikipedia.org/wiki/Rsync">RSYNC</a> podríamos hacer cosas simples como sacar respaldos incrementales a un disco duro externo, a otra máquina en la red. También nos sirve para sincronizar directorios a través del Internet y tener mirrors de un sitio web distribuidos en la red. Esto es lo que hacemos para los repositorios de <a href="http://www.elastix.org">Elastix</a> y lo que hace <a href="http://wikileaks.ch/Mirrors.html">Wikileaks con sus cientos de mirrors.</a></p>
<p>Si bien RSYNC no necesita de SSH para sincronizar, utilizar los 2 en conjunto tiene algunas ventajas entre las que destaco algunas:</p>
<ul>
<li>La información viaja encriptada</li>
<li>No necesito correr un servidor RSYNC</li>
<li>Solo necesito preocuparme de tener abierto el puerto de SSH<span id="more-417"></span></li>
</ul>
<p style="padding-left: 30px;"><strong> Nota</strong>: todos los ejemplos son una sola línea</p>
<h2>Ejemplo 1: Sincronizar 2 servidores web</h2>
<p style="padding-left: 30px;"><code>rsync -avz --delete  -e ssh /var/www/sitioweb usuario@servidorremoto.com:/var/www/mirror</code></p>
<p>Las opciones quieren decir:</p>
<ul>
<li><strong>-a</strong> Sirve para hacer una sincronización recursiva</li>
<li><strong>-v</strong> Sirve para mostrar en pantalla información de lo que esta haciendo el proceso</li>
<li><strong>-z</strong> Sirve para enviar la información comprimida y ahorrrar ancho de banda</li>
<li><strong>&#8211;delete</strong> Sirve para borrar del destino todo lo que no esta en el origen. En otras palabras para tener un mirror 100% igual.</li>
<li><strong>-e ssh</strong>: Es la parte del comando que hace que este artículo sea catalogado como un tip ssh <img src='http://rafael.bonifaz.ec/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Básicamente sirve para hacer la sincronización utilizando el protocolo ssh</li>
</ul>
<p>Al igual que SCP el primer directorio es el origen y el segundo es el destino.</p>
<h2>Ejemplo 2: Sincronizar con puerto  no Estandard</h2>
<p>Algo muy común es que la gente  corra el servidor SSH en un puerto distinto al 22. Inclusive hace unos días publiqué como hacer para que escuche<a href="http://bonifaz.ec/ssh443"> en el puerto 443</a>. Ahora explicamos como sincronizar los 2 directorios donde el puerto del destino no es estandard.</p>
<p style="padding-left: 30px;"><span style="font-family: monospace;">rsync -avz &#8211;delete &#8211;rsh=&#8217;ssh -p 443&#8242;  /var/www/sitioweb usuario@servidorremoto.com:/var/www/mirror</span></p>
<p>Como pueden ver hay un solo cambio en este ejemplo. En lugar de usar<em><strong> -e ssh</strong></em> utilizamos<strong> -</strong><em><strong>-rsh=&#8217;ssh -p 443&#8242;</strong></em>. Básicamente estamos diciendo que se utilice el puerto 443 en lugar del puerto 22.</p>
<h2>Recomendaciones</h2>
<p>Si desean hacer tareas automatizadas como usar su servidor como un mirror de un tercer (ej. Elastix, Wikileaks <img src='http://rafael.bonifaz.ec/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) es muy recomendable crear un ambiente <a href="http://bonifaz.ec/sshchroot">enjaulado para ese usuario SSH</a> y seguro necesitará trabajar c<a href="http://bonifaz.ec/sshclaves">on autenticación con llaves públicas y privadas.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/02/sincronizar-yo-respaldar-directorios-con-ssh-y-rsync/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SSH/SFTP Enjaulado</title>
		<link>http://rafael.bonifaz.ec/blog/2011/01/sshsftp-enjaulado/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/01/sshsftp-enjaulado/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 03:05:01 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=413</guid>
		<description><![CDATA[SSH es una herramienta extremadamente poderosa. Mucho poder quiere decir mucha responsabilidad. Si alguna vez tenemos que dar acceso de SSH o SFTP a nuestro servidor a alguien que no conozcamos, entonces es buena idea darles lo mínimo necesario para que realicen sus tareas. Las buenas noticias es que podemos crear ambientes aislados a los [...]]]></description>
			<content:encoded><![CDATA[<p>SSH es una herramienta extremadamente poderosa. Mucho poder quiere decir mucha responsabilidad. Si alguna vez tenemos que dar acceso de SSH o SFTP a nuestro servidor a alguien que no conozcamos, entonces es buena idea darles lo mínimo necesario para que realicen sus tareas.<br />
Las buenas noticias es que podemos crear ambientes aislados a los usuarios con el conjunto de herramientas que ellos necesitan. . Entre otras cosas, estas herramientas pueden servir ser sincronizar directorios  utilizando rsync sobre ssh, tener acceso para subir archivos de forma segura al servidor utilizando SFTP, entre otras.<br />
La primera vez que me tocó crear un ambiente chroot para un usuario era necesario compilar una versión modificada de ssh. Si bien era un trabajo tedioso, existe buena documentación en Internet y se podría seguir how-tos bastante bien documentados. Recientemente investigué otra vez sobre el tema y veo que ahora ssh soporta nativamente ambientes enjaulados y existe un script que nos permite crear los ambientes enjaulados.</p>
<p style="padding-left: 30px;"><strong>Nota</strong>: Todos los ejemplos que pongo a continuación con SSH se podría utilizar con cliente SFTP como Filezilla.<span id="more-413"></span></p>
<p>Descargar el script make_chroot_jail y guardarlo en /usr/local/sbin:</p>
<p style="padding-left: 30px;"><code>cd /usr/local/sbin<br />
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh<br />
chmod 700  make_chroot_jail.sh<br />
</code></p>
<p>La razón por la que guardamos el archivo en /usr/local/sbin, es porque es una ruta estandard para poner aplicaciones o scripts que no vienen con la distribución que usamos y que deben ser ejecutadas solo por el administrador. Además tiene la ventaja de estar incluido en el path de los administradores por lo que se puede ejecutar directamente escribiendo make_chroot_jail.sh en lugar de la ruta completa.</p>
<h2>Modificaciones al script</h2>
<p>Antes de ejecutar el script, me encontré con algunos detalles que deben ser cambiados para que funcione perfectamente. El primer cambio que se debe hacer es cambiar la primera línea del archivo. En lugar de decir:</p>
<p style="padding-left: 30px;"><code>#!/bin/sh</code></p>
<p>Deberíá decir</p>
<p style="padding-left: 30px;">
<code>#!/bin/bash</code></p>
<p>Normalmente el comado /bin/sh es un link a /bin/bash, pero esto no es cierto en todas las distros. Para que este script funcione correctamente deberíamos ejecutarlo con el shell bash.</p>
<p>En el caso de mis pruebas con Ubuntu 10.4 y Debian Squeeze es necesario modificar la línea 472 y cambiar la librería:</p>
<p style="padding-left: 30px;"><code>/lib/libcap.so.1</code></p>
<p>por</p>
<p style="padding-left: 30px;"><code>/lib/libcap.so.2</code></p>
<p>En este script Ubuntu es reconocido como Debian. Así que en los 2 casos hay que modificar la línea 472. Si estas usando una distro como Suse, Fedora u otra, habría que modificar la línea correspondiente.</p>
<h2>Personalizar el Ambiente</h2>
<p>La última modificación que debemos hacer al script es agregar o quitar (lo dudo) las aplicaciones que queremos darle al usuario. En el caso de Debian/Ubuntu deberíamos modifcar la línea 119.</p>
<p>Crear el primer usuario:<br />
La forma más básica de crear el usuario es:</p>
<p style="padding-left: 30px;"><code>make_chroot_jail.sh gnu</code></p>
<p>En este caso creamos el usuario gnu que será un usuario enjaulado. Ahora intentemos ingresar al servidor y listemos algunos directorios para ver si todo esta en orden.</p>
<p style="padding-left: 30px;"><code>ssh gnu@servidorremoto.com<br />
ls /</code></p>
<p>Si la salida del comando es la siguiente hemos creado exitosamente nuestra Jaula.</p>
<p style="padding-left: 30px;"><code>bin  dev  etc  home  lib  sbin  usr</code></p>
<p>Por defecto la jaula se creará en el directorio /home/jail. Este directorio se podría cambiar pasando argumentos al comando. Para ver lo que se puede hacer con este script podemos ejecutarlo de la siguiente forma</p>
<p style="padding-left: 30px;"><code>make_chroot_jail.sh | less<br />
</code></p>
<p>Si quisieramos podríamos crear varios usuarios dentro de la misma jaula.</p>
<h2>Crear varias Jaulas ssh</h2>
<p>Es muy probable que queramos tener varias usuarios y cada uno con su propio ambiente chroot. Esto es algo muy útil si alguien vende hosting y quiere que sus usuarios utilicen SFTP en lugar de FTP, aumentando mucho la seguridad para los usuarios y para el servidor. Para crear los usuarios en un ambiente distinto se les debe asignar un shell propio y un directorio donde estará la jaula.</p>
<p>Con un ejemplo se entiende mejor. Vamos crear 2 ambientes enjaulados. El primero tendrá su shell como /usr/local/bin/shelltuxs y su ambiente chroot estará en /jaulas/tuxs. El segundo tendrá su shell como /usr/local/bin/shellgnues y su ambiente chroot estará en /jaulas/gnues. Podríamos tener tantos ambientes enjaulados como quisieramos, pero cada uno deberá tener su propio shell. Los shells que estamos creando podríán estar en cualquier directorio y llamarse de cualquier forma. El script los creará.</p>
<p>Crear usuarios gnues y su ambiente</p>
<p style="padding-left: 30px;">
<code>make_chroot_jail.sh gnu1 /usr/local/bin/shellgnues /jaulas/gnues/<br />
make_chroot_jail.sh gnu2 /usr/local/bin/shellgnues /jaulas/gnues/<br />
make_chroot_jail.sh gnu3 /usr/local/bin/shellgnues /jaulas/gnues/<br />
</code></p>
<p>Crear usuarios tux y su ambiente:</p>
<p style="padding-left: 30px;"><code>make_chroot_jail.sh tux1 /usr/local/bin/shelltuxs /jaulas/tuxs/<br />
make_chroot_jail.sh tux2 /usr/local/bin/shelltuxs /jaulas/tuxs/<br />
make_chroot_jail.sh tux3 /usr/local/bin/shelltuxs /jaulas/tuxs/</code></p>
<p>Listo hemos creado 2 ambientes enjaulados y cada ambiente enjaulado. La verdad esta mucho más fácil que hace algunos años atrás cuando hice esto por primera vez.</p>
<h2>Algunas consideraciones.</h2>
<p>Si bien este script nos facilita la vida, tiene algunas errores. Si se actualiza varias veces el mismo usuario, habría que revisar el archivo /etc/passwd tanto en el ambiente real como el enjaulado para que no tenga usuarios repetidos. Lo mismo se debería hacer con el comando visudo y borrar los usuarios repetidos.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/01/sshsftp-enjaulado/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Simplifica tu vida gracias a ~/.ssh/config</title>
		<link>http://rafael.bonifaz.ec/blog/2011/01/sshconfig-simplifica-nuestra-vida-con-ssh/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/01/sshconfig-simplifica-nuestra-vida-con-ssh/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 02:01:19 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=406</guid>
		<description><![CDATA[Para las personas que trabajamos mucho con SSH, tenemos que recordar varios nombres de host, ips, usuarios, puertos, etc&#8230;. Ya vimos como hacer para no recordar demasiadas contraseñas, pero igual todavía son demasiadas cosas que recordar para acceder a nuestros servidores remotos. Hace poco descubrí que existe el archivo de configuración ~/.ssh/config que sirve para [...]]]></description>
			<content:encoded><![CDATA[<p>Para las personas que trabajamos mucho con SSH, tenemos que recordar varios nombres de host, ips, usuarios, puertos, etc&#8230;. Ya vimos como hacer para <a href="http://bonifaz.ec/sshclaves">no recordar demasiadas contraseñas</a>, pero igual todavía son demasiadas cosas que recordar para acceder a nuestros servidores remotos. Hace poco descubrí que existe el archivo de configuración ~/.ssh/config que sirve para facilitar nuestra vida.</p>
<p>Supongamos que debemos ingresar a un servidor remoto, con un nombre de usuario que no es el mismo de mi máquina local y además corremos el servidor en un puerto distinto al 22. Cada vez que accedamos a este servidor deberíamos escribir algo así:</p>
<p style="padding-left: 30px;"><code>ssh -p 443 usuarioremoto@servidorremoto.com</code></p>
<p>No es el fin del mundo, pero si tenemos muchos servers y una mala memoria se nos complica un poco la vida. Que tal si en lugar de escribir toda esa línea podemos escribir simplemente:</p>
<p style="padding-left: 30px;"><code>ssh sremoto<span id="more-406"></span></code></p>
<p>Gracias al archivo de configuración ~/.ssh/config  podemos hacer sin problema. Empezamos creando el archivo:</p>
<p style="padding-left: 30px;"><code>vim ~/.ssh/config</code></p>
<p>En mi caso estoy utilizando vim como editor, pero podría ser un editor gráfico como gedit. El caracter &#8220;~&#8221; quiere decir home del usuario con el que estoy trabajando en este momento. En otras palabras si estoy trabajando con el usuario juan entonces lo más probable es que  &#8220;~&#8221; se refiera a /home/juan/.<br />
En el archivo de configuración añadimos las siguientes líneas.<code><br />
</code></p>
<p style="padding-left: 30px;"><code>Host sremoto<br />
HostName servidorremoto.com<br />
User    usuarioremoto<br />
Port    443</code></p>
<p>La primera línea es algo así como un alias para este servidor. La segunda línea nos dice el nombre del host para el servidor. En la tercera ponemos el nombre de usuario y en la última el puerto. No existe un orden específico sobre las variables que podemos utilizar. Podemos tener tantos Host como sea necesario.</p>
<p>Listo ahora ingresamos al servidor remoto.</p>
<p style="padding-left: 30px;"><code>ssh sremoto</code></p>
<p>Inclusive se puede utilizar el alias &#8220;sremoto &#8221; para copiar archivos con scp</p>
<p style="padding-left: 30px;"><code>scp archivo sremoto:</code></p>
<p>En este ejemplo estamos poniendo solo un servidor remoto, pero podríamos tener los que queramos. Las variables con configuramos aquí no son las únicas. Para más información sobre lo que podemos hacer con este archivo de configuración basta ver su página de manual:</p>
<p style="padding-left: 30px;"><code>man ssh_config</code></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/01/sshconfig-simplifica-nuestra-vida-con-ssh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Copiar archivos con SCP (SSH)</title>
		<link>http://rafael.bonifaz.ec/blog/2011/01/copiar-archivos-con-scp-ssh/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/01/copiar-archivos-con-scp-ssh/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 02:20:27 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=401</guid>
		<description><![CDATA[Para muchos esto no sea ningún tip, sino el día a día. Sin embargo, me he topado con muchos administradores de sistema no conocen un comando tan básico como scp. Además, seguro que muchos no saben que se puede controlar el ancho de banda mientras se copia un archivo. Útil para cuando copiamos archivos muy [...]]]></description>
			<content:encoded><![CDATA[<p>Para muchos esto no sea ningún tip, sino el día a día. Sin embargo, me he topado con muchos administradores de sistema no conocen un comando tan básico como scp. Además, seguro que muchos no saben que se puede controlar el ancho de banda mientras se copia un archivo. Útil para cuando copiamos archivos muy grandes al Internet pudiendo saturar nuestra conexión.</p>
<p>El comando SCP básicamente sirve para copiar archivos de un computador a otro, de manera encriptada, a través del protocolo SSH. Funciona de manera muy similar a como funciona el comando cp, donde tenemos un origen y un destino. La diferencia es que el origen o el destino van a ser computadores diferentes.</p>
<h2>Ejemplo 1: Origen local, destino remoto</h2>
<p style="padding-left: 30px;"><code>scp archivo.tar.gz usuario@servidorremoto.com:</code></p>
<p><span id="more-401"></span>En este caso el origen es un archivo local de la computadora donde estoy trabajando y el destino es el servidor remoto. El &#8220;:&#8221; al final del nombre del servidor quiere decir que vamos a copiar el archivo en el directorio home del usuario que realiza la copia. Después del : podríamos poner una ruta relativa al home del usuario o una ruta absoluta. Por ejemplo, si quisiera copiar en la ruta /home/usuario/directoriox</p>
<h3>Rutas relativas:</h3>
<p style="padding-left: 30px;"><code>scp arhivo.tar.gz usuario@servidorremoto.com:directoriox</code></p>
<h3>Rutas absolutas:</h3>
<p style="padding-left: 30px;"><code>scp arhivo.tar.gz usuario@servidorremoto.com:/home/usuario/directoriox</code></p>
<p>En este caso es más comodo usar la ruta relativa, pero no siempre será este el caso.</p>
<h2>Ejemplo 2: Origen remoto, destino local</h2>
<p style="padding-left: 30px;"><code>scp usuario@servidorremoto.com:arhivo.zip . </code></p>
<p>En este caso copiamos el archivo remoto archivo.zip (ubicado en el home del usuario) A la carpeta actual donde me encuentro en mi máquina local.<br />
Tanto para el ejemplo 1, como para el 2 si quisieramos copiar un directorio, lo haríamos con la opción &#8220;-r&#8221;. En general las opciones de <em>scp</em> son las mismas que las del comando <em>cp</em></p>
<h2>Ejemplo 3: Puerto alternativo</h2>
<p>Muchas personas no corren ssh en el puerto 22, en un post anterior expliqué como hacer para <a href="http://bonifaz.ec/ssh443">correr ssh en el puerto 443</a> en conjunto con https. Pues bien, ahora hagamos un ejemplo de copia de scp utilizando el puerto 443.</p>
<p style="padding-left: 30px;"><code>scp -P 443 -r /ruta/directorio usuario@servidorremoto.com:/ruta/deestino<br />
</code></p>
<p><code>En este caso copiamos todo un directorio y lo hacemos por el puerto no estadard 443.</code></p>
<h2>Ejemplo 4: Limitar Ancho de Banda</h2>
<p>Esta opción no la sabe mucha gente y en ocasiones puede ser muy útil. Que tal si queremos copiar un archivo muy grande desde o hacia Internet. Es muy probable que eso genere mucho tráfico que haga insoportable el uso del Internet para el resto de personas en la red, incluido quien esta subiendo el archivo. Por suerte, parece ser que los desarrolladores de Openssh han pensado en todo <img src='http://rafael.bonifaz.ec/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  y se puede limitar el ancho de banda de la transeferencia. Para esto usamos la opción &#8220;-l&#8221; seguido por el ancho de banda a limitar en kbits/segundo. (8 kbit/segundo = 1 kbyte/segundo)</p>
<p style="padding-left: 30px;"><code>scp -l 80 archivgrande.tar.gz usuario@servidorremoto.com:</code></p>
<p>De esta manera limitaremos la copia a 80 kbits/seg (10 kbytes/segundo).</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/01/copiar-archivos-con-scp-ssh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SSH y HTTPS en puerto 443</title>
		<link>http://rafael.bonifaz.ec/blog/2011/01/ssh-y-https-en-puerto-443/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/01/ssh-y-https-en-puerto-443/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 02:56:01 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=394</guid>
		<description><![CDATA[En el artículo anterior explique como navegar a través de un servidor socks creado con ssh. Eso va a funcionar siempre y cuando no tengamos bloqueado el puerto en el que estamos corriendo ssh en nuestro servidor (por defecto el 22). Es muy probable que el puerto 22 este bloqueado, pero muy poco probable que [...]]]></description>
			<content:encoded><![CDATA[<p>En el artículo anterior explique como navegar a través de un <a href="http://bonifaz.ec/sshsocks">servidor socks creado con ssh</a>. Eso va a funcionar siempre y cuando no tengamos bloqueado el puerto en el que estamos corriendo ssh en nuestro servidor (por defecto el 22). Es muy probable que el puerto 22 este bloqueado, pero muy poco probable que el 443 sea bloqueando.</p>
<p>Una solución simple podría ser ejecutar SSH en el puerto 443, pero lo más probable es que necesitemos correr alguna aplicación HTTPS en ese puerto. La solución a este problema se llama <a href="http://www.rutschle.net/tech/sslh.shtml">SSLH</a>. Sus autores lo llaman un multiplexor SSH/HTTPS.</p>
<p>Básicamente lo que hace este servicio es redirigir las peticiones de SSH a localhost:22 y las de HTTPS a localhost:443. Para que todo funcione bien debemos deberíamos configurar nuestro servidor web para que escuche en: 127.0.0.1:433 en lugar de *:443.<span id="more-394"></span></p>
<h2>Manos a la Obra</h2>
<p style="padding-left: 30px;"><strong>Nota</strong>: Si se va hacer esto en un servidor remoto podría perder la conexión al mismo. Trabaje con atención y mantenga una conexión de ssh abierta por si las moscas.</p>
<p>Lo primero que tenemos que hacer es instalar <a href="http://www.rutschle.net/tech/sslh.shtml">SSLH</a>. En las distribuciones basadas en Debian (ej. Ubuntu) bastará instalarlo desde repositorios. En otras distros supongo que el procedimiento debe ser muy similar.</p>
<p style="padding-left: 30px;"><code>aptitude install sslh</code></p>
<p>Una vez instalado, lo primero que debemos hacer es configurar nuestro servidor web para que el puerto 443 sea solo escuchado en localhost y no en el ip público.  En mi caso personal uso <a href="http://www.cherokee-project.com/">Cherokee</a> y para esto en el Cherokee admin debemos ir a: General-&gt; puertos. Una vez ahí añadimos la dirección ip junto a la directiva de 443.  En el caso de <a href="http://httpd.apache.org/docs/2.0/bind.html">Apache</a> o cualquier otro servidor web se aplica el mismo concepto.</p>
<p>El servicio ssh si queremos lo podemos configurar para que escuche solo en 127.0.0.1:22 ya que ahora podríamos acceder desde el 443. No recomiendo hacer esto hasta que todo este funcionando.</p>
<p>Una vez que tenemos configurado el servidor web, tenemos que configurar el sslh. Para esto editamos el archivo /etc/default/sslh. Básicamente se debe añadir la lista RUN=yes y configurar el ip pública de nuestro servidor. Deberíamos tener algo similar a esto:</p>
<p style="padding-left: 30px;"><code> DAEMON_OPTS="-u sslh -p 200.200.200.200:443 -s 127.0.0.1:22 -l 127.0.0.1:443 -P /var/run/sslh.pid"<br />
RUN=yes</code></p>
<p style="padding-left: 30px;"><strong>Nota</strong>: Son solo 2 líneas la primera define la variable DAEMON_OPTS y la segunda la variable RUN.</p>
<p>Ahora solo queda arrancar el servicio</p>
<p style="padding-left: 30px;"><code>/etc/init.d/sslh start</code></p>
<p>Listo ahora podemos ingresar a nuestro servidor utilizando el puerto 443</p>
<p style="padding-left: 30px;"><code>ssh -p 443 usuario@servidorremoto.com</code></p>
<p>Ahora si quisieramos navegar utilizando un <a href="http://bonifaz.ec/sshsocks">proxy socks</a> básicamente deberíamos hacer algo así:</p>
<p style="padding-left: 30px;"><code>ssh -p 443 -ND 8080 usuario@servidorremoto.com</code></p>
<p>Ahora ya estamos preparados para redes hostiles donde les gusta bloquear lo que más pueden.</p>
<p>Les recomiendo leer el siguiente artículo de Linux Magazine donde Charlie nos <a href="http://www.linux-magazine.es/issue/61/061-061_Charly61.pdf">cuenta sobre sslh</a>. Si no hubiera sido por Charlie, no supiera como hacer esto y no hubiera escrito este artículo. Sin lugar a dudas mi columna favorita de Linux Magazine.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/01/ssh-y-https-en-puerto-443/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aplicaciones Gráficas con SSH en Red</title>
		<link>http://rafael.bonifaz.ec/blog/2011/01/aplicaciones-graficas-con-ssh-en-red/</link>
		<comments>http://rafael.bonifaz.ec/blog/2011/01/aplicaciones-graficas-con-ssh-en-red/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 02:36:20 +0000</pubDate>
		<dc:creator>Rafael Bonifaz</dc:creator>
				<category><![CDATA[Comos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[como]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafael.bonifaz.ec/blog/?p=371</guid>
		<description><![CDATA[Este es uno de los trucos que aprendí primero con SSH. La mayoría de la gente que usa SSH lo hace porque puede administrar servidores a através de este poderoso servicio. Algo que muchos no saben es que se puede ejecutar aplicaciones gráficas a través de una red con ssh y esto es mucho más [...]]]></description>
			<content:encoded><![CDATA[<p>Este es uno de los trucos que aprendí primero con SSH. La mayoría de la gente que usa SSH lo hace porque puede administrar servidores a através de este poderoso servicio. Algo que muchos no saben es que se puede ejecutar aplicaciones gráficas a través de una red con ssh y esto es mucho más sencillo de lo que nos podríamos imaginar.<br />
Un caso simple podría ser que estoy en una red pero estoy muy lejos de mi computadora. Tengo la necesidad de acceder a mi correo electrónico que le ejecuto con Thunderbird. El camando para lograr esto es tan simple como:</p>
<p style="padding-left: 30px;"><code>ssh -X usuario@ipservidor thunderbird</code></p>
<p>Ahora que tal si queremos ejecutar más de una aplicación gráfica. Podríamos utilizar una sola sesión de ssh para abrir varias aplicaciones.</p>
<p style="padding-left: 30px;"><code> ssh -X usuario@ipservidor<br />
thunderbird &amp;<br />
oowriter &amp;<br />
gnome-calculator&amp;<span id="more-371"></span><br />
</code></p>
<p><code><code>En este caso no ponemos la aplicación a ejecutar al momento de hacer ssh, sino que las empezamos a ejecutar desde que ingresamos a la máquina remota. De esta manera podemos ejecutar una aplicación después de la otra añadiendo el carácter "&amp;" al final de cada comando para que se ejecuten en segundo plano. De esta forma podemos ejecutar varios comandos en el mismo terminal.<br />
</code></code></p>
<h2><code><code><code>Conclusión</code></code></code></h2>
<p>Como se puede ver ejecutar aplicaciones gráficas en red puede ser muy útil si nos manejamos en pequeñas o grandes redes. Una de las utilidades que más me gusta es para reutilizar computadoras viejas. Se podría en una máquina de pocos recursos ejecutar aplicaciones gráficas a través de la red desde un computador con más recursos. Así podríamos ejecutar aplicaciones como openoffice en computadores de más de 10 años. Hace muchos años escribí un how to <a href="http://www.ecualug.org/2004/12/14/trucos_y_tips/utilizar_x_en_red_y_dale_vida_a_tu_computadora_vieja">sobre el tema en el Ecualug</a>. <a href="http://www.ltsp.org/">LTSP</a> o <a href="http://www.tcosproject.org/">TCOS</a> son mejores soluciones para estos problemas.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.bonifaz.ec/blog/2011/01/aplicaciones-graficas-con-ssh-en-red/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

