Visualizzazione post con etichetta ftp. Mostra tutti i post
Visualizzazione post con etichetta ftp. Mostra tutti i post

giovedì 20 marzo 2014

Server Amazon EC2 - Terza parte - Il protocollo FTP

E' possibile che si abbia la necessità di utilizzare il protocollo FTP per caricare dei file nel server.

Per fare questo è necessario installare un server FTP sull' EC2.
Io utilizzo vsftpd, quindi per per l'installazione basterà

sudo apt-get install vsftpd

Una volta installato il server, andrà configurato.
Per configurarlo bisognerà editare il file /etc/vsftpd.conf.
In questo file ci sono un sacco di parametri da configurare, io descriverò le importazioni più comuni.

Per prima cosa, facciamo una copia di backup del file.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old

Ora apriamolo con un editor, come sempre uso nano.

sudo nano /etc/vsftpd.conf

Questa è la lista dei parametri che ho configurato.

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
chroot_local_user=YES

"connect_from_port_20 Quando abilitata, vsftpd viene eseguita con privilegi sufficienti per aprire la porta 20 sul server, durante i trasferimenti dei dati in modalità attiva. Disabilitare questa opzione permette a vsftpd di essere eseguito con meno privilegi, ma potrebbe essere non compatibile con alcuni client FTP." 
(CIT.)


Aggiungiamo anche questa stringa alla fine del file
seccomp_sandbox=NO
Serve per evitare l'errore:
500 OOPS: priv_sock_get_cmd

Ora non rimane che rendere effettive le modifiche riavviando il server FTP.

sudo /etc/init.d/vsftpd restart

Per poter utilizzare il servizio ftp bisogna scaricare e installare un client come ad esempio filezilla.

Ci si potrebbe collegare utilizzando la chiave.pem scaricata in fase di configurazione (Prima parte) oppure si potrebbero creare degli utenti appositi, ognuno con il proprio permesso.

Come creare utenti reali per connessione FTP.

Io consiglio anche di modificare i proprietari della cartella www.

sudo chown ubuntu /var/www/

sudo chgrp www-data /var/www/

 Anche in questo caso, se si cerca di accedere non si otterrà niente.
Questo sempre perchè il server EC2 ha la porta 21 di connessione FTP chiusa.

A questo punto bisogna procedere esattamente come è stato fatto per abilitare la porta 80 per il protocollo HTTP, però questa volta bisognerà scegliere Custom TCP Rule e inserire la porta che si desidera aprire, in questo caso la porta 21.



A questo punto sarà possibile connettersi esclusivamente utilizzando una modalità di trasferimento attiva.

Se si vuole utilizzare la modalità passiva, o la modalità di default su filezilla, bisogna aggiungere 3 nuove stringhe al file di configurazione vsftpd.conf.

pasv_address=54.186.141.53
pasv_min_port=12000
pasv_max_port=12100

pasv_address — Specifica l'indirizzo IP per l'indirizzo IP 'public facing' del server, per i server situati dietro i firewall Network Address Translation (NAT). Ciò abilita vsftpd a fornire l'indirizzo di ritorno corretto per i collegamenti in modalità passiva.  

Io ho inserito l'indirizzo del mio server, ma ognuno deve inserire l'indirizzo del server che sta utilizzando

pasv_max_port — Specifica la porta più alta inviata ai client FTP per i collegamenti in modalità passiva. Questa impostazione viene usata per limitare la gamma della porta, in modo da semplificare la creazione delle regole del firewall.
Il valore di default è 0, il quale non limita la gamma della porta passiva più alta. Il valore non deve eccedere 65535

pasv_min_port — Specifica la porta più bassa inviata ai client FTP per i collegamenti in modalità passiva. Questa impostazione viene usata per limitare la gamma della porta, in modo da semplificare la creazione delle regole del firewall.
Il valore di default è 0, il quale non limita la gamma della porta passiva più bassa. Il valore non deve essere minore di 1024
(CIT.)

Ovviamente a questo punto bisognerà anche aprire le porte nel server, quindi dal solito security groups




 

giovedì 19 settembre 2013

Aggiungere utenti reali FTP (vsftpd) Ubuntu server

Per utilizzare il servizio FTP (vsftpd) su un server remoto con sistema operativo Ubuntu 13.4 su una macchina Amazon EC2 ho dovuto utilizzare la chiave .pem che ho creato in fase di installazione.

