Por Félix Molinuevo, AXR Global ::: Fecha creación: 20200329
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.
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
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.
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.
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
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