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