PHP Security · 3 min read · Oct 25, 2025
Come indurire PHP5 con Suhosin su Fedora 7 - Pagina 2
4 Installazione di Suhosin
Suhosin può essere scaricato da qui: http://www.hardened-php.net/suhosin/download.html
Per installare la patch Suhosin, dobbiamo ricompilare PHP5 dai sorgenti, ma utilizzeremo il pacchetto Fedora 7 PHP5.src.rpm per questo (utilizzando il comando rpmbuild), in modo da ottenere nuovi pacchetti PHP5.rpm (con Suhosin) che possiamo installare. In questo modo, non dobbiamo preoccuparci delle giuste opzioni di configurazione di PHP5 perché rpmbuild si occuperà di questo.
Ma prima prendiamo una copia della chiave di firma della release del progetto Hardened-PHP e importiamola nel nostro portachiavi GNU Privacy Guard:
wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.ascPoi scarichiamo un pacchetto PHP5.src.rpm (che si adatta alla nostra versione di PHP attualmente installata, 5.2.2 in questo esempio) da un mirror di Fedora 7 in /usr/src e installiamolo:
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/7/Fedora/source/SRPMS/php-5.2.2-3.src.rpm
rpm -ivh php-5.2.2-3.src.rpmSe ricevi avvisi come questo:
warning: group kojibuilder does not exist - using rootpuoi ignorarlo.
Successivamente scarichiamo la patch Suhosin che si adatta alla nostra versione di PHP in /usr/src/redhat/SOURCES (puoi trovare tutte le patch disponibili nella pagina di download di Suhosin):
cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gzDovremmo controllare ora che la somma MD5 della patch scaricata sia identica a quella pubblicata sulla pagina di download di Suhosin:
md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gzSe la somma MD5 è ok, possiamo controllare la firma digitale in questo modo:
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gz.sig
gpg suhosin-patch-5.2.2-0.9.6.2.patch.gz.sigSe vedi questa riga nell’output:
gpg: Good signature from "Hardened-PHP Signature Key"tutto va bene con la patch scaricata, e possiamo procedere.
Ora estraiamo la patch Suhosin, rinominiamola in modo che si adatti allo schema di denominazione di Fedora e modifichiamo il file /usr/src/redhat/SPECS/php.spec in modo che il comando rpmbuild sappia che deve includere la patch Suhosin quando ricompila PHP5:
gunzip suhosin-patch-5.2.2-0.9.6.2.patch.gz
mv suhosin-patch-5.2.2-0.9.6.2.patch php-5.2.2-suhosin.patch
cd /usr/src/redhat/SPECS/
vi php.specAggiungi Patch0: php-5.2.2-suhosin.patch alla sezione dove sono elencate tutte le patch, e %patch0 -p1 -b .suhosin alla sezione %setup -q:
| [...] Source3: macros.php Patch0: php-5.2.2-suhosin.patch Patch1: php-5.1.4-gnusrc.patch [...] %setup -q %patch0 -p1 -b .suhosin %patch1 -p1 -b .gnusrc [...] |
Ora ricompiliamo PHP5:
rpmbuild -ba php.specA seconda dei moduli PHP5 che hai installato, rpmbuild si lamenterà probabilmente di pacchetti mancanti di cui ha bisogno per costruire nuovi pacchetti per i vari moduli PHP5:
[root@server1 SPECS]# rpmbuild -ba php.spec
cat: /usr/include/httpd/.mmn: No such file or directory
error: Failed build dependencies:
aspell-devel >= 0.50.0 is needed by php-5.2.2-3.i386
httpd-devel >= 2.0.46-1 is needed by php-5.2.2-3.i386
pcre-devel >= 4.5 is needed by php-5.2.2-3.i386
uw-imap-devel is needed by php-5.2.2-3.i386
mysql-devel >= 4.1.0 is needed by php-5.2.2-3.i386
postgresql-devel is needed by php-5.2.2-3.i386
unixODBC-devel is needed by php-5.2.2-3.i386
net-snmp-devel is needed by php-5.2.2-3.i386
libxslt-devel >= 1.0.18-1 is needed by php-5.2.2-3.i386
[root@server1 SPECS]#Se vedi un errore come questo, installa i pacchetti mancanti, ad esempio in questo modo:
yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-develDopo, esegui di nuovo rpmbuild:
rpmbuild -ba php.specQuesto dovrebbe ora compilare di nuovo PHP5 e tutti i moduli PHP5 installati e creare nuovi pacchetti .rpm nella directory /usr/src/redhat/RPMS/i386. Questo potrebbe richiedere del tempo, quindi per favore sii paziente.
Dopo, possiamo installare i nuovi pacchetti PHP5 in questo modo:
cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*Questo è tutto per la patch Suhosin.
Ora costruiremo l’estensione PHP Suhosin. Prima scarichiamo i suoi sorgenti nella directory /usr/src (i sorgenti dell’estensione Suhosin sono disponibili nella pagina di download di Suhosin):
cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgzSuccessivamente controlliamo di nuovo la somma MD5 e la firma:
md5sum suhosin-0.9.20.tgzwget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig
gpg suhosin-0.9.20.tgz.sigPoi estraiamo i sorgenti e costruiamo l’estensione in questo modo:
tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make installPer abilitare l’estensione Suhosin, creiamo il file /etc/php.d/suhosin.ini e mettiamo la riga extension=suhosin.so al suo interno:
vi /etc/php.d/suhosin.ini| extension=suhosin.so |
Tutto ciò che resta da fare ora è riavviare Apache2:
/etc/init.d/httpd restartOra chiamiamo di nuovo la nostra pagina info.php in un browser (ad esempio http://192.168.0.100/info.php). Se tutto è andato bene, dovresti ora vedere Suhosin menzionato in due posti sulla pagina:


Questo è tutto. Se vuoi, puoi configurare Suhosin (vedi http://www.hardened-php.net/suhosin/configuration.html), anche se Suhosin funzionerà subito con la sua configurazione predefinita, quindi assicurati di sapere cosa stai facendo.
5 Link
- Suhosin: http://www.hardened-php.net/suhosin/index.html
- PHP: http://www.php.net
- Fedora: http://fedoraproject.org
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.