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 supara 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 nano2. 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 updatepara actualizar la base de datos de paquetes apt y
apt-get upgradepara 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:
reboot3. 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-utils5. 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 ntpdatey 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 sudoMariaDB 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.comA continuación, abre los puertos TLS/SSL y de envío en Postfix:
nano /etc/postfix/master.cfDescomenta 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 restartQueremos 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.cnfAhora establecemos una contraseña de root en MariaDB. Ejecuta:
mysql_secure_installationSe 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] <-- yLuego 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 mysqlPara 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 restartEl 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 mysqlLa 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-perlLa 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 removePara 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 startRecibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.