Panoramica sulla situazione attuale
Con la nascita ed evoluzione di Internet e con il notevole incremento dei suoi utenti, sono sorti problemi di sicurezza:
- La suite di protocolli TCP/IP non prevede nessun meccanismo che garantisce confidenzialità e privacy tra gli utenti.
- Gli scenari e le applicazioni in cui è richiesta confidenzialità e privacy delle connessioni sull'inter-rete sono molteplici.
- Accedere in maniera privata ad una directory remota dislocata su di un server è uno di questi possibili scenari.
Una directory è un database specializzato per la lettura e la ricerca, con la possibilità di contenere informazioni basate su attributi o descrizioni, offrendo supporto di sofisticate capacità di ricerca attraverso dei filtri e risposte veloci ad operazioni di consultazione o di ricerca su volumi di dati enormi.
Alcuni servizi di directory sono locali: forniscono servizi ad un ristretto contesto, ad esempio una singola macchina.
Altri servizi sono globali: forniscono servizi ad un contesto più ampio, quale ad esempio l’intera Internet.
I servizi globali sono distribuiti: i dati contenuti sono memorizzati in diverse macchine, ognuna delle quali provvede al servizio di directory. torna su
Progetto della soluzione
LDAP è un acronimo che sta per LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL. È un protocollo leggero per accedere ai servizi di directory, basati sul protocollo X.500. Opera su TCP/IP o su altre connessioni orientate ai servizi di trasferimento.
Il modello di informazioni di LDAP è basato sulle entry che sono collezioni di attributi che hanno un unico nome globale: il Distinguished Name (DN). Ogni attributo della entry ha un tipo ed uno o più valori, che sono stringhe mnemoniche, come cn per i common name, oppure mail per gli indirizzi di posta elettronica.
Le entry di una directory sono strutturate come in una struttura gerarchica ad albero: la entry che rappresenta il paese si trova alla radice dell’albero, al di sotto di essa ci sono quelle che rappresentano stati e organizzazioni nazionali e infine seguono poi altri tipi di entry che possono rappresentare organizzazioni, persone, stampanti, documenti, ecc.

Il protocollo LDAP definisce servizi per accedere e aggiornare una directory; l’operazione più usata è quella di ricerca di informazioni all’interno della directory e LDAP fornisce un efficiente algoritmo di ricerca.
Molti servizi di directory non prevedono protezione per i dati e le informazioni. LDAP include un meccanismo nel quale un client si può autenticare, o provare la sua identità ad un directory server, infine consente servizi di privacy e di integrità delle informazioni.
Funzionamento di LDAP
Il servizio di directory LDAP è basato su un modello client – server: uno o più server LDAP contengono i dati che servono a costruire l’albero delle informazioni di una directory, il DIT (Directory Information Tree). Il client si connette al server e gli chiede informazioni, il server replica con risposte precise e/o con un puntatore ad eventuali informazioni addizionali, infine il client LDAP può comunicare sia con un server X.500 sia con un server LDAP.
torna su
Specifiche generali del sistema
Ora esplicitiamo le varie configurazioni delle directory
- Servizi di directory locali: in questa configurazione, esiste un unico server che offre servizi di directory solo in un unico dominio.

- Servizi di directory locali con riferimento: in questa configurazione, si imposta un server che offre servizi di directory per il dominio locale e lo si configura per ritornare riferimenti ad un servizio superiore capace di occuparsi di richieste esterne al dominio locale; è usata se si vogliono fornire servizi di directory locali e partecipare alla "Directory Globale" tramite Internet.

-
Servizi di directory replicati: in questo situazione è usato un demone per propagare cambiamenti da un server master del servizio ad uno o più server slave; può essere usata assieme ad altre in situazioni dove un solo server non offre l'affidabilità richiesta.

