Configure FTP service on IIS |
Visite: 12859 |
sabato 1 aprile 2006 |
Page not translated!
I'm sorry but the text of this page doesn't have translation at this time.
In questo articolo illustrerò come configurare il servizio FTP di un server Microsoft
per ospitare un hosting di siti.
Il problema principale è quello che riguarda i permessi sulle cartelle e l'accesso
esclusivo degli utenti FTP nel proprio sito senza poter visualizzare, o alla peggio,
modificare file di altri utenti/siti. Il servizio da solo non è in grado di gestire
al meglio questo tipo di controlli e quindi dobbiamo fare largo uso della protezione
a livello di directory che il FileSystem NTFS ci offre.
Nelle istruzioni che seguono ipotizzerò di avere a disposizione un server Microsoft
Windows 2000/2003 fresco fresco di installazione ;-)
Per prima cosa stabiliamo in quale percorso andremo a collocare i nostri siti. Ovviamente
la prima cosa da fare sarebbe evitare di utilizzare la directory "C:\Inetpub\wwwroot\"
facile preda da parte di chi vuol rovinare il nostro sudato lavoro di configurazione.
Ipotizziamo quindi di avere a disposizione un secondo disco D e creiamo la cartella
"Web" in root. All'interno di "Web" creiamo queste sottocartelle:
All'interno di wwwroot collocheremo i siti da ospitare suddivisi in cartelle
(un sito, una cartella) mentre la ftproot la utilizzeremo come Home Directory
FTP (che analizzeremo in seguito).

(esempio del percorso da utilizzare per il servizio FTP)
Come già detto per configurare al meglio il servizio FTP è necessario utilizzare
sapientemente i permessi NTFS sulle precedenti cartelle in modo da costruire un
solido e sicuro strumento per i nostri utenti.
Iniziamo ad indicare i permessi dalla cartella "Web": clicchiamoci sopra con il
destro del mouse e selezioniamo la scheda Security

Da qui in poi tutti i file/cartelle presenti in "Web" dovranno ereditare i permessi
che imposteremo: Administrators (il gruppo) e SYSTEM in FULL CONTROL. Eliminiamo
quindi ogni altro utente presente (soprattutto EVERYONE).
Attenzione: vi consiglio di effettuare queste modifiche solo su un server
non ancora in produzione altrimenti rischiate di rendere inaccessibile il vostro
server.
Poi, siccome la cartella wwwroot contiene i siti dei clienti e quindi vengono
visitati da utenti anonimi, è necessario impostare i permessi in lettura per questi
utenti:

Il gruppo Administrators e l'utente SYSTEM vengono ereditati direttamente dalla
cartella "Web", mentre dobbiamo aggiungere l'utente IUSR_<nomemacchina> con
permessi in sola lettura (gli utenti guest di Internet vengono identificati con
questo utente).
Così facendo, tutti i siti presenti in wwwroot sono ad accesso in lettura
per gli utenti anonimi.
Lanciamo quindi IIS e andiamo nelle proprietà del server FTP (che ovviamente dovrà
essere stato installato). Come prima cosa entriamo nella scheda Security Accounts
e disabilitiamo l'accesso anonimo al server in modo che gli utenti FTP dovranno
indicare le proprie informazioni di accesso per accedere:

Bene, spostiamoci sulla scheda Home Directory. Qui dovremo indicare la directory
di default del servizio FTP. Viene subito da pensare alla directory "D:\Web\wwwroot\"
perché è li che si trovano tutti i siti presenti sul server, ma purtroppo alla fine
questa strada risulterà sbagliata. Facciamo comunque una prova: inseriamo per ora
come Home Directory la cartella "D:\Web\wwwroot\" ma senza dare i permessi
in scrittura perché non serviranno. Infatti la gestione dei permessi verrà effettuata
via NTFS.
Cominciamo con un esempio: ipotizziamo che il sito www.adhoc.net presente
sul nostro server dovrà essere amministrato da un nostro cliente.
La prima cosa da fare è creare un utente di Windows ed assegnargli una password:

Subito dopo eliminate l'assegnazione del gruppo Users per questo utente (di default
Windows assegna i nuovi utenti al gruppo Users). In pratica l'utente in questione
non deve essere assegnato ad alcun gruppo.
Bene, ora assegniamo i permessi in lettura/scrittura per questo utente nella cartella
www.adhoc.net:

Per i permessi di cancellazione è necessario entrare nella sezione Advanced
ed indicare che l'utente può anche cancellare:

Ora l'utente ftp_adhoc potrà leggere, modificare e cancellare i file presenti
nel suo sito.
Questo utente però ha solo i permessi per lavorare all'interno del proprio sito,
non può quindi ne leggere ne scrivere su altre cartelle del server. Tutto ciò è
molto interessante perché se anche in qualche modo si trovasse (per caso...) in
una cartella non di sua proprietà, non potrebbe leggere e tanto meno accedervi.
E' quindi estremamente importante capire come assegnare i permessi alle directory
per evitare futuri problemi di sicurezza.
Benissimo, ora ritorniamo sull'IIS nel servizio FTP e creiamo una directory virtuale
con lo stesso nome dell'account creato precedentemente. Solo così il servizio
FTP saprà che quel utente va rediretto alla cartella, nel ns. esempio, www.adhoc.net:

Per quanto riguarda i permessi da assegnare a questa directory, indichiamo sia lettura
che scrittura. Questo perché il servizio FTP verifica tali permessi prima di farlo
a livello di FileSystem.
Mi spiego meglio: ipotizziamo di impostare i permessi in lettura/scrittura per questa
cartella ma nella scheda Security della cartella www.adhoc.net non abbiamo indicato
quelli in scrittura:
-
Permessi servizio FTP per directory virtuale ftp_adhoc
-
Permessi NTFS sulla cartella D:\Web\wwwroot\www.adhoc.net
Il servizio FTP permette di scrivere in quella cartella ma appena il FileSystem
NTFS viene richiamato mediante accesso I/O questo nega la scrittura su disco. Se
avessimo impostato:
-
Permessi servizio FTP per directory virtuale ftp_adhoc
-
Permessi NTFS sulla cartella D:\Web\wwwroot\www.adhoc.net
non potevamo comunque scrivere nella cartella ma in questo caso sarebbe stato il
servizio FTP a negarcelo.
Capite ora l'importanza dei permessi NTFS, se il servizio FTP è di più facile attacco
da parte di estranei, il FileSystem di Windows è sempre più ostico da "bypassare".
Dopo aver creato la directory virtuale ftp_adhoc possiamo subito fare un
test di collegamento al server FTP.
Utilizzando un client FTP (o da shell di DOS) connettetevi indicando l'ip del server
FTP, username e password. Se tutto è stato fatto come ho illustrato, riceverete
un bel messaggio di errore:
530 User ftp_adhoc cannot log in,
home directory inaccessible
Leggendo il messaggio di errore si capisce subito il motivo: quel "home directory
inaccessibile" ci fa capire che l'utente ftp_adhoc non ha i permessi in lettura
alla directory "D:\Web\wwwroot". Ed infatti è proprio così, visto che su wwwroot
ci sono Administrators, System e IUSR_<nomemacchina>!
Senza saltare a conclusioni affrettate pensiamo un attimo alla soluzione del problema.
Cosa facciamo in questo caso? Diamo accesso in lettura a tutta la directory wwwroot?
In questo modo però se l'utente ftp_adhoc entra via ftp al proprio sito e
dalla root di esso "torna su" di directory che succederebbe? Eh si, avrebbe la possibilità
di vedere tutte le cartelle presenti in wwwroot ed entrarci a suo piacere
(ma senza effettuare modifiche perché solo in www.adhoc.net ha i permessi
in scrittura). Questa però non è una soluzione molto elegante quindi adottiamo un
piccolo stratagemma...
Vi ricordate dell'ormai dimenticata ftproot? Bene, proviamo a fare così:
impostiamo questa directory come Home Directory del servizio FTP. In questo
modo, quando un utente accede via FTP, il server redirige l'utente prima sulla Home
Directory (ecco il perché dell'errore di prima) poi, se presente una directory
virtuale con il suo stesso nome, all'interno della sua cartella. Quindi è necessario
impostare i permessi in lettura alla cartella Home Directory (bastano in
lettura, no?) e lettura/scrittura per quella del sito da gestire (cosa che abbiamo
già fatto).
Prima di assegnare la lettura sulla ftproot però pensiamo anche ad un'altra
cosa: per ogni utente ftp dovremmo aggiungere i permessi lettura/modifica alla sua
cartella e lettura per la ftproot. Perché andare ad aggiungere n utenti in
lettura sulla cartella ftproot quando possiamo benissimo creare un gruppo
FTP Users (ad es.) che li raccolga tutti?
Perfetto: creiamo quindi il gruppo FTP Users ed assegniamo l'utente ftp_adhoc
a questo gruppo:

Ora impostiamo nella cartella ftproot i permessi in lettura per questo gruppo:

Ed ora che succede? Succede che l'utente ftp_adhoc, loggandosi via ftp, viene
prima rediretto alla Home Directory dove ha i permessi in lettura (perché
fa parte del gruppo FTP Users e questo gruppo può leggere in questa directory)
e successivamente alla sua cartella personale www.adhoc.net (dove ha i permessi
in lettura/scrittura). Proprio quello che volevamo! E se l'utente provasse a "tornar
su" di directory? Beh, tornare su torna, ma viene rediretto alla Home Directory
perché quella è la directory di default del servizio FTP.
Ecco come abbiamo impostato il servizio:
|
Directory FTP |
Directory fisica |
|
Home Directory |
D:\Web\ftproot |
|
ftp_adhoc |
D:\Web\wwwroot\www.adhoc.net |
Come potete notare la directory wwwroot è ben protetta da questo piccolo
trucco.
Nella cartella ftproot ovviamente l'utente potrà solo leggere e null'altro.
Possiamo pensare di inserire un qualche file di informazione per tutti gli utenti
ad esempio.
Detto questo penso di aver concluso con le spiegazioni. Ora faccio un altro esempio:
poniamo di aggiungere un nuovo sito sul server (ad es. www.html.it).
I passi da seguire sono:
-
creare la cartella www.html.it sotto "D:\Web\wwwroot\"
-
create l'utente ftp_html (ovviamente è solo un esempio voi potete nominarlo
come più vi aggrada)
-
assegnate all'utente ftp_html il gruppo FTP Users e togliete il gruppo
Users
-
impostate i permessi in lettura/scrittura/cancellazione alla cartella www.html.it
per l'utente ftp_html
-
create una directory virtuale nel servizio FTP di IIS con lo stesso nome dell'utente
(nel nostro caso ftp_html), assegnate i permessi FTP in lettura/scrittura
e fatela puntare alla cartella "D:\Web\wwwroot\www.html.it\"
-
effettuate un collegamento FTP di prova per testare il tutto
-
... ovviamente non dimenticatevi di creare il sito web sotto IIS ;-)
Volendo è possibile anche attivare la Quota su disco in modo da dare un massimo
di spazio per ogni utente che possiede un sito.
|
Salve a tutti,
Stò configurando in questi giorni il server FTP IIS6.0,la mia domanda è questa;
tutta la procedura come è impostata,come
"do not isolate users"oppure"isolate users"
Grazie mille,Saluti Mauro
|
| Scritto da mauro grazioli - lunedì 26 marzo 2007 alle ore 12.42 |
|
Ciao Mauro, in IIS6 è stata introdotta questa nuova funzionalità ma se segui le mie indicazioni non hai bisogno di isolare gli utenti. Hai già "isolato" abbastanza le cartelle. Impostando bene i permessi a livello di filesystem non devi preoccuparti di possibili exploit sul server FTP.
;-)
|
| Scritto da ZofM - lunedì 26 marzo 2007 alle ore 14.51 |
|
Ciao a tutti.
Vorrei chiedere se con ftp server di IIS6 esiste la possibilità di creare automaticamente (utilizzando anche uno script) una home utente quando questi si collega la prima volta come riesco a fare in linux.
Grazie,
--ruggero
|
| Scritto da Ruggero Giordano - giovedì 12 luglio 2007 alle ore 12.15 |
|
Ciao a tutti.
Vorrei chiedere se con ftp server di IIS6 esiste la possibilità di creare automaticamente (utilizzando anche uno script) una home utente quando questi si collega la prima volta come riesco a fare in linux.
Grazie,
--ruggero
|
| Scritto da Ruggero Giordano - giovedì 12 luglio 2007 alle ore 12.42 |
Scrivi nuovo commento