Servidor web · 8 min read · Sep 11, 2025

El Servidor Perfecto CentOS 7.6 con Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1

Este tutorial muestra la instalación de ISPConfig 3.1 en un servidor CentOS 7.6 (64Bit). ISPConfig es un panel de control de alojamiento web que te permite configurar los siguientes servicios a través de un navegador web: servidor web Apache, PHP 7.2, servidor de correo Postfix, MySQL, servidor de nombres BIND, PureFTPd, SpamAssassin, ClamAV, Mailman y muchos más.

1 Requisitos

Para instalar un sistema así necesitarás lo siguiente:

  • Un sistema de servidor CentOS 7.6 mínimo. Esto puede ser un servidor instalado desde cero como se describe en nuestro tutorial de servidor mínimo CentOS 7 o un servidor virtual o servidor raíz de una empresa de alojamiento que tenga una configuración mínima de CentOS 7.6 instalada.
  • Una conexión a Internet rápida.

2 Nota Preliminar

En este tutorial, utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100 y la puerta de enlace 192.168.0.1. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado.

3 Preparar el servidor

Configurar el diseño del teclado

En caso de que el diseño del teclado del servidor no coincida con tu teclado, puedes cambiar al diseño correcto (en mi caso “de” para un diseño de teclado alemán) con el comando localectl:

localectl set-keymap de

Para obtener una lista de todos los diseños de teclado disponibles, ejecuta:

localectl list-keymaps

Quiero instalar ISPConfig al final de este tutorial, ISPConfig incluye el script del cortafuegos Bastille que usaré como cortafuegos, por lo tanto, desactivo el cortafuegos predeterminado de CentOS ahora. Por supuesto, eres libre de dejar el cortafuegos de CentOS activado y configurarlo a tus necesidades (pero entonces no deberías usar ningún otro cortafuegos más adelante, ya que probablemente interferirá con el cortafuegos de CentOS).

Ejecuta…

yum -y install net-tools  
systemctl stop firewalld.service  
systemctl disable firewalld.service

para detener y desactivar el cortafuegos de CentOS. Está bien si obtienes errores aquí, esto solo indica que el cortafuegos no estaba instalado.

Luego deberías verificar que el cortafuegos realmente ha sido desactivado. Para hacerlo, ejecuta el comando:

iptables -L

La salida debería verse así:

[root@server1 ~]# iptables -L  
Chain INPUT (policy ACCEPT)  
target prot opt source destination
Chain FORWARD (policy ACCEPT)  
target prot opt source destination
Chain OUTPUT (policy ACCEPT)  
target prot opt source destination

O usa el comando firewall-cmd:

firewall-cmd --state
[root@server1 ~]# firewall-cmd --state  
not running  
[root@server1 ~]#

Ahora instalaré el editor de configuración de red y el editor basado en shell “nano” que usaré en los siguientes pasos para editar los archivos de configuración:

yum -y install nano wget NetworkManager-tui yum-utils

Si no configuraste tu tarjeta de red durante la instalación, puedes hacerlo ahora. Ejecuta…

nmtui

… y ve a Editar una conexión:

Editar conexión de red

Selecciona tu interfaz de red:

Seleccionar interfaz de red

Luego completa los detalles de tu red: desactiva DHCP y completa una dirección IP estática, una máscara de red, tu puerta de enlace y uno o dos servidores de nombres, luego presiona Ok:

Establecer máscara de red

A continuación, selecciona OK para confirmar los cambios que hiciste en la configuración de red

y Salir para cerrar la herramienta de configuración de red nmtui.

Salir de nmtui

Deberías ejecutar

ifconfig

hora para verificar si el instalador obtuvo tu dirección IP correctamente:

[root@localhost ~]# ifconfig  
ens33: flags=4163 mtu 1500  
 inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255  
 inet6 fe80::20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x20  
 inet6 2003:c2:9731:a445:20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x0  
 ether 00:0c:29:e5:5b:47 txqueuelen 1000 (Ethernet)  
 RX packets 227784 bytes 317714901 (302.9 MiB)  
 RX errors 0 dropped 0 overruns 0 frame 0  
 TX packets 205574 bytes 23608521 (22.5 MiB)  
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  
  
lo: flags=73 mtu 65536  
 inet 127.0.0.1 netmask 255.0.0.0  
 inet6 ::1 prefixlen 128 scopeid 0x10  
 loop txqueuelen 1 (Local Loopback)  
 RX packets 0 bytes 0 (0.0 B)  
 RX errors 0 dropped 0 overruns 0 frame 0  
 TX packets 0 bytes 0 (0.0 B)  
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  
  
[root@localhost ~]#

Si tu tarjeta de red no aparece allí, entonces no estará habilitada al inicio. En este caso, abre el archivo /etc/sysconfig/network-scripts/ifcfg-eth0

nano /etc/sysconfig/network-scripts/ifcfg-ens33

y establece ONBOOT en yes:

[...]  
ONBOOT=yes  
[...] 

y reinicia el servidor.

Verifica tu /etc/resolv.conf si lista todos los servidores de nombres que configuraste anteriormente:

cat /etc/resolv.conf

Si faltan servidores de nombres, ejecuta

nmtui

y agrega nuevamente los servidores de nombres que faltan.

Ahora, pasemos a la configuración…

Ajustando /etc/hosts y /etc/hostname

