Servidor Perfecto · 8 min read · Jan 07, 2026

El Servidor Perfecto - CentOS 7 x86_64 (nginx, Dovecot, ISPConfig 3) - Página 2

15 Instalar phpMyAdmin

A continuación, instalamos phpMyAdmin:

yum -y install phpmyadmin

A continuación, cambiamos la autenticación en phpMyAdmin de cookie a http:

nano /etc/phpMyAdmin/config.inc.php

[...]
/* Tipo de autenticación */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Ahora puedes encontrar phpMyAdmin en el directorio /usr/share/phpMyAdmin/.

Después de haber instalado ISPConfig 3, puedes acceder a phpMyAdmin de la siguiente manera:

La aplicación vhost de ISPConfig en el puerto 8081 para nginx viene con una configuración de phpMyAdmin, así que puedes usar http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin para acceder a phpMyAdmin.

Si deseas usar un alias /phpmyadmin o /phpMyAdmin que puedas usar desde tus sitios web, esto es un poco más complicado que para Apache porque nginx no tiene alias globales (es decir, alias que se pueden definir para todos los vhosts). Por lo tanto, debes definir estos alias para cada vhost desde el cual deseas acceder a phpMyAdmin.

Para hacer esto, pega lo siguiente en el campo Directivas de nginx en la pestaña Opciones del sitio web en ISPConfig:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass 127.0.0.1:9000;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Si usas http s en lugar de http para tu vhost, debes agregar la línea fastcgi_param HTTPS on; a tu configuración de phpMyAdmin de la siguiente manera:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass 127.0.0.1:9000;
                       fastcgi_param HTTPS on; # <-- agrega esta línea
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Si usas tanto http como https para tu vhost, puedes usar la variable $https - ve al campo Directivas de nginx nuevamente, y en lugar de fastcgi_param HTTPS on; agregas la línea fastcgi_param HTTPS $https; para que puedas usar phpMyAdmin tanto para solicitudes http como https:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass 127.0.0.1:9000;
                       fastcgi_param HTTPS $https; # <-- agrega esta línea
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

16 Instalar Mailman

Desde la versión 3.0.4, ISPConfig también te permite gestionar (crear/modificar/eliminar) listas de correo de Mailman. Si deseas hacer uso de esta función, instala Mailman de la siguiente manera:

yum -y install mailman

Antes de que podamos iniciar Mailman, se debe crear una primera lista de correo llamada mailman:

touch /var/lib/mailman/data/aliases
touch /etc/mailman/aliases
/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Introduce el correo electrónico de la persona que ejecuta la lista: <– dirección de correo electrónico del administrador, por ejemplo, [email protected]
Contraseña inicial de mailman: <– contraseña del administrador para la lista de mailman
Para terminar de crear tu lista de correo, debes editar tu archivo /etc/aliases (o equivalente) agregando las siguientes líneas, y posiblemente ejecutando el programa newaliases:

lista de correo mailman

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Presiona enter para notificar al propietario de mailman… <– ENTER

[root@server1 tmp]#

Abre /etc/aliases después…

nano /etc/aliases

… y agrega las siguientes líneas:

[...]
mailman:              "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/lib/mailman/mail/mailman unsubscribe mailman"

Ejecuta

newaliases

despues y reinicia Postfix:

systemctl restart postfix.service

Crea los enlaces de inicio del sistema para Mailman y inícialo:

systemctl enable mailman.service
systemctl start mailman.service

Ahora necesitamos crear este enlace simbólico para que Mailman funcione con ISPConfig:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

Si deseas usar Mailman desde tus sitios web creados a través de ISPConfig, esto es un poco más complicado que para Apache porque nginx no tiene alias globales (es decir, alias que se pueden definir para todos los vhosts). Por lo tanto, debes definir estos alias para cada vhost desde el cual deseas acceder a Mailman.

Para hacer esto, pega lo siguiente en el campo Directivas de nginx en la pestaña Opciones del sitio web en ISPConfig:

        location /cgi-bin/mailman {
               alias /usr/lib/mailman/cgi-bin;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/lib/mailman/icons;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }

Esto define el alias /cgi-bin/mailman/ para tu vhost, lo que significa que puedes acceder a la interfaz de administración de Mailman para una lista en http:///cgi-bin/mailman/admin/, y la página web para los usuarios de una lista de correo se puede encontrar en http:///cgi-bin/mailman/listinfo/.

Bajo http:///pipermail puedes encontrar los archivos de la lista de correo.

17 Instalar PureFTPd

PureFTPd se puede instalar con el siguiente comando:

yum -y install pure-ftpd

Luego crea los enlaces de inicio del sistema y comienza PureFTPd:

systemctl enable pure-ftpd.service
systemctl start pure-ftpd.service

Ahora configuramos PureFTPd para permitir sesiones FTP y TLS. FTP es un protocolo muy inseguro porque todas las contraseñas y todos los datos se transfieren en texto claro. Al usar TLS, toda la comunicación puede ser cifrada, haciendo que FTP sea mucho más seguro.

OpenSSL es necesario para TLS; para instalar OpenSSL, simplemente ejecutamos:

yum -y install openssl

Abre /etc/pure-ftpd/pure-ftpd.conf…

nano /etc/pure-ftpd/pure-ftpd.conf

Si deseas permitir sesiones FTP y TLS, establece TLS en 1:

