<?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>chroot &#8211; Rafael Bonifaz</title>
	<atom:link href="https://rafael.bonifaz.ec/blog/tag/chroot/feed/" rel="self" type="application/rss+xml" />
	<link>https://rafael.bonifaz.ec/blog</link>
	<description>Software libre, criptografía, privacidad y algo más</description>
	<lastBuildDate>Tue, 01 Feb 2011 03:05:01 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://rafael.bonifaz.ec/blog/wp-content/uploads/2019/01/cropped-I4GErw6b_400x400-1-32x32.jpg</url>
	<title>chroot &#8211; Rafael Bonifaz</title>
	<link>https://rafael.bonifaz.ec/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SSH/SFTP Enjaulado</title>
		<link>https://rafael.bonifaz.ec/blog/2011/01/sshsftp-enjaulado/</link>
					<comments>https://rafael.bonifaz.ec/blog/2011/01/sshsftp-enjaulado/#comments</comments>
		
		<dc:creator><![CDATA[Rafael Bonifaz]]></dc:creator>
		<pubDate>Tue, 01 Feb 2011 03:05:01 +0000</pubDate>
				<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">https://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 [&#8230;]]]></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>https://rafael.bonifaz.ec/blog/2011/01/sshsftp-enjaulado/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
	</channel>
</rss>
