23/01/2012
Creare uno spazio FTP condiviso tra due utenti
Qualche giorno fa ho dovuto creare una directory FTP condivisa tra me ed un mio collega, da utilizzare come punto di riferimento per l'upload/download delle pagine Web che stiamo realizzando.
Ecco la procedura:
per prima cosa occorre creare un gruppo, denominato gruppoweb, in cui inserire il nostro nome utente e quello utilizzato dal nostro collega.
Nella fattispecie, il comando da lanciare è il seguente:
nightfly@nightbox:~$ sudo groupadd gruppoweb
Successivamente è necessario aprire in scrittura il file /etc/group aggiungendo la seguente entry:
gruppoweb:x:1006:vostroutente,utentecollega
Dopodichè si devono apportare delle piccole modifiche al file di configurazione del demone FTP attivo sulla nostra Linux box (assumendo che si tratti di vsftpd). Tali modifiche riguardano il parametro umask e l'aggiunta della direttiva file_open_mode (il cui valore di default è 0666):
file_open_mode=0777
local_umask=0002
Così facendo tutti i file caricati mediante FTP avranno come permessi di default 775.
A modifica completata riavviamo il demone vsftpd:
nightfly@nightbox:~$ sudo service vsftpd restart
Infine, occorre scaricare un piccolo applicativo in grado di lanciare un determinato comando al verificarsi di un evento (trigger) nella directory da esso monitorata. Tale software prende il nome di incrond:
nightfly@nightbox:~$ sudo apt-get install incrond
Ad installazione avvenuta si dovrà rimuovere il file /etc/incron.allow (poichè insicuro, dato che per default tutti gli utenti possono utilizzare incrond):
nightfly@nightbox:~$ sudo rm /etc/incron.allow
e successivamente tale file dovrà essere ricreato con privilegi di root:
nightfly@nightbox:~$ su root
Password:
root@nightbox:/home/nightfly# nano /etc/incrond
aggiungendo la direttiva:
root
A modifica completata soltanto root potrà utilizzare incrond.
Ora dobbiamo fare in modo che ad ogni modifica di una pagina preesistente oppure ad ogni upload di un nuovo file, venga lanciato il comando chown per definire il gruppo proprietario, ovvero gruppoweb.
Configuriamo dunque tale regola su incrond, lanciando il comando:
root@nightbox:/home/nightfly# incrontab -e
e successivamente modificando il file appena aperto nel seguente modo:
/var/www/dirshared/ IN_MODIFY,IN_CREATE chown :gruppoweb -R $@
dove la wildcard $@ rappresenta la directory monitorata (ovvero /var/www/dirshared).
Verifichiamo che la configurazione sia stata aggiornata digitando:
root@nightbox:/home/nightfly# incrontab -l
ed abbiamo finito.
A presto.
PS: sicuramente vi starete chiedendo perchè non ho creato un unico utente per accedere allo spazio FTP condiviso... bhè la risposta è semplice: perchè voglio controllare (e loggare) le operazioni effettuate da ciascun utente.
15:22 Scritto da: nazarenolatella in SO: Linux | Link permanente | Commenti (0) | Segnala | Tag: incrond, ftp, vsftpd, umask, default permissions, directory sharing | OKNOtizie |
Facebook
11/01/2012
Swatch: configurazione per il monitoraggio dei server FTP (vsftpd)
Ecco la configurazione di swatch che sto utilizzando sui miei server per tenere d'occhio il demone vsftpd:
ignore /127.0.0.1/
#FTP File Status OK
watchfor /150/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP File Status OK
#FTP Command Not Implemented
watchfor /202/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Command Not Implemented
#FTP User Logged Out
watchfor /221/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP User Logged Out
#FTP Directory Send OK
watchfor /226/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Directory Send OK
#FTP User Logged In
watchfor /230/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP User Logged In
#FTP Requested File Action Ok
watchfor /250/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Requested File Action Ok
#FTP Service Not Avaliable
watchfor /421/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Service Not Available
#FTP Can't Open Data Connection
watchfor /425/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Can't Open Data Connection
#FTP Transfer Aborted
watchfor /426/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Transfer Aborted
#FTP File Unvailable
watchfor /450/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP File Unvailable
#FTP Command Unrecognized
watchfor /500/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Command Unrecognized
#FTP Syntax Error
watchfor /501/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Syntax Error
#FTP Command Not Implemented
watchfor /502/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Command Not Implemented
#FTP Bad Sequence Of Commands
watchfor /503/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Bad Sequence Of Commands
#FTP User Not Logged In
watchfor /530/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP User Not Logged In
#FTP Illegal File Name
watchfor /553/
echo
mail addresses=vostro.indirizzo@email.it,subject=SWATCH HOME: FTP Illegal File Name
Come potete notare, le espressioni regolari verificano che all'interno del file /var/log/vsftpd.log siano presenti gli status code tipici del protocollo FTP.
Occorre precisare, però, che per default vsftpd non prevede il logging degli status code. Per abilitare tale funzione occorre modificare il file /etc/vsftpd.conf nel modo seguente:
xferlog_enable=YES
log_ftp_protocol=YES
xferlog_std_format=NO
A modifica completata riavviamo il demone in questione:
nightfly@nightbox:~$ sudo service vsftpd restart
ed infine inseriamo una entry nel file /etc/rc.local in modo da rendere automatica l'esecuzione di swatch per il monitoraggio di vsftpd ad ogni avvio del sistema:
swatch -c /etc/swatchftp.conf -t /var/log/vsftpd.log
Ora anche vsftpd può definirsi "sotto controllo".
Alla prossima.
PS: per una lista (semi)completa degli status code relativi al protocollo FTP, potete consultare questo link.
09:24 Scritto da: nazarenolatella in Sicurezza | Link permanente | Commenti (0) | Segnala | Tag: ftp, vsftpd, simple watchdog, status code, logging, swatch, rc.local | OKNOtizie |
Facebook
02/11/2011
Gabbie chroot per gli utenti FTP mediante vsftpd.conf
Recentemente mi è capitato di dover creare un nuovo account utente per l'accesso sul mio server FTP. Fin qui nulla di strano, è stato sufficiente digitare:
nightfly@nightbox:~$ useradd <nomeutente>
e successivamente:
nightfly@nightbox:~$ sudo passwd <password> <nomeutente>
A questo punto si è reso necessario ingabbiare l'utente nella sua home. Per fare ciò ho editato il file vsftpd.conf, che si trova nella directory /etc:
nightfly@nightbox:~$ sudo nano /etc/vsftpd.conf
decommentando (e dunque abilitando) la seguente opzione:
chroot_local_user=YES
Infine ho effettuato uno stop/start del demone vsftpd, digitando:
nightfly@nightbox:~$ sudo service vsftpd stop
nightfly@nightbox:~$ sudo service vsftpd start
e fine dei giochi.
PS: se volete cambiare la home directory dell'utente (che per default è /home/nomeutente), facendolo atterrare, ad esempio, in una sottodirectory di /var/www (per l'upload/download di pagine Web), vi basterà lanciare il comando:
nightfly@nightbox:~$ sudo usermod -d /var/www/nomecartella nomeutente
Se la directory /var/www/nomecartella esiste già, sarà necessario modificare il suo owner, partendo dal presupposto che essa abbia i permessi settati su 755:
nightfly@nightbox:~$ sudo chwon nomeutente:nomeutente /var/www/nomecartella
In alternativa, si potrebbe creare un gruppo ad hoc, chiamato ad esempio web, al quale associare i vari utenti che possono eseguire operazioni di lettura e scrittura su una data directory.
Per creare il gruppo occorre digitare:
nightfly@nightbox:~$ sudo groupadd nomegruppo
Successivamente aggiungiamo i vari utenti al gruppo, mediante il comando:
nightfly@nightbox:~$ sudo usermod -g web nomeutente
A procedura terminata, verifichiamo che gli utenti siano stati effettivamente aggiunti al gruppo, listandone il contenuto:
nightfly@nightbox:~$ sudo groups nomegruppo
Infine, possiamo modificare solo il gruppo proprietario della directory /var/www/nomecartella, digitando:
nightfly@nightbox:~$ sudo usermod :web /var/www/nomecartella
e cambiamo i permessi della directory, settandoli su 775:
nightfly@nightbox:~$ sudo chmod 775 /var/www/nomecartella
PPS: questa configurazione del file vsftpd.conf ingabbierà nella loro home tutti gli utenti di sistema che si collegheranno al server FTP. Se volete fare una selezione degli utenti che saranno ingabbiati e di quelli che non lo saranno, disabilitare l'opzione:
chroot_local_user=YES
commentandola o settandone il valore a NO:
#chroot_local_user=YES
In seguito abilitate l'opzione:
chroot_list_enable=YES
e specificate il file in cui è contenuta la lista degli utenti da ingabbiare, che per default è vsftpd.chroot_list:
chroot_list_file=/etc/vsftpd.chroot_list
Infine, inserite in questo file i nomi utente da chrootare (uno per riga).
A presto.

















