2019年10月

这里,我们很荣幸地宣布 Fedora 31 的发布。感谢成千上万的 Fedora 社区成员和贡献者的辛勤工作,我们现在正在庆祝又一次的准时发布。这已成为一种惯例!

如果你只想立即获取它,请立即访问 https://getfedora.org/。要了解详细信息,请继续阅读!

工具箱

如果你还没有使用过 Fedora 工具箱,那么现在是尝试一下的好时机。这是用于启动和管理个人工作区容器的简单工具,你可以在一个单独的环境中进行开发或试验。它只需要在命令行运行 toolbox enter 就行。

这种容器化的工作流程对于基于 ostree 的 Fedora 变体(如 CoreOS、IoT 和 Silverblue)的用户至关重要,但在任何工作站甚至服务器系统上也非常有用。在接下来的几个月中,希望对该工具及其相关的用户体验进行更多增强,非常欢迎你提供反馈。

Fedora 风味版

Fedora 的“版本”是针对特定的“展示柜”用途输出的。

Fedora 工作站版本专注于台式机,以及希望获得“可以工作的” Linux 操作系统体验的特定软件开发人员。此版本具有 GNOME 3.34,它带来了显著的性能增强,在功耗较低的硬件上尤其明显。

Fedora 服务器版本以易于部署的方式为系统管理员带来了最新的、最先进的开源服务器软件。

而且,我们还有处于预览状态下的 Fedora CoreOS(一个定义了现代容器世界分类的操作系统)和Fedora IoT(用于“边缘计算”用例)。(敬请期待计划中的给该物联网版本的征集名称的活动!)

当然,我们不仅仅提供的是各种版本。还有面向各种受众和用例的 Fedora SpinsLabs,包括 Fedora 天文学 版本,为业余和专业的天文学家带来了完整的开源工具链,以及支持各种桌面环境(例如 KDE PlasmaXfce)。

而且,请不要忘记我们的替代架构 ARM AArch64、Power 和 S390x。特别要注意的是,我们对包括 Rock960、RockPro64 和 Rock64 在内的 Rockchip 片上系统设备的支持得到了改善,并初步支持了 “panfrost”,这是一种较新的开源 3D 加速图形驱动程序 Arm Mali midgard GPU。

不过,如果你使用的是只支持 32 位的 i686 旧系统,那么该找个替代方案了,我们的基本系统告别了 32 位 Intel 架构

常规改进

无论你使用哪种 Fedora 版本,你都将获得开源世界所提供的最新版本。遵循 “First” 准则,我们启用了 CgroupsV2(如果你使用的是 Docker,请确保检查一下)。Glibc 2.30 和 NodeJS 12 是 Fedora 31 中许多更新的软件包之一。而且,我们已经将 python 命令切换为 Python 3,请记住,Python 2 在今年年底生命期就终止了。

我们很高兴你能试用新版本!转到 https://getfedora.org/ 并立即下载吧。或者,如果你已经在运行 Fedora 操作系统,请遵循简单的升级说明就行。

万一出现问题……

如果遇到问题,请查看 Fedora 31 常见错误页面,如果有疑问,请访问我们的 Ask Fedora 用户支持平台。

谢谢大家

感谢在此发行周期中成千上万为 Fedora 项目做出贡献的人们,尤其是那些为使该发行版再次按时发行而付出更多努力的人。而且,如果你本周在波特兰参加 USENIX LISA,请在博览会大厅,在 Red Hat、Fedora 和 CentOS 展位找到我。


via: https://fedoramagazine.org/announcing-fedora-31/

作者:Matthew Miller 选题:lujun9972 译者:wxy 校对:wxy

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

是的,这是年终摘要文章之一。这是一篇很长的文章,因为就网络安全新闻来说,2019 年就是一场灾难,每周都会有一个或多个重大事件发生。

以下是按月组织的过去 10 个月安全灾难的摘要。

七月

哈萨克斯坦政府拦截了所有本地 HTTPS 流量:HTTPS 拦截工作针对 Facebook,Google,Twitter 和其他站点苹果、谷歌和 Mozilla 最终干预并禁止了用于 HTTPS 中间人攻击的证书。

黑客窃取了数百万保加利亚人的数据:一名黑客窃取了数百万保加利亚人的个人详细信息,并将窃取的数据的下载链接通过电子邮件发送给了本地新闻出版物。该数据窃取自该国国家税务局,最终在网上泄露

黑客侵入了 FSB 的承包商:黑客侵入了俄罗斯国家情报局 FSB 的承包商 SyTech,他们从那里窃取了该公司代表该机构开展的内部项目的信息,包括将 Tor 流量匿名化的信息。

iMessages 可能使你的 iPhone 变砖:该漏洞在被广泛利用之前得到了修补。

Urgent/11 安全漏洞:TCP 库中的主要错误影响了路由器、打印机、SCADA、医疗设备和许多 IoT 设备。

苹果公司的 AWDL 协议受到安全漏洞的困扰:苹果公司在五月份修补了一个错误,但学者说,其余的漏洞需要重新设计某些苹果服务。错误会启用跟踪和中间人攻击。

DHS 警告小型飞机的 CAN 总线漏洞:DHS 网络安全机构 CISA 建议这些小型飞机的所有者“尽其所能”限制对飞机的访问,以防止这个漏洞可能被用来破坏飞机。

GE 麻醉机中发现的漏洞:GE 建议设备所有者不要将脆弱的麻醉机连接到医院的主要网络。该公司否认这些漏洞可能导致患者受到伤害,但后来撤回该说法并承认这些问题可能对人类生命构成危险。

