2022年4月

通过使用 Testcloud 自动化设置过程并交付一个准备运行的虚拟机,在几分钟之内准备好一个云镜像。

 title=

如果你是一个在云端使用 Fedora qcow2 镜像 的开发者或者爱好者,在一个镜像准备使用之前,你总是不得不做一大堆初始化设置。我对此深有体会,所以我很想找到一种使设置过程更加简单的方法。碰巧,整个 Fedora 质量保证团队也有同感,所以我们开发了 Testcloud

Testcloud 是一个可以轻松的在几分钟之内准备云镜像测试的工具。它用几个命令就可以在云端自动化设置并交付准备运行的虚拟机(VM)。

Testcloud:

  1. 下载 qcow2 镜像
  2. 用你选择的名称创建实例
  3. 创建一个密码为 passw0rd,用户名为 fedora 的用户
  4. 分配一个 IP 地址,以便于你之后用 SSH 登录到云端
  5. 启动、停止、删除和列出一个实例

安装 Testcloud

要开始你的旅程,首先你必须安装 Testcloud 软件包。你可以通过终端或者“软件”应用来安装它。在这两种情况下,软件包的名字都是 testcloud 。用以下命令安装:

$ sudo dnf install testcloud -y

一旦安装完成,将你所需要的用户添加到 testcloud 用户组,这有助于 Testcloud 自动完成设置过程的剩余部分。执行这两个命令,添加你的用户到 testcloud 用户组,并通过提升组权限重启会话:

$ sudo usermod -a -G testcloud $USER
$ su - $USER

 title=

像老手一样玩转云镜像

一旦你的用户获得了所需的组权限,创建一个实例:

$ testcloud instance create <instance name> -u <url for qcow2 image>

或者,你可以使用 fedora:latest/fedora:XXXX 是你的 Fedora 发行版本)来代替 完整的 URL 地址:

$ testcloud instance create <instance name> -u fedora:latest

这将返回你的虚拟机的 IP 地址:

$ testcloud instance create testcloud272593 -u https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/x86_64/images/Fedora-Cloud-Base-33-1.2.x86_64.qcow2  
[...]
INFO:Successfully booted instance testcloud272593
The IP of vm testcloud272593:  192.168.122.202
------------------------------------------------------------
To connect to the VM, use the following command (password is 'passw0rd'):
ssh [email protected]

你可以用默认用户 fedora 登录,密码是 passw0rd(注意是零)。你可以使用 sshvirt-manager 或者支持连接到 libvirt 虚拟机方式来连接到它。

另一种创建 Fedora 云的方式是:

$ testcloud instance create testcloud193 -u fedora:33
 
WARNING:Not proceeding with backingstore cleanup because there are some testcloud instances running.
You can fix this by following command(s):
testcloud instance stop testcloud272593

DEBUG:Local downloads will be stored in /var/lib/testcloud/backingstores.
DEBUG:successfully changed SELinux context for image /var/lib/testcloud/backingstores/Fedora-Cloud-Base-33-1.2.x86_64.qcow2
DEBUG:Creating instance directories
DEBUG:creating seed image /var/lib/testcloud/instances/testcloud193/testcloud193-seed.img
INFO:Seed image generated successfully
INFO:Successfully booted instance testcloud193
The IP of vm testcloud193:  192.168.122.225
------------------------------------------------------------
To connect to the VM, use the following command (password is 'passw0rd'):
ssh [email protected]
------------------------------------------------------------

玩转实例

Testcloud 可以用来管理实例。这包括像列出镜像或者停止和启动一个实例等活动。

要列出实例,使用 list 子命令:

$ testcloud instance list                
Name                            IP                      State    
------------------------------------------------------------
testcloud272593                 192.168.122.202         running    
testcloud193                    192.168.122.225         running    
testcloud252793                 192.168.122.146         shutoff    
testcloud93                     192.168.122.152         shutoff

要停止一个运行的实例:

$ testcloud instance stop testcloud193  
DEBUG:stop instance: testcloud193
DEBUG:stopping instance testcloud193.

要删除一个实例:

$ testcloud instance destroy testcloud193  
DEBUG:remove instance: testcloud193
DEBUG:removing instance testcloud193 from libvirt.
DEBUG:Unregistering instance from libvirt.
DEBUG:removing instance /var/lib/testcloud/instances/testcloud193 from disk

要重启一个运行中的实例:

