Servidor Virtual · 12 min read · Dec 17, 2025

Entorno Virtual Multiserver Con Servidores Web & MySQL, Correo & DNS Dedicados En Debian Squeeze Con ISPConfig 3 - Página 2

5 Creando Los Servidores Virtuales

Ahora utilizaremos el Panel Web OVZ para crear nuestros servidores virtuales. Inicie sesión en el panel y agregue sus IPs en Direcciones IP. Luego, haga clic en localhost y Plantillas de SO.

Ahora tenemos que descargar una plantilla para nuestros servidores virtuales. Lo hacemos haciendo clic en Instalar Nueva Plantilla de SO -> Contribuido y seleccionamos debian-6.0-amd64-minimal.

Ahora regrese a localhost y haga clic en Crear servidor virtual. Complete los campos como se indica a continuación:

  • ID del Servidor (VEID): un número (yo elegiría la última parte de su IP, así que 2 para el primero)
  • Plantilla de SO: ya seleccionada la correcta
  • Plantilla del Servidor: ilimitada
  • Dirección IP: 192.168.1.2
  • Nombre de Host: web.example.tld
  • Servidor DNS: 8.8.4.4 8.8.8.8 (que son los DNS de Google)
  • deje el resto como está y asigne Espacio en Disco, RAM y CPU como desee…

Repita este paso para todos sus servidores virtuales (finalmente 4 veces: Web, Correo, 2x DNS).

5.1 Preparando Los servidores virtuales

Ahora debería iniciar sesión en cada uno de los servidores virtuales y ejecutar estos comandos:

apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade
apt-get -y install nano wget ntp ntpdate

que los actualizará a la última versión e instalará algunos paquetes faltantes.

6 Instalando Los Servidores Dedicados

6.1 Instalando El Servidor Web/DB

Edite el archivo hosts y agregue las direcciones IP y nombres de host para todos los servidores. Los nombres de host y direcciones IP deben ajustarse para coincidir con su configuración.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# Las siguientes líneas son deseables para hosts compatibles con IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Establezca el nombre de host del servidor:

echo web.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

Instale el servidor MySQL. Una instancia del servidor MySQL es necesaria en cada servidor ya que ISPConfig lo utiliza para sincronizar la configuración entre los servidores.

apt-get -y install mysql-client mysql-server

Ingrese la nueva contraseña para MySQL cuando lo solicite el instalador.

Queremos que MySQL escuche en todas las interfaces en el servidor maestro, no solo en localhost, por lo tanto, editamos /etc/mysql/my.cnf y comentamos la línea bind-address = 127.0.0.1:

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 reinicie MySQL:

/etc/init.d/mysql restart

Ahora instale Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear y mcrypt de la siguiente manera:

apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo zip wget

Verá la siguiente pregunta:

Servidor web para reconfigurar automáticamente: <-- apache2

Luego ejecute el siguiente comando para habilitar los módulos de Apache suexec, rewrite, ssl, actions, headers, expires e include:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest headers expires

PureFTPd se puede instalar con el siguiente comando:

apt-get -y install pure-ftpd-common pure-ftpd-mysql

Edite el archivo /etc/default/pure-ftpd-common...

vi /etc/default/pure-ftpd-common

... y asegúrese de que virtualchroot esté configurado VIRTUALCHROOT=true:

[…] 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 desea permitir sesiones FTP y TLS, ejecute echo 1 > /etc/pure-ftpd/conf/TLS 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) [AU]: <-- Ingrese el Nombre de su País (por ejemplo, "DE"). Nombre del Estado o Provincia (nombre completo) [Some-State]: <-- Ingrese el Nombre de su Estado o Provincia. Nombre de la Localidad (por ejemplo, ciudad) []: <-- Ingrese su Ciudad. Nombre de la Organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- Ingrese el Nombre de su Organización (por ejemplo, el nombre de su empresa). Nombre de la Unidad Organizativa (por ejemplo, sección) []: <-- Ingrese el Nombre de su Unidad Organizativa (por ejemplo, "Departamento de TI"). Nombre Común (por ejemplo, SU nombre) []: <-- Ingrese el Nombre de Dominio Totalmente Calificado del sistema (por ejemplo, "web.example.tld"). Dirección de Correo Electrónico []: <-- Ingrese su Dirección de Correo Electrónico. Cambie los permisos del certificado SSL: chmod 600 /etc/ssl/private/pure-ftpd.pem Instale vlogger, webalizer y awstats: apt-get -y install vlogger webalizer awstats Abra /etc/cron.d/awstats después... vi /etc/cron.d/awstats ... y comente ambos trabajos cron en ese archivo: #/10 * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

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


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

apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper

cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz  
tar xvfz jailkit-2.14.tar.gz  
cd jailkit-2.14  
./debian/rules binary  
cd ..  
dpkg -i jailkit_2.14-1_*.deb  
rm -rf jailkit-2.14*

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

apt-get install fail2ban