[...]
# Esta opción puede aceptar tres valores :
# 0 : deshabilitar la capa de cifrado SSL/TLS (por defecto).
# 1 : aceptar tanto sesiones tradicionales como cifradas.
# 2 : rechazar conexiones que no usen mecanismos de seguridad SSL/TLS,
#     incluidas las sesiones anónimas.
# No _descomentes_ esto a ciegas. Asegúrate de que :
# 1) Tu servidor ha sido compilado con soporte SSL/TLS (--with-tls),
# 2) Un certificado válido está en su lugar,
# 3) Solo clientes compatibles iniciarán sesión.

TLS                      1
[...]

Para usar TLS, debemos crear un certificado SSL. Lo creo en /etc/ssl/private/, por lo tanto, primero creo ese directorio:

mkdir -p /etc/ssl/private/

Después, podemos generar el certificado SSL de la siguiente manera:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nombre del país (código de 2 letras) [XX]: <– Ingresa el Nombre de tu País (por ejemplo, “DE”).
Nombre del estado o provincia (nombre completo) []: <– Ingresa el Nombre de tu Estado o Provincia.
Nombre de la localidad (por ejemplo, ciudad) [Ciudad Predeterminada]: <– Ingresa tu Ciudad.
Nombre de la organización (por ejemplo, empresa) [Empresa Predeterminada Ltd]: <– Ingresa el Nombre de tu Organización (por ejemplo, el nombre de tu empresa).
Nombre de la unidad organizativa (por ejemplo, sección) []: <– Ingresa el Nombre de tu Unidad Organizativa (por ejemplo, “Departamento de TI”).
Nombre común (por ejemplo, tu nombre o el nombre de host de tu servidor) []: <– Ingresa el Nombre de Dominio Totalmente Calificado del sistema (por ejemplo, “server1.example.com”).
Dirección de correo electrónico []: <– Ingresa tu Dirección de Correo Electrónico.

Cambia los permisos del certificado SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Finalmente, reinicia PureFTPd:

systemctl restart pure-ftpd.service

Eso es todo. Ahora puedes intentar conectarte usando tu cliente FTP; sin embargo, debes configurar tu cliente FTP para usar TLS.

18 Instalar BIND

Podemos instalar BIND de la siguiente manera:

yum -y install bind bind-utils

A continuación, abre /etc/sysconfig/named…

nano /etc/sysconfig/named

… y asegúrate de que la línea ROOTDIR=/var/named/chroot esté comentada:

# Opciones del proceso BIND named
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# OPTIONS="lo que sea"     --  Estas opciones adicionales se pasarán a named
#                            al inicio. No agregues -t aquí, habilita el archivo de unidad -chroot.service adecuado.

Haz una copia de seguridad del archivo /etc/named.conf existente y crea uno nuevo de la siguiente manera:

cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf

// named.conf\
//\
// Proporcionado por el paquete bind de Red Hat para configurar el servidor DNS ISC BIND named(8)\
// como un servidor de nombres solo en caché (como un resolvedor DNS localhost solamente).\
//\
// Ver /usr/share/doc/bind*/sample/ para archivos de configuración de ejemplo de named.\
options {\
        listen-on port 53 { any; };\
        listen-on-v6 port 53 { any; };\
        directory       "/var/named";\
        dump-file       "/var/named/data/cache_dump.db";\
        statistics-file "/var/named/data/named_stats.txt";\
        memstatistics-file "/var/named/data/named_mem_stats.txt";\
        allow-query     { any; };\
        recursion no;\
};\
logging {\
        channel default_debug {\
                file "data/named.run";\
                severity dynamic;\
        };\
};\
zone "." IN {\
        type hint;\
        file "named.ca";\
};\
include "/etc/named.conf.local";\

Crea el archivo /etc/named.conf.local que se incluye al final de /etc/named.conf ( /etc/named.conf.local se llenará más tarde por ISPConfig si creas zonas DNS en ISPConfig):

touch /etc/named.conf.local

Luego creamos los enlaces de inicio y comenzamos BIND:

systemctl enable named.service
systemctl start named.service

19 Instalar Webalizer y AWStats

Webalizer y AWStats se pueden instalar de la siguiente manera:

yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

20 Instalar Jailkit

Jailkit es necesario solo si deseas chroot usuarios SSH. Se puede instalar de la siguiente manera (importante: Jailkit debe instalarse antes de ISPConfig - ¡no se puede instalar después!):

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./configure
make
make install
cd ..
rm -rf jailkit-2.17*

21 Instalar fail2ban

Esto es opcional pero recomendado, porque el monitor de ISPConfig intenta mostrar el registro:

yum -y install fail2ban

Debemos configurar fail2ban para registrar en el archivo de registro /var/log/fail2ban.log porque este es el archivo de registro que es monitoreado por el módulo Monitor de ISPConfig. Abre /etc/fail2ban/fail2ban.conf…

nano /etc/fail2ban/fail2ban.conf

… y asegúrate de que logtarget = /var/log/fail2ban.log:

[...]
# Opción: logtarget
# Notas.: Establece el objetivo de registro. Esto podría ser un archivo, SYSLOG, STDERR o STDOUT.
#         Solo se puede especificar un objetivo de registro.
#         Si cambias logtarget del valor predeterminado y estás
#         usando logrotate -- también ajusta o desactiva la rotación en el
#         archivo de configuración correspondiente
#         (por ejemplo, /etc/logrotate.d/fail2ban en sistemas Debian)
# Valores: [ STDOUT | STDERR | SYSLOG | FILE ]  Predeterminado: STDERR
#
logtarget = /var/log/fail2ban.log

[...] 

Luego crea los enlaces de inicio del sistema para fail2ban y inícialo:

systemctl enable fail2ban.service
systemctl start fail2ban.service

22 Instalar rkhunter

rkhunter se puede instalar de la siguiente manera:

yum -y install rkhunter

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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