[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 320.   Servente OpenBSD FTP

Il servente OpenBSD FTP (1) è un programma molto semplice da installare e configurare, anche in un sistema GNU, con il vantaggio che è in grado di operare anche con il protocollo IPv6. Eventualmente, se il tipo di configurazione disponibile non è sufficiente per le proprie esigenze, si può optare per serventi FTP differenti, come WU-FTP che è descritto nel capitolo 321.

320.1   Avvio del demone

OpenBSD FTP, come altri serventi FTP mette a disposizione l'eseguibile in.ftpd (o ftpd, a seconda della distribuzione). Questo demone può funzionare in modo autonomo, oppure sotto il controllo del supervisore dei servizi di rete. Nel primo caso si avvia con l'opzione -D, mentre nel secondo si usa l'opzione -q.

In generale, l'opzione -q sta per quiet, nel senso di non inviare informazioni al programma cliente sulla versione del servente. L'opzione -q dovrebbe andare bene anche quando si avvia il programma in modo indipendente dal supervisore dei servizi di rete; in ogni caso, dalle prove eseguite, quando è sotto il controllo del supervisore dei servizi di rete sembrerebbe che senza l'opzione -q il programma non possa funzionare.

in.ftpd -D [opzioni]
in.ftpd -q [opzioni]

Nell'esempio seguente viene mostrata la riga di /etc/inetd.conf in cui si dichiara il suo possibile utilizzo per quanto riguarda il caso particolare di Inetd:

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -q

Dal momento che OpenBSD FTP viene usato anche con IPv6, conviene vedere la configurazione necessaria per il file /etc/xinetd.conf, nel caso il supervisore dei servizi di rete sia Xinetd:

service ftp
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        server          = /usr/sbin/in.ftpd
        server_args     = -q
}

Tabella 320.3. Alcune opzioni della riga di comando.

Opzione Significato mnemonico Descrizione
-d
debugging Vengono aggiunte informazioni diagnostiche all'interno del registro di sistema.
-l
log Ogni sessione FTP viene annotata all'interno del registro di sistema; se viene usata due volte, le indicazioni sono più dettagliate.
-t n
timeout Permette di specificare la durata espressa in secondi (n) del tempo di inattività oltre il quale la sessione FTP viene conclusa automaticamente. Questo parametro è negoziabile anche da parte del cliente. Il valore predefinito è di 15 minuti (900 s).
-T n
max timeout Permette di specificare la durata espressa in secondi (n) del tempo massimo di inattività. In questo modo, un cliente non può negoziare una durata superiore.
-A
anonymous Consente solo l'accesso anonimo, oppure solo le utenze elencate nel file /etc/ftpchroot.
-u maschera
umask Definisce un valore particolare della maschera dei permessi, che è 0278 in modo predefinito.
-p
no passive Disabilita la modalità «passiva», in modo da non accettare la creazione di connessioni a porte indicate dai clienti. Ciò serve a facilitare l'attraversamento di un firewall (purché il firewall consenta questo passaggio), ma può creare difficoltà ad alcuni programmi clienti (nelle prove eseguite, il programma si è rifiutato di accettare tale opzione).
-q
quiet Non mostra informazioni sulla versione al cliente che si collega.
-M
multihome Consente di gestire directory differenti per l'accesso anonimo, in base al nome di dominio presso cui giunge la richiesta, secondo la forma ~ftp/nome_di_dominio/.

320.2   Configurazione

La configurazione di OpenBSD FTP è molto semplice. Per prima cosa, l'accesso anonimo è consentito solo se nel sistema è previsto l'utente fittizio ftp, assieme alla sua directory personale e a una shell valida.(2) Convenzionalmente, una shell è valida quando è indicata nel file /etc/shells.

Teoricamente, OpenBSD FTP non richiede nemmeno la predisposizione di una struttura particolare della directory ~ftp/, secondo la tradizione, perché gestisce internamente il comando ls e di tutto il resto si può fare a meno.

Nel caso si utilizzi l'opzione -M, si deve provvedere a dividere la directory ~ftp/ in sottodirectory corrispondenti ai nomi di dominio con cui si può accedere al servizio. Per esempio, se l'elaboratore che ospita il servente OpenBSD FTP è raggiungibile con i nomi dinkel.brot.dg e weizen.mehl.dg, ci possono essere le directory ~ftp/dinkel.brot.dg/ e ~ftp/weizen.mehl.dg/; chi accede a ftp://dinkel.brot.dg in modo anonimo, vede la prima directory, mentre chi accede a ftp://weizen.mehl.dg vede la seconda.

Si rammenta che l'utente anonimo accede solo alla porzione di file system che inizia da ~ftp/, come se questa fosse la radice.

Dopo la sistemazione dell'accesso anonimo, conviene occuparsi del file /etc/ftpchroot, all'interno del quale si possono elencare gli utenti che, pur potendo accedere con il proprio nominativo, possono entrare solo nella propria directory personale, come avviene per gli utenti anonimi con la directory ~ftp/.

tizio
caio

L'esempio che si vede sopra è molto breve e serve a fare in modo che gli utenti tizio e caio possano accedere limitatamente alla propria directory personale; tutti gli altri utenti hanno accesso a tutto il file system, con le limitazioni normali date dai permessi dei file e delle directory.

OpenBSD FTP riconosce anche il file /etc/ftpusers, all'interno del quale vanno elencati i nominativi degli utenti a cui non si consente l'accesso. Generalmente si tratta di utenti fittizi, compreso root per questioni di sicurezza, come nell'esempio seguente:

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

