Disclaimer per i contenuti del Blog


DISCLAIMER:Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità . Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n° 62 del 7.03.2001.
L'autore non è responsabile per quanto pubblicato dai lettori nei commenti ad ogni post. Verranno cancellati i commenti ritenuti offensivi o lesivi dell’immagine o dell’onorabilità di terzi, di genere spam, razzisti o che contengano dati personali non conformi al rispetto delle norme sulla Privacy. Alcuni testi o immagini inserite in questo blog sono tratte da internet e, pertanto, considerate di pubblico dominio; qualora la loro pubblicazione violasse eventuali diritti d'autore, vogliate comunicarlo via email. Saranno immediatamente rimossi. L'autore del blog non è responsabile dei siti collegati tramite link, del loro contenuto che può essere soggetto a variazioni nel tempo ne degli eventuali danni derivanti dall'utilizzo proprio od improprio delle informazioni presenti nei post.

sabato 21 settembre 2013

Un server LAMP per il test di applicazioni Web - 4

Come già anticipato nei post precedenti, tra i servizi di base presenti in CentOS minimal mancano quelli a noi necessari: httpd, mysqld e vsftpd; possiamo verificare questo usando il comando

    chkconfig --list

che ci elenca tutti i servizi attualmente installati  ed il dettagli relativo al runlevel di avvio.

Fig.1
Per installare una parte dei servizi a noi necessari ed i moduli realtivi a PHP utilizzeremo sempre yum:

    yum install httpd mysql-server php php-mysql php-gd php-mbstring php-xml

Al termine dell'installazione dei moduli, ripetendo il comando

     chkconfig --list

possiamo vedere che due nuovi servizi risultano presenti nell'elenco: httpd e mysqld

Fig.2
Per far si che i due servizi si avviino automaticamente all'avvio del sistema usiamo di nuovo il comando chkconfig:

    chkconfig --levels 2345 httpd on
    chkconfig --levels 2345 mysqld on

quindi avviamo manualmente i due servizi per evitare un riavvio del sistema:

    service httpd start
    service mysqld start

apriamo il nostro browser e digitiamo nella casella delle url

    http://<indirizzo-ip-del-server>

se tutto è andato per il verso giusto dovremmo essere in grado di vedere la pagina di default di Apache (fig.3).

Fig.3
Per verificare che anche PHP sia correttamente installato:

    cd /var/www/html    (cartella utilizzata come root-folder da httpd)
    nano index.php

e creiamo un piccolo script PHP di test inserendo queste tre righe:

<?php
    phpinfo();
?>


Aggiornando la finestra del browser dovremmo ottenere l'output della funzione phpinfo di PHP che riepiloga la sua configurazione:

Fig.4
Passiamo ora ad installare il server FTP che ci permetterà di pubblicare i nostro programmi sul server di test. Utilizziamo sempre yum:

    yum install vsftpd

quindi configuriamo i run-level di esecuzione:

   chkconfig --levels 2345 vsftpd on

ed andiamo ad editare lo script di configurazione

    nano /etc/vsftpd/vsftpd.conf

questo è il file di configurazione minimale che verrà usato da VSFTP (fig.5).
 
Fig.5
Salviamo con CTRL+O ed usciamo con CTRL+X. Prima di avviare il server FTP dobbiamo però creare un utente che verrà utilizzato per il trasferimento dei files e fare in modo che SeLinux non ci "intralci il lavoro"...

Iniziamo dall'ultimo punto. SeLinux è una caratteristica di Linux che permette di aumentare la sicurezza del sistema sia intervenendo a livello kernel, sia attribuendo ad ogni risorsa una 'etichetta' che lo caratterizza supervisionando così le possibilità di accesso e/o modifica della risorsa in relazione al contesto del momento. Essendo in ambiente di test ritengo superfluo doversi far carico della configurazione delle policy di SeLinux quindi, invece di disabilitarlo, faremo in modo che sia più permissivo, loggando le situazioni di pericolo senza però arrestare le operazioni:

    nano /etc/selinux/config

ed andiamo a sostiture

    SELINUX=enforcing    (fig.6)

con

    SELINUX=permissive    (fig.7)

Salviamo CTRL+O, usciamo CTRL+X, riavviamo il sistema.

Fig.6
Fig.7
Andiamo ora ad aggiungere l'utente che utilizzeremo per le operazioni di FTP :

    useradd utenteftp    (aggiungiamo l'utente 'utenteftp', potete usare un qualsiasi nome al suo posto)
    passwd utenteftp    (gli attribuiamo una password)

se la password che abbiamo inserito verrà considerata troppo semplice, otterremo un messaggio come da fig.8; l'utente verrà comunque creato correttamente;

Fig.8
una volta creato l'utente impostiamolo come owner della cartella /var/www/html (quella ove pubblicheremo i nostri files PHP, html, ecc.):

    chown utenteftp /var/www/html

a questo punto possiamo avviare il server FTP

    service vsftpd start

ed andare subito a provare una sessione ftp utilizzando un qualsiasi client (io mi trovo bene con FileZilla)...

Fig.9
Le ultime operazioni da eseguire sono relative a MySQL. Dobbiamo creare la password per l'utente root di MySQL ed installare un software (phpMyAdmin) che ci permetterà di gestire database e tabelle utilizzando il nostro browser web preferito. Per creare la password dell'utente root di MySQL è sufficiente dare il comando

    mysqladmin -u root password mysqlpwd

dove 'mysqlpwd' è la password scelta, cambiatela con quella che vi fa più comodo.

L'installazione di phpMyAdmin è leggermente più lunga in quanto il relativo pacchetto non è presente nel repository standard di CentoOS ma in Epel. Dobbiamo aggiungere un nuovo repository; la procedura in breve è la seguente:

    rpm -ivh http://mirrors.neterra.net/epel/6/i386/epel-release-6-8.noarch.rpm    (fig.10)


Fig.10
quindi utilizziamo yum per scaricare il pacchetto phpMyAdmin e tutte le necessarie dipendenze:

    yum install phpMyAdmin.noarch

Fig.11
quindi

    service  httpd restart

e puntando il browser su http://<indirizzo-ip-del-server>/phpMyAdmin dovremmo ottenere la richiesta di autorizzazione...

Fig.12
...entriamo con root e la password che abbiamo definito per MySQL...

Fig.13
...siamo dentro!!!

 Ora possiamo accedere anche ai database. Buon lavoro!!!


Considerazioni relative alla sicurezza.

Ho più volte sottolineato che questa guida non è idonea al setup  di un server di produzione in quanto il tema sicurezza è stato spesso e volentieri accantonato in favore della semplicità operativa. 

Inziando a scrivere applicazioni che utilizzano database bisogna però avere ben presente in mente che gli aspetti legati alla sicurezza sono estremamente importanti: una cosa è il server di test che rimarrà relegato in una VM del nostro PC, una cosa è l'applicazione che prima o poi verrà pubblicata su un vero server ed esposta a possibili attacchi da parte di chiunque... 

Anche se stiamo operando in test dobbiamo scrivere le applicazioni come se fossimo in produzione: creare uno o più utenti MySQL con permessi di accesso necessari e sufficienti a quello che dovranno fare, nulla di più, verificare sempre i dati che l'utente dell'applicazione Web fornisce per evitare possibili sql-injection, ecc.

Uomo avvisato mezzo salvato...

Nessun commento:

Posta un commento