-
Servizio di directory locale distribuito: in questa configurazione, il servizio globale è partizionato in servizi più piccoli ognuno dei quali può essere replicato e unito a riferimenti superiori e subordinati.
torna su
Modalità di realizzazione
Per installare OpenLDAP è possibile scaricarlo dal sito http://www.openldap.org/. Una volta ottenuto il pacchetto in formato compresso lo si deve decomprimere con il comando:
gunzip -c openldap-VERSION.tgz | tar xf –
sostituendo VERSION con la versione corrente del pacchetto. Lo stesso pacchetto è disponibile anche in versione RPM per le versioni di Linux che supportano tale standard (RedHat, Suse, Mandrake).
Per il corretto funzionamento di OpenLDAP occorre installare software di terze parti: Kerberos per la gestione della sicurezza nel processo di autenticazione, librerie SASL di Cyrus per offrire servizi di autenticazione sicuri e ulteriori servizi di sicurezza
Slapd è il demone che gestisce le richieste dei client del servizio, esso supporta i TCP Wrappers per la gestione degli accessi a livello IP e per funzionalità di firewalling. La parte di backend del demone slapd richiede la presenza della libreria per la gestione di database SleepyCat Software Berkeley DB.Berkeley DB è disponibile dal mirror Sleepycat alla pagina http://www.sleepycat.com/download.html.
Lo script di configurazione configure supporta diverse opzioni e la gestione di flags e variabili d'ambiente. Per avere accesso a ulteriori informazioni sulla configurazione digitare il comando:
./configure --help
Inoltre lo script configure comprende la gestione di variabili d'ambiente per l'impostazione di particolari opzioni.
Successivamente fare il build del pacchetto; se la fase di configurazione è andata a buon fine sarà possibile generare le dipendenze per la compilazione, ciò avviene tramite il comando:
make depend
Il building dell'applicazione deve essere eseguito con il comando:
make
facendo attenzione all'output prodotto per vedere se sono stati generati errori durante tale fase.
Una volta che l'applicazione è stata configurata e compilata è possibile fare il testing dei file generati con il comando:
make test
Dopo aver testato i file generati in fase di building è ora possibile procedere all'installazione vera e propria. Innanzitutto è necessario verificare di essere in possesso dei privilegi di scrittura nelle directory specificate in fase di configurazione. Per default OpenLDAP è installato nella directory /usr/local/.Tipicamente la fase di installazione richiede i privilegi del superuser. Ottenuti i privilegi di root, dalla directory d'installazione di OpenLDAP si esegue il comando:
make install
prestando sempre attenzione all'output generato, nel caso siano presenti errori.
Slapd gestisce le richieste dei client del servizio. Spesso è in esecuzione su più macchine della rete per aumentare la disponibilità del servizio con una copia di parte o tutta la struttura dell’albero di directory 
Possono esistere più istanze di slapd (slave) che fanno riferimento ad un'istanza master. L'istanza master mantiene un file di log con le informazioni che il demone slurpd passerà alle istanze slave

