Configuración de ISPConfig Perfect Multiserver en Ubuntu 20.04 y Debian 10

Configuración de ISPConfig Perfect Multiserver en Ubuntu 20.04 y Debian 10

Este tutorial lo guiará a través de la instalación de su propia configuración multiservidor ISPConfig 3 con servidores dedicados para el panel, web, DNS, correo y correo web. Tanto el DNS como el servidor de correo tendrán un servidor espejo para redundancia. Puede agregar fácilmente más servidores de cierto tipo después.

Se utilizará el instalador automático oficial de ISPConfig para configurar los servidores. Se utilizará Debian 10 como sistema operativo. La guía también ha sido probada con Ubuntu 20.04.2.

Puede leer más sobre el instalador automático aquí.

1. Nota Preliminar

Estos serán los hosts que estamos instalando:

host       FQDN                   IP
panel      panel.example.com      10.0.64.12
web01      web01.example.com      10.0.64.13
mx1        mx1.example.com        10.0.64.14
mx2        mx2.example.com        10.0.64.15
ns1        ns1.example.com        10.0.64.16
ns2        ns2.example.com        10.0.64.17
webmail    webmail.example.com    10.0.64.18

Usaremos ejemplos de nombres de host, direcciones IP y rangos de IP. Asegúrese de cambiarlos en consecuencia en sus comandos/configuración.

Todos los servidores están en la misma red privada pero tienen su propia IP pública. Si sus servidores no tienen una red local compartida, use sus direcciones IPv4 públicas.

Antes de iniciar la instalación de un servidor, configure un registro A y eventual AAAA que apunte al público Dirección IP de su servidor. Por ejemplo, si el nombre de host es panel.example.com y la IP pública es 11.22.33.44, debe configurar un registro A para panel.example.com que apunte a 11.22.33.44. Cada servidor debe tener su propia IP pública y nombre de host.

2. Instalación del servidor maestro

Iniciar sesión como root o ejecutar

su -

para convertirse en el usuario raíz de su servidor antes de continuar. IMPORTANTE: debe usar ‘su -‘ y no solo ‘su’, de lo contrario, Debian configura incorrectamente su variable PATH.

2.1 Configurar el nombre de host y los hosts

El nombre de host de su servidor debe ser un subdominio como «panel.example.com». No use un nombre de dominio sin una parte de subdominio como «example.com» como nombre de host, ya que esto causará problemas más adelante con la configuración de su correo. Primero, debe verificar el nombre de host en /etc/hosts y cambiarlo cuando sea necesario. La línea debe ser: «Dirección IP – espacio – nombre de host completo, incluido el dominio – espacio – parte del subdominio». Para nuestro nombre de host panel.example.com, el archivo se verá así (algunas líneas pueden ser diferentes, puede diferir según el proveedor de alojamiento):

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost
# This line should be changed on every node to the correct servername:
127.0.1.1 panel.example.com panel
# These lines are the same on every node:
10.0.64.12 panel.example.com panel
10.0.64.13 web01.example.com web01
10.0.64.14 mx1.example.com mx1
10.0.64.15 mx2.example.com mx2
10.0.64.16 ns1.example.com ns1
10.0.64.17 ns2.example.com ns2
10.0.64.18 webmail.example.com webmail

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Como puede ver, también agregamos los nombres de host de nuestros otros servidores, para que puedan comunicarse a través de la red interna más tarde.

Luego edite el archivo /etc/hostname:

nano /etc/hostname

Contendrá únicamente la parte del subdominio, en nuestro caso:

panel

Finalmente, reinicie el servidor para aplicar el cambio:

systemctl reboot

Inicie sesión nuevamente y verifique si el nombre de host es correcto ahora con estos comandos:

hostname
hostname -f

La salida será así:

[email protected]:~$ hostname
panel
[email protected]:~$ hostname -f
panel.example.com

Ahora podemos ejecutar el instalador automático para instalar todos los paquetes necesarios e ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=system

Después de un tiempo, verás:

WARNING! This script will reconfigure your complete server!
It should be run on a freshly installed server and all current configuration that you have done will most likely be lost!
Type 'yes' if you really want to continue:

Responda «sí» y presione enter. Ahora se iniciará el instalador.

Cuando el instalador haya terminado, le mostrará el administrador de ISPConfig y la contraseña de root de MySQL de esta manera:

[INFO] Your ISPConfig admin password is: 5GvfSSSYsdfdYC
[INFO] Your MySQL root password is: kkAkft82d!kafMwqxdtYs

Asegúrese de anotar esta información, junto con el servidor al que pertenecen, ya que los necesitará más adelante.

2.2 Configuración de los usuarios remotos de MySQL para nuestros servidores esclavos

Iniciaremos sesión en MySQL para permitir que los otros servidores se conecten a la base de datos ISPConfig en este nodo durante la instalación, agregando 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.

En la terminal, ejecuta

mysql -u root -p

Ingrese su contraseña de MySQL y luego ejecute los siguientes comandos:

CREATE USER 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.13' 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'@'10.0.64.14' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.14' 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'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' 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'@'10.0.64.16' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.16' 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'@'10.0.64.17' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.17' 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'@'10.0.64.18' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.18' 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'@'web01.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'web01.example.com' 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'@'mx1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx1.example.com' 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'@'mx2.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx2.example.com' 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.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.com' 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.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.com' 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'@'webmail.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'webmail.example.com' 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 (10.0.64.12 – 10.0.64.18) con las direcciones IP de sus servidores, web01.example.com, mx1.example.com, mx2.example.com, ns1.example.com , ns2.example.com y webmail.example.com con los nombres de host de sus servidores y myrootpassword con la contraseña raíz deseada (es una buena práctica usar una contraseña diferente para cada host. Anótelas, ya que las necesitará más adelante al instalar o actualizar sus servidores esclavos).

Cuando haya terminado, puede salir de MySQL con:

EXIT;

Ahora puede iniciar sesión en ISPConfig en https://panel.example.com:8080 con el nombre de usuario admin y la contraseña que te mostró el instalador.

2.3 Configuración del cortafuegos

Lo último que debemos hacer es configurar nuestro firewall.

Inicie sesión en la interfaz de usuario de ISPConfig y vaya a Sistema -> Firewall. Luego haga clic en «Agregar nuevo registro de firewall».

Para el servidor del panel, tenemos que abrir los siguientes puertos:

TCP:

22,80,443,8080,8081

No es necesario abrir puertos UDP a través de la interfaz de usuario.

También vamos a abrir el puerto 3306, que se usa para MySQL, pero solo desde nuestra red local por razones de seguridad. Para hacerlo, ejecute el siguiente comando desde la CLI, después de que se propague el cambio desde el panel ISPConfig (cuando el punto rojo desaparezca):

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp

Su panel ahora está configurado y listo para usar.

En el siguiente paso, instalaremos el servidor web.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *