GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar SuPHP en CentOS 7.2

SuPHP es un módulo de apache que permite PHP bajo un usuario de Linux diferente al usuario de apache. Esto mejora la seguridad de los sitios web alojados, ya que puede ejecutar los scripts PHP de cada sitio web con un usuario diferente. Este tutorial describe la instalación de SuPHP en centOS 7.2 desde la fuente ya que no hay paquetes de SuPHP disponibles para CentOS 7.2.

Requisitos

Deberá tener un servidor que tenga instalado CentOS 7.2 o posterior. Usaré este tutorial como base para mi configuración. En el primer capítulo, instalaré el servidor web Apache. Si ya tiene Apache instalado, comience con el capítulo 2 de inmediato.

Mi servidor usará el nombre de host server1.example.com y la dirección IP 192.168.1.100. Reemplace estos valores con el nombre de host y la IP de su servidor dondequiera que aparezcan en el siguiente tutorial.

Recomiendo tener un firewall instalado por razones de seguridad, si aún no tiene instalado firewalld, puede instalarlo con estos comandos:

yum -y install firewalld

inicie el cortafuegos y permita que se inicie en el momento del arranque.

systemctl start firewalld.service
systemctl enable firewalld.service

A continuación, abra su puerto SSH para asegurarse de que podrá conectarse al servidor mediante SSH.

firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload

1 Instalación de Apache 2.4 y PHP 5

Apache y PHP están disponibles en el repositorio base de CentOS, por lo que podemos instalar ambos paquetes de software con yum.

Instale Apache y el paquete de desarrollo de Aapache que contiene los archivos necesarios para la compilación de SuPHP más adelante.

yum -y install httpd httpd-devel

Instalación de PHP (he agregado algunos módulos PHP de uso frecuente):

yum -y install php php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring curl

Tenemos que habilitar Apache para que se inicie en el momento del arranque e iniciar el servicio.

systemctl start httpd.service
systemctl enable httpd.service

Tenemos que abrir los puertos HTTP (80) y HTTPS (443) para que el servidor web sea accesible desde otras computadoras. Ejecute los siguientes comandos para configurar el firewall.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

2 Instalación de SuPHP

Vamos a compilar SuPHP desde la fuente en este paso. Instale las herramientas de desarrollo para configurar la cadena de compilación necesaria.

yum -y groupinstall 'Development Tools'

Y descarga los archivos fuente y el editor nano.

yum -y install wget nano

Descargue el archivo tar.gz fuente de SuPHP y descomprímalo.

cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

CentOS 7 usa Apache 2.4, por lo que tenemos que parchear suphp antes de poder compilarlo contra Apache. El parche se aplica así:

wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
[[email protected] suphp-0.7.2]# autoreconf -if
libtoolize:colocar archivos auxiliares en AC_CONFIG_AUX_DIR, `config'.
libtoolize:copiar el archivo `config/ltmain.sh'
libtoolize:Considere agregar `AC_CONFIG_MACRO_DIR([m4])' a configure.ac y
libtoolize:vuelva a ejecutar libtoolize, para mantener las macros de libtool correctas en el árbol.
libtoolize:Considere agregar `-I m4' a ACLOCAL_AMFLAGS en Makefile.am.
configure.ac:9:advertencia:AM_INIT_AUTOMAKE:los formularios de dos y tres argumentos están obsoletos. Para obtener más información, consulte:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :instalando 'config/config.guess'
configure.ac:24:instalando 'config/config.sub'
configure.ac:9:instalando 'config/install-sh'
configure .ac:9:instalando 'config/missing'
src/Makefile.am:instalando 'config/depcomp'
[[email protected] suphp-0.7.2]#

El comando autoreconf aplica el parche, ahora podemos configurar la nueva fuente de la siguiente manera. NOTA: ¡El comando de configuración es una línea!

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log

Luego compila e instala SuPHP.

make
make install

Luego agregue el módulo suPHP a la configuración de Apache agregando un nuevo archivo suphp.conf.

nano /etc/httpd/conf.d/suphp.conf

Con el siguiente contenido.

LoadModule suphp_module modules/mod_suphp.so

... y crea el archivo /etc/suphp.conf de la siguiente manera:

nano /etc/suphp.conf
[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

Finalmente, reiniciamos Apache:

systemctl restart httpd.service

3 Configure un Apache Vhost con SuPHP

En este capítulo, mostraré cómo puede agregar un host virtual en apache que ejecute PHP bajo un usuario separado. Usaré el nombre de dominio www.example.com para el sitio web y PHP se ejecutará como usuario y grupo "web1 ", la raíz del documento para el sitio web es /var/www/example.com

Primero, agregue un nuevo usuario y grupo "web1".

useradd web1

Agregue el directorio raíz del sitio web.

mkdir /var/www/example.com
chown web1:web1 /var/www/example.com

Ahora agregue el archivo de configuración del host virtual en el directorio apache conf.d.

nano /etc/httpd/conf.d/example.com.conf

con este contenido:

<VirtualHost *>
DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [email protected]

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler None
</FilesMatch>

<IfModule mod_suphp.c>
suPHP_Engine on
<FilesMatch "\.php[345]?$">
SetHandler x-httpd-suphp
</FilesMatch>
suPHP_AddHandler x-httpd-suphp
</IfModule>
</VirtualHost>

Reemplace el nombre de dominio con su propio dominio en las líneas ServerName y ServerAdmin.

Luego reinicie apache para aplicar los cambios de configuración.

systemctl restart httpd.service

4 Probar la configuración de SuPHP

En este capítulo, le mostraré varios métodos para probar PHP en este sitio web. Primero, crearé un archivo que use la función phpinfo() para mostrar si PHP está funcionando y si ahora se ejecuta en modo CGI.

Crea un archivo info.php con nano:

nano /var/www/example.com/info.php

y agregue las siguientes líneas al nuevo archivo:

<?php
phpinfo();

Luego cambie el propietario del archivo al usuario y grupo web1.

chown web1:web1 /var/www/example.com/info.php

Abra la URL del archivo http://example.com/info.php en un navegador web, se mostrará la siguiente página.

Importante es el ServerAPI línea que muestra CGI/FastCGI . lo que muestra que PHP se ejecuta a través de SuPHP y no de mod_php.

Ahora probaré si PHP se ejecuta con el usuario correcto (web1). ¿Cómo sabe SuPHP qué usuario utilizará? SuPHP cambia PHP al usuario que posee el script PHP, por lo que es importante que todos los archivos PHP en nuestra carpeta raíz web /var/www/example.com sean propiedad del usuario y grupo web1.

Entonces, ¿cómo probar si PHP usa el usuario correcto? Una forma es ejecutar el comando "whoami" que devuelve el nombre de usuario.

Crearé un nuevo script testuser.php en la raíz del sitio web:

nano /var/www/example.com/testuser.php

con este contenido:

<?php
system('whoami');

Luego cambie el propietario del archivo al usuario y grupo web1.

chown web1:web1 /var/www/example.com/testuser.php

Abra http://example.com/testuser.php en un navegador web, el resultado será el: web1

SuPHP se configura y ejecuta los archivos PHP como usuario de este sitio web. Elimine los archivos de prueba del directorio del sitio web y comience a agregar los scripts de su sitio web.

5 Descargue este servidor CentOS 7.2 como máquina virtual

Esta configuración está disponible como descarga de máquina virtual en formato ova/ovf (compatible con VMWare y Virtualbox) para forjar suscriptores.

Información de inicio de sesión para la máquina virtual

  • La contraseña de root es:howtoforge
  • La contraseña del usuario "administrador" es:howtoforge

Cambie ambas contraseñas en el primer inicio de sesión.

  • La dirección IP de la máquina virtual es 192.168.1.100

6 Enlaces

  • Cent OS
  • Servidor Web Apache
  • SuPHP

Cent OS
  1. Cómo instalar Apache Cassandra en CentOS 8

  2. Cómo instalar Apache en CentOS 7

  3. Cómo instalar Apache Kafka en CentOS 8

  4. Cómo instalar Apache Tomcat 8 en CentOS

  5. Cómo instalar phpMyBackupPro en CentOS 6

Cómo instalar Apache Cassandra en CentOS

Cómo instalar elgg en CentOS 8

Cómo instalar Apache ServiceMix en CentOS 8

Cómo instalar Apache SVN en CentOS 7

Cómo instalar Mod_Security Apache en CentOS 6

Cómo instalar Apache en CentOS 6