Instalación y Recuperación del Servidor GeOrellana

Este apartado se enfoca en la disponibilidad de la información, y las tecnologías empleados para garantizarla, así como planes de acción o respuestas a incidentes para recuperar la información en el caso de un incidente.

En este apartado podrá encontrar todo el proceso para poder llevar a cabo una instalación desde cero del servidor Geoportal, así como también el proceso para poder llevar a cabo la restauración de los distintos servicios como Wiki, Bases de datos, Geoserver y GeoNetwork

Configuración del servidor Geoportal

Instalación Limpia

Si se va realizar una instalación desde cero del servidor Geoportal puedes revisar Instalación de aplicaciones para servidor Geoportal y luego continuar con la Restauración del servidor a partir de un respaldo

Configuración del servidor sshd del servidor geoportal.

Se deshabilitan los accesos con usuario/contraseña. El acceso se realiza vía llave publica/privada RSA únicamente cambiando el archivo de configuración /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM no

Después de haber actualizado la configuración se reinicia el servidor con service sshd restart Una vez terminada la instalación es importante habilitar el acceso remoto vía ssh al servidor para poder realizar la administración, para el servidor geoportal se ha deshabilitado el acceso ssh por contraseña y se configuro acceso con llaves RSA, el proceso de configuración se detalla a continuación:

Habilitar el login ssh sin contraseña

Para ingresar sin contraseña se usa una pareja de llaves (pública-privada) RSA. La llave privada se genera en el cliente ssh que se conectará con el servidor ssh. La llave pública se copia al servidor y se añade a la lista de clientes permitidos.

El servidor geo.gporellana.gob.ec se conecta como cliente con el servidor de respaldo con una llave privada RSA sin contraseña, con el fin de automatizar las copias de respaldo. Los demás clientes ssh se conectan con una llave RSA protegido con contraseña.

Usando Linux

  1. Crear la llave SSH con el comando ssh-keygen -t rsa
  2. Copiar la llave pública al servidor SSH ssh-copy-id -p XX USER@SERVIDOR
  3. Guardar la contraseña del certificado ssh ssh-add
  4. En el caso de que no funciona el comando ssh-add iniciar el ssh-agent pimero con ssh-agent $SHELL

Este mismo proceso se realiza para el servidor de respaldos para habilitar el acceso ssh con llave RSA

Usando Windows

En el caso de que el cliente ssh es putty con windows es necesario convertir el certificado a formato putty de la siguiente manera:

  1. generar la clave con una computadora linux, por ejemplo con el servidor
  2. descargar PuTTYgen.exe desde la web web de PuTTY
  3. abrir el programa
  4. cargar la clave privada id_rsa (file → load private key) e introducir la contraseña
  5. pinchar en guardar - el archivo se guarda como id_rsa.ppk

Luego se configura el cliente ssh PuTTY para que use el certificado para conectarse con el servidor

  1. En las opciones de conección pinchar ssh
  2. En apartado método de autenticación preferido activar 2 only
  3. Pinchar el submenu “Auth”
  4. Seleccinar el archivo de llave generado anteriormente (id_rsa.ppk)
  5. En la primera pestaña introducir el servidor y el puerto
  6. Guardar la conexión con un nombre, por ejemplo respaldo, para luego volver a abrirla

Restauración Manual del servidor a partir de un respaldo

Copiar los archivos

Iniciamos sesión en el servidor de respaldo utilizando la llave RSA que debemos configurarla en nuestro cliente ssh. Una vez que se ha iniciado sesión en el servidor de respaldos procederemos a copiar nuestro respaldo con extensión .gpg al servidor donde realizaremos la restauración

scp /ruta/del/backup usuario@servidor:/ruta/remota/donde/copiar

Desencriptar el archivo

Realizada la copia del respaldo, se procede a desencriptar el archivo

# Desencriptar el archivo renombrandolo para que el nombre archivo .tar.gz no contiene la fecha (p.e. wiki.tar.gz)
gpg -d  COPIA_RESPALDO_FECHA.tar.gz.gpg > COPIA_RESPALDO.tar.gz

Luego realizar la copia de los archivos para las distintas aplicaciones Wiki, Geoserver,Geonetwork en los respectivos directorios

Restaurando Wiki

