一个可以拯救你免受勒索软件攻击的 cron 任务
现在是 2019 年,勒索软件已成为一种现象。
与公众互动的系统,例如公司、教育机构和公共服务,最容易受到攻击。虽然勒索软件的传播方式多种多样,从实体实体到通过社交网站和电子邮件传播,但所有方法都只需要一个人犯一个错误,就能让勒索软件泛滥成灾。
您可能听说过,勒索软件是一种恶意程序,它会加密您的文件,使其无法读取和使用。它可能包含支付赎金(通常通过发送加密货币)的指令,以获取解密密钥。成功的勒索软件攻击通常会利用重要的、时间敏感的系统。公共服务和医疗机构等受害者的恢复流程往往较差或为零,导致政府或保险公司不得不向攻击者支付赎金。
个人,尤其是技术水平不高的人,面临的风险也丝毫不小。勒索软件甚至可能窃取仅存在于一台设备上的个人文档和家庭照片。
值得庆幸的是,有一个相当低技术含量的解决方案可以使勒索软件失效:备份您的数据!
你可以通过一个简单的系统来实现这一点,比如每天插入一个外部硬盘并拖放文件一次,但这种方法有一些障碍。手动传输文件可能很慢或不完整,而且你还得先记住要这样做。
在我不断追求将所有事情自动化的过程中,有一个工具我经常使用,因为它简单可靠:cron
Cron 只做一件事,并且做得很好:它按计划运行命令。
我第一次用它是在三年前几个月(我写博客真的有那么久吗?!)在 Linux 上创建自定义桌面通知。使用 crontab 配置文件(可以通过运行 来编辑crontab -e
),你可以指定运行任何你喜欢的命令的时间表。以下是调度语法,摘自维基百科 cron 页面:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute
例如,每天 00:00 运行的 cron 作业如下所示:
0 0 * * *
要每十二小时运行一次作业,语法如下:
0 */12 * * *
这个伟大的工具可以帮助您理解 cron 调度语法。
调度程序与备份有什么关系?就其本身而言,关系不大。cron 的简单之美在于它可以运行命令——任何 Shell 命令,以及任何通常在命令行中运行的脚本。正如你可能从我的其他文章中了解到的那样,我坚信你可以在命令行上做任何事情,包括备份文件。这方面的存储选项非常丰富,从几乎免费的本地和云存储,到不胜枚举的付费托管服务。对于 CLI 工具,我们有像 这样的实用经典工具rsync
,以及针对特定云提供商(如 AWS)的 CLI 工具。
备份rsync
这款rsync
实用程序是经典之选,它可以将您的文件备份到外部硬盘或远程服务器,同时智能地确定需要更新的文件。它使用文件大小和修改时间来识别文件更改,然后仅传输已更改的文件,从而节省时间和带宽。
语法rsync
可能略有不同;例如,末尾的正斜杠将仅复制目录的内容,而不是目录本身。我发现示例有助于理解用法和语法。
以下是将本地目录备份到本地目标(例如外部硬盘)的方法:
rsync -a /home/user/directory /media/user/destination
第一个参数是源,第二个参数是目标。在上面的例子中,反转这两个参数会将文件从已挂载的驱动器复制到本地主目录。
a
归档模式标志是 的超能力之一。rsync
它相当于 flags -rlptgoD
,它:
- 通过目录递归同步文件(
r
); - 保留符号链接 (
l
)、权限 (p
)、修改时间 (t
)、组 (g
) 和所有者 (o
);以及 - 复制设备和特殊文件(
D
)。
这是另一个示例,这次使用 SSH 将本地目录的内容备份到远程服务器上的目录:
rsync -avze ssh /home/user/directory/ user@remote.host.net:home/user/directory
该v
标志启用详细输出,如果您希望实时了解正在传输的文件,这将非常有用。然而,在进行大量传输时,它可能会降低速度。该z
标志可以解决这个问题,因为它指示在传输过程中应压缩文件。
该e
标志后面跟着ssh
,指示rsync
根据最后一个参数中提供的目标指令使用 SSH。
使用 AWS CLI 备份
Amazon Web Services 提供了一个命令行界面工具,几乎可以处理您在 AWS 上的所有设置,包括一个简单的s3 sync
命令,用于将新文件和更新文件递归复制到您的 S3 存储桶。作为备份数据的存储方法,S3 是一个稳定且经济的选择。
与目录交互的语法相当简单,您可以直接S3Uri
以 的形式将 S3 存储桶指定为参数s3://mybucket/mykey
。要将本地目录备份到 S3 存储桶,命令如下:
aws s3 sync /home/user/directory s3://mybucket
与类似rsync
,反转源和目标将从 S3 存储桶下载文件。
该sync
命令默认直观易用。它会猜测已上传文件的 MIME 类型,以及通过跟踪符号链接发现的包含文件。有多种选项可以控制这些选项和其他默认设置,甚至包括用于指定要使用的服务器端加密的标志。
设置你的 cronjob 备份
您可以通过运行以下命令来编辑机器的 cron 文件:
crontab -e
虽然这可能很直观,但值得一提的是,您的备份命令仅在计算机开启且 cron 守护进程运行时才会运行。考虑到这一点,请为您的 cronjob 选择一个与您的计算机开启时间相符的计划,并且不要让其他工作负担过重。
例如,要每天早上 8 点备份到 S3 存储桶,您可以在 crontab 中添加如下一行:
0 8 * * * aws s3 sync /home/user/directory s3://mybucket
如果您好奇您的 cron 作业当前是否正在运行,请使用以下命令查找 cron 的 PID:
pstree -ap | grep cron
然后运行pstree -ap <PID>
。
这个兔子洞其实更深奥;快速搜索一下就能找到组织和安排 cronjob 的不同方法,或者帮你找到在电脑睡眠时运行 cronjob 的不同工具。不过,要创建一个可靠的自动备份系统,以上基本设置已经足够了。
不要喂巨魔
人非圣贤,孰能无过;这正是网络攻击得以奏效的原因。勒索软件攻击的成功取决于受害者别无选择,只能支付赎金才能恢复正常运营。易于访问的近期备份能够削弱那些依赖我们毫无准备的攻击者。摧毁一个系统,再从昨天的备份恢复,我们可能会损失一天的进度;然而,勒索者却一无所获。
有关用户和组织勒索软件防御的更多资源,请查看CISA 关于勒索软件的建议。
文章来源:https://dev.to/victoria/a-cron-job-that-could-save-you-from-a-ransomware-attack-46m