洛杉矶警方陷入数据泄露:黑客窃取了 2500 多名洛杉矶警察的个人记录。黑客直接通过电子邮件发送给该部门,并提供了一些据称是被盗信息的样本以支持他们的说法。

路易斯安那州州长在当地勒索软件爆发后宣布州紧急状态:是的。勒索软件变得非常糟糕。然后它袭击了德克萨斯州牙医办公室托管服务提供商

蓝牙漏洞利用可以跟踪和识别 iOS、微软移动设备用户:尽管存在本机操作系统保护但该漏洞可用于监视用户,它影响 Windows 10、iOS 和 macOS 计算机上的蓝牙设备。其中包括 iPhone、iPad、Apple Watch、MacBook 和微软的平板电脑和笔记本电脑。

“7-11” 日本的客户由于移动应用漏洞而损失了 50 万美元:7-11 最终关闭了该应用。

八月

SWAPGSAttack CPU 漏洞:研究人员详细介绍了该硬件漏洞,它绕过了 Windows 系统上针对 Spectre 和 Meltdown CPU 漏洞的缓解措施,并影响了所有使用自 2012 年以来制造的英特尔处理器的系统。

新的 Dragonblood 漏洞:今年四月初,两名安全研究人员披露了 WiFi 联盟最近发布的 WPA3 WiFi 安全和身份验证标准中五个漏洞(统称为 Dragonblood)的详细信息。

14 个 iOS 零日漏洞:自 2016 年 9 月以来,谷歌发现了针对 14 个 iOS 漏洞的攻击,这些漏洞分为五个漏洞利用链,并已被广泛部署。

VPN 安全漏洞:黑客对 Pulse Secure 和 Fortinet VPN 发起攻击。

Windows CTF 漏洞:Microsoft CTF 协议中的漏洞可以追溯到 Windows XP。该错误允许黑客劫持任何 Windows 应用,逃脱沙箱并获得管理员权限。

WS-Discovery 协议被滥用于 DDoS 攻击:该协议被 DDoS 租用服务所利用,已在实际攻击中使用。

Capitol One 黑客事件:一名黑客侵入了 Capitol One,从那里窃取了 1 亿用户的记录。她还入侵了其他 30 家公司

Hy-Vee 卡泄露:超市连锁店 Hy-Vee 承认其某些 PoS 系统存在安全漏洞。该数据最终被在黑客论坛上出售。

员工将核电厂连接到互联网,以便他们可以开采加密货币:乌克兰核电厂的员工为了开采比特币而承担了不必要的安全风险。他们最终被捕。

莫斯科的区块链投票系统在大选前一个月就被攻破了:法国研究人员因在基于以太坊的投票系统中发现漏洞而获得 15000 美元的奖金。

美国军方购买了价值 3280 万美元的具有已知安全风险的电子产品:国防部购买的易受攻击产品包括 Lexmark 打印机、GoPro相机和联想计算机。

AT&T 员工受贿以在公司网络上植入恶意软件:美国司法部指控巴基斯坦男子贿赂 AT&T 员工超过 100 万美元,以在该公司网络上安装恶意软件,解锁超过 200 万台设备。

Windows 恶意软件会记录用户在成人网站上的访问:新的 Varenyky 木马会记录用户浏览成人网站的桌面视频。当前仅针对法国用户。

TrickBot 木马具备协助 SIM 交换攻击的功能:TrickBot 木马可以收集 Sprint、T-Mobile 和 Verizon Wireless 帐户的凭据和 PIN 码。

战争技术:黑客可以使用包裹传递服务将黑客设备直接运送到你公司的门口。

Instagram 踢掉了广告合作伙伴 Hyp3r:Instagram 发现该广告合作伙伴收集其用户数据。

九月

Simjacker 攻击:安全研究人员详细介绍了一种基于 SMS 的攻击,该攻击可以通过滥用 SIM 卡上运行的鲜为人知的应用程序,使恶意行为者可以跟踪用户的设备。发现 29 个国家/地区的 SIM 卡受到了影响。 还发现了第二起名为 WIBAttack 的攻击。

智能电视间谍活动:两项学术论文发现,智能电视正在收集有关用户的电视观看习惯的数据。

Checkm8 iOS 越狱:针对所有运行 A5 至 A11 芯片的 iOS 设备(在 iPhone 4S 以及 iPhone 8 和 X 上)发布的新 Checkm8 越狱。过去九年来,这是第一个在硬件级别起作用的越狱漏洞。

数据库泄漏了厄瓜多尔大多数公民的数据:Elasticsearch 服务器泄漏了有关厄瓜多尔公民其家谱和孩子的个人数据,还泄漏了一些用户的财务记录和汽车登记信息。该公司高管随后被捕

Limin PDF 泄露事件:九月中旬,超过 2430 万 Lumin PDF 的用户详细信息在黑客论坛上被分享。该公司在第二天承认这次泄露。

Heyyo 约会应用程序泄漏事件:他们泄漏了除私人消息以外的几乎所有内容。

vBulletin 零日漏洞和随后的黑客攻击:一位匿名安全研究人员发布了 vBulletin 论坛软件中的零日漏洞。该漏洞立即被黑客用于入侵一系列论坛。

大量的帐户劫持事件袭击了 YouTube 创作者:汽车社区的 YouTube 创作者遭受了鱼叉式网络钓鱼攻击,这些攻击可以绕过 2FA,从而使黑客可以接管其 Google 和 YouTube 帐户。