$ testcloud instance reboot testcloud93                                                                                        
DEBUG:stop instance: testcloud93
[...]
INFO:Successfully booted instance testcloud93
The IP of vm testcloud93:  192.168.122.152
usage: testcloud [-h] {instance,image} ...

尝试一下 Testcloud ,在评论中让我知道你的想法。


via: https://opensource.com/article/21/1/testcloud-virtual-machines

作者:Sumantro Mukherjee 选题:lujun9972 译者:hwlife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

欧盟加入 Mastodon 社交网络

在推特同意马斯克的收购提议之后,许多对这笔交易持怀疑立场的人涌向了 Mastodon。Mastodon 是去中心化、分布式微博社交网络,采用联邦式架构。现在欧盟也宣布加入 Mastodon,建立了自己的服务器 EU Voice。欧盟还同时在去中心化视频分享平台 PeerTube 建立了一个账号 EU Video。这意味着 SNS 用户无需将个人数据传输至欧洲经济区之外的服务器,平台上也没有广告,且不会被第三方滥用个人资料数据。

消息来源:PcMag
老王点评:这种寻求去中心化的方式要比封锁更好,我说的是欧盟和美国之间关于数据所有权的争执。

Fedora 正在简化 Linux 图形处理

Fedora 发行版的开发团队计划改变 Linux 图形处理方式,如果顺利的话将有助于推动 Linux 图形支持。计划中的改变分两个阶段:即将发布的 Fedora 36 将移除旧的 fbdev 驱动,只保留 DRM 和 KMS;在 Fedora 37 提议移除 X.org 驱动。这些被移除的旧工具和驱动增加了图形处理的复杂度,如 fbdev 是在 1999 年发布的 Linux 内核 2.1.109 中引入的。

消息来源:theregister
老王点评:Fedora 近些年在抛弃旧包袱方面屡屡做出了表率,我觉得这才是进取的态度,放下重物才能快步前行。

Cloudflare 检测到有史以来最大的 DDoS 容量攻击之一

Cloudflare 表示,它在本月早些时候发现并缓解了一次 1530 万次请求/秒的 DDoS 攻击,这是有史以来最大的 HTTPS DDoS 攻击之一。不同于传统的 DDoS 带宽攻击,DDoS 容量攻击的攻击者向受害者的服务器发送尽可能多的垃圾 HTTP 请求,以占用宝贵的服务器 CPU 和内存,阻止合法用户使用目标网站。这次攻击是针对加密货币领域一家公司进行的。

消息来源:therecord
老王点评:对于 DDoS 攻击,我们似乎只能一次次发现新的记录,而没有什么能根本解决的方法。

回音

  • 针对新的 NTFS 驱动 缺乏维护 的情况,Linus Torvalds 表示 如果有人愿意接手维护,他很支持,而如果没有人愿意,那不如删掉。

即使初学者也可以,并且应该采取这些步骤来保护他们的 WordPress 网站免受网络攻击。

 title=

WordPress 已经驱动了互联网 30% 的网站,它是世界上增长最快的 内容管理系统 content management system (CMS),而且不难看出原因:通过大量可用的定制化代码和插件、一流的 搜索引擎优化 Search Engine Optimization (SEO),以及在博客界超高的美誉度,WordPress 赢得了很高的知名度。

然而,随着知名度而来的,也带来一些不太好的关注。WordPress 是入侵者、恶意软件和网络攻击的常见目标,事实上,在 2019 年被黑客攻击的 CMS 中,WordPress 约占 90%

无论你是 WordPress 新用户或者有经验的开发者,这里有一些你可以采取的重要步骤来保护你的 WordPress 网站。以下 6 个关键技巧将帮助你起步。

1、选择可靠的托管主机

主机是所有网站无形的基础,没有它,你不能在线发布你的网站。但是主机的作用远不止起简单的托管你的网站,它也要对你的网站速度、性能和安全负责。

第一件要做的事情就是检查主机在它的套餐中是否包含 SSL 安全协议。

无论你是运行一个小博客或是一个大的在线商店,SSL 协议都是所有网站必需的安全功能。如果你正在进行线上交易,你还需要 高级 SSL 数字证书 ,但是对大多数网站来说,基本免费的 SSL 证书就很好了。

