Servidor Ubuntu · 7 min read · Sep 25, 2025
El Servidor Perfecto - Ubuntu 15.10 (nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD e ISPConfig 3)
Este tutorial muestra los pasos para instalar un servidor Ubuntu 15.10 (Wiley Werewolf) 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, usaré 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.10 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 usará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.10 _Wily Werewolf_ - Release amd64 (20151021)]/ wily main restricted
#deb cdrom:[Ubuntu-Server 15.10 _Wily Werewolf_ - Release amd64 (20151021)]/ wily main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/ wily main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ wily main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ wily-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ wily universe
deb-src http://de.archive.ubuntu.com/ubuntu/ wily universe
deb http://de.archive.ubuntu.com/ubuntu/ wily-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ wily multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ wily multiverse
deb http://de.archive.ubuntu.com/ubuntu/ wily-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu wily-security main restricted
deb-src http://security.ubuntu.com/ubuntu wily-security main restricted
deb http://security.ubuntu.com/ubuntu wily-security universe
deb-src http://security.ubuntu.com/ubuntu wily-security universe
deb http://security.ubuntu.com/ubuntu wily-security multiverse
deb-src http://security.ubuntu.com/ubuntu wily-security multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu wily partner
# deb-src http://archive.canonical.com/ubuntu wily partner Luego ejecuta:
apt-get updatePara actualizar la base de datos de paquetes apt y luego:
apt-get upgradepara instalar las últimas actualizaciones (si las hay). Si ves que se instala un nuevo kernel como parte de las actualizaciones, debes 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. Desactivar AppArmor
AppArmor es una extensión de seguridad (similar a SELinux) que debería proporcionar seguridad extendida. No está instalado por defecto desde la versión 13.10. Vamos a verificar 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 desactivo (esto es obligatorio si deseas instalar ISPConfig más adelante).
Podemos desactivarlo 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. Instalar 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 el 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:
General type of mail configuration: <-- Internet Site
System mail name: <-- 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.cnf[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[...] Luego reiniciamos MariaDB:
service mysql restartEl nombre del servicio systemd para MariaDB y MySQL es “mysql”, así que el comando de reinicio es el mismo para ambos servidores de bases de datos.
Ahora establecemos una contraseña root en MariaDB. Ejecuta:
mysql_secure_installationSe te harán estas preguntas:
Enter current password for root (enter for none): <-- presiona enter
Set root password? [Y/n] <-- y
New password: <-- Ingresa la nueva contraseña root de MariaDB aquí
Re-enter new password: <-- Repite la contraseña
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- yLuego ejecuta este comando para deshabilitar el plugin de autenticación UNIX para el usuario root:
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[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[...] Luego reiniciamos 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 servidores de bases de datos.
Para MySQL y MariaDB:
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 8032/mysqld
root@server1:~#7. Instalar 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.