A continuación, editaremos /etc/hosts. Haz que se vea así:

nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
192.168.0.100   server1.example.com     server1  
  
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Establece el nombre de host en el archivo /etc/hostname. El archivo debe contener el nombre de dominio completamente calificado (por ejemplo, server1.example.com en mi caso) y no solo el nombre corto como “server1”. Abre el archivo con el editor nano:

nano /etc/hostname

Y establece el nombre de host en el archivo.

server1.example.com

Guarda el archivo y sal de nano.

Establecer SELinux en permisivo

SELinux es una extensión de seguridad de CentOS que debería proporcionar seguridad extendida. ISPConfig no incluye un conjunto de reglas de SELinux, por lo tanto, lo establezco en permisivo (esto es un requisito si deseas instalar ISPConfig más adelante).

Edita /etc/selinux/config y establece SELINUX=permissive:

nano /etc/selinux/config
# Este archivo controla el estado de SELinux en el sistema.  
# SELINUX= puede tomar uno de estos tres valores:  
#     enforcing - La política de seguridad de SELinux se aplica.  
#     permissive - SELinux imprime advertencias en lugar de aplicar.  
#     disabled - No se carga ninguna política de SELinux.  
SELINUX=permissive  
# SELINUXTYPE= puede tomar uno de estos dos valores:  
#     targeted - Los procesos dirigidos están protegidos,  
#     mls - Protección de Seguridad de Múltiples Niveles.  
SELINUXTYPE=targeted

Después debemos reiniciar el sistema:

reboot

4 Habilitar Repositorios Adicionales e Instalar Algunos Software

Primero, importamos las claves GPG para los paquetes de software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Luego habilitamos el repositorio EPEL en nuestro sistema CentOS, ya que muchos de los paquetes que vamos a instalar en el transcurso de este tutorial no están disponibles en el repositorio oficial de CentOS 7:

yum -y install epel-release

Luego actualizamos nuestros paquetes existentes en el sistema:

yum -y update

Ahora instalamos algunos paquetes de software que se necesitan más adelante:

yum -y groupinstall 'Development Tools'

5 Cuota

(Si elegiste un esquema de particionamiento diferente al mío, debes ajustar este capítulo para que la cuota se aplique a las particiones donde la necesitas.)

Para instalar cuota, ejecutamos este comando:

yum -y install quota

Ahora verificamos si la cuota ya está habilitada para el sistema de archivos donde se almacenan los datos del sitio web (/var/www) y maildir (var/vmail). En esta configuración de ejemplo, tengo una gran partición raíz, así que busco ‘ / ‘:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '  
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)  
[root@server1 ~]#

Si tienes una partición /var separada, entonces usa:

mount | grep ' /var '

en su lugar. Si la línea contiene la palabra “ noquota “, entonces procede con los siguientes pasos para habilitar la cuota.

Habilitando cuota en la partición / (raíz)

Normalmente habilitarías la cuota en el archivo /etc/fstab, pero si el sistema de archivos es el sistema de archivos raíz “/“, entonces la cuota debe habilitarse mediante un parámetro de arranque del núcleo de Linux.

Edita el archivo de configuración de grub:

nano /etc/default/grub

busca la línea que comienza con GRUB_CMDLINE_LINUX y agrega rootflags=uquota,gquota a los parámetros de línea de comandos para que la línea resultante se vea así:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"

y aplica los cambios ejecutando el siguiente comando.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak  
grub2-mkconfig -o /boot/grub2/grub.cfg

y reinicia el servidor.

reboot

Ahora verifica si la cuota está habilitada:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '  
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)  
[root@server1 ~]#

Cuando la cuota está activa, podemos ver “ usrquota,grpquota “ en la lista de opciones de montaje.

Habilitando cuota en una partición /var separada

Si tienes una partición /var separada, entonces edita /etc/fstab y agrega,uquota,gquota a la partición / ( /dev/mapper/centos-var):

nano /etc/fstab
  
#  
# /etc/fstab  
# Creado por anaconda el Dom Sep 21 16:33:45 2014  
#  
# Los sistemas de archivos accesibles, por referencia, se mantienen bajo '/dev/disk'  
# Consulta las páginas del manual fstab(5), findfs(8), mount(8) y/o blkid(8) para más información  
#  
/dev/mapper/centos-root /                       xfs     defaults        1 1  
/dev/mapper/centos-var /var                     xfs     defaults,uquota,gquota        1 2  
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot                   xfs     defaults        1 3  
/dev/mapper/centos-swap swap                    swap    defaults        0 0

Luego ejecuta

mount -o remount /var
quotacheck -avugm  
quotaon -avug

para habilitar la cuota. Cuando obtengas un error de que no hay partición con cuota habilitada, reinicia el servidor antes de continuar.

6 Instalar Apache, PHP, MySQL y phpMyAdmin

Habilita el repositorio Remi para obtener versiones más nuevas de PHP:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm  
yum-config-manager --enable remi-php72

Podemos instalar los paquetes necesarios con un solo comando:

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin

Para asegurar que el servidor no pueda ser atacado a través de la vulnerabilidad HTTPOXY, deshabilitaremos el encabezado HTTP_PROXY en apache globalmente.

Agrega la regla de encabezado de apache al final del archivo httpd.conf:

echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

Y reinicia httpd para aplicar el cambio de configuración.

service httpd restart
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.