其他需要注意安全功能包括以下几种:

  • 日常的自动离线网站备份
  • 恶意软件和杀毒软件扫描和删除
  • 分布式服务攻击 Distributed denial of service (DDOS)保护
  • 实时网络监控
  • 高级防火墙保护

另外除了这些数字安全功能之外,你的主机供应商的 物理 安全措施也是值得考虑的。这些包括用安全警卫、闭路监控和二次验证或生物识别来限制对数据中心的访问。

2、使用安全插件

保护你的网站安全最有效且容易的方法之一是安装一个安全插件,比如 Sucuri,它是一个 GPLv2 许可的开源软件。安全插件是非常重要的,因为它们能将安全管理自动化,这意味着你能够集中精力运行你的网站,而不是花大量的时间来与在线威胁作斗争。

这些插件探测、阻止恶意攻击,并提醒你需要注意的任何问题。简言之,它们持续在后台运行,保护你的网站,这意味着你不必保持 7 天 24 小时地保持清醒,与黑客、漏洞和其他数字垃圾斗争。

一个好的安全插件会免费提供给你所有必要的安全功能,但是一些高级功能需要付费订阅。举个例子,如果你想要解锁 Sucuri 的网站防火墙 ,你就需要付费。开启 网站应用防火墙 web application firewall (WAF)阻挡常见的威胁,并为给你的网站添加一个额外的安全层,所以当选择安全插件的时候,寻找带有这个功能的插件是一个好的主意。

3、选择值得信任的插件和主题

WordPress 的快乐在于它是开源的,所以任何人、每个人都能提供他们开发的主题和插件。但当选择高质量的主题和插件时,这也抛出一些问题。

在挑选免费的主题或插件时,有一些设计较差,或者更糟糕的是,可能会隐藏恶意代码。

为了避免这种情况,始终从可靠的来源来获取免费主题和插件,比如 WordPress 主题库。阅读对它的评论,并研究查看开发者是否构建过其他的程序。

过时的或设计不良的主题和插件可以为攻击者进入你的网站留下“后门”或错误,这就是为什么选择时要谨慎。然而,你也应该提防无效或者破解的主题。这些已经黑客破坏了的高级主题被非法销售。你可能会购买一个无效的主题,它看起来没什么问题,但会通过隐藏的恶意代码破坏你的网站。

为了避免无效主题,不要被打折的价格所吸引,始终坚持可靠的主题商店,比如官方的 WordPress 目录。如果你在其它地方寻找,坚持选择大型且值得信任的商店,比如 Themify ,这个主题和插件商店自从 2010 年就已经在经营了。Themify 确保它的所有 WordPress 主题通过了 谷歌友好移动 Google Mobile-Friendly 测试,并在 GNU 通用公共许可证 下开源。

4、运行定期更新

这是 WordPress 的基本规则: 始终保持你的网站最新。然而,不是所有人都坚持了这个规则,只有 43% 的 WordPress 网站 运行的是最新版本。

问题是,当你的网站过期的时候,由于它在安全和性能修复方面落后的原因,容易受到故障、漏洞、入侵和崩溃的影响。过期的网站不能像更新的网站一样修复漏洞,攻击者能够分辨出哪些网站是过期的。这意味着他们能够依此来搜索最易受攻击的网站并袭击它们。

这就是为什么你始终要运行最新的 WordPress 版本的原因。为了保持网站安全处于最强的状态,你必须更新你的插件和主题,以及你的核心 WordPress 软件。

如果你选择一个受管理的 WordPress 托管套餐,你可能会发现你的供应商会为你检查并运行更新,以了解你的主机是否提供了软件和插件更新。如果没有,你可以安装一个开源插件管理器。比如 GPLv2 许可的 Easy Updates Manager plugin 作为替代品。

5、强化你的登录

除了通过仔细选择主题和安装安全插件来创建一个安全的 WordPress 网站外,你还需要防止未经授权的登录访问。

密码保护

如果你在使用 容易猜到的短语 比如 “123456” 或 “qwerty” ,第一步要做的增强登录安全最简单的方法是更改你的密码。

尝试使用一个长的密码而不是一个单词,这样它们很难被破解。最好的方式是用一系列你容易记住且不相关的单词合并起来。

这里有一些其它的提示:

  • 绝不要重复使用密码
  • 密码不要包括像家庭成员的名字或者你喜欢的球队等明显的单词
  • 不要和任何人分享你的登录信息
  • 你的密码要包括大小写和数字来增加复杂程度
  • 不要在任何地方写下或者存储你的登录信息
  • 使用 密码管理器