Questo non sempre mi va bene, per diversi motivi, quindi ho deciso di creare un semplice utente che può utilizzare il normale protocollo FTP collegandosi al server e autenticandosi semplicmeente con una password. Oltre a questo ho voluto fare in modo che, ogni volta che mi collego utilizzando questo utente, vengo portato direttamente alla cartella /var/www e non alla cartella /.

Tutto questo fondamentalmente perchè sono pigro.

Per fare un lavoro del genere si possono creare utenti reali del sistema o utenti virtuali. Sinceramente per le mie esigenze ho trovato molto più veloci e pratico creare utenti reali.

La prima cosa da fare per poter utilizzare un utente reale per accedere al server tramite protocollo ftp è abilitare questa funzione tramite il file di configurazione di vsftp.

Quindi basta editare il file vsftpd.conf

#sudo nano /etc/vsftpd.conf

E' importante cercare le righe con le stringhe:

#local_enable=YES
#write_enable=YES

e decommentarle cancellando il cancelletto dall'inizio della riga.

Per rendere effettive le modifiche bisogna riavviare il servizio

    #sudo /etc/init.d/vsftpd restart

Una volta fatto questo non ci rimane che creare gli utenti che desideriamo, nel mio caso uno solo.

#sudo useradd -d /var/www/ nomeutente

#sudo passwd nomeutente

Con il primo comando creo l'utente e gli assegno la cartella personale, cioè la cartella nella quale mi troverò nel momento in cui utilizzerò l'utente per accedere al server tramite FTP.
Se non si utilizza l'opzione -d all'utente verrà assegnata una cartella di default con il proprio nome all'interno della cartella home.
Per controllare questi parametri si può leggere il file passwd.

    #sudo nano /etc/passwd

Alla fine del file dovrebbe esserci il nuovo utente creato e l'indirizzo della cartella personale.

Io ho scelto la cartella /var/www perchè utilizzo lo stesso utente per gestire tutti i siti che si trovano sul server, ma se si vuole differenziare è possibile assegnare un indirizzo diverso, ad esempio /var/www/nomesito/

A questo punto dovrebbe essere possibile utilizzare il nuovo utente per accedere tramite protocollo FTP, io utilizzo filezilla.

E' molto utile limitare l'accesso al file system per gli utenti che utilizzano l'ftp.
Per limitare l'accesso esclusivamente alla propria cartella personale bisogna modificare ulteriormente il file di configurazione del servizio FTP.


    #sudo nano /etc/vsftpd.conf

questa volta bisogna cercare e decommentare la stringa

    #chroot_local_user=YES

A questo punto è necessario riavviare ancora una volta il servizio.

    #sudo /etc/init.d/vsftpd restart


                 /---------------------------------------------------------------------/

Se si vuole bloccare l'accesso FTP a un particolare utente è possibile inserire il nome utente al file /etc/ftpusers.

                 /---------------------------------------------------------------------/

Può capitare di fare un po' di casino con i permessi delle cartelle o dei files.
Se non si hanno permessi di scrittura è necessario modificarli oppure cambiare il proprietario o il gruppo di una cartella.

Se si vuole cambiare ricorsivamente l'utente proprietario di una cartella:

    #sudo chown -R numeutente nomecartella/

Se si vuole cambiare ricorsivamente il gruppo proprietario di una cartella:

    #sudo chgrp -R nomegruppo nomecartella/

Se si vogliono modificare i permessi di una cartella:


    #sudo chmod -R 755 nomecartella/

Se si vuole aggiungere un utente a un gruppo:

    #sudo adduser nomeutente nomegruppo

Per controllare quali permessi e proprietari abbia una cartella o un file:

    #ls -la cartellasuperiore/


Questi comandi dovrebbero essere sufficienti per fare tutto quello che serve.



/------------------------------------------------------------------------------------------/

UPDATE 14/10/2014

Mi è capitato di installare vsftpd su digitalocean, non sono riuscito a collegarmi tramite ftp finchè non ho aggiunto questa stringa al file di configurazione

    allow_writeable_chroot=YES

venerdì 9 ottobre 2009

Alternativa MAC per trasferire file attraverso il protocollo FTP

Per gestire qualsiasi cosa via ftp.

Filezilla
scaricabile qui:
http://filezilla-project.org/

Cyberduck
scaricabile qui:
http://cyberduck.ch/