Servidor Perfecto · 7 min read · Sep 22, 2025
El Servidor Perfecto – CentOS 7.1 con Apache2, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3
Este tutorial muestra cómo instalar ISPConfig 3 en un servidor CentOS 7.1 (64Bit). ISPConfig 3 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. Desde la versión 3.0.4, ISPConfig viene con soporte completo para el servidor web nginx además de Apache; este tutorial cubre la configuración de un servidor que utiliza Apache, no nginx.
1 Requisitos
Para instalar tal sistema necesitarás lo siguiente:
- Un sistema de servidor CentOS 7.1 mínimo. Esto puede ser un servidor instalado desde cero como se describe en nuestro tutorial de servidor mínimo CentOS 7.1 o un servidor virtual o servidor raíz de una empresa de alojamiento que tenga una configuración mínima de CentOS 7.1 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.1.100 y la puerta de enlace 192.168.1.254. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado.
3 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 dePara obtener una lista de todos los mapas de teclado disponibles, ejecuta:
localectl list-keymapsQuiero instalar ISPConfig al final de este tutorial, ISPConfig viene con el script de firewall Bastille que me gusta usar como firewall, por lo tanto, desactivo el firewall predeterminado de CentOS ahora. Por supuesto, eres libre de dejar el firewall de CentOS activado y configurarlo a tus necesidades (pero entonces no deberías usar ningún otro firewall más adelante, ya que probablemente interferirá con el firewall de CentOS).
Ejecuta…
yum -y install net-tools
systemctl stop firewalld.service
systemctl disable firewalld.servicepara detener y desactivar el firewall de CentOS.
Luego deberías verificar que el firewall realmente ha sido desactivado. Para hacerlo, ejecuta el comando:
iptables -LLa salida debería verse así:
[root@server1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destinationO 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-tuiSi 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 hiciste en la configuración de red
y Salir para cerrar la herramienta de configuración de red nmtui.

Deberías ejecutar
ifconfighora para verificar si el instalador obtuvo tu dirección IP correctamente:
[root@server1 ~]# ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fecd:cc52 prefixlen 64 scopeid 0x20
ether 00:0c:29:cd:cc:52 txqueuelen 1000 (Ethernet)
RX packets 55621 bytes 79601094 (75.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28115 bytes 2608239 (2.4 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 0 (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 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-ens33y establece ONBOOT en yes:
[...]
ONBOOT=yes
[...] y reinicia el servidor.
Verifica tu /etc/resolv.conf si enumera todos los servidores de nombres que configuraste anteriormente:
cat /etc/resolv.confSi faltan servidores de nombres, ejecuta
nmtuiy agrega nuevamente los servidores de nombres que faltan.
Ahora, a la configuración…
4 Ajustar /etc/hosts
A continuación, editamos /etc/hosts. Haz que se vea así:
nano /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.100 server1.example.com server1
::1 localhost localhost.localdomain localhost6 localhost6.localdomain65 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 estaba funcionando 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 objetivo están protegidos,
# mls - Protección de Seguridad de Múltiples Niveles.
SELINUXTYPE=targeted
Después debemos reiniciar el sistema:
reboot6 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-releaseyum -y install yum-prioritiesEdita /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 Linux Empresarial 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 updateAhora instalamos algunos paquetes de software que son necesarios más adelante:
yum -y groupinstall 'Development Tools'7 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 necesites.)
Para instalar cuota, ejecutamos este comando:
yum -y install quotaAhora 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/grubbusca 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="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us 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.cfgy reinicia el servidor.
rebootAhora 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 0Luego ejecuta
mount -o remount /varquotacheck -avugm
quotaon -avugpara habilitar la cuota. Cuando obtengas un error de que no hay partición con cuota habilitada, reinicia el servidor antes de continuar.
8 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 phpmyadminRecibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.