一个可以拯救你免受勒索软件攻击的 cron 任务

2025-05-28

一个可以拯救你免受勒索软件攻击的 cron 任务

现在是 2019 年,勒索软件已成为一种现象。

与公众互动的系统,例如公司、教育机构和公共服务,最容易受到攻击。虽然勒索软件的传播方式多种多样,从实体实体到通过社交网站和电子邮件传播,但所有方法都只需要一个人犯一个错误,就能让勒索软件泛滥成灾。

您可能听说过,勒索软件是一种恶意程序,它会加密您的文件,使其无法读取和使用。它可能包含支付赎金(通常通过发送加密货币)的指令,以获取解密密钥。成功的勒索软件攻击通常会利用重要的、时间敏感的系统。公共服务和医疗机构等受害者的恢复流程往往较差或为零,导致政府或保险公司不得不向攻击者支付赎金。

赎金纸条

个人,尤其是技术水平不高的人,面临的风险也丝毫不小。勒索软件甚至可能窃取仅存在于一台设备上的个人文档和家庭照片。

值得庆幸的是,有一个相当低技术含量的解决方案可以使勒索软件失效:备份您的数据!

你可以通过一个简单的系统来实现这一点,比如每天插入一个外部硬盘并拖放文件一次,但这种方法有一些障碍。手动传输文件可能很慢或不完整,而且你还得先记住要这样做。

在我不断追求将所有事情自动化的过程中,有一个工具我经常使用,因为它简单可靠:cronCron 只做一件事,并且做得很好:它按计划运行命令。

我第一次用它是在三年前几个月(我写博客真的有那么久吗?!)在 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-c​​ould-save-you-from-a-ransomware-attack-46m
PREV
如何作为独立程序员设置短反馈循环关于反馈循环建立纪律明确具体的顶层目标确定中层和低层目标的优先级并进行规划自动化你的工作留出时间进行代码审查留出时间进行流程审查利用审查结果更新你的目标和流程
NEXT
居中对齐终极指南 - CSS