Резервируем данные

Вне зависимости от того, локально вы работаете со своими данными или у вас SQL версия вашего прикладного ПО, а может и вовсе вы используете технологию удаленного доступа к рабочему столу (Терминальный сервер), вам необходимо периодически делать резервные копии данных. Идеальный вариант - полное зеркалирование, но это очень трудоемки процесс требующий огромного количества ресурсов и времени. Давайте рассмотрим вариант автоматического резервного копирования данных с защитой от вирусов вымогателей.

По следам новости о вирусе шифровальщике: "Новый вымогатель CR1PTT0R заражает сетевые хранилища D-Link". Как же обезопасить свои данные и минимизировать потери от вымогателей. Подробнее рассмотрим ниже.

Когда только стали появляться первые волны с шифровальщиками, многие начали осознавать ценность резервного копирования, но к сожалению, у большинства, все ограничилось лишь пониманием, что это надо делать и они действительно делали резервные копии. Но кто-то делал на этот же компьютер, где находилась и сами данные, кто-то кидал на подключенный сетевой диск, а самые продвинутые стали делать копии на сетевой ресурс не подключая его как диск.

Когда прошла вторая волна, многие стали удивляться, ведь я делал копии, почему и они оказались все зашифрованные проанализировав информацию, все дружно кинулись покупать NAS накопители. с мыслями "Ведь они же под Linux, а значит вирус не пройдет....". Сказано - сделано, деньги освоены, компании снова немного опустошили свои кошельки и.. И снова неприятности, в SAMBA обнаружена уязвимость из-за которой все повторилось снова.

Как результат, в некоторых компаниях на столько все стало просто параноидально. что там только не в противогазах работают за своими компьютерами. Но я предлагаю самый простой вариант решения проблем с резервными копиями, при которых возможность заражения и шифрования стремится к нулю, при этом ничего покупать не нужно.

Что нам понадобится? Да в общем-то только старенький уже практически никому не нужный системник, но с нормальным жестким диском, а в идеале с рейдом. Скачать бесплатный дистрибутив UBUNTU SERVER, при том версию можно скачивать практически любую, главное, чтобы она нормально установилась на ваш выделенный ПК. Далее, на компьютерах с которых требуется сделать резервную копию, открываем общий доступ к нужным дискам/папкам. Лично я создаю везде нового пользователя с паролем и этот доступ предоставляю только этому пользователю. Собственно и все. Далее в любом удобном для вас редакторе (mcedit, vi ...) создаем файл скрипта. Я его называю backup.sh

Вот его содержимое:

#!/bin/bash
# переходим в папку пользователя. в моем случае это backup
cd /home/backup/

# логин от сетевого диска. 
UserName=Proba

# пароль
Password=12345

# Несколько переменных, которые нам понадобятся в процессе резервирования
D=$(date +%Y%m%d)

T=$(date +%H%M%S)
n=1
# Место, куда будут складываться бэкапы.Каждая отдельная дата - в своем каталоге 
PathForBackup=/home/backup/Backup/$D

mkdir $PathForBackup

# =======[ Монтируем расшаренные сетевые ресурсы с которых делаем бэкапы ]=======
mount.cifs "//192.168.1.201/1С 77" /home/backup/res1 -o user=$UserName,password=$Password
mount.cifs "//192.168.1.195/База V83" /home/backup/res2 -o user=$UserName,password=$Password
mount.cifs "//192.168.1.195/Users" /home/backup/res3 -o user=$UserName,password=$Password
mount.cifs "//192.168.1.10/HRMBase" /home/backup/res4 -o user=$UserName,password=$Password

declare -a PathResource
declare -a NameResource

# ===[ Список папок с подключенных ресурсов подлежащих бекапу ]===
PathResource[1]=/home/backup/res1/2005
PathResource[2]=/home/backup/res1/azov
PathResource[3]=/home/backup/res2/"Бухгалтерия 2015"
PathResource[4]=/home/backup/res3/Algo
PathResource[5]=/home/backup/res4/

# ======[ Префикс имени архива бекапа ]======
NameResource[1]=2005
NameResource[2]=azov
NameResource[3]=buh15
NameResource[4]=algo
NameResource[5]=hrmbase

# ==[ Бекапим все то, что есть в списках! ]==
for BackupName in ${NameResource[@]}
do
echo ${PathResource[$n]}
cd ${PathResource[$n]} 
tar -cvzf $PathForBackup/$BackupName-"$D"-"$T".tar.gz *
let n=$n+1
done

# ======[ По окончании демонтируем сетевые ресурсы ]======
cd /home/backup/
umount /home/backup/res1
umount /home/backup/res2
umount /home/backup/res3
umount /home/backup/res4

Вот собственно и все, остается только запихнуть этот скрипт в cron, если вы хотите автоматизировать весь процесс, ну или на крайний случай, просто запускать этот скрипт по необходимости. 

Что же отличает этот метод от всех других?  Ну как минимум то, что сетевые ресурсы подключает не уже инфицированный компьютер, а сам бэкап сервер ресурсы инфицированного компьютера. Таким образом шифровальщик не увидит "жертвы" по которой можно было бы тоже пройтись.

Ну а на этом все, скрипт не претендует на звание "идеального" или "так и надо делать". Он немного модифицирован и сделан "понятным" для начинающих админов, которым сложно вникнуть во все тонкости. На сегодняшний момент ни одна компания имеющая это просто решение не потеряла своих данных даже после очередного слова бабушками - бухгалтерами шифровальщика. 10 минут и работа восстановлена.

Всем удачи и добра, будьте осторожны!