Consta de dos partes, una es un modulo para apache que "captura" las peticiones de páginas php, comprueba el usuario del archivo, su grupo, y envía la información a la otra parte, que es un ejecutable suid-root que lanza php4-cgi con el usuario que le ha sido indicado, este devuelve el resultado al módulo del apache.
La idea es minimizar el daño que se provocaría al ser explotado un posible fallo del sistema, de esta manera el usuario entraría en el sistema con una cuenta no habilitada, sin permisos de ejecución y sin posibilidad de acceso a otro código o sitios web.
Suphp se puede descargar de http://www.suphp.org/Home.html, descomprimiendo el paquete en /usr/src y compilando con las siguientes opciones:
#>./configure -prefix=/usr \ |
-with-apxs=/usr/bin/apxs2 \ |
-with-apache-user=www-data \ |
-with-php=/usr/lib/cgi-bin/php4 \ |
-sbindir=/usr/lib/suphp \ |
-with-logfile=/var/log/suphp/suphp.log \ |
-with-setid-mode \ |
-disable-checkpath |
-prefix=/usr -enable-force-cgi-redirect -enable-fastcgi \ |
-with-config-file-path=/etc/php4/cgi |
Para configurarlo en apache haremos igual que para ssl, primero comprobamos si está configurado:
#> if [ -h /etc/apache2/mods-enabled/suphp.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fi |
#>ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/suphp.conf |
#>ln -s /etc/apache2/mods-available/suphp.load /etc/apache2/mods-enabled/suphp.load |
#>/etc/init.d/apache2 restart |
La configuración del sitio seguro con suphp incluido quedaría así:
NameVirtual *:443 |
<VirtualHost *:443> |
ServerName gosa.chaosdimension.org |
DocumentRoot /usr/share/gosa/html |
alias /gosa /usr/share/gosa/html |
CustomLog /var/log/apache/gosa.log combined |
ErrorLog /var/log/apache/gosa.log |
suPHP_Engine on |
SSLEngine On |
SSLCertificateFile /etc/apache2/ssl/gosa.cert |
SSLCertificateKeyFile /etc/apache2/ssl/gosa.key |
SSLCertificateChainFile /etc/apache2/ssl/gosa.cert |
SSLCertificateKeyFile /etc/apache2/ssl/gosa.key |
SSLCACertificateFile /etc/apache2/ssl/gosa.ca |
SSLCACertificatePath /etc/apache2/ssl/ |
SSLLogLevel error |
SSLLog /var/log/apache2/ssl-gosa.log |
<Directory /usr/share/gosa > |
SSLVerifyClient require |
SSLVerifyDepth 1 |
</Directory> |
</VirtualHost> |
Debemos decidir que usuario vamos a usar, en este caso voy a crear uno llamado gosa, que me sirva para el fin indicado anteriormente:
#useradd -d /usr/share/gosa/html gosa |
#passwd -l gosa |
#cd /usr/share/gosa |
#find /usr/share/gosa -name "*.php" -exec chown gosa ";" |
#find /usr/share/gosa -name "*.php" -exec chmod 600 ";" |
aescanero AT gmail.com