Copiamos el último archivo wiki_fecha_backup.tar.gz.gpg lo desencriptamos como se explicó anteriormente, obtendremos un archivo .tar.gz, lo descomprimimos

tar -xzvf wiki_fecha_backup.tar.gz

Obtendremos la carpeta wiki copiamos todo su contenido al directorio var/www/html y con esto ya tendríamos disponible el contenido de la wiki nuevamente. Podremos comprobar que la configuración ha sido realizada correctamente accediendo al servidor, digitamos en un navegador lo siguiente:

http://servidor/wiki

Restaurando las Bases de Datos

Copiamos el archivo datos_fecha.tar.gz al servidor y lo extraemos

tar -xzvf datos.tar.gz

Al extraer el contenido de la carpeta datos encontraremos un archivo llamado dumpall el cual nos permitirá restaurar las bases de datos

Copiamos este archivo al directorio var/lib/postgresql

cp dumpall /var/lib/postgresql/

Cambiamos el propietario del archivo dumpall a postgres

chown postgres:postgres /var/lib/postgresql/dumpall
 

Nos cambiamos al usuario postgres y ejecutamos el archivo dumpall, con lo cual se restaurará todas las bases de datos

su postgres
cd ~
psql -f dumpall postgres
 

Restaurando GeoServer

Copiamos el paquete geoinfo_fecha.tar.gz al servidor, lo extraemos

tar -xzvf geoinfo_fecha.tar.gz
 

Movemos la carpeta geoinfo al directorio /var/lib/tomcat8/webapps de Tomcat

Con esto ya tendríamos restaurado el código de la aplicación. Ahora procedemos a restaurar los datos de geoserver, para ello tomamos el paquete geoserver_data_fecha.tar.gz de la carpeta datos copiada desde el servidor de respaldos, lo extraemos y movemos la carpeta geoserver_data al directorio /var/lib

mv geoserver_data /var/lib
 

Con esto estaría restaurado el servicio de geoserver, podemos verificarlo accediendo con un navegador a:

http://servidor/geoinfo
 

Restaurando GeoNetwork

Pendiente revisar y detallar documentación

  1. Copiar pegar la carpeta de datos a /var/lib/geonetwork_data y averiguar que el propietario es tomcat8 - sino ejecutar chown -R tomcat8:tomcat8 /var/lib/geonetwork_data
  2. PostgreSQL:
    1. Borrar la base de datos geoportal.
    2. Crear base de datos geoportal nueva con usuario postgres y psql (habilitando conecciones peer desde local, y con usuario linux postgres)
      CREATE DATABASE db OWNER geoportal ENCODING 'UTF8';
      CREATE EXTENSION postgis;
      CREATE EXTENSION postgis_topology;
      \q 
    3. Importar el respaldo de la base de datos con pgadmin
  3. Tomcat8
    1. Parar tomcat8
    2. Copiar la carpetea del webapp en /var/lib/tomcat8/webapps/portal
    3. Arrancar tomcat8

Para el sistema de respaldos se ha realizado configuraciones en el servidor geo.gporellana.gob.ec para automatizar este proceso y realizar el envío de los backups a dos servidores ubicados uno en la coordinación de Gestión Ambiental y otro ubicado en la Jefatura de Informática y Tecnología. A continuación se detallan las configuraciones realizadas Las copias de respaldo requieren la creación de la carpeta /root/files mkdir /root/files

Respaldo Manual de la Base de Datos

Si deseamos exportar manualmente nuestra base de datos podemos realizarlo de la siguiente forma: Autenticarnos como usuario postgres

su postgres

Luego ubicarnos en el directorio /home del usuario postgres:

cd ~

Ejecutamos el comando pwd para ver el directorio en el que estamos situado y nos va devolver lo siguiente:

pwd
/var/lib/postgresql

Ubicados en el directorio /home del usuario postgres ahora ejecutamos el dump de la base de datos que deseemos exportar: El parámetro -v nos permite tener una salida detallada del proceso de exportación de la base de datos

pg_dump -v geoportal > geoportaldump

El archivo resultante de la exportación esta almacendo el el directorio antes mencionado /var/lib/postgresql Ahora podemos enviarlo si deseamos al servidor de respaldoscon el siguiente comando:

# scp -P 2222 /var/lib/postgresql gadpo@181.196.30.6/home/backups

Configuraciones en el servidor geo.gporellana.gob.ec

Los Webapps

La copia de seguridad de los webapps se realiza directamente después de haber instalado y configurado una actualización del mismo.

respaldo_webapp_portal.sh
#!/bin/bash
now=$(date +"%Y-%m-%d_%H-%M")
tar -czvf portal_$now.tar.gz /var/lib/tomcat8/webapps/portal
scp portal_$now.tar.gz USER@SERVIDOR_RESPALDO:/home/gadpo/backups/gn/gnwebapp_$now.tar.gz
rm portal_$now.tar.gz
respaldo_webapp_geoinfo.sh
#!/bin/bash
now=$(date +"%Y-%m-%d_%H-%M")
tar -czvf geoinfo_$now.tar.gz /var/lib/tomcat8/webapps/geoinfo
scp geoinfo_$now.tar.gz USER@SERVIDOR_RESPALDO:/geoinfo_$now.tar.gz
rm geoinfo_$now.tar.gz

En el servidor se configuró cronjobs para automatizar los respaldos para que cada cierto tiempo envíe los archivos al servidor de respaldos Podemos editar el archivo de configuración de cron digitando:

crontab -e

En este archivo añadimos los scripts respaldo_datos.sh y respaldo_wiki.sh que realizarán los respaldos, además establecemos los días y frecuencia con que se ejecutarán:

#0 9,10,11,12,13,15,16,17,18 * * 1,2,3,4,5  /root/scripts/respaldo_datos.sh >/dev/null 2&>1
#10 18 * * 1,2,3,4,5  /root/scripts/respaldo_wiki.sh >/dev/null 2&>1
0 19 * * 1,2,3,4,5 /root/scripts/respaldo_gn_datos.sh >/dev/null 2&>1
  • Respaldo de la base de datos geográfico 2x por día a las 13:15 y 18.15 horas
  • Respaldo de la Wiki 1x por día, a las 18:10 horas

El contenido de estos dos scripts es el siguiente:

Datos PostgreSQL/PostGIS y Webapps

Para evitar que sea necesario especificar una contraseña en el script de respaldo, en la carpeta root se almacena el archivo .pgpass con el siguiente contenido

.pgpass
localhost:*:*:postgres:PASSWORD

y con los permisos 600, propietario es root chmod 0600 /root/.pgpass

El siguiente script respaldo_datos.sh respalda las bases de datos y los directorio de datos de PostgreSQL/PostGIS

respaldo_datos.sh

#!/bin/bash
 
# Crea una copia de respaldo de PostgreSQL (pg_dumpall)
# De los bases de datos de los geodatos (gapdo) y de Geonetwork (geoportal)
# Así como de los directorios de datos de Geoserver y Geonetwork
 
now=$(date +"%Y-%m-%d_%H-%M")
mkdir datos
cd datos
 
PGPASSFILE=/root/.pgpass pg_dumpall -h localhost -Upostgres > dumpall
PGPASSFILE=/root/.pgpass pg_dump -h localhost -Upostgres gadpo > gadpodb
PGPASSFILE=/root/.pgpass pg_dump -h localhost -Upostgres geoportal > geoportaldb
 
tar -czvf dumpall_$now.tar.gz dumpall
tar -czvf gadpodb_$now.tar.gz gadpodb
tar -czvf geoportaldb_$now.tar.gz geoportaldb
rm dumpall gadpodb geoportaldb
tar -czvf geoserver_data_$now.tar.gz /var/lib/geoserver_data
tar -czvf geonetwork_data_$now.tar.gz /var/lib/geonetwork_data
 
cd ..
 
tar -czvf datos_$now.tar.gz datos
gpg -e -r georellana@geo.gporellana.gob.ec datos_$now.tar.gz
scp -P XX datos_$now.tar.gz.gpg USER@SERVIDOR_BACKUP:datos_$now.tar.gz.gpg
 
rm -r datos datos_$now.tar.gz datdatos_$now.tar.gz.gpg
respaldo_gn_datos.sh
#!/bin/bash
 
now=$(date +"%Y-%m-%d_%H-%M")
mkdir datos_gn
cd datos_gn
 