变更你的登录地址

将默认登录网址从标准格式 yourdomain.com/wp-admin 变更是一个好主意。这是因为黑客也知道这个缺省登录网址,所以不变更它会有被暴力破解的风险。

为避免这种情况,可以将登录网址变更为不同的网址。使用开源插件比如 GPLv2 许可的 WPS Hide Login 可以更加安全、快速和轻松的自定义登录地址。

应用双因素认证

为了提供更多的保护,阻止未授权的登录和暴力破解,你应该添加双因素认证。这意味着即使有人 确实 得到了你的登录信息,但是他们还需要一个直接发送到你的手机上的验证码,来获得对你的 WordPress 网站管理的权限。

添加双因素认证是非常容易的,只需要安装另一个插件,在 WordPress 插件目录搜索 “two-factor authentication” ,然后选择你要的插件。其中一个选择是 Two Factor ,这是一个流行的 GPLv2 许可的插件,已经有超过 10000 次安装。

限制登录尝试

WordPress 可以让你多次猜测登录信息来帮助你登录。然而,这对黑客尝试获取未授权访问 WordPress 网站并发布恶意代码也是有帮助的。

为了应对暴力破解,安装一个插件来限制登录尝试,并设置你允许猜测的次数。

6、禁用文件编辑功能

这不是一个适合初学者的步骤,除非你是个自信的程序员,不要尝试它。并且一定要先备份你的网站。

那就是说,如果你真的想保护你的 WordPress 网站,禁用文件编辑功能 一个重要的措施 。如果你不隐藏你的文件,它意味着任何人从管理后台都可以编辑你的主题和插件代码,如果入侵者进入,那就危险了。

为了拒绝未授权的访问,转到你的 .htaccess 文件并输入:

<Files wp-config.php>
order allow,deny
deny from all
</Files>

或者,要从你的 WordPress 管理后台直接删除主题和插件的编辑选项,可以添加编辑你的 wp-config.php 文件:

define( 'DISALLOW_FILE_EDIT', true );

保存并重新加载这个文件,插件和主题编辑器将会从你的 WordPress 管理后台菜单中消失,阻止任何人编辑你的主题或者插件代码,包括你自己。如果你需要恢复访问你的主题和插件代码,只需要删除你添加在 wp-config.php 文件中的代码即可。

无论你阻止未授权的访问,还是完全禁用文件编辑功能,采取行动保护你网站代码是很重要的。否则,不受欢迎的访问者编辑你的文件并添加新代码是很容易的。这意味着攻击者可以使用编辑器从你的 WordPress 站点来获取数据,或者甚至利用你的网站对其他站点发起攻击。

隐藏文件更容易的方式是利用安全插件来为你服务,比如 Sucuri 。

WordPress 安全概要

WordPress 是一个优秀的开源平台,初学者和开发者都应该享受它,而不用担心成为攻击的受害者。遗憾的是,这些威胁不会很快消失,所以保持网站的安全至关重要。

利用以上措施,你可以创建一个更加健壮、更安全的保护水平的 WordPress 站点,并给自己带来更好的使用体验。

保持安全是一个持续的任务,而不是一次性的检查清单,所以一定要定期重温这些步骤,并在建立和使用你的CMS时保持警惕。


via: https://opensource.com/article/20/4/wordpress-security

作者:Lucy Carney 选题:lujun9972 译者:hwlife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你是否对开源充满热情,却不知道如何在这个领域开始一段职业生涯?那么,这篇文章就是为你准备的。

你知道吗?80% 的维护者认为招募新的贡献者是一个挑战,92% 的雇主认为很难雇用到开源人才。而另一方面,52% 的开发者希望为开源做出贡献,33% 的人不知道从哪里开始,31% 的人认为自己不够熟练。公共数据显示,社会对具有开源技能的人有很大的需求。因此,让我们看看如何才能够把开源作为一份职业,以填补这个供需之间的差距吧!

掌握一个技能

开源旅程的起点仅仅是你擅长的某个技能罢了。许多开发者会在空闲时间从事开源工作,他们在不熟练的领域投入精力,并把这些技能引入到技术领域里来。像机器学习(ML)、云原生和大数据分析这样的技能是很受欢迎的,因为许多项目都围绕着它们而进行。

