FTP with Tor? [ SSH configuration with apache ]

Anzitutto per studiare il comportamento ftp necessita riferirsi a qualche software che lo implementi e magari sia configurabile a secondo del particolare protocollo desiderato.

A tal fine uno dei programmi più utilizzati è il seguente:

§ 1
Cosa è FTP?

https://security.appspot.com/vsftpd/vsftpd_conf.html

è detto nel link ..

++
cit on 1
++

VSFTPD.CONF

Section: File Formats (5)
Index Return to Main Contents


NAME

vsftpd.conf – config file for vsftpd

DESCRIPTION

vsftpd.conf may be used to control various aspects of vsftpd’s behaviour. By default, vsftpd looks for this file at the location /etc/vsftpd.conf. However, you may override this by specifying a command line argument to vsftpd. The command line argument is the pathname of the configuration file for vsftpd. This behaviour is useful because you may wish to use an advanced inetd such asxinetd to launch vsftpd with different configuration files on a per virtual host basis.

traduzione:

vsftpd.conf può essere usato per controllare vari aspetti del comportamento di vsftpd. Per impostazione predefinita, vsftpd cerca questo file nella posizione /etc/vsftpd.conf. Tuttavia, è possibile sovrascriverlo specificando un argomento della riga di comando su vsftpd. L’argomento della riga di comando è il nome del percorso del file di configurazione per vsftpd. Questo comportamento è utile perché potresti voler utilizzare un inetd avanzato come asxinetd per avviare vsftpd con diversi file di configurazione su base host virtuale.

++
cit off 1
++

ndr:

Quindi entriamo in un argomento che è il file transfer protocol (ftp)

https://it.wikipedia.org/wiki/File_Transfer_Protocol

dal link di wiki, cito:

++
cit on2
++

File Transfer Protocol (FTP) (protocollo di trasferimento file), in informatica e nelle telecomunicazioni, è un protocollo per la trasmissione di dati tra host basato su TCPe con architettura di tipo client-server.

Il protocollo usa connessioni TCP distinte per trasferire i dati e per controllare i trasferimenti e richiede autenticazione del client tramite nome utente e password, sebbene il server possa essere configurato per connessioni anonime con credenziali fittizie. Dato che FTP trasmette in chiaro sia tali credenziali sia ogni altra comunicazione, e visto che non dispone di meccanismi di autenticazione del server presso il client, il protocollo è spesso reso sicuro utilizzando un sottostrato SSL/TLSe tale variante è chiamata FTPS. L’acronimo SFTP designa invece un altro protocollo che, pur essendo molto simile a quest’ultimo dal punto di vista funzionale, è alquanto diverso da quello tecnologico: SSH File Transfer Protocol.

Funzionamento generale[modifica | modifica wikitesto]

FTP, a differenza di altri protocolli come per esempio HTTP, utilizza due connessioni separate per gestire comandi e dati. Un server FTP generalmente rimane in ascolto sulla porta 21 TCP a cui si connette il client. La connessione da parte del client determina l’inizializzazione del canale comandi attraverso il quale client e server si scambiano comandi e risposte. Lo scambio effettivo di dati (come per esempio un file) richiede l’apertura del canale dati, che può essere di due tipi.

In un canale dati di tipo attivo il client apre una porta solitamente casuale, tramite il canale comandi rende noto il numero di tale porta al server e attende che si connetta. Una volta che il server ha attivato la connessione dati al client FTP, quest’ultimo effettua il binding della porta sorgente alla porta 20 del server FTP. A tale scopo possono venire impiegati i comandi PORT o EPRT, a seconda del protocollo di rete utilizzato (in genere IPv4 o IPv6).

In un canale dati di tipo passivo il server apre una porta solitamente casuale (superiore alla 1023), tramite il canale comandi rende noto il numero di tale porta al client e attende che si connetta. A tale scopo possono venire impiegati i comandi PASV o EPSV, a seconda del protocollo di rete utilizzato (in genere IPv4 o IPv6).

Sia il canale comandi, sia il canale dati sono delle connessioni TCP; FTP crea un nuovo canale dati per ogni file trasferito all’interno della sessione utente, mentre il canale comandi rimane aperto per l’intera durata della sessione utente, in altre parole il canale comandi è persistente mentre il canale dati è non persistente.

Un server FTP offre svariate funzioni che permettono al client di interagire con il suo filesystem e i file che lo popolano, tra cui:

  • Download/upload di file.
  • Resume di trasferimenti interrotti.
  • Rimozione e rinomina di file.
  • Creazione di directory.
  • Navigazione tra directory.

FTP fornisce inoltre un sistema di autenticazione in chiaro (non criptato) degli accessi. Il client che si connette potrebbe dover fornire delle credenziali a seconda delle quali gli saranno assegnati determinati privilegi per poter operare sul filesystem. L’autenticazione cosiddetta “anonima” prevede che il client non specifichi nessunapassword di accesso e che lo stesso abbia privilegi che sono generalmente di “sola lettura”.
++

cit off2
++

ndr:

  • Dunque in ftp (semplice) la trasmissione è in chiaro.
  • la porta di ascolto (controlli) è la 21
  • le linee di trasmissione sono 2:
    • una linea per i controlli del flusso dei dati (ad esempio la 21)
    • una linea per i dati (da stabilirsi)
  • la comunicazione può essere attiva (è il server che prende la iniziativa)
  • la comunicazione può essere passiva (è il client che prende la iniziativa)
  • come si vede nelle note finali di wiki anche vsftp può essere configurato per lavorare in ftp semplice (ma non solo secondo questa modalità)
  • nel nostro caso non abbiamo solo un problema di trasmissione, ma anche di una particolare criptazione che deve essere compatibile con la rete tor/onion.

In linea di massima vi sono molti manuali per la installazione di vsftpd nel sistema operativo ubuntu ed una panoramica è ai link seguenti:

https://www.0x90.it/come-installare-un-server-ftp-vsftpd-su-ubuntu-14-04/

https://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14-04-vsftpd/

https://www.krizna.com/ubuntu/setup-ftp-server-ubuntu-16-04/

Manca però altro software .. ad esempio openssh-server .. se si vuole migliorare la sicurezza ..

§ 2
Cosa è “Secure FTP = SSH”?

Dagli ultimi link sopra riportati .. cito la istruzione di installazione del software ssh

$ sudo apt-get install openssh-server

https://it.wikipedia.org/wiki/SSH_File_Transfer_Protocol

https://it.wikipedia.org/wiki/OpenSSH

++
cit on 3
++

Il metodo a chiave pubblica si basa sulla crittografia asimmetrica. Per utilizzarlo l’utente genera una coppia di chiavi. La chiave pubblica è copiata sul server, tipicamente in un apposito file nella home directory dell’utente; la chiave privata deve essere conservata dall’utente, ed è bene che sia protetta con una parola chiave (passphrase).

Per poter creare la coppia di chiavi basta lanciare il comando: ssh-keygen -t [tipo di chiave]

dove il tipo di chiave può essere a scelta tra “rsa” (sia per le versioni 1 e 2 di ssh) e “dsa” (solo per la versione 2 di ssh)

Il comando vi chiederà in che cartella salvare le due chiavi, quella pubblica avrà l’estensione .pub e poi vi chiederà una passphrase possibilmente lunga.

Nella fase di accesso, il client ssh prova al server di essere in possesso della chiave privata, e in caso di successo viene consentito l’accesso. In questo modo, all’utente non è richiesto di fornire la propria password ad ogni connessione.
++
cit off 3
++

  • la trasmissione ora è autenticata da cifratura
  • la porta di default è 22

Ndr:

Tuttavia, avere investigato il metodo ssh, simile alla cifratura onion, che ha -anche la cifratura onion- una chiave pubblica e una chiave privata- NON è la stessa cosa!

Quindi dobbiamo trovare un manuale _specifico_.

La risposta è ai link seguenti, in merito al fatto di come si possa ..

  1. abilitare più hidden service sullo stesso computer
  2. abilitare il servizio ssh

ndr:

Infatti la porta 80 può essere multiplata ad esempio su 8080 & 8081

ed inizializzato il server nginx sulle chiavi pubbliche associate (tipo hostname)

il servizio ssh può essere abilitato come indicato anche sotto TOR:

HiddenServiceDir /var/lib/tor/ssh_service/
HiddenServicePort 22 127.0.0.1:22

ndr:

si noti come ssh_service sia allocato su directory “riservata” di tipo “hidden”, essendo un ramo di /var/lib/tor/ ..

si noti come venga evocata la porta 22 per la generazione di key di tipo ssh.

I cenni qui sopra, però, sono appunto solo parte della procedura completa di configurazione!

Riassumendo ..

la questione può essere risolta in 5 link fondamentali seguenti:

(1) link fondamentale: (la questione del porto 22 ed accesso plurimo)

https://unix.stackexchange.com/questions/328007/how-to-set-up-multiple-tor-hidden-services-in-the-same-host

era il link appena sopra esaminato ..

ma i lettori più attenti avranno notato che i nomi
hostname private_key sono al link:

/var/lib/tor/[…]/

mentre i file index sono al link:

/var/www/html/index.html

nel caso di esistenza di un solo accesso diretto al server (lez.23) ..

VICEVERSA

cosa va fatto ..

nel caso di più siti?

Nel caso di più siti necessita ESTENDERE “la configurazione di apache2” .. come spiegato nel link seguente:

(2) link fondamentale: (la questione della configurazione plurima di apache)

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts

(3) link fondamentale: (la configurazione di ~/.ssh/config)
https://www.howtoforge.com/anonymous-ssh-sessions-with-tor

Né va dimenticato che la modalità ssh prevede l’uso di una “key” che non è una stringa breve, ma prodotta o con un software specifico, oppure reperibile negli indirizzi da noi dichiarati quando mettiamo di volere usare la porta 22!

Tutto ciò è spiegato su una altra trattazione di ancora un diverso autore al link seguente.

(4) link fondamentale: (la questione della gestione delle key di tipo ssh)

articoli introduttivi:

https://www.rosehosting.com/blog/how-to-install-and-configure-openssh-on-ubuntu-16-04/

https://www.rosehosting.com/blog/ssh-login-without-password-using-ssh-keys/

(5) link fondamentale: (dettagli di configurazione di ssh)

Building a Tor Hidden Service From Scratch

https://www.bentasker.co.uk/documentation/linux/307-building-a-tor-hidden-service-from-scratch-part-1

Quindi una cosa tuttaltro che banale, e di cui abbiamo dovuto fare un mosaico di ricostruzione.

ultimo aggiornamento:

23 gen 2019, ore 17.04

 

Questa voce è stata pubblicata in deep web, POLITICA. Contrassegna il permalink.

Lascia un commento