INSTALLARE UN DATABASE BIBLIOGRAFICO SU SUSE LINUX 9.2 CON APACHE, POSTGRESQL E DOCDB 1. INTRODUZIONE In questo tutorial si illustra come installare un sistema di gestione in rete di documenti, con relativa citazione bibliografica, tramite il server web Apache 2, il database PostgreSQL e il software specifico docdb, realizzato in PHP. In questa sede ci occuperemo dell'installazione di base di Apache 2 su SuSE Linux 9.2 e della configurazione necessaria per far funzionare correttamente DocDB con PostgreSQL. Le procedure necessarie per rendere sicuro il server web saranno solamente accennate. Consigliamo tuttavia di dedicarsi con cura ai settaggi delle impostazioni di Apache qualora il database sia installato su un server inserito in una rete ad accesso pubblico. 2. PROCURARSI I PACCHETTI NECESSARI I pacchetti necessari per eseguire l'installazione, ad eccezione di docdb, sono tutti disponibili sui CD e sul DVD di Novell SuSE Linux 9.2. Pertanto la loro installazione è immediata e sarà spiegata in seguito. Il software docdb è distribuito in formato compresso tar.gz, reperibile gratuitamente all'indirizzo: http://sourceforge.net/projects/docdb/ Al momento della stesura di questa guida, il nome del file è docdb_1.0.1.tar.gz. 3. INSTALLARE E AVVIARE APACHE 2 E PHP 4 Eseguiremo l'installazione di Apache 2 su SuSE Linux 9.2 in due passaggi: Installazione e verifica del funzionamento del sistema di base. Aggiunta dei moduli addizionali necessari per i nostri scopi. L'installazione del sistema di base è molto semplice grazie a Yast: Aprite Yast e entrate nella sezione Servizi di rete. Scegliete Server HTTP. Se non avete già installato i pacchetti di base di Apache 2, vi sarà chiesto di farlo. Accettate e inserite i CD o il DVD di installazione richiesti. In seguito comparirà la schermata riportata in Illustrazione 3.1.
Illustrazione 3.1Configurazione di Apache 2 in Yast! Selezionate la casella Abilitato per attivare Apache 2 e, per il momento, evitate di selezionare Apri firewall sulle porte selezionate. In questo modo, se lavorate connessi ad Internet, il vostro server rimarrà inaccessibile perché la porta 80, tramite la quale esso è raggiungibile, sarà chiusa dal firewall di Linux. Al posto di dimension4400 vedrete scritto localhost, che è il nome predefinito assegnato da SuSE al server. Conservate le impostazioni predefinite, almeno per il momento. Accettate le impostazioni di default cliccando su Fine. Ciò farà compiere a Yast le operazioni necessarie per avviare Apache 2 con le impostazioni di base. Passiamo ora all'installazione dei pacchetti addizionali necessari per il funzionamento di Apache e di PHP. Aprite Yast! nella sezione Software e avviate Installare/Togliere i pacchetti. Utilizzate la funzione Cerca di Yast ed inserite nel campo di ricerca apache. Selezionate i pacchetti: apache2_doc apache2_example_pages apache2-mod_php4 Cercate ora php e selezionate nell'elenco che comparirà tutti i pacchetti che cominciano con php4 ad eccezione di php-recode che entrerebbe in conflitto con altri pacchetti. Non tutti i pacchetti di PHP sono necessari probabilmente al corretto funzionamento del database docdb, tuttavia, per semplicità, si realizza in questa sede l'installazione dell'intero pacchetto php4. Sono certamente necessari i pacchetti php4 e php4-pgsql. Per ragioni di sicurezza, sarebbe opportuno selezionare accuratamente i pacchetti qualora il server fosse reso accessibile al pubblico via Internet. Si veda, ad esempio la guida
reperibile presso http://www.securityfocus.com/infocus/1706 Cliccate su Accetto per procedere all'installazione. Al termine dell'installazione dei pacchetti, aprite nuovamente Yast, Servizi di rete, Server HTTP. Selezionate la voce Moduli e cliccate su Modifica. Nella schermata di Illustrazione 3.2, scorrete l'elenco di moduli addizionali, evidenziate php4 e abilitatelo cliccando sul pulsante Cambia lo stato. Chiudete le schermate di Yast cliccando su OK e poi su Fine. Apache sarà riavviato e i servizi offerti da PHP saranno resi disponibili Illustrazione 3.2Attivazione moduli di Apache 2 in Yast Verifichiamo il funzionamento di Apache e di PHP prima di procedere. Per controllare se Apache funziona, è sufficiente aprire il browser preferito e inserire l'url http://localhost Dovrebbe comparire la pagina di benvenuto di Apache come illustrato in Illustrazione 3.3, tramite la quale è anche possibile accedere alla documentazione online (sul vostro server!) di Apache 2, che può esservi molto utile per le impostazioni avanzate. Per verificare il funzionamento di PHP, create un file di testo di nome test.php, che contenga le sole righe seguenti: <? phpinfo();?> e salvatelo sul Desktop. Aprite poi un terminale e acquiste i diritti di root con il comando su e
copiate test.php nella cartella di default dei documenti accessibili dal server Apache, che in SuSE Linux è /srv/www/htdocs. Potete utilizzare il comando: cp /home/nome_vostro_utente/desktop/test.php /srv/www/htdocs Accedete ora alla pagina http://localhost/test.php. che dovrebbe avere un aspetto simile a quella riportata in Illustrazione 3.4. Illustrazione 3.3Pagina di benvenuto di Apache. Illustrazione 3.4Pagina di informazioni su PHP. Se tutto funziona come dovrebbe, è possibile passare all'installazione di PostgreSQL e, dopo, alla configurazione di docdb.
4. INSTALLARE E ATTIVARE POSTGRESQL L'installazione di PostgreSQL è molto semplice grazie all'installer di Yast: Aprite Yast nella sezione Software e cliccate su Installare/Rimuovere pacchetti. Cercate PostgreSQL e selezionate i pacchetti: postgresql postgresql-docs postgresql-server Cliccate su Accetto per procedere all'installazione. Spostatevi nella sezione Sistema di Yast e avviate l'editor di runlevel. Scorrete la lista mostrata in Illustrazione 4.1, evidenziate il servizio postgresql e abilitatelo cliccando sul pulsante Abilita. Comparirà una finestra che confermerà l'avvio di PostgreSQL. Illustrazione 4.1Editor di runlevel di Yast. Tutto il software necessario per far funzionare il nostro database è stato installato. Come ultimo passaggio, prima di procedere all'installazione di docdb, è opportuno aggiornare il sistema con gli eventuali aggiornamenti di sicurezza rilasciati da SuSE: Aprite Yast nella sezione Software e avviate Aggiornament in linea. Fate click su Prossimo e selezionate gli aggiornamenti di sicurezza (in rosso) proposti. Cliccate su Accetto per procedere al dowload e all'installazione delle eventuali patch, terminati i quali dovrete premere Fine affinché Yast avvii SuSEconfig per terminare l'aggiornamento del sistema.
Le operazioni di base sono terminate. Ora è necessario procedere con l'installazione di docdb e alla configurazione del sistema in modo da consentirne il corretto funzionamento. 5. INSTALLAZIONE E CONFIGURAZIONE DI DOCDB 5.1. Creazione dell'utente e del gruppo docdb Il database bibliografico docdb è gestito da un utente indipendente, nella cui directory home saranno salvati i file di docdb. Inoltre è necessario predisporre sul sistema un gruppo, a cui devono appartenere tutti gli utenti ai quali si desidera concedere i diritti di modifica dei file del database. Per comodità creeremo un utente di nome docdb e un gruppo di nome docdb. Ciò è possibile sempre attraverso Yast: Avviate Yast nella sezione Sicurezza e utenti, e cliccate su Modifica e crea gruppi. Cliccate su Aggiungi e inserite docdb tutto minuscolo nella casella Nome del gruppo. Cliccate su Prossimo e poi su Fine per completare la creazione del gruppo. Per creare l'utente, avviate, nella stessa sezione di Yast, il modulo Modifica e crea utenti. Aggiungete un utente di nome docdb, assegnategli una password sicura e disabilitate il login (Illustrazione 5.1). Illustrazione 5.1Modulo creazione utente in Yast. Cliccate su Dettagli e controllate che nell'elenco dei gruppi a cui appartiene l'utente, sia selezionato solamente il gruppo docdb, come mostrato in Illustrazione 5.2. Assicuratevi inoltre che l'utente docdb appartenga al gruppo docdb e non al gruppo users. Accettate tutte le modifiche fatte e chiudete il modulo di configurazione utenti premendo
Fine. Illustrazione 5.2Impostazioni dettagliate dell'utente. 5.2. Configurazione di PostgreSQL Per consentire l'accesso al database da parte del webserver e degli utenti, è necessario modificare il file /var/lib/pgsql/data/pg_hba.conf Il file è strutturato su colonne, con una disposizione del tipo: # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD Per consentire l'accesso al database da parte dell'utente docdb e del server Apache 2, inserite la riga: local docdb docdb, wwwrun trust Per fare ciò, aprite un terminale, assumete i diritti di root e avviate il vostro editor di testi preferito per aprire il file /var/lib/pgsql/data/pg_hba.conf Il comando per gedit è /opt/gnome/bin/gedit /var/lib/pgsql/data/pg_hba.conf, mentre per kwrite è / opt/kde3/bin/kwrite /var/lib/pgsql/data/pg_hba.conf. E aggiungete la riga detta in precedenza immediatamente prima della riga commentata #Other
settings. La riga aggiunta consente l'accesso degli utenti locali docdb e wwwrun (utente predefinito di SuSE Linux per lanciare Apache) al database docdb, con il metodo di autenticazione trust. Ogni utente che debba accedere al database deve essere aggiunto alla lista attualmente composta da docdb e wwwrun, separando ciascun nome utente con una virgola e uno spazio. Ovviamente, qualora si abbiano molti utenti è possibile aggiungere più righe, variando solo la voce corrispondente agli utenti che si desidera aggiungere. Se volete concedere l'accesso remoto al vostro database server, dovrete inserire delle linee addizionali nel file /var/lib/pgsql/data/pg_hba.conf, come le seguenti: # host DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION] Le connessioni TCP/IP richiedono che sia attivata l'opzione tcpip_socket=true nel file di configurazione /var/lib/pgsql/data/postgresql.conf. Per connessioni remote è da evitare il metodo di autenticazione trust. Potete scegliere tra diversi valori dell'opzione method (trust, reject, md5, crypt, password, krb4, krb5, ident, o pam), a seconda delle vostre esigenze. Ulteriori informazioni sono contenute nel file /var/lib/pgsql/data/pg_hba.conf e nella documentazione di PostgreSQL. Dopo aver apportato queste modifiche, aprite l'editor di runlevel in Yast, selezionate il servizio postgresql, disabilitatelo e riabilitatelo, in modo da riavviare il server con le nuove impostazioni. 5.3. Configurazione di PHP Docdb richiede le seguenti modifiche ai file di configurazione di PHP: Aprite una console e assumete i diritti di root con il comando su. Aprite il file /etc/php.ini con il vostro editor di testi preferito. Cercate l'opzione register_globals, che per ragioni di sicurezza è impostata a Off per default e ponetela uguale a On: register_globals = On. Individuate l'opzione upload_max_filesize e settatela in base alla dimensione massima dei documenti di cui volete consentire l'upload sul server. Questa opzione definisce il limite massimo delle dimensioni di un file che è possibile memorizzare sul server. Se volete, ad esempio fissare tale limite a 10 megabyte, impostate upload_max_filesize = 10M. Salvate il file /etc/php.ini e uscite. Aprite il file /etc/apache2/conf.d/php4.conf con l'editor di testi. Aggiungete l'opzione LimitRequestBody <dimensione>. Questa opzione ha funzioni analoghe a quella vista in precedenza per PHP, ma influenza Apache 2. S Ad esempio, se la dimensione massima dei file in upload fissata per PHP è 10M, l'opzione per Apache deve essere LimitRequestBody 10485760. Si osservi che 10485760 = 1024 x 1024 x 10. Salvate il file e uscite. Conservate aperto il terminale di root perché vi servirà presto.
5.4. Installazione di docdb L'installazione di docdb è del tutto automatica grazie allo script fornito dall'autore. I passi da seguire sono: Estraete il contenuto dell'archivio scaricato dal sito di docdb con FileRoller o Ark e salvatelo sul vostro desktop. Nella console di root precedentemente aperta, spostatevi nella cartella docdb che avrete ora sul Desktop (cd /home/nome_utente/desktop/docdb). Digitate il comando./install.sh Lo script vi porrà alcune domande, proponendo una risposta predefinita. Questa guida è stata realizzata in modo da permettervi di accettare tutte le impostazioni predefinite. In dettaglio, vi sarà chiesto di inserire i seguenti dati: Instance name [docdb] Accettate l'opzione proposta premendo Invio. docdb group: [docdb] Accettate l'opzione proposta premendo Invio. Firstname: Introducete il nome reale dell'amministratore di docdb. Lastname: Inserite il cognome reale dell'amministratore di docdb. Admin unser-id: Inserite il nome-utente che identificherà l'amministratore di docdb. Per semplicità, inserite docdb, ma potete mettere un id a vostra scelta. webserver user: [wwwrun] Accettate l'opzione proposta premendo Invio. Database superuser: [postgres] Accettate l'opzione proposta premendo Invio. Database name: [docdb] Accettate l'opzione proposta premendo Invio. Database user: [docdb] Accettate l'opzione proposta premendo Invio. Database user password: Inserite la password che avete assegnato all'utente docdb in Yast. 5.5. Ultime modifiche alla configurazione di Apache 2 Rimangono ancora alcune operazioni da fare per portare a termine l'installazione: Dal terminale di root, entrate nella cartella di docdb contenente i file estratti dall'archivio scaricato che avete salvato sul vostro dektop. Copiate il file docdb_apache.conf nella directory /etc/apache2 con il comando cp docdb_apache.conf /etc/apache2 Aprite nell'editor di testi, sempre come root, il file /etc/sysconfig/apache2. Individuate l'opzione APACHE_CONF_INCLUDE_FILES e aggiungete tra le virgolette il percorso /etc/apache2/docdb_apache2.conf: APACHE_CONF_INCLUDE_FILES="/etc/apache2/docdb_apache.conf" Salvate il file e uscite dall'editor. Aprite l'editor di runlevel di Yast. Disabilitate il servizio apache2 e riabilitatelo in modo da riavviare il server con le nuove impostazioni.
5.6. Verifica di funzionamento Per verificare che tutto funzioni correttamente, aprite il vostro browser e inserite l'url: http://localhost/docdb Dovrebbe comparire la schermata mostrata in Illustrazione 5.3. Per poter accedere, mettete il nome utente dell'amministratore di docdb e la sua password. Se i dati inseriti sono corretti, comparirà la pagina raffigurata in Illustrazione 5.4. Illustrazione 5.3Richiesta di autenticazione Illustrazione 5.4Pagina principale di docdb
Dalla pagina principale potrete gestire con facilità gli utenti di docdb e inserire o rimuovere i documenti dal database. Fate alcune prove: Inserite un nuovo utente. Prestate attenzione al fatto che una volta creato, un utente non può essere eliminato, ma solo disattivato. Un utente disattivato potrà essere in seguito riattivato dall'amministratore di docdb. Inserite un documento. Cercate il documento appena inserito con il motore di ricerca interno di docdb. Eliminate il documento appena inserito. 6. SUGGERIMENTI FINALI Questa guida non è per nulla esauriente per quanto riguarda gli aspetti di configurazione di un server web sicuro. Come più volte segnalato, se il database bibliografico è utilizzato su macchine condivise o in rete, è indispensabile prendere opportune contromisure per prevenire intrusioni e attacchi che possano compromettere l'integrità del server. In particolar modo: Configurare il firewall di linux in modo da consentire l'accesso ai soli servizi che realmente si desiderano rendere pubblici. Se il server web è usato solo in locale, evitare di selezionare i servizi HTTP e HTTPS in SuSEfirewall. Utilizzare il modulo Sicurezza e utenti - Impostazioni di sicurezza per ridurre i diritti di accesso ai file sul sistema. In particolare consentire solo agli utenti locali (meglio ancora solo a root) lo spegnimento della macchina, disattivare la sequenza di tasti Ctrl-Alt-Canc e impostare i diritti di accesso a Sicuro. Infine attivare l'opzione di verifica della consistenza della password e impostarne la lunghezza minima ad almeno 8 caratteri. Ridurre al minimo i servizi attivi disabilitando quelli non necessari tramite l'editor di runlevel. Questa operazione richiede una certa esperienza per evitare di danneggiare il sistema. Se non sapete se un servizio vi serve o meno, non modificatene la configurazione. Tenete aggiornato il vostro sistema. Documentatevi sulle tecniche di installazione e gestione di un server sicuro. Google è ricchissimo di link! Buon lavoro con il vostro nuovo database bibliografico. Ciao Alex^ Moro 2004 PalestraLinux http://palestralinux.altervista.org SuSE Linux è un marchio registrato di SuSE Linux A.G. - Una business unit di Novell. Novell è un marchio registrato di Novell Inc. Linux è un marchio registrato di Linus Torvalds. Apache e Apache 2 sono marchi registrati di The Apache Software Foundation. PHP è un marchio registrato di The PHP group. PostgreSQL è un marchio registrato di The PostgreSQL Global Development Group e The Regents of the University of California.