Enviar respaldos de cPanel a Amazon S3

Tengo un servidor web con cPanel que utilizo para hospedar sitios web de clientes. Actualmente me genera respaldos incrementales diaria, semanal y mensualmente; y se almacenan en un disco duro secundario.

A pesar de los respaldos en el servidor hay algunos sitios web que me preocupan en caso de una falla de hardware que puede demorar el tiempo en el que puedo acceder a los datos (o perderlos definitivamente).

Para solucionar este problema —y dormir más tranquilo— decidí enviar los respaldos de ciertas cuentas a Amazon S3. Escribí un script simple en ruby para hacer esta tarea:

El script requiere tener instalada la gema aws-sdk instalada. Es necesario modificar las variables backup_dir, users, bucket y s3 con los datos de cada entorno.

Este script solo funciona con backups incrementales pero con pequeñas modificaciones se puede adaptar a backups comprimidos por cPanel.

Es posible configurar el ciclo de vida en el bucket de S3 para eliminar los archivos automágicamente, en mi caso, únicamente conservo los backups de los últimos 3 días.

Como instalar APF para cPanel

Estoy configurando un nuevo servidor para mudar los sitios web que estoy hospedando y quise aprovechar para documentar como instalar APF (Advanced Policy Firewall) en un servidor con cPanel (Prácticamente es lo mismo si tiene cPanel o no, sólo configuraremos distintos puertos).

Debes entrar como root a la consola y de preferencia moverte a un directorio temporal

1) Descarga los archivos de APF

# wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz

2) Extrae el contenido del tar.gz y te diriges al directorio (varia según la versión)

# tar -zxf apf-current.tar.gz
# cd apf-9.7-2

3) Debes correr el instalador dentro de dicha carpeta

# ./install.sh

4) Ahora debemos editar los puertos en el archivo de configuración

# nano -w  /etc/apf/conf.apf

Los puertos entrantes deben quedar de la siguiente manera para un servidor con cPanel

# Common ingress (inbound) TCP ports
IG_TCP_CPORTS=" 20,21,22,25,26,53,80,110,143,443,465,993,995,2082,2083,2086,2087,2095,2096,3306,6666"

# Common ingress (inbound) UDP ports
IG_UDP_CPORTS="21,53,465,873"

# Common ICMP (inbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any
IG_ICMP_TYPES="3,5,11,0,30,8"

Y los salientes de la siguiente manera

# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,22,25,26,37,43,53,80,110,113,443,465,873,2089,3306"

# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53,465,873"

# Common ICMP (outbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any
EG_ICMP_TYPES="all"

Para que APF monitoree los puertos salientes es necesario buscar

EGF="0"

y sustituirlo por

EGF="1"

5) Guardamos y cerramos nuestro archivo (CTRL+X) e iniciamos APF

# /usr/local/sbin/apf -s

6) Prueba que todo funcione (SSH, webmail, cPanel, WHM, etc.), si todo funciona correctamente volvemos a editar el archivo de configuración

# nano -w  /etc/apf/conf.apf

Buscamos y cambiamos

DEVEL_MODE="0"

por

DEVEL_MODE="1"

7) Guardas, cierras y reinicias APF

/usr/local/sbin/apf -r

¡Listo! APF está corriendo y monitoreando tu servidor

Respaldar cuentas de cPanel manualmente via SSH

cPanel tiene un script para generar respaldos completos de cuenta, via SSH lo podemos utilizar para generar estos archivos ya sea para tener una copia de seguridad o moverlo a otro servidor.

La forma de generar el respaldo es utilizando el siguiente comando:

/scripts/pkgacct <usuario> <destino> backup

<usuario> debe ser sustituido por el nombre de usuario a respaldar
<destino> debe ser reemplazado por la ubicación donde queremos almacenar el respaldo

Esto nos va a generar un archivo con el formato <usuario>.tar.gz en <destino>