开发者必须不断尝试,直到找到自己感兴趣的东西为止。例如,当我开始在开源领域工作时,我选择了移动用户界面(UI)和 Web 开发(包括前端和后端)方面的工作。这个选择并不简单,我花了很多时间来弄清楚我想从事什么。因此,重要的是要遵循你的兴趣,通过学习和建立项目来探索不同的领域。很多时候,理论教程可能不如建立实际项目更有帮助。掌握技能的唯一方法是将所学的东西应用到实际项目中。

如果你已经在某项技术和项目上投入了很长时间,那么你应该花时间好好分析一下。如果你对这个项目不感兴趣,那么放弃它可能是更好的选择。然而,这也可能是一把双刃剑。有可能你会发现一些感兴趣的东西,从而产生一个新的权衡。如果经过了充分的分析,你也知道了自己倾向于哪些技能组合,那么下一步就是建立自己的项目。

建立一个项目

无论项目的内容如何,只要它是活跃的,就会产生很大的价值。但请记住,一旦它开源了,你千万不要被大家的反应所左右。并且记住,无论你是为一个应用程序建立一个 UI,还是仅仅记录一个适当的注释、资源或 URL 的列表,你的工作都可以对开源用户有很大帮助。

在很大程度上,学习不同的工具有助于建立开源项目。因此,学习关于版本控制系统、Git、GitHub 和 GitLab(大多数项目都在它们上面)的一切是很重要的。由于互联网上已经有足够的教程,我只收集了一些可以在 navendu.me/osidays 上找到的。你需要通过撰写文档和公开自己学到的内容,来“公开学习”才行。

打造一份职业

你可以通过三种方式在开源领域建立一份职业。

构建、扩展你自己的开源项目,并让它盈利

如果你想要建立一个自己的项目,发现并解决问题是一个很好的经验法则。记下别人可能面临的问题,一个项目需求就这样产生了。你的项目的市场规模只能通过试验和错误来估计。对于既没有太多资金的、也没有太多经验个人贡献者来说,社交媒体、博客、帖子和会议上的讲话,都会在很大程度上有助于接触到用户。这些平台可以为你的开源项目带来巨大的流量。

资金在几乎所有的商业模式中都起着重要作用。Mozilla 基金会依靠自愿捐款来资助其项目。MariaDB 采用了延迟开放源代码的商业模式。IBM 的许多开源项目遵循开放核心的商业模式,即项目的核心部分是开源的,而周围的附加部分是闭源的和专有的。红帽公司不出售代码,而是出售专业服务,如支持、工具和围绕项目的技术援助。这些商业模式的例子可以被采用,以此来建立一个项目,将它开源,并使其盈利。

“即使你不是维护者,也要做维护者的工作。”

在一个以开源商业模式建立项目的公司工作

成为贡献者和维护者社区的一份子,参与会谈和参加会议将有助于你为项目做出贡献。你可以根据引导来完成第一次贡献,但它不一定得是代码。一个大的代码库可能看起来很吓人,但关键是要从小的地方着手。找到一个问题并解决它,这将有助于你了解贡献流程、代码库和项目设置等。

非代码的贡献也是有价值的。擅长写作的人可以通过撰写文档,或者为社交媒体写作来贡献。擅长设计的人,可以设计一个模板、一个颜色方案,或者也可以致力于创造一个更好的用户界面。与资深工程师相比,新人发现错误的概率很高。他们可以测试、确认并报告他们的用户体验,从而提升项目质量。另一个领域是新手引导,很多开源项目将导师和新手联系起来,并帮助后者做出重要贡献。还有一个选择是成为组织者或社区管理员,这意味着你将承担起项目经理的角色,确保功能完全按照预期交付,路线图得到遵循,贡献者得到照顾。大多数开源项目缺乏适当的管理,因为工程师们都不喜欢做这一类工作。

社会上有很多实习项目可以帮助你赚钱,比如谷歌的编程之夏(GSoC)和 Linux 基金会的导师制(在这里,被指导者有津贴,可以根据需要全职或兼职工作)。如果你能很好地发展你的技能,你可以在你实习的公司获得一个全职的职位。例如,如果你在红帽公司的一个项目中工作,你有机会被全职雇用,因为你在那里已经有了知名度。

