<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>torify &amp;mdash; Cyberdyne Systems</title>
    <link>https://noblogo.org/aytin/tag:torify</link>
    <description>&#34;Fare o non fare. Non c&#39;è provare!&#34;</description>
    <pubDate>Thu, 30 Apr 2026 13:04:40 +0000</pubDate>
    <item>
      <title>TOR: Configurare hidden service con autenticazione</title>
      <link>https://noblogo.org/aytin/tor-configurare-hidden-service-con-autenticazione</link>
      <description>&lt;![CDATA[(pubblicato il 22 luglio 2021)&#xA;The Onion Services&#xA;smalliFonte: a href=&#34;https://community.torproject.org/onion-services/overview/&#34;TorProject: The Onion Services/a/i/small&#xA;&#xA;I Tor Onion Service (hidden service) sono di tipo V3. I servizi di tipo V2 sono deprecati da luglio 2020 e da ottobre 2021 verranno completamente rimossi dalla rete onion (rif. https://blog.torproject.org/v2-deprecation-timeline)&#xA;!--more--&#xA;&#xA;1. Configurazione lato server&#xA;&#xA;Tor ha il suo file di configurazione in /etc/tor/torrc mentre la sua workdir, normalmente è su /var/lib/tor&#xA;&#xA;Ogni hidden service viene riferito nel file di configurazione di tor, /etc/tor/torrc, da almeno una coppia di direttive:&#xA;&#xA;HiddenServiceDir: è la cartella dove verranno creati gli oggetti necessari all’hidden service (per default su /var/lib/tor/hiddenservice)&#xA;HiddenServicePort: la porta su cui il servizio sarà in ascolto, di fatto è la porta di inoltro verso il servizio vero e proprio.&#xA;&#xA;1.1. HiddenServiceDir&#xA;&#xA;Gli oggetti presenti in questa cartella sono:&#xA;&#xA;hostname: il nome del servizio composto da 56 caratteri casuali + l’estensione “.onion”&#xA;hs\ed25519\public\key, hs\ed25519\privatekey: la chiave pubblica e privata lato server usati dal nodo tor&#xA;authorized\clients: se prevediamo di avere anche un’autenticazione per i client, avremo anche questa cartella. Come per il file authorized\keys per ssh, è una cartella contenente le chiavi pubbliche dei client autorizzati all’utilizzo del servizio.&#xA;&#xA;1.2. HiddenServicePort&#xA;&#xA;È una tripla&#xA;&#xA;portator hostname:listenport&#xA;&#xA;hostname di norma non è altri che localhost.&#xA;&#xA;Una volta esplicitato l’HiddenServiceDir (l’HiddenServicePort è meno rilevante. A Tor non interessa che ci sia un servizio in ascolto effettivo), il riavvio del servizio Tor, creerà gli oggetti menzionati prima.&#xA;&#xA;Se non ci fosse autenticazione, il client che accede alla rete Tor potrebbe già contattare il servizio esposto senza alcuna altra configurazione.&#xA;&#xA;Se invece i client devono essere riconosciuti, sono richiesti altri passi di configurazione.&#xA;&#xA;2. Configurazione lato client&#xA;&#xA;Configurazione di /etc/tor/torrc&#xA;Creazione delle chiavi di autenticazione&#xA;&#xA;2.1. Configurazione di /etc/tor/torrc&#xA;&#xA;Inserire la direttiva ClientOnionAuthDir col path contenente i file di autenticazione per l’accesso agli hidden service&#xA;&#xA;2.2. Creazione delle chiavi di autenticazione&#xA;&#xA;Per ogni hidden service, si deve creare una coppia di chiavi x25519 pubblica e privata necessarie per l’autenticazione di ogni utente.&#xA;&#xA;Le chiavi, generate con openssl e basez, sono di tipo x25519 in base32.&#xA;&#xA;2.2.1. Chiave pubblica&#xA;&#xA;La chiave pubblica andrà posizionata sul server nella cartella \[HiddenServiceDir\]/authorized\clients.&#xA;&#xA;La sintassi del file dovrà rispettare questa forma:&#xA;descriptor:x25519:chiave pubblica x25519 in base32&#xA;&#xA;e il nome file dovrà essere&#xA;nome file.auth&#xA;&#xA;2.2.2. Chiave privata&#xA;&#xA;La chiave privata andrà posizionata nel client nella cartella indicata da \[ClientOnionAuthDir\].&#xA;&#xA;La sintassi del file dovrà rispettare questa forma:&#xA;indirizzo servizio onion senza estensione:descriptor:x25519:chiave privata x25519 in base32&#xA;&#xA;e il nome file dovrà essere:&#xA;nome file.authprivate&#xA;&#xA;Per rendere effettive le modifiche sul file torrc, sia sui client che sul server, si deve riavviare il servizio Tor.&#xA;&#xA;3. Configurazione reale di due hidden service: web e ssh&#xA;&#xA;Supponiamo per esempio di voler creare due hidden service: web e ssh&#xA;&#xA;3.1. Creazione delle chiavi&#xA;&#xA;1. Generazione della chiave openssl x25519&#xA;web&#xA;openssl genpkey -algorithm x25519 -out /tmp/web.prv.pem&#xA;ssh&#xA;openssl genpkey -algorithm x25519 -out /tmp/ssh.prv.pem&#xA;2. Generazione della chiave privata base 32&#xA;web&#xA;cat /tmp/web.prv.pem | grep -v &#34; PRIVATE KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39;   /tmp/web.prv.key&#xA;ssh&#xA;cat /tmp/ssh.prv.pem | grep -v &#34; PRIVATE KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39;   /tmp/ssh.prv.key&#xA;3. Generazione della chiave pubblica base 32&#xA;web&#xA;openssl pkey -in /tmp/web.prv.pem -pubout | grep -v &#34; PUBLIC KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39;   /tmp/web.pub.key&#xA;ssh&#xA;openssl pkey -in /tmp/ssh.prv.pem -pubout | grep -v &#34; PUBLIC KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39;   /tmp/ssh.pub.key&#xA;&#xA;3.2. Configurazione lato server&#xA;&#xA;Convenzioni:&#xA;&#xA;Le seguenti convenzioni hanno il solo scopo di dare uniformità e scalabilità alla configurazione del servizio.&#xA;&#xA;Creazione di una cartella diversa per ogni servizio esposto così da avere autenticazioni distinte per servizio e per utente.&#xA;Nella cartella del servizio, all’interno di authorized\clients, dove andranno posizionate le chiavi pubbliche, il nome delle chiavi sarà nel formato: nome utentenome servizio.auth&#xA;&#xA;3.2.1. Creazione cartelle per gli hidden service&#xA;&#xA;HTTP&#xA;mkdir -p /var/lib/tor/hiddenservice/web/authorizedclients&#xA;chown -R toranon:toranon /var/lib/tor/hiddenservice/web&#xA; &#xA;SSH&#xA;mkdir -p /var/lib/tor/hiddenservice/ssh/authorizedclients&#xA;chown -R toranon:toranon /var/lib/tor/hiddenservice/ssh&#xA;3.2.2. Configurazione /etc/tor/torrc&#xA;vi /etc/tor/torrc&#xA;&#xA;...&#xA;HiddenServiceDir /var/lib/tor/hiddenservice/web&#xA;HiddenServicePort 1080 127.0.0.1:80&#xA; &#xA;HiddenServiceDir /var/lib/tor/hiddenservice/ssh&#xA;HiddenServicePort 2022 127.0.0.1:22&#xA;...&#xA;&#xA;smallbUna considerazione sull’esposizione dei servizi./b&#xA;In questo esempio, i servizi girano sull’interfaccia di loopback ed ho imposto che le porte di esposizione del servizio siano quelle canoniche mentre sui corrispettivi .onion, da utilizzare attraverso i client, le porte sono non standard./small&#xA;&#xA;Inizializzazione del servizio Tor per creare gli oggetti necessari all&#39;esposizione, in particolare dell&#39;hostname .onion&#xA;systemctl restart tor&#xA;&#xA;3.2.3. Creazione file .auth e riavvio tor&#xA;&#xA;web&#xA;echo &#34;descriptor:x25519:&#34;   /var/lib/tor/hiddenservice/web/authorizedclients/utente1web.auth&#xA;cat /tmp/web.pub.key     /var/lib/tor/hiddenservice/web/authorizedclients/utente1web.auth&#xA; &#xA;ssh&#xA;echo &#34;descriptor:x25519:&#34;   /var/lib/tor/hiddenservice/ssh/authorizedclients/utente1ssh.auth&#xA;cat /tmp/ssh.pub.key     /var/lib/tor/hiddenservice/ssh/authorizedclients/utente1ssh.auth&#xA;&#x9;&#xA;reload delle configurazioni e delle chiavi&#xA;systemctl restart tor &#xA;&#xA;3.3. Configurazione lato client&#xA;&#xA;3.3.1. Convenzioni&#xA;&#xA;Creazione di una cartella in cui raccogliere le chiavi private dell’utente&#xA;Il nome della chiave sarà:&#xA;nome utentenome servizio.authprivate&#xA;&#xA;3.3.2. Creazione cartella per l’autenticazione&#xA;&#xA;SSH&#xA;mkdir /var/lib/tor/hiddenservice/clientonionauth&#xA;chown toranon:toranon /var/lib/tor/hiddenservice/clientonionauth&#xA;&#xA;3.3.3. Creazione file .authprivate&#xA;&#xA;web&#xA;cat /var/lib/tor/hiddenservice/web/hostname | cut -d &#34;.&#34; -f 1   /var/lib/tor/hiddenservice/clientonionauth/utente1web.authprivate&#xA;echo &#34;:descriptor:x25519:&#34;     /var/lib/tor/hiddenservice/clientonionauth/utente1web.authprivate&#xA;cat /tmp/web.priv.key     /var/lib/tor/hiddenservice/clientonionauth/utente1web.authprivate&#xA; &#xA;ssh&#xA;cat /var/lib/tor/hiddenservice/ssh/hostname | cut -d &#34;.&#34; -f 1   /var/lib/tor/hiddenservice/clientonionauth/utente1ssh.authprivate&#xA;echo &#34;:descriptor:x25519:&#34;     /var/lib/tor/hiddenservice/clientonionauth/utente1ssh.authprivate&#xA;cat /tmp/ssh.priv.key     /var/lib/tor/hiddenservice/clientonionauth/utente1ssh.authprivate&#xA;3.3.4. Configurazione /etc/tor/torrc e riavvio tor&#xA;Nel file /etc/tor/torrc si deve modificare la direttiva ClientOnionAuthDir:&#xA;...&#xA;ClientOnionAuthDir /var/lib/tor/hiddenservice/clientonionauth&#xA;...&#xA;Dopodiché si riavvia il servizio tor per rendere consistente la modifica:&#xA;Reload del servizio e acquisizione delle chiavi&#xA;systemctl restart tor&#xA;&#xA;4. Conclusione&#xA;&#xA;I servizi ora sono pronti per essere fruiti.&#xA;&#xA;Nel caso del servizio web, non è necessaria la configurazione lato client di tor se si usa Tor Browser.&#xA;&#xA;Per accedere in ssh attraverso tor si può provare in paio di modi.&#xA;&#xA;  1) Usando l’utility torify, normalmente installata insieme a tor:&#xA;torify ssh -p2022 user1@ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion&#xA;  2) Direttamente in ssh usando ProxyCommand per veicolare la connessione ssh attraverso tor:&#xA;ssh -p2022 user1@ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion  -o ProxyCommand=&#34;ncat --proxy 127.0.0.1:9050 --proxy-type socks5 ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion 2022&#34;&#xA;&#xA;tips:&#xA;Usando una configurazione opportuna in $HOME/.ssh/config, l’utilizzo del servizio si semplifica notevolmente.&#xA;&#xA;In .ssh/config:&#xA;Host sshservice.onion&#xA;    Hostname ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion&#xA;    User user1&#xA;    Port 2022&#xA;    VerifyHostKeyDNS no&#xA;    ProxyCommand ncat --proxy 127.0.0.1:9050 --proxy-type socks5 %h %p&#xA;A questo punto per accedere in ssh basta: ssh sshservice.onion&#xA;&#xA;buNote a margine:/u/b&#xA;&#xA;Il sistema di riferimento è Fedora 34&#xA;A differenza di SO debian-based, sui repository di Fedora 34 basez non è disponibile e va compilato.&#xA;La configurazione e l’hardenizzazione dei servizi da “torificare” esula dallo scopo di questo articolo, così come il dettaglio della configurazione di Tor&#xA;&#xA;Riferimenti:&#xA;&#xA;https://tb-manual.torproject.org/onion-services/&#xA;https://community.torproject.org/onion-services/setup/&#xA;https://community.torproject.org/onion-services/advanced/client-auth/&#xA;&#xA;#clientauthorization #hiddenservice #ssh #tor #torify]]&gt;</description>
      <content:encoded><![CDATA[<p><strong><em>(pubblicato il 22 luglio 2021)</em></strong>
<img src="https://pixelfed.uno/storage/m/_v2/489827599091373610/42a8ecf32-5a8865/oUt3D9lG2Nvt/vggxjNSY3kElKxFUUblwYsE0D2bcGPVmv8D2irdg.png" alt="The Onion Services">
<small><i>Fonte: <a href="https://community.torproject.org/onion-services/overview/" rel="nofollow">TorProject: The Onion Services</a></i></small></p>

<p>I Tor Onion Service (hidden service) sono di tipo <strong>V3</strong>. I servizi di tipo <strong>V2</strong> sono deprecati da luglio 2020 e da ottobre 2021 verranno completamente rimossi dalla rete onion (rif. <a href="https://blog.torproject.org/v2-deprecation-timeline" rel="nofollow">https://blog.torproject.org/v2-deprecation-timeline</a>)
</p>

<h2 id="1-configurazione-lato-server">1. Configurazione lato server</h2>

<p>Tor ha il suo file di configurazione in <strong>/etc/tor/torrc</strong> mentre la sua workdir, normalmente è su <strong>/var/lib/tor</strong></p>

<p>Ogni hidden service viene riferito nel file di configurazione di tor, <strong>/etc/tor/torrc</strong>, da almeno una coppia di direttive:</p>
<ul><li><strong>HiddenServiceDir</strong>: è la cartella dove verranno creati gli oggetti necessari all’hidden service (per default su <strong>/var/lib/tor/hidden_service</strong>)</li>
<li><strong>HiddenServicePort</strong>: la porta su cui il servizio sarà in ascolto, di fatto è la porta di inoltro verso il servizio vero e proprio.</li></ul>

<h3 id="1-1-hiddenservicedir">1.1. HiddenServiceDir</h3>

<p>Gli oggetti presenti in questa cartella sono:</p>
<ul><li><strong>hostname</strong>: il nome del servizio composto da 56 caratteri casuali + l’estensione “.onion”</li>
<li><strong>hs_ed25519_public_key</strong>, <strong>hs_ed25519_private_key</strong>: la chiave pubblica e privata lato server usati dal nodo tor</li>
<li><strong>authorized_clients</strong>: se prevediamo di avere anche un’autenticazione per i client, avremo anche questa cartella. Come per il file <strong>authorized_keys</strong> per <strong>ssh</strong>, è una cartella contenente le chiavi pubbliche dei client autorizzati all’utilizzo del servizio.</li></ul>

<h3 id="1-2-hiddenserviceport">1.2. HiddenServicePort</h3>

<p>È una tripla</p>

<p><code>&lt;porta_tor&gt; &lt;hostname&gt;:&lt;listen_port&gt;</code></p>

<p><strong>hostname</strong> di norma non è altri che <strong>localhost</strong>.</p>

<p>Una volta esplicitato l’<strong>HiddenServiceDir</strong> (l’<strong>HiddenServicePort</strong> è meno rilevante. A Tor non interessa che ci sia un servizio in ascolto effettivo), il riavvio del servizio Tor, creerà gli oggetti menzionati prima.</p>

<p>Se non ci fosse autenticazione, il client che accede alla rete Tor potrebbe già contattare il servizio esposto senza alcuna altra configurazione.</p>

<p>Se invece i client devono essere riconosciuti, sono richiesti altri passi di configurazione.</p>

<h2 id="2-configurazione-lato-client">2. Configurazione lato client</h2>
<ul><li>Configurazione di <strong>/etc/tor/torrc</strong></li>
<li>Creazione delle chiavi di autenticazione</li></ul>

<h3 id="2-1-configurazione-di-etc-tor-torrc">2.1. Configurazione di /etc/tor/torrc</h3>

<p>Inserire la direttiva <strong>ClientOnionAuthDir</strong> col path contenente i file di autenticazione per l’accesso agli hidden service</p>

<h3 id="2-2-creazione-delle-chiavi-di-autenticazione">2.2. Creazione delle chiavi di autenticazione</h3>

<p>Per ogni hidden service, si deve creare una coppia di chiavi <strong>x25519</strong> pubblica e privata necessarie per l’autenticazione di ogni utente.</p>

<p>Le chiavi, generate con <strong>openssl</strong> e <strong>basez</strong>, sono di tipo <strong>x25519 in base32</strong>.</p>

<h4 id="2-2-1-chiave-pubblica">2.2.1. Chiave pubblica</h4>

<p>La chiave pubblica andrà posizionata sul server nella cartella <strong>[HiddenServiceDir]/authorized_clients</strong>.</p>

<p>La sintassi del file dovrà rispettare questa forma:
<code>descriptor:x25519:&lt;chiave pubblica x25519 in base32&gt;</code></p>

<p>e il nome file dovrà essere
<code>&lt;nome file&gt;.auth</code></p>

<h4 id="2-2-2-chiave-privata">2.2.2. Chiave privata</h4>

<p>La chiave privata andrà posizionata nel client nella cartella indicata da <strong>[ClientOnionAuthDir]</strong>.</p>

<p>La sintassi del file dovrà rispettare questa forma:
<code>&lt;indirizzo servizio onion senza estensione&gt;:descriptor:x25519:&lt;chiave privata x25519 in base32&gt;</code></p>

<p>e il nome file dovrà essere:
<code>&lt;nome file&gt;.auth_private</code></p>

<p>Per rendere effettive le modifiche sul file torrc, sia sui client che sul server, si deve riavviare il servizio Tor.</p>

<h2 id="3-configurazione-reale-di-due-hidden-service-web-e-ssh">3. Configurazione reale di due hidden service: web e ssh</h2>

<p>Supponiamo per esempio di voler creare due hidden service: web e ssh</p>

<h3 id="3-1-creazione-delle-chiavi">3.1. Creazione delle chiavi</h3>

<p><strong>1. Generazione della chiave openssl x25519</strong></p>

<pre><code class="language-bash"># web
openssl genpkey -algorithm x25519 -out /tmp/web.prv.pem
# ssh
openssl genpkey -algorithm x25519 -out /tmp/ssh.prv.pem
</code></pre>

<p><strong>2. Generazione della chiave privata base 32</strong></p>

<pre><code class="language-bash"># web
cat /tmp/web.prv.pem | grep -v &#34; PRIVATE KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39; &gt; /tmp/web.prv.key
# ssh
cat /tmp/ssh.prv.pem | grep -v &#34; PRIVATE KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39; &gt; /tmp/ssh.prv.key
</code></pre>

<p><strong>3. Generazione della chiave pubblica base 32</strong></p>

<pre><code class="language-bash"># web
openssl pkey -in /tmp/web.prv.pem -pubout | grep -v &#34; PUBLIC KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39; &gt; /tmp/web.pub.key
# ssh
openssl pkey -in /tmp/ssh.prv.pem -pubout | grep -v &#34; PUBLIC KEY&#34; | base64pem -d | tail --bytes=32 | base32 | sed &#39;s/=//g&#39; &gt; /tmp/ssh.pub.key
</code></pre>

<h3 id="3-2-configurazione-lato-server">3.2. Configurazione lato server</h3>

<p><strong>Convenzioni:</strong></p>

<p>Le seguenti convenzioni hanno il solo scopo di dare uniformità e scalabilità alla configurazione del servizio.</p>
<ol><li>Creazione di una cartella diversa per ogni servizio esposto così da avere autenticazioni distinte per servizio e per utente.</li>
<li>Nella cartella del servizio, all’interno di <strong>authorized_clients</strong>, dove andranno posizionate le chiavi pubbliche, il nome delle chiavi sarà nel formato: <code>&lt;nome utente&gt;_&lt;nome servizio&gt;.auth</code></li></ol>

<h4 id="3-2-1-creazione-cartelle-per-gli-hidden-service">3.2.1. Creazione cartelle per gli hidden service</h4>

<pre><code class="language-bash"># HTTP
mkdir -p /var/lib/tor/hidden_service/web/authorized_clients
chown -R toranon:toranon /var/lib/tor/hidden_service/web
 
# SSH
mkdir -p /var/lib/tor/hidden_service/ssh/authorized_clients
chown -R toranon:toranon /var/lib/tor/hidden_service/ssh
</code></pre>

<h4 id="3-2-2-configurazione-etc-tor-torrc">3.2.2. Configurazione /etc/tor/torrc</h4>

<p><code>vi /etc/tor/torrc</code></p>

<pre><code class="language-bash">...
HiddenServiceDir /var/lib/tor/hidden_service/web
HiddenServicePort 1080 127.0.0.1:80
 
HiddenServiceDir /var/lib/tor/hidden_service/ssh
HiddenServicePort 2022 127.0.0.1:22
...
</code></pre>

<p><small><b>Una considerazione sull’esposizione dei servizi.</b>
In questo esempio, i servizi girano sull’interfaccia di loopback ed ho imposto che le porte di esposizione del servizio siano quelle canoniche mentre sui corrispettivi .onion, da utilizzare attraverso i client, le porte sono non standard.</small></p>

<pre><code class="language-bash"># Inizializzazione del servizio Tor per creare gli oggetti necessari all&#39;esposizione, in particolare dell&#39;hostname .onion
systemctl restart tor
</code></pre>

<h4 id="3-2-3-creazione-file-auth-e-riavvio-tor">3.2.3. Creazione file .auth e riavvio tor</h4>

<pre><code class="language-bash"># web
echo &#34;descriptor:x25519:&#34; &gt; /var/lib/tor/hidden_service/web/authorized_clients/utente1_web.auth
cat /tmp/web.pub.key &gt;&gt; /var/lib/tor/hidden_service/web/authorized_clients/utente1_web.auth
 
# ssh
echo &#34;descriptor:x25519:&#34; &gt; /var/lib/tor/hidden_service/ssh/authorized_clients/utente1_ssh.auth
cat /tmp/ssh.pub.key &gt;&gt; /var/lib/tor/hidden_service/ssh/authorized_clients/utente1_ssh.auth
	
# reload delle configurazioni e delle chiavi
systemctl restart tor 
</code></pre>

<h3 id="3-3-configurazione-lato-client">3.3. Configurazione lato client</h3>

<h4 id="3-3-1-convenzioni">3.3.1. Convenzioni</h4>
<ol><li>Creazione di una cartella in cui raccogliere le chiavi private dell’utente</li>
<li>Il nome della chiave sarà:
<code>&lt;nome utente&gt;_&lt;nome servizio&gt;.auth_private</code></li></ol>

<h4 id="3-3-2-creazione-cartella-per-l-autenticazione">3.3.2. Creazione cartella per l’autenticazione</h4>

<pre><code class="language-bash"># SSH
mkdir /var/lib/tor/hidden_service/client_onion_auth
chown toranon:toranon /var/lib/tor/hidden_service/client_onion_auth
</code></pre>

<h4 id="3-3-3-creazione-file-auth-private">3.3.3. Creazione file .auth_private</h4>

<pre><code class="language-bash"># web
cat /var/lib/tor/hidden_service/web/hostname | cut -d &#34;.&#34; -f 1 &gt; /var/lib/tor/hidden_service/client_onion_auth/utente1_web.auth_private
echo &#34;:descriptor:x25519:&#34; &gt;&gt; /var/lib/tor/hidden_service/client_onion_auth/utente1_web.auth_private
cat /tmp/web.priv.key &gt;&gt; /var/lib/tor/hidden_service/client_onion_auth/utente1_web.auth_private
 
# ssh
cat /var/lib/tor/hidden_service/ssh/hostname | cut -d &#34;.&#34; -f 1 &gt; /var/lib/tor/hidden_service/client_onion_auth/utente1_ssh.auth_private
echo &#34;:descriptor:x25519:&#34; &gt;&gt; /var/lib/tor/hidden_service/client_onion_auth/utente1_ssh.auth_private
cat /tmp/ssh.priv.key &gt;&gt; /var/lib/tor/hidden_service/client_onion_auth/utente1_ssh.auth_private
</code></pre>

<h4 id="3-3-4-configurazione-etc-tor-torrc-e-riavvio-tor">3.3.4. Configurazione /etc/tor/torrc e riavvio tor</h4>

<p>Nel file <strong>/etc/tor/torrc</strong> si deve modificare la direttiva <strong>ClientOnionAuthDir</strong>:</p>

<pre><code>...
ClientOnionAuthDir /var/lib/tor/hidden_service/client_onion_auth
...
</code></pre>

<p>Dopodiché si riavvia il servizio tor per rendere consistente la modifica:</p>

<pre><code class="language-bash"># Reload del servizio e acquisizione delle chiavi
systemctl restart tor
</code></pre>

<h2 id="4-conclusione">4. Conclusione</h2>

<p>I servizi ora sono pronti per essere fruiti.</p>

<p>Nel caso del servizio web, non è necessaria la configurazione lato client di tor se si usa <strong>Tor Browser</strong>.</p>

<p>Per accedere in ssh attraverso tor si può provare in paio di modi.</p>

<p>  1) Usando l’utility <code>torify</code>, normalmente installata insieme a tor:</p>

<pre><code class="language-bash">torify ssh -p2022 user1@ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion
</code></pre>

<p>  2) Direttamente in ssh usando <code>ProxyCommand</code> per veicolare la connessione ssh attraverso tor:</p>

<pre><code class="language-bash">ssh -p2022 user1@ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion  -o ProxyCommand=&#34;ncat --proxy 127.0.0.1:9050 --proxy-type socks5 ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion 2022&#34;
</code></pre>

<p><strong>tips:</strong>
Usando una configurazione opportuna in <strong>$HOME/.ssh/config</strong>, l’utilizzo del servizio si semplifica notevolmente.</p>

<p>In .ssh/config:</p>

<pre><code>Host ssh_service.onion
    Hostname ahl5pohtheefai4apho4aiy6ohwaengo6ooxoh3ijie9ohgiish4phai.onion
    User user1
    Port 2022
    VerifyHostKeyDNS no
    ProxyCommand ncat --proxy 127.0.0.1:9050 --proxy-type socks5 %h %p
</code></pre>

<p>A questo punto per accedere in ssh basta: <code>ssh ssh_service.onion</code></p>

<p><b><u>Note a margine:</u></b></p>
<ol><li>Il sistema di riferimento è Fedora 34</li>
<li>A differenza di SO debian-based, sui repository di Fedora 34 <code>basez</code> non è disponibile e va compilato.</li>
<li>La configurazione e l’hardenizzazione dei servizi da “torificare” esula dallo scopo di questo articolo, così come il dettaglio della configurazione di Tor</li></ol>

<h2 id="riferimenti">Riferimenti:</h2>
<ul><li><a href="https://tb-manual.torproject.org/onion-services/" rel="nofollow">https://tb-manual.torproject.org/onion-services/</a></li>
<li><a href="https://community.torproject.org/onion-services/setup/" rel="nofollow">https://community.torproject.org/onion-services/setup/</a></li>
<li><a href="https://community.torproject.org/onion-services/advanced/client-auth/" rel="nofollow">https://community.torproject.org/onion-services/advanced/client-auth/</a></li></ul>

<p><a href="/aytin/tag:clientauthorization" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">clientauthorization</span></a> <a href="/aytin/tag:hiddenservice" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">hiddenservice</span></a> <a href="/aytin/tag:ssh" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">ssh</span></a> <a href="/aytin/tag:tor" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">tor</span></a> <a href="/aytin/tag:torify" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">torify</span></a></p>
]]></content:encoded>
      <guid>https://noblogo.org/aytin/tor-configurare-hidden-service-con-autenticazione</guid>
      <pubDate>Wed, 01 Mar 2023 09:46:35 +0000</pubDate>
    </item>
  </channel>
</rss>