天衣无缝
作者天衣无缝·2021-01-15 13:34
工程师·杭州市中医院

应对incaseformat蠕虫病毒的简单异构备份方法

字数 3704阅读 4550评论 0赞 2

2021年1月13日incaseformat蠕虫病毒的消息席卷朋友圈,该病毒不具备加密文件危害,同时该病毒也并非新型病毒,而是存在已久,病毒主要传播方式为U盘等移动存储器设备,不会通过U盘以外的网络共享、漏洞等常见蠕虫传播方式传播。看到有安全公司在写到如何防范该病毒时提了到321备份原则,我们先来了解一下什么是321备份原则。

3份备份数据

也许有企业会认为三份数据备份有点过度,但假设数据故障是独立事件,同时遗失三份数据的机率便是百万分之一,并非是只有一份备份时的百份之一,这样可大大提高可靠性。另一个需要多于两份备份的原因,是可将主副本及备份存于不同地方。

存于2种不同的媒介

用2种不同媒介保存可确保不会因为使用同一装置存储数据而引起相同的故障。由于同一存储方案的不同硬盘有可能连续发生故障,建议将数据存于至少2种存储媒介,而且媒介需要位于不同地方。

1个备份存于异地

由于火灾等意外即可损坏所有硬本备份,一个近年普及的存储选项是把数据存放于云端上,这个选项有其必要性。

对于 “2” 我也有新的理解,并且适用于防范大部分病毒造成的后果,计算机病毒的定义是编制者在计算机程序中插入的破坏计算机功能或者数据的代码 ,既然是计算机代码,那就需要有一定的运行环境,比如这次的incaseformat蠕虫病毒主要是两个由delphin编写的tasy.exe和ttry.exe文件,既然是.exe的文件,那么我们知道它就不可能在Unix系的操作系统上运行,并且该病毒的攻击手段密切结合了Windows的注册表和盘符,这些在Unix系操作系统里面都是完全不同的,那我们就可以考虑将Windows上的重要文件拷贝到Linux的系统上备份,这也就是我理解的“2”,2种异构的平台,如果是windows的病毒,在没有额外的备份设备的情况下,将文件备份到另一台windows系统上,那么就算是3份数据、异地保存也没有办法防范,病毒可能会和重要文件一起被拷贝到新的windows环境中,等到爆发的那一天,所有的重要文件都会烟消云散。

下面我们来看下如何将Windows的文件备份到Linux的系统上(此处Linux我们以CentOS7为例),提供一种相对简单的方法。

  1. 在Windows系统上安装cwRsyncServer软件,这是其实就和Linux上的rsync是同一个东西,安装就是下一步下一步的操作,我们将文件安装在C盘,因为放在D、E、F等其他盘符也可能直接被incaseformat删除了,系统盘C盘是一个最危险又是最安全的地方。

  1. 安装第二步我们要设置rsync server段的账号密码,如下图是默认账号密码,我们建议修改,并且密码也要按照强口令设置,这个账号虽然会在windows下建同名用户,但是此账号是不能直接登陆系统的,并且卸载软件时该账号不会被自动删除,需要手工删除。

  1. 安装好后在开始菜单里面可以看到一个cwRsyncServer的目录,点击目录里面的rsyncd.conf,可以直接打开rsync的服务端配置文件,配置内容按下图讲解

注意配置文件中=两边都有空格

hosts allow是允许远程访问的主机ip

port是远程访问的端口

[backup]是一个定义的备份模块,其中包含了备份的路径,backup名字可改 path是备份的路径,默认系统E:\oraclebackup_script\backup_file要写成/cygdrive/e/oraclebackup_script/backup_file

read only只读,建议true,不能在服务端写入数据

auth users远程访问的用户,就是刚刚我们安装时设置的账号名字