正如 NumPy、SciPy 和 Anaconda 的作者 Travis Oliphant 所说,“建立一个开源项目,让人们为它做出贡献,然后从他们当中招聘。” —— 这也是我获得全职工作的方式。

  • 随着时间的推移,你所做贡献的质量和数量会不断提升。最好长期参与一个项目,因为这样可以发现更多的贡献领域。投身进去做贡献会让人们注意到并认可你。
  • 开源项目缺乏项目经理,因此成为项目经理将有助于你的职业生涯。
  • 成为一个维护者,做一些工程师应该做的事情,如审阅代码、设计系统、撰写文档和帮助他人做出贡献。
  • 好的贡献的关键是“提前付出”,这意味着你需要通过分享经验和智慧来帮助新人,并确保他们不犯错误。

获得赞助以从事开源工作

作为个人,如果你正在为某个公司建立的项目而工作,你可以要求获得资助。值得注意的是,只有当你的贡献很大时,组织才会乐意赞助你。但是,如果你建立了自己的项目,并且有大量的用户群,你可以向用户要求资助。

作为一个组织,你可以通过像 Open Collective、Patreon 和 GitHub Sponsors 这样的平台来筹集资金,让人们为你的项目捐款。像 Linux 基金会和 Mozilla 基金会这样的开源巨头也提供资金来支持项目。GitHub 已经给 15 个印度贡献者的项目提供了资助。

我曾经花了三个月时间建立了一个开源项目。这个项目后来被 《Product Hunt》 和 《JS Weekly》报道,还在上过 GitHub 趋势榜排名第一的位置。正是这个项目让我走上了开源事业的道路。

本文由 Sharon Abhignya Katta 转录并策划


via: https://www.opensourceforu.com/2022/04/how-to-build-a-career-in-open-source/

作者:Navendu Pottekkat 选题:lkxed 译者:lkxed 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

谷歌应用商店去年删除了 120 万款危险的应用

在一篇新发表的博文中,该公司说,通过改进审查程序,谷歌在 2021 年阻止了 100 多万款违反其政策的应用在其应用商店上发布。另外有 19 万个开发者账号因恶意行为被禁止,而在 2020 年被禁止的账号为 12 万。谷歌还表示,98% 已经迁移到 Android 11 或更高版本的应用,减少了对 API 和用户数据的访问。

信息来源:neowin
老王点评:但是安卓上还是有很多恶意应用,至少比 iOS 更多。

推特锁定其源代码避免被不满的员工破坏

这一变化是为了防止员工在马斯克以 440 亿美元收购该公司后“叛变”并破坏该平台。目前,任何改变都必须由副总裁批准。推特有 7000 名员工,推特 CEO 向团队保证“目前”没有裁员计划。而对推特的收购仍需得到股东和监管部门的批准,一旦被通过,可能会出现重大的人事变动、辞职等。

信息来源:彭博社
老王点评:以硅谷的文化,不是每个人都喜欢推特被马斯克收购的。

谷歌推出 YouTube 同款的 Media CDN

本周,谷歌公开推出了 Media CDN 服务,YouTube 也采用同一个基础设施来交付内容。它并不是第一个此类 CDN,有很多 CDN 都是为媒体服务而优化的。但谷歌说它的优势在于,“根据个人用户和网络条件定制的交付协议和行业领先的卸载率。……通过多层缓存,尽量减少对源点的调用,即使是不经常访问的内容。”此外,它还具有广告插入的工具,允许客户动态地将视频内容注入广告。

消息来源:techcrunch
老王点评:我觉得谷歌的重点是能支持广告吧。

Fedora 服务器版操作系统可以运行在类似树莓派的单板计算机(SBC)上。这篇文章针对的用户是想要充分利用实体服务器系统,并使用类似 Cockpit 的内置工具进行数据备份和个人数据的恢复。这里描述了备份的 3 个阶段。

必要的准备

想要使用本指南,你所需要的是一个运行着的 Fedora Linux 工作站和以下的项目:

  • 你应该阅读、理解和实践 Fedora 文档中 服务器安装管理 的要求
  • 一块用来测试 Fedora Linux 的 SBC(单板计算机)。在这里查看 硬件需求
  • Fedora ARM 服务器 原始镜像 & ARM 镜像安装器
  • SD 存储卡(64 GB / Class 10)和 SSD 设备两选一
  • 以太网 / DHCP 预留 IP 地址或者静态 IP 地址
  • 提供了 ssh 密钥的 Linux 客户端工作站
  • 选择云存储服务
  • 有额外可用的 Linux 工作站

