Wie Du PHP5 mit Suhosin auf CentOS 5.0 sicherer machen kannst - Seite 2


Nun entpacken wir den Suhosin Patch, benennen ihn um, damit er in das CentOS Bezeichnungsschema passt und bearbeiten die Datei /usr/src/redhat/SPECS/php.spec so dass der rpmbuild Befehl weiß, dass der Suhosin Patch mit eingefügt werden muss, wenn PHP5 neu kompiliert wird:

gunzip suhosin-patch-5.1.6-0.9.6.patch.gz
mv suhosin-patch-5.1.6-0.9.6.patch php-5.1.6-suhosin.patch
cd /usr/src/redhat/SPECS/
vi php.spec

Füge Patch0: php-5.1.6-suhosin.patch zu der Zeile, in der alle Patches aufgelistet sind und kommentiere die Zeile Patch14: php-5.1.6-ecalloc.patch in der gleichen Zeile aus (der ecalloc Patch kollidiert mit Suhosin). Füge dann %patch0 -p1 -b .suhosin der %setup -q Zeile hinzu und kommentiere die Zeile %patch14 -p1 -b .ecalloc in der gleichen Zeile aus:

[...]
Source51: php.ini Patch0: php-5.1.6-suhosin.patch Patch1: php-5.1.4-gnusrc.patch Patch2: php-5.1.4-warnings.patch Patch5: php-4.3.3-install.patch Patch6: php-5.0.4-norpath.patch Patch7: php-4.3.2-libtool15.patch Patch13: php-5.0.2-phpize64.patch # Patch14: php-5.1.6-ecalloc.patch [...] %setup -q %patch0 -p1 -b .suhosin %patch1 -p1 -b .gnusrc %patch2 -p1 -b .warnings %patch5 -p1 -b .install %patch6 -p1 -b .norpath %patch7 -p1 -b .libtool15 %patch13 -p1 -b .phpize64 # %patch14 -p1 -b .ecalloc [...]
Nun kompilieren wir PHP5 neu:

rpmbuild -ba php.spec

Je nachdem welche PHP5 Module Du installiert hast, wird sich rpmbuild höchstwahrscheinlich über fehlende Pakete beschweren, die es benötigt, um neue Pakete für die zahlreichen PHP5 Module zu erstellen:

[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.1.6-12.i386
httpd-devel >= 2.0.46-1 is needed by php-5.1.6-12.i386
libjpeg-devel is needed by php-5.1.6-12.i386
libpng-devel is needed by php-5.1.6-12.i386
pcre-devel >= 4.5 is needed by php-5.1.6-12.i386
libc-client-devel is needed by php-5.1.6-12.i386
mysql-devel >= 4.1.0 is needed by php-5.1.6-12.i386
postgresql-devel is needed by php-5.1.6-12.i386
unixODBC-devel is needed by php-5.1.6-12.i386
net-snmp-devel is needed by php-5.1.6-12.i386
gd-devel is needed by php-5.1.6-12.i386
freetype-devel is needed by php-5.1.6-12.i386
[root@server1 SPECS]#

Wenn Du einen derartigen Fehler siehst, installiere die fehlenden Pakete z.B. wie folgt:

yum install aspell-devel httpd-devel libjpeg-devel libpng-devel pcre-devel libc-client-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel gd-devel freetype-devel

Führe danach rpmbuild erneut aus:

rpmbuild -ba php.spec

Dies sollte nun PHP5 und alle installieren PHP5 Module wieder kompilieren und neue .rpm Pakete im /usr/src/redhat/RPMS/i386 Verzeichnis erstellen. Das kann etwas dauern, sei also etwas geduldig.

Danach können wir die neuen PHP5 Pakete wie folgt installieren:

cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*

Das war's mit dem Suhosin Patch.

Nun werden wir die Suhosin PHP Extension erstellen. Zuerst laden wir dessen Quellen in das /usr/src Verzeichnis (die Quellen der Suhosin Extension sind auf der Suhosin Downloads Seite erhältlich):

cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz

Als Nächstes überprüfen wir wieder die MD5 Summe und die Signatur:

md5sum suhosin-0.9.20.tgz


wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig
gpg suhosin-0.9.20.tgz.sig

Dann entpacken wir die Quellen und erstellen die Extension wie folgt:

tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make install

Um die Suhosin Extension zu aktivieren, erstellen wir die Datei /etc/php.d/suhosin.ini und fügen die Zeile extension=suhosin.so ein:

vi /etc/php.d/suhosin.ini


extension=suhosin.so
Nun müssen wir Apache2 nur noch neu starten:

/etc/init.d/httpd restart

Nun rufen wir unsere info.php Seite wieder in einem Browser auf (z.B. http://192.168.0.100/info.php). Wenn alles gut gegangen ist, sollte Suhosin nun an zwei Stellen auf der Seite erwähnt werden:



Das war's. Wenn Du magst, kannst Du Suhosin konfigurieren (siehe http://www.hardened-php.net/suhosin/configuration.html), obwohl Suhosin mit der Standardkonfiguration wunderbar funktioniert, Du solltest also ganz genau wissen, was Du tust.

5 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte