Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Nozioni di base e installazione

Introduzione alla sicurezza di PHP e guida all'installazione dell'interprete del linguaggio
Introduzione alla sicurezza di PHP e guida all'installazione dell'interprete del linguaggio
Link copiato negli appunti

PHP è la tecnologia che sottende all'esecuzione di codice server-side ed alla creazione delle pagine HTML che saranno inviate dal Web server (Apache) al client (browser come Firefox, Opera, IE) conformemente al protocollo HTTP.

Nella maggioranza dei casi a subire exploit non sono i Web server in senso stretto, ma le applicazioni (soprattutto Web) che grazie ad esso vengono eseguite. In questo scenario, se l'applicazione non è sicura, avere firewall ben impostati, sistemi Linux ad hoc configurati e via discorrendo non serve assolutamente a nulla (o quasi), al fine della protezione dai cracker.

Si dà in questa sede per scontata una buona e robusta progettazione del programma Web PHP in esecuzione sul server e suggerisco la Guida sicurezza di PHP pubblicata su Html.it come prima (ma non sufficiente) e semplice illustrazione delle tecniche da usarsi.

Bene. Avendo quindi installato nella directory www di Apache il programma PHP ci occuperemo ora di:

  • verificare la corretta installazione dell'interprete PHP (come modulo di Apache);
  • rendere più sicura l'installazione stessa del modulo: definiremo un comportamento globale "corretto" di PHP, attraverso il file Php.ini;
  • testare l'effettiva sicurezza del/i programma/i attraverso strumenti software opportuni;
  • infine, rendere gli script PHP sia più veloci ad esser interpretati che al riparo da "occhi indiscreti".

Ciò è utile al fine di preservare la proprietà intellettuale dell'autore in caso di furto dei sorgenti ed al fine di nascondere le password contenute (in chiaro) negli script.

Esistono anche tool per creare, da script PHP, programmi standalone (compilati), che però non tratteremo.

Corretta installazione dell'interprete

Una corretta installazione del modulo PHP protegge sia dallo sfruttamento di possibili bug di moduli aggiuntivi ("se non c'è non si rompe") sia da denial of service (DoS) del programma o modifica dei servizi attraverso la manomissione del file php.ini o di componenti fondamentali per il funzionamento di PHP, ad opera di utenti (reali o virtuali, quindi programmi bucati) interni.

A meno di necessità particolari, non devono esser installati sul server moduli PHP non usati (es.: modulo per database PostgreSQL, modulo GD,...) né la versione cli dello stesso.

Verifichiamo quanto installato tramite il gestore di pacchetti Synaptic (grafico) o, sempre come root, da shell tramite il comando:

dpkg -l | grep php

libapache2-mod-php5        5.1.6-1
php5-cli                   5.1.6-1    
php5-common                5.1.6-1    
php5-mysql                 5.1.6-1    

In questo caso, ad esempio, possiamo disinstallare il pacchetto php5-cli sempre tramite Synaptic (con l'opzione "marca per la rimozione completa") o via shell:

apt-get remove php5-cli

seguito da:

dpkg --purge php5-cli

in modo da rimuovere anche i file di configurazione.

Nessuno tra i moduli disinstallati dovrà essere richiamato dal file php.ini cosa che il processo di disinstallazione dovrebbe già provvedere a fare.

A "pulizia di primavera" completata, dobbiamo ora semplicemente assicurarci che il file php.ini non sia modificabile da tutti gli utenti del sistema; di default, il proprietario è root (che vi ha permessi rw) ed i rimanenti permessi sono solo in lettura per tutti gli altri. Sse così non fossero, è bene impostarli in tal maniera o, alternativamente, fare appartenere il file all'utente con cui gira il Web server e renderlo leggibile e scrivibile solo a questi, logica che Debian però non usa.

Verifichiamo ora i permessi del file, da shell con il comando

ls -l /etc/php5/apache2/php.ini
-rw-r--r-- 1 [644] root root 

Infine, i moduli PHP in /usr/lib/apache2/modules/ ed /etc/apache2/mods-available devono avere permessi: -rw-r--r-- [644] root root.

Ti consigliamo anche