secrets file远程访问用户的密码存放位置,如下图放置位置是C:\Program Files (x86)\ICW\etc\rsync_db.ps中,此处是设置安装目录的相对位置路径,比如root的密码是Hello1@3World,那么在rsync_db.ps文件中就要加入root:Hello1@3World这行

  1. 配置rsync服务启动项,打开services.msc服务,找到RsyncServer这项,右键属性

  1. 在登陆里面设置刚刚配置的rsync的服务端账号密码

  1. 在常规里面设置自启动,并且开启服务

  1. 服务正常启动后还有很重要的一步要做,那就是对备份的目录赋权,将rsync的用户配置对该目录的权限是读取

  1. 接下来我们就要做一个CentOS7为例的备份服务端,首先要安装rsync的客户端,可以使用yum install rysnc -y安装
  2. 安装好后我们可以尝试rsync -r --progress --port=873 root@x.x.x.x::backup /backup命令;-r是对目录进行迭代同步;--progress是在同步过程中会有过程显示;--port是同步的端口,要和windows配置文件对应;root是windows上配置的rsync同步账号;x.x.x.x是windows服务器的ip;::backup是对应windows上配置的模块名称,如上的[backup];/backup是Linux服务器上的备份目录,需要提前创建好
  3. 执行命令过程中会提示输入密码,输入正确的密码后我们就可以看到拷贝过程了,如下图

  1. 这里有一个步骤是需要手工输入密码的,那么我们可以通过shell脚本,让其自动输入密码,这样就是一个自动化交互的过程

\#!/bin/expect

set timeout 30

spawn /usr/bin/rsync -r --progress --port=873 root@ x.x.x.x ::backup / backup

expect "Password:"

send " Hello1@3World \r" #检测到“Password:”后发送密码

interact

按照如上的方式将shell在crontab计划任务中调用,确保调用时间是被备份的服务器完成备份的时间,然后到了计划任务执行时间,服务器上的目录就会被同步到/backup目录中,这样的备份方式在服务器本身出现故障时无法启动时可以确保有备份数据,并且遇到 incaseformat 这样的蠕虫病毒一般是没有影响的,当 incaseformat 删除除C盘外的所有内容时会连子目录一起删除,当rsync找不到对应备份的目录,那备份操作也就失败,Linux上的备份数据也不会丢。但是如果备份的内容在除C盘外的其他盘符的根目录下,或者遇到的是勒索病毒,或者是rsync操作是在 incaseformat 蠕虫执行过程中,那么同步到Linux上的文件同样会受到影响,那么我们可以考虑企业级的备份是怎么做的,它们会在不同的时间点创建不同的全量备份,并保存好几份,甚至以IO变化量的形式去备份,方便后期精准的恢复,那么我们可以按照全量备份多次的方式解决前面介绍备份方式中的问题。

我们先改进一下之前的expect脚本

\#!/bin/expect

set timeout 30

set date [ clock format [ clock seconds ] -format "%Y%m%d" ]

set secon [ clock seconds ]

set yestoday_secon 0

set yestoday_secon [expr {$secon - 86400} ]

set yestoday [ clock format [ expr {$yestoday_secon} ] -format "%Y%m%d" ]

system "mkdir / backup/backup -$yestoday" #创建以日期为时间戳的备份目录,时间戳格式是年月日,比如20210115

spawn /usr/bin/rsync -r --progress --port=873 root@ x.x.x.x ::backup / backup/backup-$yestoday #将每次备份到对应时间戳的目录下

expect "Password:"

send " Hello1@3World \r"

interact

然后我们在通过crontab调用的时候,会自动在/backup目录下创建带时间戳的自目录,只要空间足够,那就可以备份足够的内容,如果空间不够可以再写别的shell去删除老的备份,设置好保留几份。虽然有了异构的备份,但是备份是否成功,是否可用还需要我们定期的检查,如上介绍的备份方法适用于没有专业备份工具的环境中,做到以最简单最经济的方式实现目标。

备份是解决病毒造成结果后的最后一道保障,我们有备份,当然也不希望去用备份,我们还是需要在前期针对病毒做好防范工作,日常的杀毒软件安装、杀毒库及时更新、定期杀毒、不使用陌生的移动介质、定期修改账号密码等安全规范都需要我们一一落实,安全问题、黑客攻击有水桶效应,他们都会找大家最薄弱的地方进行攻击,而这些最薄弱的地方也是我们日常最容易改正并且要坚持的,希望大家都能不受病毒所害。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广