Para hacer que fail2ban monitoree PureFTPd, cree el archivo /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local

[pureftpd]

enabled = true port = ftp filter = pureftpd logpath = /var/log/syslog maxretry = 3


Luego cree el siguiente archivo de filtro:

vi /etc/fail2ban/filter.d/pureftpd.conf

[Definition] failregex = .pure-ftpd: (.@) [WARNING] Authentication failed for user.* ignoreregex =


Reinicie fail2ban después:

/etc/init.d/fail2ban restart

A continuación, instalaremos ISPConfig 3. Para obtener la URL de descarga de la última versión estable de ISPConfig 3, visite el sitio web de ISPConfig: http://www.ispconfig.org/ispconfig-3/download/

Este servidor es el servidor maestro en nuestra configuración que ejecuta la interfaz del panel de control de ISPConfig. Para permitir que las otras instancias de MySQL se conecten a la base de datos MySQL en este nodo durante la instalación, tenemos que agregar registros de usuario raíz de MySQL en la base de datos maestra para cada nombre de host y dirección IP del servidor esclavo. La forma más fácil de hacer esto es utilizar la herramienta de administración basada en web phpmyadmin que ya instalamos. Abra la URL http://192.168.1.2/phpmyadmin en un navegador web, inicie sesión como usuario raíz de MySQL y ejecute estas consultas MySQL:

CREATE USER 'root'@'192.168.1.3' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.3' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER 'root'@'192.168.1.4' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.4' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER 'root'@'192.168.1.5' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.5' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER 'root'@'mail.example.tld' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mail.example.tld' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER 'root'@'ns1.example.tld' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.tld' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER 'root'@'ns2.example.tld' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.tld' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

En los comandos sql anteriores, reemplace las direcciones IP (192.168.1.3 - 192.168.1.5) con las direcciones IP de sus servidores y reemplace mail.example.tld, ns1.example.tld y ns2.example.tld con los nombres de host de sus servidores y myrootpassword con la contraseña raíz deseada.

Haga clic en el botón de recargar permisos o reinicie MySQL. Luego cierre phpmyadmin.

Regrese a la terminal de web.example.tld y descargue la última versión estable de ISPConfig 3:

cd /tmp  
wget  
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

Luego inicie el script de instalación:

php -q install.php

Seleccione el idioma (en,de) [en]: <-- en  
Modo de instalación (estándar, experto) [estándar]: <-- experto  
Nombre de host completamente calificado (FQDN) del servidor, por ejemplo, server2.domain.tld [web.example.tld]: <-- web.example.tld  
Nombre de host del servidor MySQL [localhost]: <-- localhost  
Nombre de usuario raíz de MySQL [root]: <-- root  
Contraseña raíz de MySQL []: <-- Ingrese su contraseña raíz de MySQL aquí  
Base de datos MySQL a crear [dbispconfig]: <-- dbispconfig  
Conjunto de caracteres MySQL [utf8]: <-- utf8  
¿Este servidor se unirá a una configuración multiserver existente de ISPConfig (y,n) [n]: <-- n  
Configurar Correo (y,n) [y]: <-- n  
Configurar Jailkit (y,n) [y]: <-- y  
Configurar Servidor FTP (y,n) [y]: <-- y  
Configurar Servidor DNS (y,n) [y]: <-- n  
Configurar Servidor Apache (y,n) [y]: <-- y  
Configurar Servidor Cortafuegos (y,n) [y]: <--n  
Instalar Interfaz Web de ISPConfig (y,n) [y]: <--y  
Puerto de ISPConfig [8080]: <-- 8080  
Habilitar SSL para la interfaz web de ISPConfig (y,n) [y]: <-- y  
Nombre del País (código de 2 letras) [AU]: <-- INGRESAR  
Nombre del Estado o Provincia (nombre completo) [Some-State]: <-- INGRESAR  
Nombre de la Localidad (por ejemplo, ciudad) []: <-- INGRESAR  
Nombre de la Organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- INGRESAR  
Nombre de la Unidad Organizativa (por ejemplo, sección) []: <-- INGRESAR  
Nombre Común (por ejemplo, SU nombre) []: <-- INGRESAR  
Dirección de Correo Electrónico []: <-- INGRESAR  
Una contraseña de desafío []: <-- INGRESAR  
Un nombre de empresa opcional []: <-- INGRESAR

Limpie los directorios de instalación:

cd /tmp  
rm -rf /tmp/ispconfig3_install/install  
rm -f /tmp/ISPConfig-3-stable.tar.gz

#### 6.2 Instalando El Servidor de Correo

Edite el archivo hosts y agregue las direcciones IP y nombres de host para todos los servidores. Los nombres de host y direcciones IP deben ajustarse para coincidir con su configuración.

nano /etc/hosts

127.0.0.1 localhost 192.168.1.2 web.example.tld 192.168.1.3 mail.example.tld 192.168.1.4 ns1.example.tld 192.168.1.5 ns2.example.tld

::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts


Establezca el nombre de host del servidor:

echo mail.example.tld > /etc/hostname  
echo mail.example.tld > /etc/mailname  
/etc/init.d/hostname.sh start

Instale postfix, dovecot y MySQL con un solo comando:

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

Ingrese la nueva contraseña para mysql cuando lo solicite el instalador y responda las siguientes preguntas como se describe a continuación:

Tipo general de configuración? <-- Sitio de Internet  
Nombre de correo? <-- mail.example.tld

Para instalar amavisd-new, SpamAssassin y ClamAV, ejecutamos:

apt-get -y 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

Si desea usar listas de correo en su servidor, entonces instale mailman. Este paso es opcional. mailman requiere un servidor web apache, así que si no desea ejecutar una instancia de apache en su servidor de correo, entonces no instale mailman.

apt-get -y install mailman

El instalador apt para mailman le pedirá que seleccione los idiomas para la lista de correo. Habilite todos los idiomas que desea usar para mailman. A continuación, cree la lista de correo "mailman".

newlist mailman

y ingrese la dirección de correo electrónico y la nueva contraseña para el administrador de la lista de correo. Ese es el último paso de la instalación de mailman. El siguiente comando para instalar php debe ejecutarse en cada servidor, independientemente de si instaló mailman o no.

Luego instale la versión de línea de comandos de PHP para poder ejecutar scripts de shell basados en PHP para ISPConfig:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Instale fail2ban: 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, cree el archivo /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local

[dovecot-pop3imap]

enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port=”pop3,pop3s,imap,imaps”, protocol=tcp] logpath = /var/log/mail.log maxretry = 5


Luego cree el siguiente archivo de filtro:

vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition] failregex = (?: pop3-login|imap-login): .(?:Authentication failure|Aborted login (auth failed|Aborted login (tried to use disabled|Disconnected (auth failed|Aborted login (\d+ authentication attempts).rip=(?P\S),. ignoreregex =


Reinicie fail2ban después:

/etc/init.d/fail2ban restart

Ahora instalaré ISPConfig 3 en este servidor. Para obtener la URL de descarga de la última versión estable de ISPConfig 3, visite el sitio web de ISPConfig: http://www.ispconfig.org/ispconfig-3/download/

Descargue la última versión estable de ISPConfig 3:

cd /tmp  
wget  
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

Luego inicie el script de instalación:

php -q install.php

Seleccione el idioma (en,de) [en]: <-- en  
Modo de instalación (estándar, experto) [estándar]: <-- experto  
Nombre de host completamente calificado (FQDN) del servidor, por ejemplo, server1.domain.tld [mail.example.tld]: <-- mail.example.tld  
Nombre de host del servidor MySQL [localhost]: <-- localhost  
Nombre de usuario raíz de MySQL [root]: <-- root  
Contraseña raíz de MySQL []: <-- Ingrese su contraseña raíz de MySQL aquí  
Base de datos MySQL a crear [dbispconfig]: <-- dbispconfig  
Conjunto de caracteres MySQL [utf8]: <-- utf8  
¿Este servidor se unirá a una configuración multiserver existente de ISPConfig (y,n) [n]: <-- y  
Nombre de host del servidor maestro MySQL []: <-- web.example.tld  
Nombre de usuario raíz del servidor maestro MySQL [root]: <-- root  
Contraseña raíz del servidor maestro MySQL []: <-- Ingrese la contraseña raíz del servidor maestro aquí  
Nombre de la base de datos del servidor maestro MySQL [dbispconfig]: <-- dbispconfig  
Configurar Correo (y,n) [y]: <-- y

Nombre del País (código de 2 letras) [AU]: <-- DE (Ingrese el código de país ISO donde vive aquí)  
Nombre del Estado o Provincia (nombre completo) [Some-State]: <-- Niedersachsen (Ingrese el estado donde vive aquí)  
Nombre de la Localidad (por ejemplo, ciudad) []: <-- Lueneburg (Ingrese la ciudad aquí)  
Nombre de la Organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- INGRESAR  
Nombre de la Unidad Organizativa (por ejemplo, sección) []: <-- INGRESAR  
Nombre Común (por ejemplo, SU nombre) []: <-- INGRESAR  
Dirección de Correo Electrónico []: <-- INGRESAR

Configurar Jailkit (y,n) [y]: <-- n  
Configurar Servidor FTP (y,n) [y]: <-- n  
Configurar Servidor DNS (y,n) [y]: <-- n  
Configurar Servidor Apache (y,n) [y]: <-- n  
Configurar Servidor Cortafuegos (y,n) [y]: <--n  
Instalar Interfaz Web de ISPConfig (y,n) [y]: <--n

Ejecute...

rm -f /var/www/ispconfig

... para eliminar el enlace de la interfaz ISPConfig en el directorio /var/www.

Limpie los directorios de instalación:

rm -rf /tmp/ispconfig3_install/install  
rm -f /tmp/ISPConfig-3-stable.tar.gz
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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