对于这套环境,在写这篇文章的时候,由于成本和可用性的原因,我选择树莓派 3B+/4B+ (其中一个用来热切换)。当使用 Cockpit 远程连接树莓派服务器时,你可以将树莓派放到路由器附近以便设置。

加强服务器的安全

在 SBC 完成服务器的安装和管理后,用 firewalld 加强服务器的安全是一个好的做法。

连接存储设备到服务器之前,一旦服务器在线你必须设置好防火墙。firewalld 是基于区域的防火墙。在依照 Fedora 文档完成安装和管理指南之后,创建一个名为 FedoraServer 的预定义区域。

firewalld 里的富规则

富规则 rich rule 用来阻止或者允许一个特定的 IP 地址或者地址段。下面这条规则只从(客户端工作站)注册的 IP 地址接受 SSH 连接,并断开其它的连接。在 Cockpit 终端或者客户端工作站终端运行命令是通过 ssh 来连接到服务器的。

firewall-cmd --add-rich-rule='rule family=ipv4 source address=<registered_ip_address>/24 service name=ssh log prefix="SSH Logs" level="notice" accept'

拒绝所有主机的 ping 请求

使用这个命令来设置 icmp 拒绝,并且不允许 ping 请求:

firewall-cmd --add-rich-rule='rule protocol value=icmp reject'

要进行其它防火墙控制,比如管理端口和区域,请查阅以下链接。请注意错配防火墙可能会使安全出现漏洞受到攻击。

在 Cockpit 中管理防火墙
firewalld 规则

配置文件服务器的存储

下一步是连接存储设备到 SBC,然后使用 Cockpit 对新插入的存储设备进行分区。使用 Cockpit 的图形化服务器管理界面,管理一个家庭实验室(可以是一个或者多个服务器)比之前更加简单。Fedora Linux 服务器标准提供了 Cockpit。

在这个阶段,一个通过 SBC 的 USB 插口接电的 SSD 设备无需额外电源供给就可以工作。

  • 将存储设备连接到 SBC 的 USB 接口
  • 运行之后(按上面的“必要的准备”所设置的那样),然后在你的客户端工作站浏览器上访问 机器的 IP 地址:9090
  • 登录进 Cockpit 之后,点击 Cockpit 页面顶部的“ 打开管理访问权限 Turn on administrative access
  • 点击左边面板的 “ 存储 Storage ” 按钮
  • 选择下面显示的 “ 驱动器 Drives ”,然后分区并格式化一个空白的存储设备 Cockpit Storage management
  • 在选定的存储设备这个界面上,创建一个新的分区表或者格式化并创建新的分区。当初始化磁盘的时候,在 “ Partitioning 分区 ” 类型选项上,选择 “GPT 分区表”
  • 选择一个文件系统类型,这里选择 “EXT4” 。这对于一个限制 I/O 能力(比如 USB 2.0 接口)和限制带宽(小于 200MB/s)的设备是适合的 Create a partition in Cockpit
  • 要在设备上创建单个占据整个存储空间的分区,指定它的挂载点,比如 /media 然后点击 “ 确定 Ok ” 。
  • 点击 “ Create partition 创建分区 ”,创建一个挂载点为 /media 的新分区。

创建备份和恢复备份

备份很少是一刀切的。这里有一些选择比如数据备份在哪里,备份数据的步骤,验证一些自动化,并确定怎样来恢复备份了的数据。

Backup workflow – version 1.0

备份 1. 用 rsync 从客户端远程同步到文件服务器(树莓派)

这个传输用到的命令是:

rsync -azP ~/source syncuser@host1:/destination

参数:

  • -a/--archive:归档
  • -z/--compress:压缩
  • -P/--progress:显示进度

要使用更多的选项运行 rsync,可以设置以下的选项:

  • --inplace:直接替换来更新目标文档
  • --append:追加数据到较短的文档中

在将文档备份到存储空间之前,源端文档的文件重复消除和压缩是减少备份数据容量最有效的方式。

每天工作结束,我会手动运行这个。一旦我设置了云备份工作流,自动化脚本是一个优势。

关于 rsync 的详细信息,请在 这里 访问 Fedora 杂志的文章。

备份 2. 使用 rysnc 从文件服务器远程同步到主要的云存储上