Lilocked(Lilu)勒索软件:成千上万的 Linux 服务器感染了新的 Lilocked(Lilu)勒索软件。

超过 47,000 台超微服务器正在互联网上暴露了其 BMC 端口:研究人员在超微服务器上发现了一个新的远程攻击方式,发现它在互联网上暴露了其 BMC 端口。

勒索软件事件给公司造成了高达 9500 万美元的损失:丹麦制造助听器 Demant 的勒索软件事件造成了近 9500 万美元的损失,这是迄今为止最昂贵的事件之一。

Exim 漏洞(CVE-2019-15846):数百万的 Exim 服务器容易受到一个安全漏洞的攻击,利用该漏洞可以使攻击者能够以 root 特权运行恶意代码。

十月

Avast 黑客事件:这家捷克的杀毒软件制造商在 2017 年遭受攻击之后,披露了其受到了第二次攻击,旨在破坏 CCleaner 版本。该公司表示,黑客通过受损的 VPN 配置文件破坏了该公司。

被广泛利用的 Android 零日漏洞:Google Project Zero 研究人员发现了被广泛利用的 Android 零日漏洞,影响了 Pixel、三星、华为、小米设备。

Alexa 和 Google Home 设备再次被利用来网络钓鱼和窃听用户:亚马逊、Google 在首次报告后一年多未能解决 Alexa 和 Home 设备中的安全漏洞。

捷克当局拆除了据称是俄罗斯的网络间谍网络:捷克官员说,俄罗斯特工利用当地公司对外国目标发起网络攻击。官员们表示,运营得到了俄罗斯国家情报局 FSB 的支持以及当地大使馆的财政帮助。

约翰内斯堡被黑客团伙勒索赎金:一个名为“Shadow Kill Hackers”的组织正在向当地官员索要 4 枚比特币,否则他们将在线发布该城市数据。这是在七月遭到勒索软件攻击之后对约翰内斯堡的第二次重大袭击,当时导致一些当地居民断电

CPDoS 攻击事件:CloudFront、Cloudflare、Fastly、Akamai 等受到新的 CPDoS Web 缓存中毒攻击的影响。

被广泛利用的 PHP7 RCE:新的 PHP7 错误 CVE-2019-11043 甚至可以使非技术攻击者接管运行 PHP-FPM 模块的 Nginx 服务器。

遭受 DDoS 攻击的 macOS 系统:多达 4 万个 macOS 系统在线暴露了一个特定的端口,该端口可能被滥用于相当大的 DDoS 攻击。

早在 2015 年,Brian Will 撰写了一篇有挑衅性的博客:面向对象编程:一个灾难故事。他随后发布了一个名为面向对象编程很糟糕的视频,该视频更加详细。

我建议你花些时间观看视频,下面是我的一段总结:

OOP 的柏拉图式理想是一堆相互解耦的对象,它们彼此之间发送无状态消息。没有人真的像这样制作软件,Brian 指出这甚至没有意义:对象需要知道向哪个对象发送消息,这意味着它们需要相互引用。该视频大部分讲述的是这样一个痛点:人们试图将对象耦合以实现控制流,同时假装它们是通过设计解耦的。

总的来说,他的想法与我自己的 OOP 经验产生了共鸣:对象没有问题,但是我一直不满意的是面向对象建模程序控制流,并且试图使代码“正确地”面向对象似乎总是在创建不必要的复杂性。

有一件事我认为他无法完全解释。他直截了当地说“封装没有作用”,但在脚注后面加上“在细粒度的代码级别”,并继续承认对象有时可以奏效,并且在库和文件级别封装是可以的。但是他没有确切解释为什么有时会奏效,有时却没有奏效,以及如何和在何处划清界限。有人可能会说这使他的 “OOP 不好”的说法有缺陷,但是我认为他的观点是正确的,并且可以在根本状态和偶发状态之间划清界限。

如果你以前从未听说过“ 根本 essential ”和“ 偶发 accidental ”这两个术语的使用,那么你应该阅读 Fred Brooks 的经典文章《没有银弹》。(顺便说一句,他写了许多很棒的有关构建软件系统的文章。)我以前曾写过关于根本和偶发的复杂性的文章,这里有一个简短的摘要:软件是复杂的。部分原因是因为我们希望软件能够解决混乱的现实世界问题,因此我们将其称为“根本复杂性”。“偶发复杂性”是所有其它的复杂性,因为我们正尝试使用硅和金属来解决与硅和金属无关的问题。例如,对于大多数程序而言,用于内存管理或在内存与磁盘之间传输数据或解析文本格式的代码都是“偶发的复杂性”。

假设你正在构建一个支持多个频道的聊天应用。消息可以随时到达任何频道。有些频道特别有趣,当有新消息传入时,用户希望得到通知。而其他频道静音:消息被存储,但用户不会受到打扰。你需要跟踪每个频道的用户首选设置。

一种实现方法是在频道和频道设置之间使用 映射 map (也称为哈希表、字典或关联数组)。注意,映射是 Brian Will 所说的可以用作对象的抽象数据类型(ADT)。

如果我们有一个调试器并查看内存中的映射对象,我们将看到什么?我们当然会找到频道 ID 和频道设置数据(或至少指向它们的指针)。但是我们还会找到其它数据。如果该映射是使用红黑树实现的,我们将看到带有红/黑标签和指向其他节点的指针的树节点对象。与频道相关的数据是根本状态,而树节点是偶发状态。不过,请注意以下几点:该映射有效地封装了它的偶发状态 —— 你可以用 AVL 树实现的另一个映射替换该映射,并且你的聊天程序仍然可以使用。另一方面,映射没有封装根本状态(仅使用 get()set() 方法访问数据并不是封装)。事实上,映射与根本状态是尽可能不可知的,你可以使用基本相同的映射数据结构来存储与频道或通知无关的其他映射。

