File

Transcript

File
Tutorial
Avvio e configurazione di un server FTP
di Roberto Bolzan
Si può pensare che la diffusione del Word Wide Web possa
estinguere i server FTP. Negli ultimi anni si sta verificando
esattamente l'opposto. I server FTP si stanno utilizzano a pieno
ritmo per la facilità con cui possono essere installati e gestiti. Non
è necessario lavorare con il codice HTTP e non è richiesto lavoro
aggiuntivo: è sufficiente sistemare i files al punto giusto e lasciare
che la gente li prenda.
Se desiderate lavorare da casa e collegarvi al server in ufficio potete
caricare e scaricare i documenti che vi servono con estrema facilità
mediante un server FTP.
Se desiderate mettere a disposizione dei documenti, è sufficiente
avviare un server FTP anonimo e lasciarlo a disposizione a
chiunque.
In questo tutorial viene spiegato come avviare il server FTP montato
in OSX e come configurare le funzioni principali. Viene data una
particolare importanza alla sicurezza, dato che un server non
protetto può esporre a pericolose intrusioni dall'esterno, mentre
è relativamente facile ottenere un buon grado di protezione con
alcune semplici e ovvie precauzioni.
In seguito possono essere installati altri server FTP, come il
diffusissimo Proftp o come wu-ftp, che possono consentire una
configurazione molto più sofisticata e flessibile delle opzioni
disponibili. Credo però che anche il semplice server in dotazione
possa essere sufficiente per la maggior parte degli utilizzi più
comuni, con il vantaggio della estrema facilità ed immediatezza
d'uso.
Il tempo necessario per la configurazione completa è di pochi
minuti per un utente con una certa pratica di base del terminale.
Chi non ha mai usato il terminale puà decidere di continuare a
non usarlo, rinunciando a qualche potenzialità, ma consiglio
vivamente di approfittare dell'occasione per capire qualcosa di
più di questo fondamentale strumento di lavoro e delle potenzialità
di UNIX. Di seguito sono date tutte le indicazioni necessarie per
operare in un modo o nell'altro.
Tutorial
Avvio del server ftp
Grazie a OSX, sia lodato, è facilissimo. Aprite le Preferenze di sistema e
cliccate su Abilita accesso FTP
A questo punto avete un server FTP.
Dal vostro browser preferito digitate
ftp://nomeutente@localhost (nomeutente è il nome con cui vi siete logati quando avete
acceso il computer)
ed entrerete in collegamento con il vostro stesso computer, che vi chiederà la password
e vi permetterà di sfogliare cartelle e scaricare documenti.
Lasciate acceso il computer in ufficio e, da casa, digitate
ftp://[email protected] (numero IP assegnato al router del vostro ufficio)
oppure
ftp://[email protected] (se avete un indirizzo internet che punta sulla
vostra macchina)
e potrete avere a disposizione tutto l’hard disk per potere lavorare fino a tardi.
Se usate un programma come Fetch o Interarchy o RBrowser o Transmit ecc, oltre a
scaricare i documenti potete anche caricarli nella postazione remota.
Se vi collegate in rete locale potete condividere documenti con qualunque macchina,
e qualunque sistema operativo che adotti TCP-IP, anche Win senza bisogna di Samba.
Per saperne di più
Tutorial
Definizione di nuovi utenti
A questo punto potreste pensare che, oltre a voi stessi, la macchina in ufficio
potrebbe fare lavorare fino a tardi anche i vostri colleghi. Questa elementare
aspirazione alla giustizia sociale può trovare una drastica applicazione,
sempre nelle Preferenze di sistema.
Semplicemente, definite quanti nuovi utenti vi servono con l’apposito comando
Utenti.
Fatto.
Ogni utente così definito può avere accesso al sistema con il suo nomeutente e
la sua password.
Ci sono limiti al numero di utenti che possono collegarsi contemporaneamente
al sistema, ma bisogna dire che questo numero è abbastanza alto e se avete
questo genere di problemi dovreste essere pronti a valutare l’opportunità di un
sistema più completo.
Terminale
Tutorial
Esclusione di utenti
E’ possibile che vogliate impedire l’accesso al vostro server FTP a qualche
utente elencato tra gli utenti che hanno accesso al sistema.
Per esempio, persone che hanno accesso alla rete locale ma che non desiderate
si possano collegare dall’esterno mediante un collegamento FTP.
Il file /private/etc/ftpusers contiene già un elenco di utenti fittizi ai quali, per
ragioni di sicurezza, viene negato l’accesso alle risorse di sistema.
Per leggere l’elenco aprite la cartella /private/etc mediante il menu Vai
cliccate ftpusers.
#list of users disallowed any ftp access.
# read by ftpd(8).
Administrator
administrator
root
uucp
Il significato è chiaro: gli utenti che controllano le funzioni più protette del
sistema (per es. root) non possono collegarsi mediante FTP.
Se volete completare l’elenco con un nuovo nome, aprite il Terminale (prima
o poi ci dovevamo arrivare, coraggio).
Digitate:
sudo pico /private/etc/ftpusers
Verrà chiesta la password e fornirete quella con la quale avete avviato il
computer.
Aggiungete in fondo all’elenco il nome che desiderate escludere e digitate
ctrl-o e quindi Return.
Fatto. Provate a collegarvi con il nome utente aggiunto all’elenco...
In alternativa potete eseguire la stessa operazione aprendo direttamente
il file dopo avere avviato il computer come utente root.
Terminale
Tutorial
Confinare gli utenti in una specifica directory
La cosa spiacevole nel server in dotazione a OSX è che gli utenti che avete
definito hanno accesso a tutto il sistema. Se avete già provato a collegarvi
avrete visto che potete “navigare” in tutto l’hard disk, comprese le cartelle
di sistema. Il presupposto di tutto ciò è che un utente, per collegarsi, subisce
un controllo tale da rendere sicuro il sistema.
A me la cosa non piace molto, per cui ritengo utile limitare la possibilità di
navigazione agli utenti.
Per fortuna la cosa è molto facile. Anche inquesto caso si tratta di aggiungere
il nome utente ad un file: si tratta di /private/etc/ftpchroot.
Abbiamo detto che la cosa si può fare senza il temuto terminale. E’ così.
Aprite le Preferenze di sistema
Fate il logout dal menu Mela e, al momento giusto, logatevi come root e
date la password (se ve la siete scordata, potete riassegnarla con il CD di
installazione di OSX). ATTENZIONE: da questo momento in poi siete in
grado ci modificare files di sistema; quindi, cautela!
Come abbiamo visto prima, aprite la directory /private/etc, verificate che
e file ftpchroot non esista. Se esiste, apritelo e aggiungete il nome utente
che volete confinare, un nome per ogni riga. Se, com’è probabile, non esiste,
createlo con TextEdit o qualunque altro editor di testo, scrivete i nomiutenti
che vi interessano (un nome per riga) e salvatelo come solo testo nella
directory /private/etc.
Fatto. Provate a collegarvi con il detto nomeutente.
Potete fare la stessa cosa da Terminale, in modo molto simile a come indicato
nella pagina precedente a proposito dell’esclusione di utenti.
Terminale
Tutorial
Definizione della home directory
Adesso che avete stabilito che il tale utente può navigare solo all’interno della
sua cartella home (e sono sicuro che il sistema vi pare ora molto più protetto
da manipolazioni dall’esterno) vi sarà venuta voglia di definire delle aree di
lavoro alle quali possano accedere utenti diversi. Per esempio, avete un
progetto al quale lavorano diverse persone e desiderate che tutte si colleghino
alla cartella che contiene i documenti, invece che alla rispettiva cartella home.
In poche parole, vorreste definire in maniera personale la cartella home degli
utenti, superando la definzione standard di OSX.
Niente di più facile: aprite Netinfo.
Nella riga home scrivete il percorso della cartella che vi interessa (per
esempio /Users/shared/Progetto). Più utenti possono avere la stessa cartella
home.
Fatto. Salvate le modifiche a Netinfo e provate a collegarvi con il tale
nomeutente.
Terminale
Tutorial
Permissions dei documenti caricati
Se lavorate davvero in gruppo, vi renderete subito conto che c’è un problema
micidiale. La configurazione di default del server FTP impone che i documenti
vengano tutti scritti con le permissions rwxr-x---. In poche parole, l’utente
proprietario del documento può modificarlo, tutti gli utenti del gruppo lo
possono solo leggere.
Questo è un problema serio che vi costringe a verificare costantemente i
documenti nel server e modificarli manualmente per renderli disponibili a
tutti. Quindi, se per caso desideraste lavorare distesi nell’amaca in giardino
(airport è assolutamente necessaria per questo), controllando di tanto in
tanto che tutto vada bene, non potreste farlo, dato che dovreste continuamente
intervenire sulle permissions dei documenti.
Questa cosa è poco Unix-like, quindi mi sono dato molto da fare per capire
come modificare la configurazione.
Una volta capito il sistema (vi assicuro che c’è voluto un bel po’) è una cosa
da nulla.
Se siete accreditati come root aprite senz’altro il file /private/etc/inetd.conf.
altrimenti aprite il Terminale e digitate
sudo pico /private/etc/inetd.conf
e la password dell’utente con il quale avete avviato il computer.
andate alla riga
ftp
stream
tcp
nowait
root /usr/libexec/tcpd
ftpd
e modificatela aggiungendo le lettere magiche
ftp
stream
tcp
nowait
root /usr/libexec/tcpd
ftpd
-u 007
modifica la umask dei documenti secondo il seguente principio:
dalle permissions 777 (che consentono la lettura, la scrittura e l’esecuzione
dei documenti al proprietario, al gruppo ed a tutti) vengono tolte per
sottrazione quelle indicate nella umask. Le permissions rimanenti,
nell’esempio indicato, sono rwxrwx---, il che mi permette di rilassarmi
notevolmente, dato che tutto il gruppo dilavoro di quel progetto può lavorare
sui file senza costringermi a verificare i documenti.
Altri tipi di configurazione sono leciti e si ottengono definendo dei numeri
appropriati di umask . Provate.
-u 007
Terminale
Tutorial
Il server anonymous
Il server FTP anonymous è una strana bestia che permette a chiunque di
collegarsi dando come nomeutente, per convenzione, un indirizzo di posta
elettronica.
Avete già capito che una errata configurazione del server vi espone a rischi
notevoli per la sicurezza. Non c’è da avere paura: i rimedi ci sono e basta
leggere la pagina seguente per avere un quadro chiaro della situazione.
Nello stesso tempo il server anonymous è utilissimo a chi vuole mettere a
disposizione documenti al pubblico più vasto senza doversi preoccupare di
chi si collega e di definire nuovi utenti per questo. Ciò fa si che questi server
siano diffusissimi.
Per configurare in quattro e quattr’otto il vostro server fate così:
accreditatevi come root, aprite Netinfo e aggiungete un utente (users),
attribuendogli i valori sotto indicati. Meglio ancora, duplicate un utente
esistente e modificatene i valori.
Poi andate alla pagina seguente
Terminale
continua
Poi definite un nuovo gruppo, attribuendogli i valori sotto indicati. Anche
qui conviene duplicate un gruppo esistente e modificarne i valori.
Adesso dovete create le cartelle nelle quali gli utenti che si collegano sono
confinati. Nella directory /Users create le seguenti directory annidate:
Poi andate alla pagina seguente
Terminale
continua
Per garantire l’operatività del sistema dovete fare le seguenti copie di files:
file /bin/ls copia in /Users/ftp/bin/
file cp /usr/lib/dyld copia in /Users/ftp/usr/lib/
file cp /System/Library/Frameworks/System.framework/Versions/B/System
copia in /Users/ftp/System/Library/Frameworks/System.framework/Versions/B/
Infine dovete modificare le permissions della cartella home /Users/ftp. Questo è
essenziale per la sicurezza.
Scaricate il programma gratuito BatChmod e operate come indicato sotto.
Fatto. Collegatevi come utente anonimo e date come nomeutente il vostro
indirizzo di posta elettronica.
PS potete inibire l’accesso degli utenti anonimi nello stesso modo in cui avete
inibito l’accesso agli utenti nomali.
Terminale
Tutorial
Log
La questione del controllo del vostro server è semplice.
Il server scrive nel documento /private/var/log/ftp.log tutto ciò che succede. Ogni settimana,
se avete crontab attivato, il file viene compresso e ne viene aperto uno nuovo.
Il modo più semplice di accedere al consiste nel digitare nel vostro browser preferito
ftp://nomeutente@localhost/private/var/log/ftp.log
oppure, al posto di localhost, il numero IP o il DNS che puntano al vostro server.
L’analisi del log è intuitiva. Questo è un esempio:
Jun 26 12:50:57 localhost ftpd[1350]: ANONYMOUS FTP LOGIN REFUSED FROM localhost
Jun 26 12:51:12 localhost ftpd[1353]: connection from localhost
Jun 26 12:51:33 localhost ftpd[1353]: FTP LOGIN FROM localhost as robertob
Jun 26 13:06:33 localhost ftpd[1353]: User robertob timed out after 900 seconds
Jun 28 23:54:02 localhost ftpd[2909]: connection from localhost
Jun 28 23:54:21 localhost ftpd[2909]: FTP LOGIN FAILED FROM localhost, robertonb
Jun 28 23:54:36 localhost ftpd[2912]: connection from localhost
Jun 28 23:54:50 localhost ftpd[2912]: FTP LOGIN FROM localhost as robertob
Jun 28 23:54:51 localhost ftpd[2912]: get /private/var/log/ftp.log = 715 bytes
Jun 29 00:09:51 localhost ftpd[2912]: User robertob timed out after 900 seconds
Jun 29 00:24:42 localhost ftpd[2922]: connection from www.redinter.net.gt.195.234.168.inaddr.arpa
Jun 29 01:34:52 localhost ftpd[2952]: connection from ppp-211-138.27-151.libero.it
Jun 29 21:25:43 localhost ftpd[3459]: connection from localhost
Jun 29 21:25:55 localhost ftpd[3459]: FTP LOGIN FAILED FROM localhost, roberto
Jun 29 21:26:02 localhost ftpd[3460]: connection from localhost
Notate le cose in rosso e andate alla pagina seguente.
Modifiche alle caratteristiche del file log possono essere effettuate in modo simile a
quanto avevamo visto per la umask:
se siete accreditati come root aprite senz’altro il file /private/etc/inetd.conf.
altrimenti aprite il Terminale e digitate
sudo pico /private/etc/inetd.conf
e la password dell’utente con il quale avete avviato il computer.
andate alla riga
ftp
stream
tcp
nowait
root /usr/libexec/tcpd
ftpd
e modificatela aggiungendo,
-ll, se volete un logging più completo
-S, se volete il logging degli utenti anonymous
-U, se volete sapere chi è collegato al momento (basta, da terminale, digitare who)
La stringa, alla fine, dovrebbe essere simile a questa
ftp
stream
tcp
nowait
root /usr/libexec/tcpd
Terminale
ftpd
-llSU
-u 007
Tutorial
Sicurezza
Nel tempo in cui ho attivato il server nel mio desktop, per controllare alcune delle cose
che stavo scrivendo, ho ricevuto due contatti dall’esterno:
Jun 29 00:24:42 localhost ftpd[2922]: connection from www.redinter.net.gt.195.234.168.inaddr.arpa
Jun 29 01:34:52 localhost ftpd[2952]: connection from ppp-211-138.27-151.libero.it
L’esperienza maturata nel server che ho in studio mi dice che, almeno 10 volte al giorno,
un intruso cerca di collegarsi al sistema. Si tratta di robot software che cercano delle
falle nel sistema per utilizzare il vostro computer per i loro scopi.
Se nelle directory dell’utente ftp ce n’è una che permette la scrittura a tutti (permissions
rwxrwxrwx) l’intruso creerà una directory nuova e ci metterà del materiale che desidera
diffondere senza essere individuato.
Un’esperienza recente, riportata su Tevac, è molto istruttiva: un server attivato per
prova è stato imbottito di 800 mega di materiale pornografico a disposizione di altri
utenti che scaricavano liberamente. Materiale solo per WIN, per di più.
Se non volete che il vostro server sia utilizzato gratis da estranei, e magari per diffondere
materiale illegale e pericoloso, badate bene alle permissios della directory /Users/ftp;
non consentite mai che ci sia una directory con permissions di scrittura per tutti.
Se usate un programma che vi installa un server ftp anonymous controllate le permissions,
dato che a volte questi programmi creano delle directory poco sicure.
Non sottovalutate il problema, né la capacità della Rete di individuare questa specifica
falla di sicurezza e di utilizzarla prontamente per i propri scopi.
Terminale
Tutorial
Il server anonymous
Da Terminale l’installazione del server anonymous è molto più semplice:
tutto quanto segue dev’essere eseguito come root , quindi attenzione a quello che
fate.
su root
password:
niutil (netinfo utility) modifica il vostro server netinfo aggiungendo e configurando
un nuovo utente ed un nuovo gruppo. I comandi sono facilmente comprensibili.
niutil
niutil
niutil
niutil
niutil
niutil
niutil
niutil
niutil
niutil
niutil
niutil
niutil
-create / /users/ftp
-createprop / /users/ftp shell /dev/null
-createprop / /users/ftp realname "Anonymous FTP"
-createprop / /users/ftp uid 21
-createprop / /users/ftp expire 0
-createprop / /users/ftp gid -21
-createprop / /users/ftp home /Users/ftp
-createprop / /users/ftp passwd "*"
-create / /groups/ftp
-createprop / /groups/ftp name ftp
-createprop / /groups/ftp passwd "*"
-createprop / /groups/ftp gid -21
-appendprop / /groups/ftp users ftp
create la directory home dell’utente ftp e le directory per i documenti di sistema
mkdir -p /Users/ftp/bin
mkdir -p /Users/ftp/usr/lib
mkdir -p /Users/ftp/System/Library/Frameworks/System.framework/Versions/B
copiate i documenti necessari per il funzionamento del server ftp. Dato che il server,
una volta attivato come anonymous, esegue una chiamata chroot, la directory home
viene trasformata nella directory home del programma e viene negato l’accesso a
qualunque altra directory del server, incluse /bin, /etc e /lib. Come conseguenza il
server non può più vedere /etc/passwd, /etc/group e files binari come /bin/ls e qundi
non potrebbe funzionare. Per risolvere questa situazione vengono create le directory
e vengono copiati i files sopra elencati.
cp /bin/ls /Users/ftp/bin/ls
cp /usr/lib/dyld /Users/ftp/usr/lib/dyld
cp /System/Library/Frameworks/System.framework/Versions/B/System
/Users/ftp/System/Library/Frameworks/System.framework/Versions/B/System
modificate le permissions delle directory e definite proprietario e gruppo
chmod -R 555 /Users/ftp
chown -R nomeutente:ftp /users/ftp
Tutorial
Avvio del server ftp
Cosa succede quandosi spunta il box nelle preferenze di sistema?
Semplicemente si modifica il file /private/etc/inetd.conf alla riga che controlla il server
ftp
#ftp
stream
tcp
nowait
root /usr/libexec/tcpd
ftpd
che viene decommentato
ftp
stream
tcp
nowait
root /usr/libexec/tcpd
ftpd
Ogni volta che un utente si collega tramite la porta assocata al servizio ftp (solitamente
la 21) il demone ftpd legge il file/private/etc/inetd.conf e ricava le istruzioni per il
funzionamento.
Si tratta di un server inetd. Altri tipi di server, come Apache,possono avere un
funzionamento standalone, che significa che le istruzioni vengono lette all’avvio del
server e non necessitano della rilettura del file di configurazione ad ogni collegamento.
Se installate un server diverso, per es proftp, la riga rinvia al nuovo programma
ftp stream tcp nowait root /usr/libexec/tcpd
/usr/local/sbin/proftpd
Altre modifiche del file possono essere utili per determinare le caratteristiche di
funzionamento del server ftp. Alcune sono discusse più avanti.
Altre possono essere viste digitando, da Terminale:
man ftpd
e
man ftp