Tabla de Contenidos

Anotaciones técnicas sobre servidores en máquinas virtuales

Por Félix Molinuevo, AXR Global ::: Fecha creación: 20200329

Introducción

La instalación de un servidor en una máquina virtual es un proceso simple y muy rápido. En pocos minutos se puede tener una instancia preparada para brindar diversos servicios.

Sin embargo, es imprescindible realizar varios trabajos que posibiliten la recuperación en caso de desastres, incluyendo avisos de errores y backups remotos.

Los pasos que indico acá someramente, son los que realizamos en AXR 1) cuando instalamos un nueva instancia virtual.

Sobre la configuración inicial

Instalado el sistema operativo básico, y los utilitarios estándares, se instalará por ejemplo, si será destinado a hosting, un sistema de administración de los clientes y hosts virtuales, como Virtualmin 2).

Para que los servicios funcionen adecuadamente, es imprescindible poner como hostname un FQDN (Fully Qualified Domain Name), por ejemplo srv01.dominio.com. Y ese FQDN debe tener su correspondiente registro A en el DNS, apuntando a la IP de la instancia.

Virtualmin instalará todo lo necesario para un servidor de hosting, correo electrónico, scripting, bases de datos y muchos otros servicios.

Adicionalmente, instalo habitualmente varios utilitarios que facilitan la administración y el trabajo día a día:

apt install screen zsh htop mc iptraf-ng bsd-mailx dnsutils mutt rsync ccze aptitude

La configuración del shell zsh es lo que sigue a continuación, copiando el archivo .zshrc de algún servidor existente, y el prompt que utilizo para servidores de hosting virtuales. Luego se copia la configuración de screen en el archivo .screenrc y se prueba que todo funcione adecuadamente.

Para monitorear el servidor con Nagios, necesitamos instalar Nagios NRPE 3):

apt install nagios-nrpe-server

Y se configura Nagios NRPE, tanto en el servidor como en el cliente.

El último paso es activar el firewall FirewallD 4) y probar desde otra ubicación que haya quedado correctamente configurado y no haya puertos innecesarios abiertos. Para ello se puede usar por ejemplo, Nmap 5).

Para que cualquier mensaje enviado a root llegue a alguna cuenta de monitoreo, se debe agregar el correspondiente alias en /etc/aliases:

root: direcciondemonitoreo@dominio

y ejecutar el comando newaliases.

Es necesario también revisar la configuración de fail2ban 6) para asegurarse que quede como corresponde, activando las jails necesarias según los servicios instalados. Además, configuro el tiempo de bloqueo de IPs en una semana en /etc/fail2ban/jail.conf:

bantime  = 7d

En algunos servidores virtuales quizá sea necesario configurar un archivo de swap. Aunque obviamente no es lo ideal, a veces es necesario. Para ello editar /etc/fstab, agregando una línea:

/swapfile   none    swap    sw    0   0

Y ejecutar los siguientes comandos:

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon -a

Pasos finales

Nagios

Se debe agregar el nuevo servidor en Nagios 7). Para ello se creará un nuevo objeto, con los servicios necesarios a monitorear, y se lo agregará al grupo correspondiente.

Virtual host por defecto

Se debe configurar un virtualhost por defecto para el FQDN del servidor, de manera que si alguien lo accede directo, tenga la información de nuestra empresa. Simplemente se pone en public_html un simple archivo .html con un código básico que indique la dirección web de nuestra empresa.

Backup de bases de datos

Para finalizar, copio un script de backup de todas las bases de datos MySQL, que las resguarda cada día, y otro que borra los archivos más viejos que un lapso determinado, habitualmente 30 días. Los backups de las bases se guardan en /srv/backups/mysql

10 0 * * * /root/archivos/bkup-mysql | mail correo@dominio -s "servidorXX: DBs backup" 2>&1 > /dev/null
50 6 * * 7 /usr/local/bin/eliminaFicherosViejos eliminar /srv/backups/mysql gz 30 30

Backup diario completo

Se debe agregar en alguno de los servidores de backup un proceso para que cada día se resguarden los datos de la nueva máquina virtual. Se utiliza para ello Dirvish 8), copiando un archivo de configuración de un servidor existente y adaptándolo al nuevo.

Nota: es muy importante restaurar el backup en caso necesario, usando los mismos parámetros de Rsync que utiliza Dirvish, y que son los siguientes:

rsync -vrltH -D -pgo --numeric-ids --exclude-from=/ruta/al/archivo origen destino