Nel
precedente post avevo introdotto (spero) IIS7 e la modalità di autenticazione "embedded", ossia senza far ricorso ad account Windows locali per l'autenticazione.
Ora parlermo di come configurarne uno.
Innanzitutto parliamo del servizio FTP Publishing
Per configurare un FTP occorre avere installato il servizio
FTP Publishing.
Se avete IIS 7.5 è già incluso nella pacchetto IIS (incluso, non installato) altrimenti occorre scaricarlo da qui:
-
FTP 7.5 for IIS 7.0 (x64)
-
FTP 7.5 for IIS 7.0 (x86)
Per installarlo (e quindi poi configurarlo dalla console IIS), occorre avviare la console
Server Manager (da administrative tools) e aggiungere il servizio FTP al ruolo
Web Server IIS.
E' tutto dettagliato qui:
http://learn.iis.net/page.aspx/29/installing-iis-70-on-windows-server-2008/
Già che ci siamo, installiamo anche i servizi
Url Authorization sotto "
Web Server - Security", e il servizio
Management Service sotto "
Management". Ci serviranno più avanti.
Se tutto è andato bene, dovremmo avere IIS 7.x configurato e con il servizio FTP pronto all'uso. Ce ne accorgiamo aprendo la console IIS (IIS 7.0 Manager): vedremo due gruppi di nuove icone (FTP e Management).
NB: IIS Manager è alla versione 7.0, ma serve a gestire sia IIS 7.0, sia IIS 7.5. Questo ha generato un po' di confusione, all'inizio... e credo che ancora ne generi, dal momento che molti di noi confondono un servizio (IIS 7.x) con la console di gestione (IIS 7 manager).
A questo punto potremmo andare avanti per delle ore a tradurre praticamente tutto quanto scritto su
learn.iis.net, ma ricordiamoci il nostro scopo:
1) creare un sito web
2) garantire l'accesso FTP ad un utente non windows
3) garantire l'accesso in HTTP ad un altro utente (o allo stesso)
Sul primo punto non ci sono problemi, spero. Creiamolo con accesso anonimo, standard. Poi vedremo come customizzarlo.
Partiamo col secondo.
Configurazione di un account IIS
Solo 5 step (
http://learn.iis.net/page.aspx/321/configure-ftp-with-iis-70-manager-authentication/):
1) fornire le grant all'account
Network Service in modo che possa "andare in giro" per la System32 a leggere le configurazioni di IIS; dal prompt, una riga per volta:
- CACLS "%SystemDrive%\Windows\System32\inetsrv\config" /G "Network Service":R /E
- CACLS "%SystemDrive%\Windows\System32\inetsrv\config\administration.config" /G "Network Service":R /E
- CACLS "%SystemDrive%\Windows\System32\inetsrv\config\redirection.config" /G "Network Service":R /E
2) creare una cartella di root dell'FTP (ad esempio
c:\ftproot, per essere originali)
3) dare le grant all'account
Network Service:
CACLS "c:\ftproot" /G "Network Service":C /T /E
4) abilitare l'autenticazione usando le credenziali di IIS: aprire IIS Manager, click sul nome del server, selezionare
Management Service,
e poi
Windows Credentials or IIS Manager credentials.
Non dimenticare di cliccare su
apply ;)
5) aggiungere il nostro utente: di fianco a Management Service click su
IIS Manager Users, e poi add user in alto a destra (
http://learn.iis.net/page.aspx/321/configure-ftp-with-iis-70-manager-authentication).
A questo punto il nostro utente può accedere a qualunque applicazione di IIS, FTP o web non importa. vediamo come.
Configurazione di un nuovo sito FTP
Seguiamo il wizard per creare un sito FTP:
1) specifichiamo la root di prima (c:\ftproot)
2) eventuali hostname
3) ignoriamo l'SSL (sì può fare anche quello, ma non occupiamocene adesso)
4) authentication:
NON selezioniamo "
basic authentication", tanto meno "
anonymous"
5) authorization:
NON selezioniamo nulla
6) fine.
Se abbiamo fatto le cose per bene avremo il ns FTP configurato.
Perché tutto funzioni, dobbiamo fare le seguenti verifiche:
1) click su
FTP authentication: deve essere abilitata la voce
IisManagerAuth
1.1) click su
Custom Providers in alto a destra
1.2) click su
IisManagerAuth
1.3) ok
1.4) le altre modalità possiamo anche disabilitarle
2) click su
FTP Authorization Rule: dobbiamo aggiungere il nostro utente
2.1) click su
Add allow rule
2.2) specificare l'utente e assegnargli i permessi r/w
2.3 ok
3) dobbiamo aggiungere il nostro utente anche in
IIS Manager Permission
3.1)
allow user
3.2) flag su
IIS Manager
3.3) digitare il nome dell'utente o selezionarlo mediante il tasto
select di fianco
3.4) ok
4) Fine. Il ns utente accede al ns FTP site con le credenziali fornite.
Luuunga, ma ce l'abbiamo fatta. E' più difficile a scrivere che a farsi.
Configurazione delle restrizioni di accesso sul website
Il sito creato al punto 1 è ora pubblico, accessibile a chiunque, e il ns utente può accedere in FTP. Solo lui.
Per fare in modo che anche il sito non sia fruibile in modalita anonima, occorre crearsi un altro account IIS come visto sopra e seguire i senguenti passi:
1) se abbiamo installato il servizio
Url authorization, nel gruppo IIS del nostro website (o di qualunque cartella o risorsa del sito), vedremo l'icona
Authorization Rules
2) click, rimuoviamo l'accesso di utenti anonimi
3) specifichiamo un utente preciso (il nostro) con
Add allow rule
3) eventualmente restringiamo il "verb" get/post se vogliamo essere pignoli
4) ok
Digitiamo l'url del ns sito: se tutto funziona, ci si presenta presenta una form per l'autenticazione. In caso contrario dobbiamo eseguire un ultimo step: aprire il
web.config nella root del sito e modificarlo come segue (
grassetto):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<modules>
<add name='WebManagementBasicAuthentication' type='Microsoft.Web.Management.Server.WebManagementBasicAuthenticationModule, Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' />
</modules>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" users="mio_user" />
</authorization>
</security>
</system.webServer>
</configuration>
Non ho capito il motivo di questo passaggio, in quanto davo per scontata l'esistenza di questo modulo nel
machine.config, ma è stata l'unica cosa che mi ha consentito di far funzionare il tutto.
Si noti la sezione
<authorization />: è stata creata da direttamente da IIS. Noi non abbiamo fatto nulla.
Digitiamo l'url del ns sito: ora tutto funziona. Se così non fosse... ho cannato il post :)
Le immagini del post sono "rubate" dal sito learn-iis. Mi scuso per eventuali incoerenza fra nomi utente e figure.
Tutto quanto è stato fatto da console IIS (IIS 7.0 Manager) è possibile farla da file di configurazione (web.config) o da console. Mi (e vi) risparmio i dettagli, grazie :)
Where do you go from here? IIS 7.x offre tanto. E' stato un po' articolato configurare un FTP in SSL, ma per problemi di firewall e di filezilla (client). Ho usato un certificato autogenerato, tra l'altro.
E' possibile creare un FTP di default per ciascun sito web presente (tasto dx -> add ftp site): più facile di così si muore! :)
E' possibile anche creare un FTP con accesso anonymous e cartelle virtuali con accesso esclusivo. Questa è stata la chicca: ne parlerò nel prossimo post.
Vorrei provare a smanettare con
webdav, ma devo trovare il tempo. Intanto mi segno il
link.
IIS7,
FTP,
HTTP,
Authentication,
hth,
a.