imagen

FreeBSD como repositorio de copias

09.Dec.2017 — Julio

En mi trabajo la red se compone principalmente de servidores windows, aunque los hay Ubuntu, Suse y algunas versiones de FreeBSD. Los puestos de clientes más de lo mismo.

En estos dias el ransomware está al orden del día, por lo que aparte de las medidas de seguridad diarias como copias, antivirus, firewall, avisos al personal sobre el uso de internet y los correos, etc ... es mejor tener un plan para cuando te toque el día restablecer cuanto antes los servidores y los datos.

En una red windows es bastante habitual tener carpetas compartidas, para grupos de empleados, intranet, documentación, etc.. El ransomware las utiliza para expandirse por lo que me tocó hacer una revisión completa de las que eran verdaderamente necesarias y sobre todo ajustando los permisos a los mínimos necesarios. Lo mismo con los usuarios, bajando privilegios de acceso lo más posible.


Como hace poco en una empresa pareja a la nuestra le entró un virus que incluso afectó a servidores con Suse Enterprise debido a las carpetas compartidas y lo más seguro por tener estos últimos alguna política de seguridad mal implantada, decidí establecer una medida de seguridad más aparte de las revisiones dichas anteriormente.

Por supuesto las copias diarias son fundamentales, además de disponer de alguna de esas copias fuera del establecimiento de trabajo para tirar de ella en caso de incendio u otro desastre, pero si te pilla un virus y afecta a todos tus servidores ¿cuanto tiempo necesitas para reinstalar todo el software y por último los datos? Sí, virtualización, pero aún así que no te pille algun virus que afecte a esos sistemas y sus copias.

Además tampoco me valen copias en la nube pues aunque fueran incrementales tendría que estar subiendo más de 100GB diarios. Si consigues subirlos, luego bájatelos de la red. Además las copias tienen que ser lo más actualizadas posibles pues al día se mueven miles de referencias, albaranes, etc..

Tampoco voy a poner en este post mi sistema de copias, unidades o software utilizado en materia de seguridad.

Como resumen, para poder minimizar los ataques de ransomware decidí:

  • por supuesto antivirus actualizados, firewalls, cultura de empresa en los correos e internet.
  • reducir al mínimo los privilegios de los usuarios, así como las carpetas compartidas.
  • tener servidores de backup configurados completamente con los servicios más importantes y APAGARLOS. Si estuvieran encendidos o conectados a la red, es probable que se infecten también. Sería como no tenerlos.
  • montar un servidor FreeBSD como repositorio de copias de donde poder extraer esos GB de datos cuanto antes.

¿por qué FreeBSD?

  • por ser raro. Parece que no, pero es un punto. Espero que haya pocos que quieran hacer ransomware para estos sistemas por lo que en caso de infección en la red, a lo mejor éste servidor se libra.
  • por su documentación. Es una pasada. No conozco otro sistema operativo que esté tan bien documentado para montar cualquier servicio.
  • por su estabilidad, fiabilidad, y por qué no decirlo, por su belleza en la estructura de todo su sistema de archivos, su manera de manejar el software. No es como en linux que cada fichero de configuración sea de red, o de lo que sea puede variar de sitio en cada una de las distribuciones posibles e incluso en una misma distribución puede variar la localización en diferentes versiones.

¿qué quiero hacer con el servidor FreeBSD?

Pues quiero hacer copias de las copias. Es decir, como son muchos GB diarios a copiar y no puede tener el ERP parado mucho tiempo para hacerlas, hago una, y luego en otros momentos del día con poca carga hago copia de esa copia. Además así evito bloqueos de ficheros mientras procesos posean los ficheros de las copias.

Sería más o menos tal que así:

freebsd_copias.jpg

Como además el ransomware puede que te infecte hoy pero se ejecute dentro de seis meses por lo que las copias pueden estar infectadas todas ellas, es mejor entonces tener copias de varios días. Pero repito. En mi empresa, tener una copia de hace un mes de poco me sirve. Por lo que decido guardar los últimos siete días.

Además utilizaré en algunos casos cp como copia total de los ficheros y en otros la herramienta rsync para que copie sólo los ficheros modificados por ejemplo de la intranet.

El proceso sería:

  • copia de datos del servidor1 al servidor2.
  • una vez terminada, el servidor FreeBSD monta en carpetas temporales la carpeta que contiene la copia del servidor2. La monta en modo solo lectura, con usuario mínimo en privilegios.
  • hace la copia en carpetas diarias dentro del servidor FreeBSD.
  • desmonta la carpeta temporal.

Como mejora estaría el desconectar de la red este servidor en cuanto terminase las copias y que se conecte automáticamente sólo a la hora de hacer las copias.

¿un ejemplo del script de copias?

```  
echo $(date +%x\ %H:%M:%S) start $0 >> /usr/home/julio/logcopias.txt  
# desmontamos esté montado o no  
umount /home/julio/tempintranet  
# vemos dia de la semana  
dia=$(( $(date +%u) % 3))  
# montamos unidad temporal contra la carpeta intranet de zacofarvaad  
# y si hay exito hacemos copia con rsync  
mount_smbfs -I 10.10.2.207 -W DOMINIO //USUARIO@SERVIDOR/INTRANET /home/julio/tempintranet && rsync -r -t --delete --modify-window=1 -s /home/julio/tempintranet/ /home/julio/copias/intranet/dia$dia   
# desmontamos   
umount /home/julio/tempintranet  
echo $(date +%x\ %H:%M:%S) end $0 >> /usr/home/julio/logcopias.txt  
```

Por supuesto este script se puede mejorar, como que en lugar de hacer el umount comprobar si está montado o no. Ya. Poco gano y en claridad pierdo.

No quiero explicar mucho el script pero el truco para utilizar mount_smbfs es tener el fichero /root/.nsmbrc

```  
[SERVIDOR]  
addr=10.10.2.207  
[SERVIDOR:USUARIO]  
password=laquesea  
```

Poner la tarea en crontab y listo.

Que nunca haya que utilizar las copias.

Tags: BSD, security, bash

Comments? Tweet