Servidor Ubuntu · 7 min read · Sep 25, 2025

El Servidor Perfecto - Ubuntu 15.04 (nginx, BIND, Dovecot e ISPConfig 3)

Este tutorial muestra los pasos para instalar un servidor Ubuntu 15.04 (Vivid Vervet) con Nginx, PHP, MariaDB, Postfix, pure-ftpd, BIND, Dovecot e ISPConfig 3. ISPConfig 3 es un panel de control de alojamiento web que te permite configurar los servicios instalados a través de un navegador web. Esta configuración proporciona un servidor de alojamiento completo con servicios web, de correo electrónico (incl. filtro de spam y antivirus), base de datos, FTP y DNS.

1. Nota Preliminar

En este tutorial, utilizaré el nombre de host server1.example.com con la dirección IP 192.168.1.100 y la puerta de enlace 192.168.1.1 para la configuración de red. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado. Antes de continuar, necesitas tener una instalación mínima básica de Ubuntu 15.04 como se explica en el tutorial.

Los pasos en este tutorial deben ejecutarse como usuario root, así que no agregaré “sudo” delante de los comandos. Inicia sesión como usuario root en tu servidor antes de continuar o ejecuta:

sudo su

para convertirte en root cuando estés conectado como un usuario diferente en la terminal.

Los comandos para editar archivos utilizarán el editor “nano”, puedes reemplazarlo con un editor de tu elección. Nano es un editor de archivos fácil de usar para la terminal. Si te gusta usar nano y aún no lo has instalado, ejecuta:

apt-get install nano

2. Actualiza Tu Instalación de Linux

Edita /etc/apt/sources.list. Comenta o elimina el CD de instalación del archivo y asegúrate de que los repositorios universe y multiverse estén habilitados. Debería verse así:

nano /etc/apt/sources.list
#  
# deb cdrom:[Ubuntu-Server 15.04 _Vivid Vervet_ - Release amd64 (20150422)]/ vivid main restricted  
#deb cdrom:[Ubuntu-Server 15.04 _Vivid Vervet_ - Release amd64 (20150422)]/ vivid main restricted  
# Ver http://help.ubuntu.com/community/UpgradeNotes para cómo actualizar a  
# versiones más nuevas de la distribución.  
deb http://de.archive.ubuntu.com/ubuntu/ vivid main restricted  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid main restricted  
  
## Actualizaciones de corrección de errores importantes producidas después de la liberación final de la  
## distribución.  
deb http://de.archive.ubuntu.com/ubuntu/ vivid-updates main restricted  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-updates main restricted  
  
## N.B. el software de este repositorio NO ESTÁ SOPORTADO en absoluto por el  equipo de Ubuntu.  
## Además, ten en cuenta que el software en universe NO RECIBIRÁ ninguna  
## revisión o actualizaciones del equipo de seguridad de Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ vivid universe  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid universe  
deb http://de.archive.ubuntu.com/ubuntu/ vivid-updates universe  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-updates universe  
  
## N.B. el software de este repositorio NO ESTÁ SOPORTADO en absoluto por el  equipo de Ubuntu, y puede no estar bajo una licencia gratuita. Por favor, asegúrate de  
## tus derechos para usar el software. Además, ten en cuenta que el software en  
## multiverse NO RECIBIRÁ ninguna revisión o actualizaciones del equipo de  
## seguridad de Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ vivid multiverse  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid multiverse  
deb http://de.archive.ubuntu.com/ubuntu/ vivid-updates multiverse  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-updates multiverse  
  
## N.B. el software de este repositorio puede no haber sido probado tan  
## extensamente como el contenido en la liberación principal, aunque incluye  
## versiones más nuevas de algunas aplicaciones que pueden proporcionar características útiles.  
## Además, ten en cuenta que el software en backports NO RECIBIRÁ ninguna revisión  
## o actualizaciones del equipo de seguridad de Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ vivid-backports main restricted universe multiverse  
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-backports main restricted universe multiverse  
  
deb http://security.ubuntu.com/ubuntu vivid-security main restricted  
deb-src http://security.ubuntu.com/ubuntu vivid-security main restricted  
deb http://security.ubuntu.com/ubuntu vivid-security universe  
deb-src http://security.ubuntu.com/ubuntu vivid-security universe  
deb http://security.ubuntu.com/ubuntu vivid-security multiverse  
  
## Descomenta las siguientes dos líneas para agregar software del  repositorio 'partner' de Canonical.  
## Este software no es parte de Ubuntu, pero es ofrecido por Canonical y los  
## respectivos proveedores como un servicio a los usuarios de Ubuntu.  
# deb http://archive.canonical.com/ubuntu vivid partner  
# deb-src http://archive.canonical.com/ubuntu vivid partner                                                  

Luego ejecuta

apt-get update

para actualizar la base de datos de paquetes apt y

apt-get upgrade

para instalar las últimas actualizaciones (si las hay). Si ves que se instala un nuevo kernel como parte de las actualizaciones, deberías reiniciar el sistema después:

reboot

3. Cambia la Shell Predeterminada

/bin/sh es un enlace simbólico a /bin/dash, sin embargo, necesitamos /bin/bash, no /bin/dash. Por lo tanto, hacemos esto:

dpkg-reconfigure dash

¿Usar dash como la shell del sistema predeterminada (/bin/sh)? <– No

Si no haces esto, la instalación de ISPConfig fallará.

4. Deshabilitar AppArmor

AppArmor es una extensión de seguridad (similar a SELinux) que debería proporcionar seguridad extendida. No está instalado por defecto a partir de 13.10. Verificaremos si está instalado. 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 AppArmor estaba causando el problema). Por lo tanto, lo deshabilito (esto es un requisito si deseas instalar ISPConfig más adelante).