La configurazione del demone slapd avviene mediante il file slapd.conf solitamente posto nella directory /etc/openldap . Il file slapd.conf consiste di tre sezioni per la configurazione: global, backend specific e database specific.
Le informazioni della sezione global sono le prime ad essere specificate all'interno del file, successivamente sono definite le direttive della sezione di backend ed infine quelle di database. Le direttive globali possono essere sovrascritte da quelle di backend e/o di database , e le direttive di backend possono essere annullate dalle direttive di database.
Struttura di slapd.conf : Esempio
Le righe di commento iniziano con il simbolo #.La struttura di slapd.conf è simile alla seguente:
# Direttive di configurazione globali <global config directives>
# Definizioni di backend backend <typeA> <backend-specific directives>
# Definizione di direttive di database e tipo database <typeA> <database-specific directives>
# Seconda definizione di direttive di database database <typeB> <database-specific directives>
# Successive direttive di backend, database e di configurazione ...
access to attr=userPassword
by self write
by anonymous auth
by dn.base="cn=Admin, dc=example, dc=com" write
by * none
Specifica che l’amministratore può modificare l’attributo userPassword di qualsiasi entry, che ogni entry può modificare il suo attributo userPassword e che tutti gli altri non hanno permesso di lettura e di scrittura.
access to *
by dn.base="cn=Admin, dc=example, dc=com"
write
by * read
Specifica che l’amministratore ha permesso di scrittura su qualsiasi oggetto e tutti hanno permesso di lettura su tutti gli oggetti.
Slapd è stato progettato per essere eseguito come server stand-alone. I comandi per avviare slapd variano a seconda del tipo di installazione che è stata fatta, se da file RPM oppure da sorgenti.
Per installazioni da RPM digitare da riga di comando:
#/etc/init.d/slapd start
Per installazioni da sorgenti:
#/usr/local/etc/libexec/slapd start
Anche la terminazione varia a seconda del tipo di installazione che è stata fatta.
Per installazioni da RPM:
#/etc/init.d/slapd stop
Per installazioni da sorgenti:
#kill –INT ‘cat /usr/local/var/slapd.log’
Per quanto riguarda la procedura di avvio è possibile specificare opzioni della riga di comando.Le più utili sono:
-f <nome_file>
Specifica il percorso del file di configurazione
-h <URL>
Specifica configurazioni alternative per il listener.
quella di defaul è ldap:// che implica LDAP su TCP su tutte le
interfacce e porta 389
-n <nome_servizio>
Specifica il nome del servizio.Default=slapd
-l <syslog-utente-locale>
Specifica l’utente abilitato al syslog
torna su
Analisi costi benefici
Le politiche di sicurezza assumono un’importanza quanto mai vitale in un contesto di autenticazione/autorizzazione. In realtà aziendali dove concetti quali sicurezza dei dati, certificazione e privacy sono ormai di primaria importanza, l’esistenza di protocolli intrinsecamente insicuri non può essere che relegata a casi del tutto eccezionali.
L’identità del server LDAP è garantita dal suo certificato, che deve essere distribuito a tutti i client.
Oltre alla sicurezza delle transazioni, è stata dedicata particolare attenzione alla sicurezza dei dati residenti nel server LDAP, che rappresenta a tutti gli effetti il repository vero e proprio delle informazioni. A questo scopo, esiste un unico amministratore che a sua volta definisce le politiche di accesso ai dati in base all’utenza.
Tipicamente un utente deve essere in grado di poter leggere i suoi dati personali, modificare la propria password, e leggere dati pubblici. Ogni accesso ad altri dati viene negato.
In generale, le performance di un sistema di autenticazione possono essere valutate basandosi sui tempi medi di risposta ad un tentativo di login.
In un architettura basata su LDAP, i tempi di risposta sono mediamente superiori, specialmente con server LDAP particolarmente popolati.
Sono inoltre disponibili funzionalità di load balancing, con la possibilità di mantenere sottorami dell’albero LDAP in server diversi.
Un semplice meccanismo di linking permette di mantenere l’effettiva univocità logica della struttura.
Il beneficio che se ne trae anche in termini di scalabilità è notevole, soprattutto considerando il fatto che diversi server LDAP possono essere strutturati gerarchicamente su più livelli.
In scenari particolarmente complessi,LDAP può scalare per aree geografiche.
Infine può essere implementato un meccanismo di replicazione, anch’esso estremamente semplice dal punto di vista concettuale, con lo scopo di mantenere altre copie del server LDAP, sincronizzate col principale, in grado di sostituirlo in caso di malfunzionamento dello stesso.
La modalità di sincronizzazione può essere personalizzata, in modo da non sovraccaricare la rete. Questo garantisce continuità del servizio sia nel caso di modifica dei dati che per manutenzione del server.
torna su
Autenticazione con LDAP usando openLDAP e PAM
Nel seguito viene descritto come settare le 3 componenti necessarie per l’autenticazione attraverso un server LDAP. Occorre :
- aggiungere i campi necessari nel server LDAP
- installare e configurare i moduli PAM
- installare e configurare le librerie nsswitch
torna su
Aggiungere informazioni utente al database LDAP
Per usare LDAP autentication occorre aggiungere tutte le dipendenze al database. La migliore fonte per questo tipo di cose sono i file /etc/passwd, /etc/group e /etc/shadow. Ci sono alcuni tool di migrazione che trasformano :
cat /etc/passwd
...
simon:rF4x4xNEP1bA.:1000:1000:Simon
Tenant,Fish-bowl,x 245,:/home/simon:/usr/bin/zsh
...
in qualcosa del genere :
dn: uid=simon,ou=People,dc=linuxcare,dc=com
uid: simon
cn: Simon Tennant
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {crypt}rF4x4xNEP1bA.
loginShell: /usr/bin/zsh
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/simon
gecos: Simon Tennant,Fishbowl,x 245
Questi tools sono disponibili al seguente indirizzo :
http://www.padl.com/download/MigrationTools.tgz. Vi sono una serie di script, il più importante è migrate_passwd.pl che trasforma le entries di /etc/passwd nel formato LDIF.
Script |
Migra |
migrate_fstab.pl |
/etc/fstab |
migrate_group.pl |
/etc/group |
migrate_hosts.pl |
/etc/hosts |
migrate_networks.pl |
/etc/networks |
migrate_passwd.pl |
/etc/passwd |
migrate_protocols.pl |
/etc/protocols |
migrate_rpc.pl |
/etc/rpc |
migrate_services.pl |
/etc/services |
Tabella 1
Per il server LDAP occorre caricare le entries nel database LDAP.
/etc/init.d/openldapd stop
ldif2ldbm -i /tmp/converted_passwd.out -f /etc/openldap/slapd.conf
Questocomando dipende dal tipo di database che si sta utilizzando con il server LDAP ( Nel caso della nostra guida il database è il Berkeley DB e quindi per aggiungere le entries al DIT usiamo il comando
# ldapadd –d “cn=admin,dc=example,dc=com” –W –f passwd.ldif
/etc/init.d/openldapd start
e controllare che le entries aggiunte ci siano nel seguente modo :
ldapsearch -b dc=linuxcare,dc=com objectclass=posixaccount
Se invece non stiamo migrando un sistema ma costruendone uno nuovo possiamo usare uno strumento grafico realizzato in Python chiamato LUMA che tra le varie funzionalità ha quella di poter creare utenti in modo ‘massive’ consentendo una popolazione iniziale del server LDAP.
torna su
Settare i moduli PAM
Linux usa PAM (Pluggable Authentication Modules) per l’autenticazione. Pam è facilmente configurabile. I file di Pam si travano in /etc/pam.d. L’autenticazione con PAM funziona sostituendo i moduli /etc/passwd e /etc/group con il modulo ldap.so
La configurazione di pam sshd è la seguente :
cat /etc/pam.d/ssh
#%PAM-1.0
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
Per usare ladap authentication occorre scaricare un modulo che può essere sostituito per "pam_unix.so" che controlla le passwords al server ldap.
I due file principali sono sono /lib/security/pam_ldap.so che comunicano con il server LDAP e /etc/pam_ldap.conf che rappresenta il modulo con il quale il server ldap dovrebbe comunicare e al quale vengono effettuate le query.
Il passo successivo consiste nel settare il file /etc/pam_ldap.conf a seconda dell’organizzazione della struttura. Ad esempio :
cat /etc/pam_ldap.conf
# Your LDAP server.
host ldap.linuxcare.com
# The distinguished name of the search base.
base dc=linuxcare,dc=com
# Use the V3 protocol to optimize searches
ldap_version 2
# Hash password locally; required for University of
# Michigan LDAP server, and works with Netscape
# Directory Server if you're using the UNIX-Crypt
# hash mechanism and not using the NT Synchronization
# service.
pam_crypt local
Come è possibile vedere, tutte le queries vengono inviate a ldap.linuxcare.com e cercate da dc=linuxcare,dc=com.
Per effettuare dei cambiamenti occorre modificare il file /etc/pam.d/ssh.
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
auth required /lib/security/pam_pwdb.so shadow nodelay
account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow nullok use_authtok
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required /lib/security/pam_pwdb.so
torna su
Settare le librerie nsswitch
Varie funzioni nella libreria C come login e passwd hanno bisogno di essere configurati per lavorare con ldap. nsswitch permette appunto di fare questo. Un buon esempio è quando viene effettuato un comando ls su una directory che contiene files che sono di proprietà di un utente ldap.
ls -l /home
drwxr-sr-x 3 redsteel users 1024 Feb 27 05:44 redsteel
drwxr-sr-x 5 rob users 1024 May 27 13:54 rob
drwxr-sr-x 2 robert users 1024 Sep 12 1999 robert
drwxr-sr-x 5 rslomkow users 1024 Jul 15 19:40 rslomkow
drwxr-sr-x 3 10002 users 1024 Jun 22 1999 sam
drwxr-sr-x 85 10011 users 7168 Jul 24 12:09 simon
drwxr-sr-x 2 10301 users 1024 Jun 30 17:53 stephane
Per fare questo ls ha bisogno di controllare gli uids e gids dei files nella directory. A questo proosito si può usare nsswitch. E’ possibile istruire tutti i programmi che dipendoo dalla libreria C di controllare per prima gli uids e gids in /etc/passwd e /etc/group e controllare il server ldap.
ls -l /home
drwxr-sr-x 3 redsteel users 1024 Feb 27 05:44 redsteel
drwxr-sr-x 5 rob users 1024 May 27 13:54 rob
drwxr-sr-x 2 robert users 1024 Sep 12 1999 robert
drwxr-sr-x 5 rslomkow users 1024 Jul 15 19:40 rslomkow
drwxr-sr-x 3 sam users 1024 Jun 22 1999 sam
drwxr-sr-x 85 simon users 7168 Jul 24 12:09 simon
drwxr-sr-x 2 stephane users 1024 Jun 30 17:53 stephane
Con nsswitch installato è possibile chiamare ls al server ldap per gli uids che non possono essere cercati localmente in /etc/passwd. Cosi l’uid 10002 è convertito in sam, 10011 in simon e così via.
torna su
Settare nss_ldap
Sono disponibili dei file preconfigurati di nss per ldap sul sito http://www.padl.com
Dobbiamo dire a libnss-ldap da dove prendere le informazioni utente:
cat /etc/lib-nss-ldap.conf
Questo è quello che ci appare a schermo:
# Your LDAP server. Must be resolvable without using LDAP.
host ldap.linuxcare.com
# The distinguished name of the search base.
base dc=linuxcare,dc=com
# The distinguished name to bind to the server with.
# Optional: default is to bind anonymously.
#binddn cn=manager,dc=padl,dc=com
# The credentials to bind with.
# Optional: default is no credential.
#bindpw secret
# The hashing algorith your libc uses.
# Optional: default is des
#crypt md5
#crypt sha
#crypt des
C’è davvero poco da modificare rispetto alla configurazione di default. Sid eve cambiare il server ldap al quale ci si intende connettere e a quale parte dell’albero. Nell’esempio ci colleghiamo al ramo “dc=linuxcare,dc=com”.
Adesso dobbiamo dire a nsswitch di cercare gli uid e gid nell’albero ldap.
cat /etc/nsswitch.conf
# the following two lines obviate the "+" entry in /etc/passwd and /etc/group.
passwd: files ldap
group: files ldap
Questa configurazione dice a ldap di guardare prima nel file /etc/passwd e poi nel server ldap.
Per testare la configurazione ldap facciamo:
getent passwd
questo commando concatenerà il file /etc/passwd e gli utenti ldap che hanno un match positive per la ricerca
ldapsearch -b dc=linuxcare,dc=com objectclass=posixaccount
e mostrerà l’output a schermo. Dovresti adesso vedere una lista di utenti locali e utenti presi dal server LDAP.
stephane:nHBA0fvpJqzvk:1009:100::/home/stephane:/bin/bash
r3cgm:pCVsIxSgbsuNY:1011:1011:Christopher Mann,,,:/home/r3cgm:/usr/bin/tcsh
simon:x:15000:100:Simon Tennant (ldap test account):/home/simon:/bin/bash
Nota che adesso gli utenti ldap (in questo caso simon) non hanno una password criptata( solo una ‘x’). Questo perché la password è solo confrontata con il server, e mai inviata dal server al client.
Con questo si conclude la fase di setup del sistema e si può iniziare la fase di testing.
Per effettuare il testing abbiamo deciso di provare a configurare il webserver apache come client per un server LDAP (Figura 14).
torna su
Architettura del server LDAP
L’architettura del server LDAP è strutturata nel seguente modo :
- daemon LDAP chiamato slapd
- Scelta dei database
- SHELL : interfaccia db per comandi UNIX
- PASSWORD : semplice file di paswd
- SQL : che mappa sql a ldap
- Più instanza di database
- Controllo degli accessi

Figura 13
torna su
Apache basato su server WebDAV con LDAP

Figura 14
L’obiettivo che ci poniamo è quello di settare Apache + mySQL + PHP + WebDAV basato su un Web Application Server che usa LDAP per l’autenticazione. WebDAV sta per Web enabled Distributed Authoring and Versioning. Fornisce un ambiente collaborativo per utenti per gestire file su un web-server. Tecnicamente DAV è un’estensione del protocollo http. In seguito vi è una breve descrizione delle funzionalità fornite da DAV :
- Overwrite Protection: meccanismo lock e unlock per prevenire il problema "lost update”
- Properties: Metadata (titolo, argomento, creatore, etc)
- Name-space management: copia, rinomina, e cancellazione di file
- Access Control: limita l’accesso alle varie risorse
- Versioning: controllo di revisione per i documenti.
Questa funzionaliità ancora non è implementata.
torna su
Installazione
Prerequisiti
L’applicazione server richiede le librerie SSL e le librerie LDAP
Mysql
Installare mySQL é abbastanza semplice. Occorre creare un user : group per il daemon mysql e copiare i file nelle appropriate directories.
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
# ln -s full-path-to-mysql-VERSION-OS mysql
In seguito occorre eseguire lo script install_db e cambiare i permessi ai files
# cd mysql
# scripts/mysql_install_db
# chown -R mysql .
Avviare Mysql
Facciamo partire il server mySQL per verificare l’installazione
# bin/mysqld_safe --user=mysql &
Arrestare Mysql
Per stoppare il server MySQL seguire le instruzioni di seguito
# cd /usr/local/mysql
# ./bin/mysqladmin -u root -p shutdown
Localizzare la Directory dei dati
il daemon mysql memorizza le informazioni in una directory chiamata "Data Directory", che dovrebbe trovarsi sotto /use/local/mysql/data.
Apache 2.0
Occorre settare alcuni FLAGS
# export LDFLAGS="-L/usr/local/iplanet-ldap-sdk.5/lib/ -R/usr/local/iplanet-ldap-sdk.5/lib/:/usr/local/lib"
# export CPPFLAGS="-I/usr/local/iplanet-ldap-sdk.5/include"
UNTAR il file sorgente apache 2.0 e eseguire lo script configure
# cd /tmp/download
# gzip -d httpd-2.0.46.tar.gz
# tar -xvf httpd-2.0.46.tar
# cd httpd-2.0.46
#./configure --enable-so --with-ssl --enable-ssl --enable-rewrite --enable-dav
Eseguire il comando make
# make
# make install
Avviare Apache
# /usr/local/apache2/bin/apachectl start
Arrestare Apache
# /usr/local/apache2/bin/apachectl stop
mod-auth-ldap
Untar modauthldap_apache2.tar.gz
cd /tmp/download
# gzip -d modauthldap_apache2.tar.gz
# tar -xvf modauthldap_apache2.tar
# cd modauthldap_apache2
Ora occorre configurare e installare mod_auth_ldap
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-ldap-dir=/usr/local/iplanet-ldap-sdk.5/
# make
# make install
PHP
Unzippare il file sorgente PHP
gzip -d php-xxx.tar.gz
tar -xvf php-xxx.tar
Esueguire il comando
cd php-xxx
./configure --with-mysql --with-apxs=/usr/local/apache2/bin/apxs
e compilare
# make
# make install
Copiare il file php nella directory appropriata
cp php.ini-dist /usr/local/lib/php.ini
torna su
Configurare e settare WebDAV services
Modifiche a /usr/local/apache/conf/httpd.conf
Come prima cosa occorre verificare che le seguenti direttive di Apache appaiano in /usr/local/apache/conf/httpd.conf :
Addmodule mod_dav.c
In seguito specifichiamo dove Apache dovrebbe memorizzare il file DAVLockDB. DAVLockDB è un db per WebDA. Memorizza il file DAVLock sotto /usr/local/apache/var. Aggiungi la seguente linea a /usr/local/apache/conf/httpd.conf per specificare che il file DAVLockDB dovrebbe trovarsi sotto /usr/local/apache/var :
DAVLockDB /usr/local/apache/var/DAVLock
torna su
Creare una directory per DAVLockDB
Deve essere creata una directory che può essere scritta dal web server process. Di solito il web server process è eseguito sotto l’user 'nobody'. Occorre verificarlo con il comando:
ps -ef | grep httpd
Sotto /usr/local/apache occorre creare la directory e settare i permessi usando il seguente comando :
# cd /usr/local/apache
# mkdir var
# chmod -R 755 var/
# chown -R nobody var/
# chgrp -R nobody var/
torna su
Usare DAV
Per usare DAV per una direcotory sotto Apache root occorre aggiungere la seguente direttiva nel conteiner per quella particolare directory :
DAV On
Viene mostrata una semplice configurazione che utilizza WebDAV e authentication LDAP su /usr/local/apache/htdocs/DAVtest.
Occorre aggiungere il seguente frammento nel file /usr/local/apache/conf/httpd.conf
DavLockDB /tmp/DavLock
<Directory "/usr/local/apache2/htdocs/DAVtest">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "SMA Development server"
AuthType Basic
LDAP_Debug On
#LDAP_Protocol_Version 3
#LDAP_Deref NEVER
#LDAP_StartTLS On
LDAP_Server you.ldap.server.com
#LDAP_Port 389
# If SSL is on, must specify the LDAP SSL port, usually 636
LDAP_Port 636
LDAP_CertDbDir /usr/local/apache2/sslcert
Base_DN "o=SDS"
UID_Attr uid
DAV On
#require valid-user
require valid-user
#require roomnumber "123 Center Building"
#require filter "(&(telephonenumber=1234)(roomnumber=123))"
#require group cn=rcs,ou=Groups
</Directory>
torna su
Creare una Directory chiamata DAVtest
Tutte le directory DAV devono essere scrivibili sul WebServer process. In questo esempio assumiamo che WebServer lavori sotto l’username 'nobody'.
# ps -ef | grep httpd
Occorre creare una directory test chiamata ‘DAVtest' sotto /usr/local/apache2/htdocs :
# mkdir /usr/local/apache/htdocs/DAVtest
Occorre usare il seguente comando :
# cd /usr/local/apache/htdocs
# chmod -R 755 DAVtest/
# chown -R nobody DAVtest/
# chgrp -R nobody DAVtest/
Riavviare Apache
Eseguire
# /usr/local/apache/bin/apachectl configtest
Se il configtest è stato eseguito con successo avvia il apache web-server:
# /usr/local/apache/bin/apachectl restart
torna su
Gestione del server WebDAV
In questa sezione si discutono i vari task di gestione, ad esempio usare LDAP per controllare gli accessi e lavorare con il metodo DAV su Apache. La maggior parte dei cambiamenti di configurazione per DAV saranno fatti usando il file httpd.conf. Questo file si trova sotto /usr/local/apache/conf/httpd.conf. Prima di rendere effettivi i cambiamenti e riavviare apache occorre testare la validità di httpd.conf usando il comando /usr/local/apache/bin/apachectl configtest .
Se il risultato del comando è Syntax OK allora possiamo riavviare apache usando il comando
# /usr/local/apache/bin/apachectl restart
torna su
Limitare l’accesso alle condivisioni DAV
Nella sezione precedente abbiamo creato il DAVtest condiviso, usiamo LDAP per l’autenticazione. Comunque chiunque può auternticarsi usando il proprio LDAP useri/passwd che permette di accedere alla cartella . Usando la direttiva require in file httpd.conf possiamo limitare l’accesso ad alcune persone o ad un gruppo di persone. Se osserviamo la configurazione DAVtest della precedente sezione
<Directory /usr/local/apache/htdocs/DAVtest>
Dav On
#Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "LDAP_userid_password_required"
AuthType Basic
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>
LDAP_Server ldap.server.com
LDAP_Port 389
Base_DN "o=ROOT"
UID_Attr uid
</Directory>
osserviamo che require è settato a valid-user. Questo significa che ciascun utente autenticato ha accesso a questa cartella .
torna su
Limitare l’accesso basato su UID
LDAP UID può essere usato per limitare l’accesso alla cartella DAV
la direttiva require valid-user può essere cambiata in require user 334455 445566
Questo limita l’accesso alla persona con UID 334455 e 445566. Tutti gli altri non hanno il permesso di accedere alla cartella.
Limitare l’accesso a un gruppo di persone
require può essere usato per restringere l’accesso a un gruppo di persone. Questo può essere fatto usando LDAP groups o LDAP filters.
Limitare l’accesso in scrittura alle cartelle condivise
A volte si richiede che l’editing per le risorse sulle cartelle DAv condivise sia limitato solo ad alcuni utenti. Questo può essere fatto usando il tag <Limit> nel file httpd.conf
<Directory /usr/local/apache/htdocs/DAVtest>
Dav On
#Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "LDAP_userid_password_required"
AuthType Basic
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>
LDAP_Server ldap.server.com
LDAP_Port 389
Base_DN "o=ROOT"
UID_Attr uid
</Directory>
Limitiamo l’accesso ad alcuni utenti cambiando <limit> con
<Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require 334455
</Limit>
torna su
|