<?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>Mia mamma usa Linux! &#187; Chroot</title>
	<atom:link href="http://www.miamammausalinux.org/tag/chroot/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miamammausalinux.org</link>
	<description>Perché niente è impossibile da capire... Se lo spieghi bene !</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:03:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SSH in CHROOT: la soluzione nativa</title>
		<link>http://www.miamammausalinux.org/2009/06/ssh-in-chroot-la-soluzione-nativa/</link>
		<comments>http://www.miamammausalinux.org/2009/06/ssh-in-chroot-la-soluzione-nativa/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 15:23:02 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Chroot]]></category>
		<category><![CDATA[Sicurezza]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=707</guid>
		<description><![CDATA[Nei precedenti articoli pubblicati nella serie &#8220;SSH in CHROOT: Una gabbia per la shell sicura&#8221; parte 1 e parte 2, veniva affrontato il tema della messa in sicurezza di SSH attraverso una Patch che obbligava determinati utenti a rimanere chiusi all&#8217;interno di una gabbia virtuale. Dalla versione 5 di SSH però è possibile sfruttare un [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/openssh.png" alt="openssh" title="openssh" width="100" height="98" class="alignnone size-full wp-image-248" /></p>
<p>Nei precedenti articoli pubblicati nella serie &#8220;SSH in CHROOT: Una gabbia per la shell sicura&#8221; <a href="http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-1-di-2/">parte 1</a> e <a href="http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-2-di-2/">parte 2</a>, veniva affrontato il tema della messa in sicurezza di SSH attraverso una <em>Patch</em> che obbligava determinati utenti a rimanere chiusi all&#8217;interno di una gabbia virtuale.<br />
Dalla versione 5 di SSH però è possibile sfruttare un meccanismo nativo che implementa il CHROOT. Ecco spiegato come.</p>
<p><strong>Capire la versione di SSH installata nel sistema</strong></p>
<p>Prima di procedere con la configurazione del pacchetto è bene accertarsi che la versione di SSH installata nel sistema sia uguale o superiore alla <em>4.8p1</em>, su sistemi Debian e derivati, l&#8217;interrogazione è possibile attraverso il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># dpkg -l openssh-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Nome                                    Versione                                Descrizione
+++-=======================================-=======================================-==============================================================================================
ii  openssh-blacklist                       0.4.1                                   list of default blacklisted OpenSSH RSA and DSA keys
ii  openssh-blacklist-extra                 0.4.1                                   list of non-default blacklisted OpenSSH RSA and DSA keys
ii  openssh-client                          1:5.1p1-5                               secure shell client, an rlogin/rsh/rcp replacement
ii  openssh-server                          1:5.1p1-5                               secure shell server, an rshd replacement</pre></div></div>

<p>Mentre in sistemi RedHat e derivati è sufficiente interrogare l&#8217;elenco pacchetti installati con <em>rpm</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ rpm -qa openssh*
openssh-4.3p2-16.el5
openssh-askpass-4.3p2-16.el5
openssh-clients-4.3p2-16.el5
openssh-server-4.3p2-16.el5</pre></div></div>

<p>Nei casi riportati, sul sistema Debian (versione <em>Lenny</em>) la versione di SSH supporta nativamente il <em>Chroot</em> mentre il sistema RedHat (versione 5) no. In questo caso è necessario eseguire l&#8217;aggiornamento del pacchetto se ne si vorrà sfruttare la nuova funzionalità, ricompilando localmente la versione 5 partendo dai sorgenti disponibili presso <a href="http://www.openssh.org/portable.html">il sito ufficiale del progetto OpenSSH</a> oppure scaricando un rpm precompilato da repository pubblici come <a href="http://www.rpmfind.net/linux/rpm2html/search.php?query=openssh&#038;submit=Search+...">http://www.rpmfind.net</a>.</p>
<p><strong>Come funziona il CHROOT nativo</strong></p>
<p>Il metodo con cui il demone SSH, previa configurazione, costruisce la gabbia per l&#8217;utente che effettua la login può essere diviso in due tipologie: l&#8217;accesso diretto via ssh e quello via sftp.<br />
Nel primo caso la directory nella quale l&#8217;utente effettuerà il login dovrà contenere la struttura essenziale di file e directory necessaria alla navigazione all&#8217;interno del sistema, mentre attraverso il funzionamento sftp il demone non necessiterà di un ambiente nativo, ma sfruttando il comando interno sftp, fornirà l&#8217;interfaccia di accesso al sistema.</p>
<p><strong>Predisposizione del sistema</strong></p>
<p>I test che verranno effettuati nel corso dell&#8217;articolo partiranno dal presupposto che esista un gruppo denominato <em>test</em> e che tutte le utenze facenti parte di questo gruppo vengano ingabbiate.<br />
Verrà quindi creato un utente denominato <em>test</em> con cui verranno effettuate le prove:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ adduser test</pre></div></div>

<p>Il comando crea automaticamente il gruppo omonimo.<br />
Terminata la creazione dell&#8217;utente di test è necessario creare la struttura relativa alla gabbia. Per far questo è possibile utilizzare lo script <em>create_chroot_env.sh</em> contenuto nel file <a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/ssh-in-chroot-scripts.tar">ssh-in-chroot-scripts.tar</a> presentato nella precedente serie di articoli.<br />
Lanciando il comando come segue:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ./create_chroot_env.sh /chroot</pre></div></div>

<p>nella cartella <em>/chroot</em> verrà creato un ambiente con tutti i requisiti imposti da ssh per l&#8217;implementazione della gabbia.<br />
Requisito essenziale per il corretto funzionamento del sistema è che la cartella nella quale verrà impostata la gabbia sia accessibile in scrittura alla sola utenza di root. Avendo lanciato lo script come utente root (non sarebbe possibile altrimenti utilizzare il path definito) tale requisito è pienamente rispettato.</p>
<p><strong>Configurazione del demone per l&#8217;utilizzo via ssh</strong></p>
<p>A questo punto la configurazione del server ssh andrà variata per supportare il chroot esclusivamente per le utenze facenti parte del gruppo test attraverso l&#8217;aggiunta delle seguenti righe nel file <em>/etc/ssh/sshd_config</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">Match Group test
        ChrootDirectory /chroot/</pre></div></div>

<p>terminata la modifica le configurazioni andranno ricaricate attraverso il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/ssh reload</pre></div></div>

<p><strong>Verifica del funzionamento</strong></p>
<p>Per verificare il funzionamento della gabbia è sufficiente effettuare il login nel sistema e controllare come e se sia possibile muoversi all&#8217;interno di questo:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ssh test@172.16.1.130
test@172.16.1.130's password: 
Linux anomalia 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686
&nbsp;
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
&nbsp;
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun  9 23:09:39 2009 from 172.16.1.1
-bash-3.2$ pwd
/
-bash-3.2$ ls
bin  dev  etc  home  lib
-bash-3.2$ cd ..
-bash-3.2$ pwd
/
-bash-3.2$ ls
bin  dev  etc  home  lib</pre></div></div>

<p>l&#8217;output illustrato conferma le aspettative: a login effettuato non è possibile scorrere il path precedente alla cartella /. La gabbia funziona.</p>
<p><strong>Configurazione del demone per l&#8217;utilizzo via sftp</strong></p>
<p>La configurazione impostata non prevede l&#8217;utilizzo di <em>sftp</em>, infatti un tentativo di connessione non andrebbe a buon fine:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ sftp test@172.16.1.130
Connecting to 172.16.1.130...
test@172.16.1.130's password: 
subsystem request failed on channel 0
Couldn't read packet: Connection reset by peer</pre></div></div>

<p>per fare in modo che questo tipo di connessione sia utilizzabile, è necessario modificare nuovamente <em>/etc/ssh/sshd_config</em> sostituendo la riga</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">Subsystem sftp /usr/lib/openssh/sftp-server</pre></div></div>

<p>con</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">Subsystem sftp internal-sftp</pre></div></div>

<p>In questo modo si indica ad ssh di utilizzare per il comando sftp non lo script locale <em>/usr/lib/openssh/sftp-server</em> ma la versione interna al demone.</p>
<p><strong>Verifica del funzionamento</strong></p>
<p>A questo punto dopo aver ricaricato il demone, è possibile provare nuovamente la login via sftp:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ sftp test@172.16.1.130
Connecting to 172.16.1.130...
test@172.16.1.130's password: 
subsystem request failed on channel 0
Couldn't read packet: Connection reset by peer
rasca@anomalia:~$ sftp test@172.16.1.130
Connecting to 172.16.1.130...
test@172.16.1.130's password: 
sftp&gt; ls
bin   dev   etc   home  lib   
sftp&gt; cd ..
sftp&gt; ls 
bin   dev   etc   home  lib</pre></div></div>

<p>Come da pronostico, il login ha avuto successo.<br />
E&#8217; da notare che in questo caso la directory di arrivo dell&#8217;utenza è sempre la <em>/</em> del <em>chroot</em> ma si può fare in modo che questa corrisponda ad una qualsiasi cartella o alla home dell&#8217;utente modificando il parametro <em>ChrootDirectory</em> nel file di configurazione di ssh. E&#8217; consentito l&#8217;utilizzo delle diciture speciali %h, corrispondente alla homedir dell&#8217;utente, e %u, corrispondente al nome dell&#8217;utente.</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">        ChrootDirectory %h</pre></div></div>

<p>E&#8217; chiaro che ogni directory scelta dovrà possedere il requisito essenziale di essere di proprietà di root e non scrivibile da alcun gruppo.</p>
<p><strong>Conclusioni</strong></p>
<p>Rispetto alla soluzione presentata nei precedenti articoli, che comportava l&#8217;applicazione di una patch ai sorgenti di ssh, quanto illustrato ha l&#8217;indubbio vantaggio di sfruttare un&#8217;implementazione nativa che non necessita di operazioni sul pacchetto. Certo i requisiti richiesti, in particolare relativamente alla proprietà della cartella madre del chroot, sono piuttosto rigidi ed obbligano a riflettere su come distribuire le utenze.<br />
La soluzione migliore, come sempre, è quella più funzionale allo scopo che ci si prefigge.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/06/ssh-in-chroot-la-soluzione-nativa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SSH in CHROOT: Una gabbia per la shell sicura (2 di 2)</title>
		<link>http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-2-di-2/</link>
		<comments>http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-2-di-2/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 00:05:27 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Chroot]]></category>
		<category><![CDATA[Sicurezza]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=250</guid>
		<description><![CDATA[Dopo aver creato ed installato i pacchetti ssh con la patch per effettuare il chroot è tempo di creare fisicamente la gabbia sul disco ed un&#8217;utenza di test. Creazione della gabbia L&#8217;ambiente chroot in cui si muoverà l&#8217;utenza dopo aver effettuato il login dovrà essere composto sulla base delle limitazioni che si decideranno di applicare. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/openssh.png" alt="openssh" title="openssh" width="100" height="98" class="alignnone size-full wp-image-248" /></p>
<p>Dopo aver creato ed installato i pacchetti ssh con la patch per effettuare il chroot è tempo di creare fisicamente la gabbia sul disco ed un&#8217;utenza di test.</p>
<p><strong>Creazione della gabbia</strong><br />
L&#8217;ambiente chroot in cui si muoverà l&#8217;utenza dopo aver effettuato il login dovrà essere composto sulla base delle limitazioni che si decideranno di applicare. Per il progetto descritto sinora è stato utilizzato uno script denominato <em>create_chroot_env.sh</em> (scaricabile nella sezione &#8220;allegati&#8221;) che accetta come parametro una directory nella quale è creato un ambiente base che comprende unicamente gli eseguibili necessari all&#8217;esecuzione della shell &#8220;bash&#8221;, del comando per il listing delle directory &#8220;ls&#8221; e di ssh stesso, in modo da consentire all&#8217;utente il collegamento sicuro ad altre macchine remote.</p>
<p>Una volta scaricato lo script è sufficiente eseguirlo passando come parametro la cartella nella quale verrà creata la gabbia chroot, /chroot:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>create_chroot_env.sh <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">chroot</span></pre></div></div>

<p>Lo script creerà i path base, copierà gli eseguibili e le librerie ad essi associate ed infine creerà i device fondamentali al funzionamento del sistema chroot. Nulla vieta di modificare<em>create_chroot_env.sh</em> per aggiungere un programma diverso da quelli menzionati all&#8217;ambiente.</p>
<p>Ovviamente insieme ad ogni eseguibile aggiunto andranno aggiunte anche le librerie necessarie al suo funzionamento. Tali librerie sono ricavabili ad esempio attraverso il comando ldd. Per il comando ftp ad esempio l&#8217;esito di ldd sarà il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ldd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ftp</span>
linux-gate.so.1 =<span style="color: #000000; font-weight: bold;">&gt;</span>  <span style="color: #7a0874; font-weight: bold;">&#40;</span>0xb7f74000<span style="color: #7a0874; font-weight: bold;">&#41;</span>
libreadline.so.5 =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>libreadline.so.5 <span style="color: #7a0874; font-weight: bold;">&#40;</span>0xb7f27000<span style="color: #7a0874; font-weight: bold;">&#41;</span>
libncurses.so.5 =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>libncurses.so.5 <span style="color: #7a0874; font-weight: bold;">&#40;</span>0xb7ef6000<span style="color: #7a0874; font-weight: bold;">&#41;</span>
libc.so.6 =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>libc.so.6 <span style="color: #7a0874; font-weight: bold;">&#40;</span>0xb7da9000<span style="color: #7a0874; font-weight: bold;">&#41;</span>
libdl.so.2 =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>libdl.so.2 <span style="color: #7a0874; font-weight: bold;">&#40;</span>0xb7da4000<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>ld-linux.so.2 <span style="color: #7a0874; font-weight: bold;">&#40;</span>0xb7f75000<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>aggiungendo l&#8217;eseguibile <em>/usr/bin/ftp</em> e le librerie ricavate da ldd nella cartella <em>lib/</em> dell&#8217;ambiente chroot, sarà possibile lanciare ftp dalla gabbia creata. Una nota di attenzione va posta sulle librerie ottenute con <em>ldd</em> che in realtà sono link simbolici. Nell&#8217;esempio appena riportato <em>libreadline.so.5</em> è in realtà un link simbolico a <em>libreadline.so.5.2</em>, di conseguenza anche quest&#8217;ultimo file andrà copiato nella directory <em>lib</em> della gabbia chroot.</p>
<p><strong>Creazione della prima utenza &#8220;carcerata&#8221;</strong></p>
<p>Per completare il progetto manca solo la creazione di un utente con password che sia carcerato all&#8217;interno dell&#8217;ambiente chroot:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">useradd <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #660033;">-m</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>chroottest <span style="color: #660033;">-g</span> <span style="color: #c20cb9; font-weight: bold;">users</span> chroottest
<span style="color: #c20cb9; font-weight: bold;">passwd</span> chroottest</pre></div></div>

<p>Il primo comando crea l&#8217;utente, lo assegna al gruppo users e crea la home directory, il secondo assegna la password per il login. La cartella &#8220;/home/chroottest&#8221; andrà spostata nella gabbia con i permessi limitati al solo utente:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>chroottest <span style="color: #000000; font-weight: bold;">/</span>chroot<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">700</span> <span style="color: #000000; font-weight: bold;">/</span>chroot<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>chroottest<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Il comando useradd ha creato la riga relativa all&#8217;utente nel file di sistema <em>/etc/passwd</em>, tale riga deve essere presente nel file <em>passwd</em> dell&#8217;ambiente chroot. Tale operazione è possibile attraverso questo comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^chroottest&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>chroot<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span></pre></div></div>

<p>A completamento della configurazione dell&#8217;utenza è necessaria la modifica della home directory all&#8217;interno del file passwd di sistema,  vero nodo focale del progetto:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">usermod <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>chroot<span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>chroottest  chroottest</pre></div></div>

<p>Questa definizione della home directory permetterà al demone ssh di identificare l&#8217;utente come un prigioniero della gabbia e muoverlo prima di aprire una shell all&#8217;interno del path che segue il carattere &#8220;.&#8221;.</p>
<p>Il processo descritto può essere automatizzato con uno script come <em>create_chroot_user.sh</em> (scaricabile nella sezione &#8220;allegati&#8221;) al quale verrà passato il parametro relativo al nome utente :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>create_chroot_user.sh chroottest
Enter new UNIX password:
Retype new UNIX password:
<span style="color: #c20cb9; font-weight: bold;">passwd</span>: password aggiornata correttamente</pre></div></div>

<p><strong>Primo login</strong></p>
<p>Per verificare che le operazioni eseguite abbiano portato al risultato sperato è sufficiente effettuare una connessione ssh alla macchina con l&#8217;utente chroottest:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> chroottest<span style="color: #000000; font-weight: bold;">@</span>192.168.0.3
chroottest<span style="color: #000000; font-weight: bold;">@</span>192.168.0.3<span style="color: #ff0000;">'s password:
Last login: Thu Jan 31 19:31:18 2008 from 192.168.0.1
chroottest@debian:~$pwd
/home/chroottest</span></pre></div></div>

<p>e verificare come non sia possibile retrocedere oltre la directory &#8220;/&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">chroottest<span style="color: #000000; font-weight: bold;">@</span>debian:~$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>
chroottest<span style="color: #000000; font-weight: bold;">@</span>debian:<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">ls</span>
bin  dev  etc  home  lib
chroottest<span style="color: #000000; font-weight: bold;">@</span>debian:<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #7a0874; font-weight: bold;">cd</span> ..
chroottest<span style="color: #000000; font-weight: bold;">@</span>debian:<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">ls</span>
bin  dev  etc  home  lib</pre></div></div>

<p>L&#8217;utente chroottest è prigioniero della gabbia creata e possiede un set di comandi limitato a quanto è stato stabilito in origine. Il progetto può dirsi quindi completo.</p>
<p><strong>Siti ufficiali</strong></p>
<p><a href="http://openssh.org">OpenSSH</a><br />
<a href="http://chrootssh.sourceforge.net">Patch CHROOT per OPENSSH</a></p>
<p><strong>Bibliografia</strong></p>
<p>Le pagine del Securing Debian Manual relative al <a href="http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html">chroot di ssh</a></p>
<p><strong>Allegati</strong></p>
<p>Script per la creazione della gabbia e dell’utente : <a href='http://www.miamammausalinux.org/wp-content/uploads/2008/02/ssh-in-chroot-scripts.tar'>ssh-in-chroot-scripts</a></p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>SSH in CHROOT: Una gabbia per la shell sicura (<a href="http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-1-di-2/">1 di 2</a>)<br />
SSH in CHROOT: Una gabbia per la shell sicura (<a href="http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-2-di-2/">2 di 2</a>)</p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso su <a href="http://www.tuxjournal.net">Tux Journal</a> nel Febbraio 2008.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-2-di-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SSH in CHROOT: Una gabbia per la shell sicura (1 di 2)</title>
		<link>http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-1-di-2/</link>
		<comments>http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-1-di-2/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 00:05:37 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Chroot]]></category>
		<category><![CDATA[Sicurezza]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=245</guid>
		<description><![CDATA[OpenSSH è lo strumento per la connessione a sistemi remoti più utilizzato negli ambienti Linux: è sicuro, veloce e facile da installare. Un utente che si collega ad un Server attraverso ssh effettua un vero e proprio login nel sistema ed ha pieno accesso alle funzionalità che questo offre. Su alcuni sistemi può però nascere [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/openssh.png" alt="openssh" title="openssh" width="100" height="98" class="alignnone size-full wp-image-248" /></p>
<p>OpenSSH è lo strumento per la connessione a sistemi remoti più utilizzato negli ambienti Linux: è sicuro, veloce e facile da installare. Un utente che si collega ad un Server attraverso ssh effettua un vero e proprio login nel sistema ed ha pieno accesso alle funzionalità che questo offre.</p>
<p>Su alcuni sistemi può però nascere l&#8217;esigenza di dover garantire l&#8217;accesso ssh ad utenze non privilegiate, che non abbiano cioè la possibilità di aggirarsi per il sistema. Certo una gestione oculata dei permessi di accesso ed esecuzione ai file critici può bastare per proteggersi, ma esiste una via più radicale per affrontare la questione, si tratta cioè della creazione di una gabbia che consenta all&#8217;utente l&#8217;utilizzo del sistema limitato ai comandi ed ai file definiti dall&#8217;amministratore : il chroot di ssh.</p>
<p><strong>Significato di chroot e sua applicazione alla shell sicura</strong></p>
<p>Il termine chroot (CHange ROOT) indica una forma di accesso diversa dallo standard, in un sottosistema generalmente contenente un numero di directory ed un set di comandi limitato.</p>
<p>Gli ambienti chroot vengono impiegati laddove si ha la necessità di far girare dei servizi in sicurezza in modo che se questi vengono in qualche modo violati, non consentono all&#8217;attaccante di aggirarsi per il sistema.</p>
<p>Il concetto di chroot applicato ad ssh si basa sulla stessa filosofia: restringere il set di file visionabili e comandi eseguibili i attraverso una gabbia, un filesystem ridotto all&#8217;essenziale.</p>
<p><strong>osshChroot : la patch per openssh</strong></p>
<p>Per utilizzare il chroot con ssh è necessario applicare una patch ai sorgenti originali del pacchetto openssh creata da  <em>Ricardo Cerqueira</em> e mantenuta da <em>James Dennis</em>.</p>
<p>Tale patch modifica il comportamento in cui il demone openssh legge le informazioni dell&#8217;account dal file di sistema <em>/etc/passwd</em>. Infatti il codice aggiunto prevede che se nella home directory dell&#8217;utente che vuole effettuare il login esiste un carattere &#8220;.&#8221; (punto), allora prima di proseguire con la direzione della console alla homedir viene invocato il comando chroot sulla directory precedente il punto.</p>
<p>Questo significa, ad esempio, che se è stato costruito un ambiente chroot nella directory /chroot ed esiste un utente foo la cui homedir è <em>/chroot/./home/foo</em>, questo effettuerà il login nell&#8217;ambiente chroot creato sotto <em>/chroot</em> che corrisponderà per l&#8217;utente a <em>/</em> e la directory in cui si troverà sarà <em>/home/foo</em>.</p>
<p>Grazie a questa funzionalità sarà semplice separare utenti privilegiati da utenti &#8220;carcerati&#8221; all&#8217;interno della gabbia <em>/chroot</em>.</p>
<p><strong>Patching, compilazione e creazione del pacchetto openssh</strong></p>
<p>La procedura descritta si riferisce alla compilazione del pacchetto openssh in Debian Etch 4.0.</p>
<p>Per predisporre il sistema a compilare sorgenti e generare pacchetti è necessario installare i due pacchetti (e le dipendenze ad essi correlate) build-essential e devscripts:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential devscripts</pre></div></div>

<p>Il sistema è pronto a compilare e produrre pacchetti, una volta reperiti i sorgenti di openssh attraverso il comando apt-get:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #7a0874; font-weight: bold;">source</span> openssh</pre></div></div>

<p>E&#8217; sufficiente scaricare la patch osshChroot tramite wget :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>chrootssh.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>download<span style="color: #000000; font-weight: bold;">/</span>osshChroot-4.2p1.diff</pre></div></div>

<p>Ed applicarla ai sorgenti:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> openssh-4.3p2<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">patch</span> <span style="color: #660033;">-p1</span> <span style="color: #000000; font-weight: bold;">&amp;</span>lt; ..<span style="color: #000000; font-weight: bold;">/</span>osshChroot-4.2p1.diff</pre></div></div>

<p>quindi attraverso la modifica del file <em>debian/changelog</em> o attraverso il comando debchange inseriamo le note per questo pacchetto, che riguardano essenzialmente la patch per il chroot e che hanno questa forma:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssh <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span>:4.3p2-9chroot<span style="color: #7a0874; font-weight: bold;">&#41;</span> unstable; <span style="color: #007800;">urgency</span>=high
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span> RaSca <span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #c20cb9; font-weight: bold;">chroot</span> <span style="color: #c20cb9; font-weight: bold;">patch</span>
&nbsp;
<span style="color: #660033;">--</span> root <span style="color: #000000; font-weight: bold;">&amp;</span>lt;root<span style="color: #000000; font-weight: bold;">@</span>debian.testlan.local<span style="color: #000000; font-weight: bold;">&amp;</span>gt;  Wed,  <span style="color: #000000;">6</span> Feb <span style="color: #000000;">2008</span> <span style="color: #000000;">16</span>:00:08 +0100</pre></div></div>

<p>prima di lanciare la compilazione dei sorgenti andranno soddisfatte tutte le dipendenze delle librerie del pacchetto openssh. Attraverso l&#8217;opzione <em>build-dep</em> del comando <em>apt-get</em> si può automatizzare questo processo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> build-dep openssh</pre></div></div>

<p>E&#8217; possibile quindi avviare la compilazione e generazione dei pacchetti attraverso il comando debuild:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">debuild</pre></div></div>

<p>I pacchetti verranno generati nella directory sottostante quella dei sorgenti:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..
<span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-1</span> <span style="color: #000000; font-weight: bold;">*</span>.deb
openssh-client_4.3p2-<span style="color: #000000;">9</span>_i386.deb
openssh-server_4.3p2-<span style="color: #000000;">9</span>_i386.deb
ssh_4.3p2-<span style="color: #000000;">9</span>_all.deb
ssh-askpass-gnome_4.3p2-<span style="color: #000000;">9</span>_i386.deb
ssh-krb5_4.3p2-<span style="color: #000000;">9</span>_all.deb</pre></div></div>

<p>e potranno essere installati nel sistema attraverso il comando dpkg :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> ssh_4.3p2-9chroot_all.deb openssh-client_4.3p2-9chroot_i386.deb openssh-server_4.3p2-9chroot_i386.deb</pre></div></div>

<p>Nel prossimo articolo verrà analizzata la creazione dell&#8217;ambiente chroot e della prima utenza che vi effettuerà il login.</p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>SSH in CHROOT: Una gabbia per la shell sicura (<a href="http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-1-di-2/">1 di 2</a>)<br />
SSH in CHROOT: Una gabbia per la shell sicura (<a href="http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-2-di-2/">2 di 2</a>)</p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso su <a href="http://www.tuxjournal.net">Tux Journal</a> nel Febbraio 2008.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2008/02/ssh-in-chroot-una-gabbia-per-la-shell-sicura-1-di-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
