PHP Security · 3 min read · Oct 25, 2025
Como Endurecer o PHP5 Com Suhosin No Fedora 7 - Página 2
4 Instalando o Suhosin
O Suhosin pode ser baixado daqui: http://www.hardened-php.net/suhosin/download.html
Para instalar o patch do Suhosin, precisamos recompilar o PHP5 a partir das fontes, mas usaremos o pacote Fedora 7 PHP5.src.rpm para isso (usando o comando rpmbuild), para que possamos obter novos pacotes PHP5.rpm (com Suhosin) que podemos instalar. Assim, não precisamos nos preocupar com as opções de configuração do PHP5, pois o rpmbuild cuidará disso.
Mas primeiro, pegamos uma cópia da chave de assinatura do lançamento do Projeto Hardened-PHP e a importamos para nosso chaveiro do GNU Privacy Guard:
wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.ascEm seguida, baixamos um pacote PHP5.src.rpm (que se adapta à nossa versão do PHP instalada atualmente, 5.2.2 neste exemplo) de um espelho do Fedora 7 para /usr/src e o instalamos:
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 você receber avisos como este:
warning: group kojibuilder does not exist - using rootvocê pode ignorá-lo.
Em seguida, baixamos o patch do Suhosin que se adapta à nossa versão do PHP para /usr/src/redhat/SOURCES (você pode encontrar todos os patches disponíveis na página de downloads do Suhosin):
cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gzDevemos verificar agora se a soma MD5 do patch baixado é idêntica à publicada na página de downloads do Suhosin:
md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gzSe a soma MD5 estiver ok, podemos verificar a assinatura digital assim:
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 você ver esta linha na saída:
gpg: Good signature from "Hardened-PHP Signature Key"tudo está ok com o patch baixado, e podemos prosseguir.
Agora descompactamos o patch do Suhosin, renomeamos para que se encaixe no esquema de nomenclatura do Fedora e modificamos o arquivo /usr/src/redhat/SPECS/php.spec para que o comando rpmbuild saiba que deve incluir o patch do Suhosin ao reconstruir o 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.specAdicione Patch0: php-5.2.2-suhosin.patch à estrofe onde todos os patches estão listados, e %patch0 -p1 -b .suhosin à estrofe %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 [...] |
Agora reconstruímos o PHP5:
rpmbuild -ba php.specDependendo dos módulos PHP5 que você tem instalados, o rpmbuild provavelmente reclamará sobre pacotes ausentes que precisa para construir novos pacotes para os vários módulos 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 você ver um erro como este, instale os pacotes ausentes, por exemplo, assim:
yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-develDepois, execute o rpmbuild novamente:
rpmbuild -ba php.specIsso deve agora compilar o PHP5 e todos os módulos PHP5 instalados novamente e criar novos pacotes .rpm no diretório /usr/src/redhat/RPMS/i386. Isso pode levar algum tempo, então, por favor, seja paciente.
Depois, podemos instalar os novos pacotes PHP5 assim:
cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*É isso para o patch do Suhosin.
Agora vamos construir a extensão PHP do Suhosin. Primeiro, baixamos suas fontes para o diretório /usr/src (as fontes da extensão Suhosin estão disponíveis na página de downloads do Suhosin):
cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgzEm seguida, verificamos a soma MD5 e a assinatura novamente:
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.sigEntão descompactamos as fontes e construímos a extensão assim:
tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make installPara habilitar a extensão Suhosin, criamos o arquivo /etc/php.d/suhosin.ini e colocamos a linha extension=suhosin.so nele:
vi /etc/php.d/suhosin.ini| extension=suhosin.so |
Tudo o que resta a fazer agora é reiniciar o Apache2:
/etc/init.d/httpd restartAgora vamos chamar nossa página info.php novamente em um navegador (por exemplo, http://192.168.0.100/info.php). Se tudo correu bem, você deve agora ver o Suhosin mencionado em dois lugares na página:


É isso. Se você quiser, pode configurar o Suhosin (veja http://www.hardened-php.net/suhosin/configuration.html), embora o Suhosin funcione fora da caixa com sua configuração padrão, então tenha certeza de que você sabe o que está fazendo.
5 Links
- Suhosin: http://www.hardened-php.net/suhosin/index.html
- PHP: http://www.php.net
- Fedora: http://fedoraproject.org
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.