这就是映射 ADT 如此成功的原因:它封装了偶发状态,并与根本状态解耦。如果你思考一下,Brian 用封装描述的问题就是尝试封装根本状态。其他描述的好处是封装偶发状态的好处。

要使整个软件系统都达到这一理想状况相当困难,但扩展开来,我认为它看起来像这样:

  • 没有全局的可变状态
  • 封装了偶发状态(在对象或模块或以其他任何形式)
  • 无状态偶发复杂性封装在单独函数中,与数据解耦
  • 使用诸如依赖注入之类的技巧使输入和输出变得明确
  • 组件可由易于识别的位置完全拥有和控制

其中有些违反了我很久以来的直觉。例如,如果你有一个数据库查询函数,如果数据库连接处理隐藏在该函数内部,并且唯一的参数是查询参数,那么接口会看起来会更简单。但是,当你使用这样的函数构建软件系统时,协调数据库的使用实际上变得更加复杂。组件不仅以自己的方式做事,而且还试图将自己所做的事情隐藏为“实现细节”。数据库查询需要数据库连接这一事实从来都不是实现细节。如果无法隐藏某些内容,那么显露它是更合理的。

我对将面向对象编程和函数式编程放在对立的两极非常警惕,但我认为从函数式编程进入面向对象编程的另一极端是很有趣的:OOP 试图封装事物,包括无法封装的根本复杂性,而纯函数式编程往往会使事情变得明确,包括一些偶发复杂性。在大多数时候,这没什么问题,但有时候(比如在纯函数式语言中构建自我指称的数据结构)设计更多的是为了函数编程,而不是为了简便(这就是为什么 Haskell 包含了一些“ 逃生出口 escape hatches )。我之前写过一篇所谓“ 弱纯性 weak purity ”的中间立场

Brian 发现封装对更大规模有效,原因有几个。一个是,由于大小的原因,较大的组件更可能包含偶发状态。另一个是“偶发”与你要解决的问题有关。从聊天程序用户的角度来看,“偶发的复杂性”是与消息、频道和用户等无关的任何事物。但是,当你将问题分解为子问题时,更多的事情就变得“根本”。例如,在解决“构建聊天应用”问题时,可以说频道名称和频道 ID 之间的映射是偶发的复杂性,而在解决“实现 getChannelIdByName() 函数”子问题时,这是根本复杂性。因此,封装对于子组件的作用比对父组件的作用要小。

顺便说一句,在视频的结尾,Brian Will 想知道是否有任何语言支持无法访问它们所作用的范围的匿名函数。D 语言可以。 D 中的匿名 Lambda 通常是闭包,但是如果你想要的话,也可以声明匿名无状态函数:

import std.stdio;

void main()
{
    int x = 41;

    // Value from immediately executed lambda
    auto v1 = () {
        return x + 1;
    }();
    writeln(v1);

    // Same thing
    auto v2 = delegate() {
        return x + 1;
    }();
    writeln(v2);

    // Plain functions aren't closures
    auto v3 = function() {
        // Can't access x
        // Can't access any mutable global state either if also marked pure
        return 42;
    }();
    writeln(v3);
}

via: https://theartofmachinery.com/2019/10/13/oop_and_essential_state.html

作者:Simon Arneaud 选题:lujun9972 译者:geekpi 校对:wxy

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

了解如何使用 Ansible 在容器中执行命令。

容器和 Ansible 可以很好地融合在一起:从管理和编排到供应和构建。在本文中,我们将重点介绍构建部分。

如果你熟悉 Ansible,就会知道你可以编写一系列任务,ansible-playbook 命令将为你执行这些任务。你知道吗,如果你编写 Dockerfile 并运行 podman build,你还可以在容器环境中执行此类命令,并获得相同​​的结果。

这是一个例子:

- name: Serve our file using httpd
  hosts: all
  tasks:
  - name: Install httpd
    package:
      name: httpd
      state: installed
  - name: Copy our file to httpd’s webroot
    copy:
      src: our-file.txt
      dest: /var/www/html/

你可以在 Web 服务器本地或容器中执行这个剧本,并且只要你记得先创建 our-file.txt,它就可以工作。

但是这里缺少了一些东西。你需要启动(并配置)httpd 以便提供文件。这是容器构建和基础架构供应之间的区别:构建镜像时,你只需准备内容;而运行容器是另一项任务。另一方面,你可以将元数据附加到容器镜像,它会默认运行命令。

这有个工具可以帮助。试试看 ansible-bender 怎么样?

$ ansible-bender build the-playbook.yaml fedora:30 our-httpd

该脚本使用 ansible-bender 对 Fedora 30 容器镜像执行该剧本,并将生成的容器镜像命名为 our-httpd

但是,当你运行该容器时,它不会启动 httpd,因为它不知道如何操作。你可以通过向该剧本添加一些元数据来解决此问题:

- name: Serve our file using httpd
  hosts: all
  vars:
    ansible_bender:
      base_image: fedora:30
      target_image:
        name: our-httpd
        cmd: httpd -DFOREGROUND
  tasks:
  - name: Install httpd
    package:
      name: httpd
      state: installed
  - name: Listen on all network interfaces.
    lineinfile:    
      path: /etc/httpd/conf/httpd.conf  
      regexp: '^Listen '
      line: Listen 0.0.0.0:80  
  - name: Copy our file to httpd’s webroot
    copy:
      src: our-file.txt
      dest: /var/www/html

现在你可以构建镜像(从这里开始,请以 root 用户身份运行所有命令。目前,Buildah 和 Podman 不会为无 root 容器创建专用网络):

# ansible-bender build the-playbook.yaml
PLAY [Serve our file using httpd] ****************************************************
                                                                                                                                                                             
TASK [Gathering Facts] ***************************************************************    
ok: [our-httpd-20191004-131941266141-cont]

TASK [Install httpd] *****************************************************************
loaded from cache: 'f053578ed2d47581307e9ba3f64f4b4da945579a082c6f99bd797635e62befd0'
skipping: [our-httpd-20191004-131941266141-cont]

TASK [Listen on all network interfaces.] *********************************************
changed: [our-httpd-20191004-131941266141-cont]

TASK [Copy our file to httpd’s webroot] **********************************************
changed: [our-httpd-20191004-131941266141-cont]

PLAY RECAP ***************************************************************************
our-httpd-20191004-131941266141-cont : ok=3    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0

Getting image source signatures
Copying blob sha256:4650c04b851c62897e9c02c6041a0e3127f8253fafa3a09642552a8e77c044c8
Copying blob sha256:87b740bba596291af8e9d6d91e30a01d5eba9dd815b55895b8705a2acc3a825e
Copying blob sha256:82c21252bd87532e93e77498e3767ac2617aa9e578e32e4de09e87156b9189a0
Copying config sha256:44c6dc6dda1afe28892400c825de1c987c4641fd44fa5919a44cf0a94f58949f
Writing manifest to image destination
Storing signatures
44c6dc6dda1afe28892400c825de1c987c4641fd44fa5919a44cf0a94f58949f
Image 'our-httpd' was built successfully \o/

镜像构建完毕,可以运行容器了:

# podman run our-httpd
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.88.2.106. Set the 'ServerName' directive globally to suppress this message

是否提供文件了?首先,找出你容器的 IP:

# podman inspect -f '{{ .NetworkSettings.IPAddress }}' 7418570ba5a0
10.88.2.106

你现在可以检查了:

$ curl http://10.88.2.106/our-file.txt
Ansible is ❤

你文件内容是什么?

这只是使用 Ansible 构建容器镜像的介绍。如果你想了解有关 ansible-bender 可以做什么的更多信息,请查看它的 GitHub 页面。构建快乐!


via: https://opensource.com/article/19/10/building-container-images-ansible

作者:Tomas Tomecek 选题:lujun9972 译者:geekpi 校对:wxy

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

是的,这是年终摘要文章之一。这是一篇很长的文章,因为就网络安全新闻来说,2019 年就是一场灾难,每周都会有一个或多个重大事件发生。

以下是按月组织的过去 10 个月安全灾难的摘要。

一月

Apple FaceTime 中的严重漏洞:Apple FaceTime 应用程序中的一个错误使攻击者可以在不与被呼叫者进行任何用户交互的情况下呼叫并自行应答 FaceTime 呼叫,从而为进行秘密监视打开了大门。

在通过 Skype 面试后,朝鲜黑客渗透到智利的 ATM 网络:该文章的标题不言而喻,值得你花时间阅读该故事。

黑客破坏并窃取了韩国国防部的数据:首尔政府表示,黑客破坏了 30 台计算机并窃取了 10 台计算机中的数据。被黑客入侵的计算机存储了有关武器和弹药采购的数据。

有人入侵了 PHP PEAR 网站:我们仍然不知道发生了什么,但是一些黑客侵入了 PHP PEAR 存储库,并给某个版本的 PHP PEAR 软件包管理器添加了后门。

26 种低端加密货币中发现的安全漏洞:该报告显示了一些低端的不著名的加密货币的危险性,以及黑客如何随时窃取大量资金。

俄克拉荷马州政府数据泄漏暴露了联邦调查局的调查记录:俄克拉荷马州证券部的服务器允许任何人下载政府文件,例如内部文件,甚至是联邦调查局的调查。

被怀疑参与了全球 DNS 劫持活动的伊朗黑客:FireEye 和 Cisco Talos 先后披露了由伊朗黑客发起的全球劫持活动,伊朗黑客通过其伊朗服务器重定向了来自全球各地公司的流量,并记录了公司的凭据以备将来攻击。他们在域名注册商处入侵了 DNS 管理帐户,以执行 DNS 劫持攻击。这些黑客也入侵了希腊的顶级域名注册商

存在了 36 年之久的 SCP 软件安全漏洞:自 1983 年以来,过去 36 年中的所有 SCP(安全复制协议)软件版本均受到了四个安全漏洞的影响,这些漏洞允许恶意的 SCP 服务器对客户(用户)的系统进行未经授权的更改,并在终端隐藏其恶意操作。

年度 LTE 安全漏洞:今年发现了两组新的 LTE 安全漏洞。一组影响 3G、4G 和 5G,另一组 36 个漏洞在韩国安全研究人员进行的一项模糊项目之后被发现。

网站可以通过浏览器扩展 API 窃取浏览器数据:研究人员发现有将近 200 个 Chrome、Firefox 和 Opera 扩展容易受到恶意站点的攻击。

WiFi 固件错误会影响笔记本电脑、智能手机、路由器、游戏设备:Marvell Avastar 芯片组中发现的重大安全漏洞。受影响的设备列表包括 PS4、Xbox One、三星 Chromebook 和微软 Surface 设备。

恶意软件被发现预装在 Android 设备上:在 2019 年发生了两次。首先,在一月份,研究人员在预安装在阿尔卡特智能手机上的阿尔卡特应用程序中发现了恶意软件。其次,在六月,德国的网络安全机构在四种中国智能手机型号中发现了后门

二月

重大 WinRAR 错误暴露:Check Point 研究人员发现了一个 WinRAR 错误,该错误影响了自 2000 年以来发行的所有 WinRAR 版本。超过 5 亿个 WinRAR 用户面临风险。这些漏洞最终被网络罪犯和国家黑客广泛使用。

新的 WinPot 恶意软件可以使 ATM 吐出现金:WinPot 自 2018 年 3 月以来一直在地下论坛上出售。

从 Tor 流量检测单个 Android 应用程序的准确性为 97%:新的机器学习算法可以通过 Tor 检测 Tor 用户何时使用了特定的应用程序,例如 YouTube、Instagram、Spotify 等。

黑客抹除了电子邮件提供商 VFEmail 的美国服务器:黑客没有要求赎金。VFEmail 将事件描述为“攻击并摧毁”。

Thunderclap 漏洞:该安全漏洞影响 Windows、Mac、Linux 处理 Thunderbolt 外围设备的方式。它们允许创建可能从操作系统内存中窃取数据的高度危险的恶意外围设备。

PDF 协议攻击:一组德国学者发现了一种在 PDF 文档中伪造签名的方法,并在今年晚些时候找到了一种破解 PDF 加密的方法

使用 CPU 隐藏恶意软件:学者们已经找到了在使用推测执行英特尔 SGX 安全区系统的计算机上隐藏恶意软件的方法。

三月

黑客在大风暴发生前将龙卷风警报器离线:是的,就是为了作恶。

华硕供应链黑客事件:黑客劫持了华硕 Live Update 实用程序,以便在用户系统上部署恶意软件。黑客攻击发生在 2018 年,但在今年 3 月被披露。据信已经影响了超过一百万台 PC。

GitHub 帐户环推广了 300 多个带后门的应用程序:该 GitHub 账户环由 89 个帐户组成,推广了 73 个仓库,其中包含 300 多个带有后门的 Windows、Mac 和 Linux 应用程序。

Bithumb 加密货币交易所在两年内第三次被黑客入侵:据信黑客已经赚了近 2000 万美元的 EOS 和瑞波加密货币。在这一点上,Bithumb 似乎放弃挣扎了。

Chrome 零日漏洞正受到活跃攻击:CVE-2019-5786(Chrome 的 FileReader API 中的一个错误)被广泛利用以从用户计算机中读取内容。谷歌表示,该漏洞是由一个国家攻击者与 Windows 7 零日漏洞一起使用的。

新的英特尔 CPU 错误:研究人员发现了新的 Intel VISA(内部信号架构可视化)调试技术。

法国加油站的黑客事件:加油站忘记更换加油站油泵的 PIN 之后,犯罪集团从巴黎附近的道达尔加油站偷走了 12 万升燃油。

Citrix 数据泄露:Citrix 从 FBI 获悉了本次黑客攻击。黑客偷走了商业文件。Citrix 的许多客户都是政府机构和财富 500 强公司。

智能手机解锁问题:我们今年遇到了一些这样的案例,但第一起案例是在三月份报道的,当时用户发现三星 Galaxy S10 面部识别可能被手机所有者的视频所欺骗。一个月后,用户发现他可以用一包口香糖解锁诺基亚 9 智能手机的指纹扫描仪。然后在十月,用户发现可以在闭着眼睛时解锁 Pixel 4 的面部解锁技术;一对夫妇发现,如果该设备由硅保护套保护,他们可以使用任何用户的手指解锁使用指纹保护的 Samsung S10 设备。实际上,绕过面部识别的问题非常普遍。去年,一家荷兰非营利组织进行的一项研究发现,攻击者可以在测试的 110 部智能手机中的 42 部中绕过面部解锁类的功能。

四月

美国联合航空公司盖上了座席摄像头:该航空公司坚称这些摄像头尚未投入使用;但是,客户首先仍然对该摄像头的存在感到非常不安和烦恼。

由于未修复的 API,研究人员在数百个 GPS 手表的地图上显示 “PWNED!” :超过 20 种型号的 GPS 手表允许恶意行为者跟踪设备所有者,并修改手表功能。

成千上万辆汽车因使用硬编码的密码而暴露于小偷视野之中:二月中以来,MyCar 发布的 Android 和 iOS 应用程序的安全更新已删除了硬编码的密码。

被勒索软件感染后,“天气”频道的播出空缺了 90 分钟:10 月对法国电视台 M6 的类似攻击未成功。

Facebook 承认存储了数百万个 Instagram 用户的明文密码:该事件发生的一个月前,Facebook 也承认存储了 Facebook 帐户的明文密码

Telegram 上泄露了伊朗网络间谍工具的源代码:每天都有恶意软件开发人员使用这些工具,从而使更多用户受到攻击。五月六月发生了第二次和第三次伊朗黑客工具泄漏。

印度政府机构保留的数百万孕妇的详细信息暴露在线上:超过 1250 万孕妇医学记录被暴露。三个多星期后,泄漏的服务器中删除了记录。

超过 13000 个 iSCSI 存储群集暴露在网上而没有密码:新的攻击方式在企业磁盘存储阵列和人们的 NAS 设备内部打开了后门。

Gnosticplayers 的黑客事件:几个月之内,一个被称为 Gnosticplayers 的黑客在网上放出了超过 10 亿条用户记录。

黑客组织已经在 D-Link 路由器上劫持了 DNS 流量达三个月:他们还针对了其他路由器型号进行了劫持,例如 ARG、DSLink、Secutech 和 TOTOLINK。这些攻击在巴西尤其活跃

五月

黑客擦除了 Git 存储库,并要求赎金:成千上万的存储库受到了影响,但几乎所有项目都已恢复。

对现代 CPU 的新 MDS 攻击:研究人员和学者详细介绍了新的微体系结构数据采样(MDS)攻击,例如 Zombieload、Fallout 和 RIDL。

Thrangrycat 漏洞:Thrangrycat 漏洞使攻击者可以在 Cisco 设备上植入持久的后门。据信大多数 Cisco 设备都会受到影响。没有广泛检测到攻击。

BlueKeep 漏洞:五月中旬,微软警告了一个新的 “可用作蠕虫的” RDP 漏洞,该漏洞后来被称为 BlueKeep。后来在八月披露了两个新的类似 BlueKeep 的可用做蠕虫的漏洞(DejaBlue)。经过数月的迫切等待之后,九月公开发布了一种概念验证攻击

不安全的服务器公开了 85% 巴拿马公民的的数据:该服务器包含患者数据,但没有公开医疗记录,仅公开了个人身份信息(PII)。

软件更新导致荷兰警察的脚踝监控器崩溃:有问题的更新阻止了脚踝监控器将数据发送回警察控制室。导致需要找到一些嫌疑人并送回监狱。

以色列对空袭哈马斯的黑客首次作出回应:以色列军方称轰炸了住着哈马斯网络部队的房屋。

Google 替换了有问题的 Titan 安全密钥:蓝牙配对协议中的漏洞迫使 Google 替换了在美国销售的 Titan 密钥。微软后来被迫发布了一个特殊修复程序以解决该问题。

Canva 黑客事件:Gnosticplayers 的受害者之一。该公司被黑客窃取了 1.39 亿条用户记录。

StackOverflow 黑客事件:Stack Overflow 表示黑客破坏了生产系统,而黑客发现已经活动了一周以上

Flipboard 黑客事件:黑客入侵的程度尚不得而知,但 Flipboard 表示,黑客已经访问其系统将近九个月的时间。

伦敦地铁开始通过 Wi-Fi 热点跟踪乘客:伦敦交通局(TfL)表示,计划在未来几个月内推出一种系统,以利用伦敦地铁上的公共 Wi-Fi 热点跟踪通勤者。

安全浏览器的主要错误:移动版 Chrome、Safari 和 Firefox 一年多都未能显示网络钓鱼警告。

六月

黑客攻击了 10 家电信供应商:Cybereason 的研究人员说,一个由国家支持的情报机构已经破坏了至少 10 家全球电信公司:在某种程度上,攻击者运行着“事实上的影子 IT 部门”。

新的 Silex 恶意软件使成千上万的 IoT 设备变砖:攻击持续了数天,但黑客最终停止并撤回了 Silex 恶意软件代码。

NASA 因未经授权的树莓派连接到其网络而被黑客入侵:NASA 将该黑客攻击描述为“高级持续威胁(APT)”,该术语通常用于国家黑客组织,但未提供其他详细信息。

流行的 Facebook 悲伤支持页面被黑客入侵:Facebok 数周都无视了该黑客攻击。

Google Nest 的摄像头可以允许前拥有者监视新拥有者:Google 最终推出了更新解决这个问题。

两个 Firefox 零日漏洞:Mozilla 修复了两个 Firefox 零日漏洞[12] ,它们被用于攻击 Coinbase 员工。

AMCA 数据泄露:去年,美国医疗保健计费供应商被黑客入侵,黑客将患者数据在线出售。该漏洞影响了多家医疗保健提供商,最终数量超过了 2000 万。

CBP 说,黑客窃取了车牌和旅行者的照片:CBP 说,分包商未经授权将照片存储在其内部服务器上,然后遭到黑客攻击。

HSM 重大漏洞影响着银行、云提供商、政府:两名安全研究人员透露,可以远程利用这些漏洞来检索存储在称为 HSM(硬件安全模块)的特殊计算机组件中的敏感数据。

SIM 交换攻击浪潮袭击了美国加密货币用户:六月的一周,数十名美国加密货币用户认为他们是 SIM 交换攻击的受害者。

你可能已经熟悉使用 ssh 命令访问远程系统。ssh 命令背后所使用的协议允许终端的输入和输出流经安全通道。但是你知道也可以使用 ssh 来安全地发送和接收其他数据吗?一种方法是使用“ 端口转发 port forwarding ”,它允许你在进行 ssh 会话时安全地连接网络端口。本文向你展示了它是如何工作的。

关于端口

标准 Linux 系统已分配了一组网络端口,范围是 0 - 65535。系统会保留 0 - 1023 的端口以供系统使用。在许多系统中,你不能选择使用这些低端口号。通常有几个端口用于运行特定的服务。你可以在系统的 /etc/services 文件中找到这些定义。

你可以认为网络端口是类似的物理端口或可以连接到电缆的插孔。端口可以连接到系统上的某种服务,类似物理插孔后面的接线。一个例子是 Apache Web 服务器(也称为 httpd)。对于 HTTP 非安全连接,Web 服务器通常要求在主机系统上使用端口 80,对于 HTTPS 安全连接通常要求使用 443。

当你连接到远程系统(例如,使用 Web 浏览器)时,你是将浏览器“连接”到你的主机上的端口。这通常是一个随机的高端口号,例如 54001。你的主机上的端口连接到远程主机上的端口(例如 443)来访问其安全的 Web 服务器。

那么,当你有这么多可用端口时,为什么还要使用端口转发呢?这是 Web 开发人员生活中的几种常见情况。

本地端口转发

想象一下,你正在名为 remote.example.com 的远程系统上进行 Web 开发。通常,你是通过 ssh 进入此系统的,但是它位于防火墙后面,而且该防火墙很少允许其他类型的访问,并且会阻塞大多数其他端口。要尝试你的网络应用,能够使用浏览器访问远程系统会很有帮助。但是,由于使用了讨厌的防火墙,你无法通过在浏览器中输入 URL 的常规方法来访问它。

本地转发使你可以通过 ssh 连接来建立可通过远程系统访问的端口。该端口在系统上显示为本地端口(因而称为“本地转发”)。

假设你的网络应用在 remote.example.com 的 8000 端口上运行。要将那个系统的 8000 端口本地转发到你系统上的 8000 端口,请在开始会话时将 -L 选项与 ssh 结合使用:

$ ssh -L 8000:localhost:8000 remote.example.com

等等,为什么我们使用 localhost 作为转发目标?这是因为从 remote.example.com 的角度来看,你是在要求主机使用其自己的端口 8000。(回想一下,任何主机通常可以通过网络连接 localhost 而连接到自身。)现在那个端口连接到你系统的 8000 端口了。ssh 会话准备就绪后,将其保持打开状态,然后可以在浏览器中键入 http://localhost:8000 来查看你的 Web 应用。现在,系统之间的流量可以通过 ssh 隧道安全地传输!

如果你有敏锐的眼睛,你可能已经注意到了一些东西。如果我们要 remote.example.com 转发到与 localhost 不同的主机名怎么办?如果它可以访问该网络上另一个系统上的端口,那么通常可以同样轻松地转发该端口。例如,假设你想访问也在该远程网络中的 db.example.com 的 MariaDB 或 MySQL 服务。该服务通常在端口 3306 上运行。因此,即使你无法 ssh 到实际的 db.example.com 主机,你也可以使用此命令将其转发:

$ ssh -L 3306:db.example.com:3306 remote.example.com

现在,你可以在 localhost 上运行 MariaDB 命令,而实际上是在使用 db.example.com 主机。

远程端口转发

远程转发让你可以进行相反操作。想象一下,你正在为办公室的朋友设计一个 Web 应用,并想向他们展示你的工作。不过,不幸的是,你在咖啡店里工作,并且由于网络设置,他们无法通过网络连接访问你的笔记本电脑。但是,你同时使用着办公室的 remote.example.com 系统,并且仍然可在这里登录。你的 Web 应用似乎在本地 5000 端口上运行良好。

远程端口转发使你可以通过 ssh 连接从本地系统建立端口的隧道,并使该端口在远程系统上可用。在开始 ssh 会话时,只需使用 -R 选项:

$ ssh -R 6000:localhost:5000 remote.example.com

现在,当在公司防火墙内的朋友打开浏览器时,他们可以进入 http://remote.example.com:6000 查看你的工作。就像在本地端口转发示例中一样,通信通过 ssh 会话安全地进行。

默认情况下,sshd 守护进程运行在设置的主机上,因此只有该主机可以连接它的远程转发端口。假设你的朋友希望能够让其他 example.com 公司主机上的人看到你的工作,而他们不在 remote.example.com 上。你需要让 remote.example.com 主机的所有者将以下选项之一添加到 /etc/ssh/sshd_config 中:

GatewayPorts yes       # 或
GatewayPorts clientspecified

第一个选项意味着 remote.example.com 上的所有网络接口都可以使用远程转发的端口。第二个意味着建立隧道的客户端可以选择地址。默认情况下,此选项设置为 no

使用此选项,你作为 ssh 客户端仍必须指定可以共享你这边转发端口的接口。通过在本地端口之前添加网络地址范围来进行此操作。有几种方法可以做到,包括:

$ ssh -R *:6000:localhost:5000                   # 所有网络
$ ssh -R 0.0.0.0:6000:localhost:5000             # 所有网络
$ ssh -R 192.168.1.15:6000:localhost:5000        # 单个网络
$ ssh -R remote.example.com:6000:localhost:5000  # 单个网络

其他注意事项

请注意,本地和远程系统上的端口号不必相同。实际上,有时你甚至可能无法使用相同的端口。例如,普通用户可能不会在默认设置中转发到系统端口。

另外,可以限制主机上的转发。如果你需要在联网主机上更严格的安全性,那么这你来说可能很重要。 sshd 守护程进程的 PermitOpen 选项控制是否以及哪些端口可用于 TCP 转发。默认设置为 any,这让上面的所有示例都能正常工作。要禁止任何端口转发,请选择 none,或仅允许的特定的“主机:端口”。有关更多信息,请在手册页中搜索 PermitOpen 来配置 sshd 守护进程:

$ man sshd_config

最后,请记住,只有在 ssh 会话处于打开状态时才会端口转发。如果需要长时间保持转发活动,请尝试使用 -N 选项在后台运行会话。确保控制台已锁定,以防止在你离开控制台时其被篡夺。


via: https://fedoramagazine.org/using-ssh-port-forwarding-on-fedora/

作者:Paul W. Frields 选题:lujun9972 译者:geekpi 校对:wxy

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