#Dump de la base de datos de GeoNetwork, comprimirla y borrar el dump
PGPASSFILE=/root/.pgpass pg_dump -h localhost -Upostgres geoportal > geoportaldb
tar -czvf geoportaldb_$now.tar.gz geoportaldb
rm geoportaldb
 
#Comprimir el directorio de datos
tar -czvf geonetwork_data_$now.tar.gz /var/lib/geonetwork_data
 
#Salir de la carpeta y comprimirla para tener un archivo
cd ..
tar -czvf datos_gn_$now.tar.gz datos_gn
 
# Enviar el archivo al servidor backup y borrarlo de local
scp -P XX datos_gn_$now.tar.gz USER@SERVIDOR_BACKUP:/home/gadpo/backups/gn/datos_gn_$now.tar.gz
rm -r datos_gn datos_gn_$now.tar.gz

El script respaldo_gs_datos.sh se ejecuta antes y después de actualizaciones y después de cambios en geoserver.

respaldo_gs_datos.sh
#!/bin/bash
now=$(date +"%Y-%m-%d_%H-%M")
#Comprimir el directorio de datos
tar -czvf geoserver_data_$now.tar.gz /var/lib/geoserver_data
# Enviar el archivo al servidor backup y borrarlo de local
scp -P 2222 geoserver_data_$now.tar.gz gadpo@SERVIDOR:/home/gadpo/backups/geoserver/geoserver_data_$now.tar.gz
rm -r geoserver_data_$now.tar.gz

El script respaldo_op.sh se ejecuta a las 10.00,13.15, 16.00 y 18.30 horas todos los días laborales.

respaldo_op.sh
#!/bin/bash
now=$(date +"%Y-%m-%d_%H-%M")
openproject run backup
tar -czvf oproject_$now.tar.gz /var/db/openproject/backup
scp -P 2222 oproject_$now.tar.gz gadpo@SERVIDOR:/home/gadpo/backups/oproject
rm oproject_$now.tar.gz

El script respaldo_op.sh se ejecuta a las 13.30 y 18.00 todos los días, también festivos.

respaldo_meteo_datos.sh
 

El script respaldo_wiki.sh se ejecuta a las 22 horas todos los días laborales.

respaldo_wiki.sh
#!/bin/bash
now=$(date +"%Y-%m-%d_%H-%M")
tar -czvf wiki_$now.tar.gz /var/www/html/wiki
scp -P 2222 wiki_$now.tar.gz gadpo@SERVIDOR:/home/gadpo/backups/wiki/wiki_$$
rm wiki_$now.tar.gz

Respaldo de la wiki

Respalda el contenido de la wiki respaldo_wiki.sh

Estos scripts envían los respaldos al servidor  ubicado en la coordinación de Gestión Ambiental y se almacenan en el directorio **/home/gadpo/backups**
 
Antes de realizar las copias de seguridad al servidor de respaldo se encriptan en el servidor de manera asimétrica usando [[https://gnupg.org/|GnuPG]]. 
 
**Generar las llaves en local** usando gnupg mediante gpg dejando los valores por defecto: llave RSA/RSA, tamaño 2048bits, fecha none y las siguientes informaciones de identidad: Nombre y apellidos: GeOrellana, Dirección de correo electrónico: admin@geo.gporellana.gob.ec, Comentario: Llave para encriptar las copias de respaldo
<code bash>
gpg --gen-key
gpg --output georellana_public.key --export georellana@geo.gporellana.gob.ec
scp -P XX georellana_public.key USER@geo.gporellana.gob.ec:/home/USER/georellana_public.key

En el servidor importar la llave pública para encritpar las copias de respaldo

gpg --import georellana_public.key
gpg --edit-key georellana@geo.gporellana.gob.ec trust

Configuraciones en el servidor de respaldos

El servidor de respaldos se ha implementado utilizando la distribución Linux OpenSuse, con un espacio de almacenamiento en disco de 1 TB, se ha configurado una ip estática, de tal forma que el acceso al mismo sea garantizado:

Configuración del servidor sshd del servidor de respaldo.

Se deshabilitan los accesos con usuario/contraseña. El acceso se realiza vía llave publica/privada RSA únicamente cambiando el archivo de configuración /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM no

Después de haber actualizado la configuración se reinicia el servidor con service sshd restart

Se puede consultar el espacio en disco en el servidor con el siguiente comando:

	df -h