Servidor CentOS · 8 min read · Sep 11, 2025

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

Este tutorial muestra la instalación de ISPConfig 3.1 en un servidor CentOS 7.4 (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, servidor de correo Postfix, MySQL, servidor de nombres BIND, PureFTPd, SpamAssassin, ClamAV, Mailman, y muchos más.

1 Requisitos

Para instalar tal sistema necesitarás lo siguiente:

  • Un sistema de servidor CentOS 7.4 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.4 instalada.
  • Una conexión a Internet rápida.

2 Nota Preliminar

En este tutorial, uso 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.

Ten en cuenta que HHVM y XMPP aún no son compatibles con ISPConfig para la plataforma CentOS. Si deseas gestionar un servidor de chat XMPP desde ISPConfig o usar HHVM (Hip Hop Virtual Machine) en un sitio web de ISPConfig, entonces utiliza Debian o Ubuntu 16.04 como sistema operativo del servidor en lugar de CentOS 7.4.

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 teclado 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 mapas de teclas disponibles, ejecuta:

localectl list-keymaps

Quiero instalar ISPConfig al final de este tutorial, ISPConfig viene con 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

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

nmtui

… y ve a Editar una conexión:

Selecciona tu 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:

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

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

Deberías ejecutar

ifconfig

ahora 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:fe1a:3d8e prefixlen 64 scopeid 0x20  
 ether 00:0c:29:1a:3d:8e txqueuelen 1000 (Ethernet)  
 RX packets 184972 bytes 256696909 (244.8 MiB)  
 RX errors 0 dropped 0 overruns 0 frame 0  
 TX packets 62983 bytes 7236189 (6.9 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 previamente:

cat /etc/resolv.conf

Si faltan servidores de nombres, ejecuta

nmtui

y agrega los servidores de nombres que faltan nuevamente.

Ahora, 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.1.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.

Desactivar SELinux

SELinux es una extensión de seguridad de CentOS que debería proporcionar seguridad extendida. En mi opinión, no lo necesitas para configurar un sistema seguro, y generalmente causa más problemas que ventajas (piensa en ello después de haber pasado una semana solucionando problemas porque algún servicio no funcionaba como se esperaba, y luego descubres que todo estaba bien, solo SELinux estaba causando el problema). Por lo tanto, lo desactivo (esto es un requisito si deseas instalar ISPConfig más adelante).

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

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=disabled  
# 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
yum -y install yum-priorities

Edita /etc/yum.repos.d/epel.repo…

nano /etc/yum.repos.d/epel.repo

… y agrega la línea priority=10 a la sección [epel]:

[epel]  
name=Paquetes Extra para Enterprise Linux 7 - $basearch  
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch  
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch  
failovermethod=priority  
enabled=1  
priority=10  
gpgcheck=1  
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7  
[...]

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 has elegido un esquema de particionado diferente al que yo hice, 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 este 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 la 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, entonces reinicia el servidor antes de continuar.

6 Instalar Apache, MySQL, phpMyAdmin

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 asegurarnos de 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.