Naturalmente, per compilare correttamente questo file, è bene osservare il file /etc/passwd del proprio sistema. Si osservi che per impedire l'accesso agli utenti anonimi, ovvero ftp e anonymous, occorre estendere questo file con tali nomi:

root
bin
daemon
adm
lp
...
nobody
ftp
anonymous

Infine, OpenBSD FTP riconosce anche il file /etc/nologin, in presenza del quale rifiuta gli accessi; inoltre, è possibile definire un messaggio di benvenuto nel file /etc/ftpwelcome e anche il contenuto di /etc/motd viene visualizzato all'accesso.

320.3   Organizzazione di un lavoro di gruppo attraverso un accesso FTP

Con OpenBSD FTP, sfruttando l'opzione -A è possibile gestire facilmente un gruppo di lavoro che ha la necessità di accedere a un elaboratore remoto, per esempio per curare i contenuti di un sito.

L'opzione -A, letteralmente, fa sì che vengano accettati soltanto utenti anonimi. In pratica, questo significa che si accettano le utenze che accedono a una porzione limitata del file system, attraverso l'uso della funzione chroot(). Questi utenti possono essere quelli anonimi per definizione, ovvero ftp e anonymous, assieme a quelli elencati nel file /etc/ftpchroot. Se però gli utenti ftp e anonymous sono indicati nel file /etc/ftpusers, si ottiene di consentire l'accesso solo a utenti veri e propri (elencati in /etc/ftpchroot), che devono fornire una parola d'ordine valida.

Per rendere più chiara questa possibilità, si descrive il problema pratico, che consiste nella necessità per un gruppo di persone di aggiornare una certa directory, per esempio /home/www/gruppo/. Una o poche persone, devono avere la possibilità di intervenire su tutta la struttura, mentre altri devono poter intervenire a partire da sottodirectory, come per esempio /home/www/gruppo/eventi/, /home/www/gruppo/notizie/ e altri.

In un sistema come questo, dove non si possono dare privilegi pari a quelli dell'utente root, l'ipotesi di strutturare le sottodirectory in modo che appartengano a utenti differenti, può essere poco pratica, perché in tal modo si dipende un po' troppo spesso dall'intervento dell'amministratore. Pertanto, tutti questi utenti potrebbero essere associati allo stesso numero UID e GID. Quello che segue è una porzione del file /etc/passwd:

gruppo:x:1007:1007::/home/www/gruppo:/bin/false
tizio:x:1007:1007::/home/www/gruppo:/bin/false
caio:x:1007:1007::/home/www/gruppo:/bin/false
sempronio:x:1007:1007::/home/www/gruppo/eventi:/bin/false
mevio:x:1007:1007::/home/www/gruppo/eventi/spettacoli:/bin/false
filano:x:1007:1007::/home/www/gruppo/notizie:/bin/false
martino:x:1007:1007::/home/www/gruppo/notizie:/bin/false
calpurnio:x:1007:1007::/home/www/gruppo/notizie/belle:/bin/false
gruppo:x:1007:1007::/home/www/gruppo/notizie:/bin/false

A queste utenze si affianca un'unica voce nel file nel file /etc/group:

gruppo:x:1007:

Nel file /etc/shadow appaiono tutte, per poter distinguere le varie parole d'ordine:

gruppo:x:12517:0:99999:7:::
tizio:jugu7576tfh6de565:12517:0:99999:7:::
caio:juhhjgh45fh6de565:12517:0:99999:7:::
sempronio:jugu7576tffdsw345:12517:0:99999:7:::
mevio:jsdfdfgdrt4545f65:12517:0:99999:7:::
filano:jusdf445vfh6de565:12517:0:99999:7:::
martino:dfsg4376tfh6de565:12517:0:99999:7:::
calpurnio:j98786j6tfh6de565:12517:0:99999:7:::

Nel file /etc/passwd appare per due volte l'utente gruppo, all'inizio e alla fine; ciò deve servire per assicurare di vedere sempre quel nome quando il numero UID viene tradotto in un nome. In particolare, il metterlo anche alla fine serve a garantire che il meccanismo funzioni anche quando si utilizza il NIS (si veda il capitolo 300). Come si può osservare, nessun utente è associato a una shell vera e propria, per evitare che sia possibile un accesso remoto differente, per esempio attraverso il protocollo SSH (si veda il capitolo 409), ma ugualmente quel nome deve apparire nel file /etc/shells.

Nel file /etc/passwd si fa in modo che l'utente fittizio gruppo non possa accedere, inibendo in pratica il campo della parola d'ordine, mentre per gli altri utenti, l'amministratore può assegnare delle parole d'ordine personali.

Osservando le directory personali nel file /etc/passwd si può comprendere che:

Si ricorda che tutto questo ha significato in quanto gli utenti che accedono vedono solo la porzione di file system che si articola a partire dalla propria directory personale.

Per completare il sistema, bisogna però impedire agli utenti che possano creare file e directory il cui nome inizia con un punto. Infatti, ciò potrebbe consentire qualche forma di configurazione, che, per un esperto, potrebbe servire a realizzare qualche tipo di raggiro utile a ottenere per se dei privilegi di accesso maggiori. Per impedirlo, conviene realizzare uno script che cancella inesorabilmente questi file e queste directory, da avviare periodicamente con l'aiuto di Cron:

#!/bin/sh
if [ -d ~gruppo ]
then
    find ~gruppo -name .\?\?\* -exec rm -fr \{\} \;
fi

1) OpenBSD FTP   UCB BSD

2) Il particolare della shell valida va tenuto in considerazione perché altri serventi FTP si comportano diversamente.


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome servente_openbsd_nbsp_ftp.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory