Servidor Perfecto · 8 min read · Dec 18, 2025

El Servidor Perfecto - Debian 9 (Stretch) con Apache, BIND, Dovecot, PureFTPD e ISPConfig 3.1 - Página 2

10 Instalar Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin y mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear y mcrypt se pueden instalar de la siguiente manera:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php7.0-mcrypt mcrypt imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring memcached libapache2-mod-passenger php7.0-soap

Verás las siguientes preguntas:

Web server to reconfigure automatically: <- apache2  
 Configure database for phpmyadmin with dbconfig-common? <- yes  
Enter the phpmyadmin application password? <-  Just press enter  

Luego ejecuta el siguiente comando para habilitar los módulos de Apache suexec, rewrite, ssl, actions e include (más dav, dav_fs y auth_digest si deseas usar WebDAV):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

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 agregando el archivo de configuración /etc/apache2/conf-available/httpoxy.conf.

nano /etc/apache2/conf-available/httpoxy.conf

Pega el siguiente contenido en el archivo:


    RequestHeader unset Proxy early

Y habilita el módulo ejecutando:

a2enconf httpoxy  
service apache2 restart

10.1 Instalar HHVM (HipHop Virtual Machine)

No hay paquetes de HHVM disponibles para Debian 9 aún. HHVM es un modo PHP opcional, por lo que tu servidor funcionará sin él, solo que no podrás usar el modo PHP HHVM para sitios web.

10.2 SuPHP

SuPHP ya no está disponible para Debian 9, las funciones de SuPHP están desactualizadas y se eliminarán de ISPConfig también. Usa los modos PHP disponibles PHP-FPM o PHP-FCGI junto con suexec en lugar de SuPHP.

11 Instalar Let’s Encrypt

ISPConfig 3.1 tiene soporte para la autoridad de certificados SSL gratuita Let’s Encrypt. La función Let’s Encrypt te permite crear certificados SSL gratuitos para tu sitio web desde dentro de ISPConfig.

Ahora agregaremos soporte para Let’s Encrypt.

cd /usr/local/bin  
wget https://dl.eff.org/certbot-auto  
chmod a+x certbot-auto  
./certbot-auto --install-only

No se requieren más pasos que instalar LE. Los certificados SSL del sitio web son creados por ISPConfig cuando agregas los sitios web.

12 Instalar PHP-FPM

Para usar PHP-FPM con Apache, necesitamos el módulo mod_proxy_fcgi de Apache, que está instalado por defecto y solo necesita ser habilitado. Podemos instalar PHP-FPM de la siguiente manera:

apt-get -y install php7.0-fpm

Asegúrate de habilitar los módulos y reiniciar Apache:

a2enmod actions proxy_fcgi alias  
service apache2 restart

12.2 Instalar PHP Opcode Cache (opcional)

Opcache es un caché de opcodes PHP gratuito para almacenar en caché y optimizar el código intermedio de PHP. APCu es un módulo de compatibilidad que proporciona funciones compatibles con APC para Opcache que es utilizado por muchos sistemas de caché CMS. Se recomienda tener estas extensiones PHP instaladas para acelerar tu página PHP.

APCu se puede instalar de la siguiente manera:

apt-get -y install php7.0-opcache php-apcu

Ahora reinicia Apache:

service apache2 restart

13 Instalar Mailman

ISPConfig 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:

apt-get install mailman

Selecciona al menos un idioma, por ejemplo:

Languages to support: <-- en (Inglés)  
 Missing site list <-- Ok

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

newlist mailman
root@server1:~# newlist mailman  
Enter the email of the person running the list: <-- admin email address, e.g. [email protected]  
Initial mailman password: <-- admin password for the mailman list  
To finish creating your mailing list, you must edit your /etc/aliases (or  
equivalent) file by adding the following lines, and possibly running the  
`newaliases' program:  
   
## mailman mailing list  
mailman:              |/var/lib/mailman/mail/mailman post mailman  
mailman-admin:        |/var/lib/mailman/mail/mailman admin mailman  
mailman-bounces:      |/var/lib/mailman/mail/mailman bounces mailman  
mailman-confirm:      |/var/lib/mailman/mail/mailman confirm mailman  
mailman-join:         |/var/lib/mailman/mail/mailman join mailman  
mailman-leave:        |/var/lib/mailman/mail/mailman leave mailman  
mailman-owner:        |/var/lib/mailman/mail/mailman owner mailman  
mailman-request:      |/var/lib/mailman/mail/mailman request mailman  
mailman-subscribe:    |/var/lib/mailman/mail/mailman subscribe mailman  
mailman-unsubscribe:  |/var/lib/mailman/mail/mailman unsubscribe mailman  
   
Hit enter to notify mailman owner... <-- ENTER  
   
root@server1:~#

Abre /etc/aliases después…

nano /etc/aliases

… y agrega las siguientes líneas:

[...]  
## mailman mailing list  
mailman:              |/var/lib/mailman/mail/mailman post mailman  
mailman-admin:        |/var/lib/mailman/mail/mailman admin mailman  
mailman-bounces:      |/var/lib/mailman/mail/mailman bounces mailman  
mailman-confirm:      |/var/lib/mailman/mail/mailman confirm mailman  
mailman-join:         |/var/lib/mailman/mail/mailman join mailman  
mailman-leave:        |/var/lib/mailman/mail/mailman leave mailman  
mailman-owner:        |/var/lib/mailman/mail/mailman owner mailman  
mailman-request:      |/var/lib/mailman/mail/mailman request mailman  
mailman-subscribe:    |/var/lib/mailman/mail/mailman subscribe mailman  
mailman-unsubscribe:  |/var/lib/mailman/mail/mailman unsubscribe mailman  

Ejecuta:

newaliases

y reinicia Postfix:

service postfix restart

Finalmente, debemos habilitar la configuración de Apache de Mailman:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

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

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

Reinicia Apache después:

service apache2 restart

Luego inicia el demonio de Mailman:

service mailman start

14 Instalar PureFTPd y Quota

PureFTPd y quota se pueden instalar con el siguiente comando:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Crea el archivo dhparam para pure-ftpd:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Edita el archivo /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… y asegúrate de que el modo de inicio esté configurado en standalone y establece VIRTUALCHROOT=true:

[...]  
STANDALONE_OR_INETD=standalone  
[...]  
VIRTUALCHROOT=true  
[...]  

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.

Si deseas permitir sesiones FTP y TLS, ejecuta

echo 1 > /etc/pure-ftpd/conf/TLS

Para usar TLS, debemos crear un certificado SSL. Lo creo en /etc/ssl/private/, por lo que 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
Country Name (2 letter code) [AU]: <-- Ingresa el nombre de tu país (por ejemplo, "DE").  
State or Province Name (full name) [Some-State]: <-- Ingresa el nombre de tu estado o provincia.  
Locality Name (eg, city) []: <-- Ingresa tu ciudad.  
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Ingresa el nombre de tu organización (por ejemplo, el nombre de tu empresa).  
Organizational Unit Name (eg, section) []: <-- Ingresa el nombre de tu unidad organizativa (por ejemplo, "Departamento de TI").  
Common Name (eg, YOUR name) []: <-- Ingresa el nombre de dominio completamente calificado del sistema (por ejemplo, "server1.example.com").  
Email Address []: <-- Ingresa tu dirección de correo electrónico.

Cambia los permisos del certificado SSL:

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

Luego reinicia PureFTPd:

service pure-ftpd-mysql restart

Edita /etc/fstab. El mío se ve así (agregué, usrjquota=quota.user, grpjquota=quota.group, jqfmt=vfsv0 a la partición con el punto de montaje /):

nano /etc/fstab
# /etc/fstab: información estática del sistema de archivos.  
#  
# Usa 'blkid' para imprimir el identificador único universal para un  
# dispositivo; esto puede ser usado con UUID= como una forma más robusta de nombrar dispositivos  
# que funciona incluso si se agregan y eliminan discos. Ver fstab(5).  
#  
#        
# / estaba en /dev/sda1 durante la instalación  
UUID=f539c5cb-624f-4c27-a149-1446a251a453 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap estaba en /dev/sda5 durante la instalación  
UUID=8d3194e7-edb5-4492-937d-d066b4994baf none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Para habilitar quota, ejecuta estos comandos:

mount -o remount /
quotacheck -avugm  
quotaon -avug

15 Instalar BIND DNS Server

BIND se puede instalar de la siguiente manera:

apt-get install bind9 dnsutils

Si tu servidor es una máquina virtual, se recomienda encarecidamente instalar el demonio haveged para obtener una mayor entropía para la firma DNSSEC. Puedes instalar haveged en servidores no virtuales también, no debería causar problemas.

apt-get install haveged

Una explicación sobre ese tema se puede encontrar aquí.

16 Instalar Webalizer y AWStats

Webalizer y AWStats se pueden instalar de la siguiente manera:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

Abre /etc/cron.d/awstats después…

nano /etc/cron.d/awstats

… y comenta todo en ese archivo:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generar informes estáticos:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

17 Instalar Jailkit

Jailkit solo es necesario si deseas chroot a los usuarios SSH. Se puede instalar de la siguiente manera:

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

Ahora puedes instalar el paquete Jailkit.deb de la siguiente manera:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

18 Instalar fail2ban y UFW Firewall

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

apt-get install fail2ban

Para hacer que fail2ban monitoree PureFTPd y Dovecot, crea el archivo /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local

Y agrega la siguiente configuración:

[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix-sasl  
logpath = /var/log/mail.log  
maxretry = 3

Reinicia fail2ban después:

service fail2ban restart

Para instalar el firewall UFW, ejecuta este comando apt:

apt-get install ufw
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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