选择云存储是考虑的因素;

  • 成本:上传、存储空间和下载费用
  • 支持 rsyncsftp
  • 数据冗余(RAID 10 或者运行中的数据中心冗余计划)
  • 快照

符合这些云存储标准之一的就是 Hetzner 托管的 Nextcloud– 存储盒子。你不会受到供应商限制,可以自由切换而没有退出惩罚。

在文件服务器上生成 SSH 密钥并创建授权密钥文件

使用 ssh-keygen 命令为文件服务器和云存储生成一对新的 SSH 密钥对。

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key . . .

插入要求的 SSH 公钥到新的本地授权密钥文件中。

cat .ssh/id_rsa.pub >> storagebox_authorized_keys
传输密钥文件到云存储

下一步就是上传生成了的授权密钥文件到存储盒子。要做这些,先用 700 权限创建 .ssh 目录,然后用 SSH 公钥创建授权文件并赋予 600 权限。运行以下命令。

echo -e "mkdir .ssh \n chmod 700 .ssh \n put storagebox_authorized_keys .ssh/authorized_keys \n chmod 600 .ssh/authorized_keys" | sftp <username>@<username>.your-storagebox.de
通过 ssh 使用 rsync

使用 rsync 同步你的文件目录当前状态到存储盒子。

rsync --progress -e 'ssh -p23' --recursive <local_directory> <username>@<username>.your-storagebox.de:<target_directory>

这个过程被叫做推送操作,因为它 “推送” 本地系统的一个目录到一个远程的系统中去。

从云存储中恢复目录

要从存储盒子恢复目录,转换到这个目录:

rsync --progress -e 'ssh -p23' --recursive <username>@<username>.your-storagebox.de:<remote_directory> <local_directory>

备份 3. 客户端备份到第二个云储存

Deja Dup 是 Fedora 软件仓库中为 Fedora 工作站提供快速备份解决方案的工具。它拥有 GPG 加密、计划任务、文件包含(哪个目录要备份)等功能。

Backing up to the secondary cloud

Restoring files from cloud storage

归档个人数据

不是所有数据都需要 3-2-1 备份策略。这就是个人数据共享。我将一台拥有 1TB 硬盘的笔记本作为我个人数据的档案(家庭照片)。

转到设置中的 “ 共享 Sharing ” (在我的例子中是 GNOME 文件管理器)并切换滑块以启用共享。

打开 “ 文件共享 file sharing ”,“ 网络 Networks ” 和 “ 需要的密码 Required password ”,允许你使用 WebDAV 协议在你的本地网络上分享你的公共文件夹给其它的工作站。

准备回滚选项

未测试的备份并不比完全没有备份好。我在家庭实验室环境中使用 “热切换” 方法来避免像频繁的断电或者液体损坏的情况发生。然而,我的建议方案远没有达到灾难恢复计划或企业 IT 中的自动故障修复。

  • 定期运行文件恢复操作
  • 备份 ssh/GPG 密钥到一个额外的存储设备中
  • 复制一个 Fedora ARM 服务器的原始镜像到一个 SD 卡中
  • 在主云存储中保持全备份的快照
  • 自动化备份过程最小化减少人为错误或者疏忽

使用 Cockpit 追踪活动并解决问题

当你的项目在成长时,你所管理的服务器数量也在增长。在 Cockpit 中追踪活动和警告可以减轻你的管理负担。你可以使用 Cockpit 的图形化界面的三种方法来归档这些。

SELinux 菜单

怎样诊断网络问题,找到日志并在 Cockpit 中解决问题:

  • 去 SELinux 中检查日志
  • 检查“ 解决方案详细信息 solution details
  • 当必要时,选择 “ 应用这个方案 Apply this solution
  • 如果必要,查看自动化脚本并运行它

SELinux logs

网络或者存储日志

服务器日志会跟踪 CPU 负载、内存使用、网络活动、存储性能和系统日志关联的详细指标。日志会组织在网络面板或者存储面板里显示。

Storage logs in Cockpit

软件更新

在预设的时间和频率下,Cockpit 可以帮助进行安全更新。当你需要时,你可以运行所有的更新。

Software updates

恭喜你在 Fedora ARM 服务器版本上搭建了一个文件/备份服务器。


via: https://fedoramagazine.org/3-2-1-backup-plan-with-fedora-arm-server/

作者:Hanku Lee 选题:lujun9972 译者:hwlife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出