Podemos deshabilitarlo así:

service apparmor stop  
update-rc.d -f apparmor remove  
apt-get remove apparmor apparmor-utils

5. Sincroniza el Reloj del Sistema

Es una buena idea sincronizar el reloj del sistema con un servidor NTP ( n etwork t ime p rotocol) a través de Internet. Simplemente ejecuta

apt-get install ntp ntpdate

y tu hora del sistema siempre estará sincronizada.

6. Instala Postfix, Dovecot, MariaDB, phpMyAdmin, rkhunter, binutils

Podemos instalar Postfix, Dovecot, MariaDB (como reemplazo de MySQL), rkhunter y binutils con un solo comando:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

MariaDB es un fork del servidor de base de datos MySQL, desarrollado por el desarrollador original de MySQL, Monty Widenius. Según pruebas encontradas en Internet, MariaDB es más rápido que MySQL y su desarrollo avanza a un ritmo más rápido, por lo tanto, la mayoría de las distribuciones de Linux reemplazaron MySQL con MariaDB como servidor de base de datos “similar a MySQL” por defecto. En caso de que prefieras MySQL sobre MariaDB, reemplaza “mariadb-client mariadb-server” en el comando anterior con “mysql-client mysql-server”.

Se te harán las siguientes preguntas:

¿Crear un certificado SSL autofirmado? <-- sí  
Nombre de host: <-- server1.example.com  
Tipo general de configuración de correo: <-- Internet Site  
Nombre de correo del sistema: <-- server1.example.com

A continuación, abre los puertos TLS/SSL y de envío en Postfix:

nano /etc/postfix/master.cf

Descomenta las secciones de envío y smtps de la siguiente manera: agrega la línea -o smtpd_client_restrictions=permit_sasl_authenticated,reject a ambas secciones y deja todo lo demás comentado:

[...]  
submission inet n       -       -       -       -       smtpd  
  -o syslog_name=postfix/submission  
  -o smtpd_tls_security_level=encrypt  
  -o smtpd_sasl_auth_enable=yes  
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
#  -o smtpd_reject_unlisted_recipient=no  
#  -o smtpd_client_restrictions=$mua_client_restrictions  
#  -o smtpd_helo_restrictions=$mua_helo_restrictions  
#  -o smtpd_sender_restrictions=$mua_sender_restrictions  
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject  
#  -o milter_macro_daemon_name=ORIGINATING  
smtps     inet  n       -       -       -       -       smtpd  
  -o syslog_name=postfix/smtps  
  -o smtpd_tls_wrappermode=yes  
  -o smtpd_sasl_auth_enable=yes  
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
#  -o smtpd_reject_unlisted_recipient=no  
#  -o smtpd_client_restrictions=$mua_client_restrictions  
#  -o smtpd_helo_restrictions=$mua_helo_restrictions  
#  -o smtpd_sender_restrictions=$mua_sender_restrictions  
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject  
#  -o milter_macro_daemon_name=ORIGINATING  
[...]  

Reinicia Postfix después:

service postfix restart

Queremos que MariaDB/MySQL escuche en todas las interfaces, no solo en localhost. Por lo tanto, editamos /etc/mysql/mariadb.conf.d/mysqld.cnf (para MariaDB) o /etc/mysql/my.cnf (para MySQL) y comentamos la línea bind-address = 127.0.0.1:

MariaDB

nano /etc/mysql/mariadb.conf.d/mysqld.cnf

Ahora establecemos una contraseña de root en MariaDB. Ejecuta:

mysql_secure_installation

Se te harán estas preguntas:

Ingresa la contraseña actual para root (presiona enter para ninguna): <-- presiona enter  
¿Establecer contraseña de root? [Y/n] <-- y  
Nueva contraseña: <-- Ingresa la nueva contraseña de root de MariaDB aquí  
Reingresa la nueva contraseña: <-- Repite la contraseña  
¿Eliminar usuarios anónimos? [Y/n] <-- y  
¿Deshabilitar el inicio de sesión remoto de root? [Y/n] <-- y  
¿Recargar tablas de privilegios ahora? [Y/n] <-- y

Luego ejecuta este comando para deshabilitar el plugin de autenticación:

echo "update user set plugin='' where User='root';flush privileges;" | mysql --defaults-file=/etc/mysql/debian.cnf mysql

Para permitir la autenticación basada en contraseña desde PHPMyAdmin.

MySQL

nano /etc/mysql/my.cnf
[...]  
# En lugar de skip-networking, el valor predeterminado ahora es escuchar solo en  
# localhost, lo cual es más compatible y no es menos seguro.  
#bind-address           = 127.0.0.1  
[...]  

Luego reiniciamos MariaDB / MySQL:

service mysql restart

El nombre del servicio systemd para MariaDB y MySQL es “mysql”, así que el comando de reinicio es el mismo para ambos.

Ahora verifica que la red esté habilitada. Ejecuta:

netstat -tap | grep mysql

La salida debería verse así:

root@server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN      23785/mysqld    
root@server1:~#

7. Instala Amavisd-new, SpamAssassin y Clamav

Para instalar amavisd-new, SpamAssassin y ClamAV, ejecutamos

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

La configuración de ISPConfig 3 utiliza amavisd-new que carga la biblioteca de filtros de SpamAssassin internamente, por lo que podemos detener SpamAssassin para liberar RAM:

service spamassassin stop  
update-rc.d -f spamassassin remove

Para actualizar las firmas del antivirus ClamAV y comenzar el servicio Clamd. El proceso de actualización puede tardar un tiempo, no lo interrumpas.

freshclam  
service clamav-daemon start
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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