November 2012 Archives

备份和代码审计

| 2 Comments | No TrackBacks

这次回北京之前的周末,FreeBSD安全团队发表了内部通知,发现 FreeBSD.org 有些机器被入侵,最近终于做了全面披露了。目前,基本的代码审计和攻击检查已经做完,部分机器还在重装的过程中。

对 FreeBSD 这样的开源项目来说,在基础设施遭到攻击之后,首先必须被怀疑的便是有可能有人在代码库中植入了新的后门。由于代码量十分巨大,逐行审计是非常不现实的。由于 FreeBSD 在 BSD 时代即采用了版本控制系统(最早 BSD 时代是 SCCS,FreeBSD早期是CVS,现在是 subversion),因此,每一行代码的来源,包括作者、具体的修改时间,以及为什么那样修改等等,都可以很容易地查找到。

FreeBSD 采用了许多种不同的方法来同步修订历史,这包括了旧式的 CVSup、通过邮件的 CTM,以及 svnsync。CVSup类似于rsync,但是是为 CVS 优化的。FreeBSD 的 CVS 代码库之前是通过 SVN export 出来,然后通过CVSup发给所有的下游镜像,其好处是比rsync节省带宽和时间(因为CVSup会记录修改的文件信息,两相比较便不必完全传送文件的 stat 数据了),缺点和 rsync 一样,如果源站点的数据出了问题,备份也会被修改,而且是不可逆的。CTM和svnsync都是类似会计记账的方式,也就是说一旦有了修改便不可反悔(CTM更通过邮件发出,从而可以被第三方备份服务永久性记录),从而便于审计。

所幸的是,目前为止的调查中,并没有迹象显示 CVS 代码库或 subversion 代码库中混入了任何未经授权的变动。为了保险起见,FreeBSD.org 的管理员将 cvs 改为从 subversion 完全导出(因为 svn 的审计比较容易)覆盖,以避免某些没有检测到的问题给用户带来影响。

我们能够从这个事情中学习什么教训呢?我想,最重要的是,备份应该采用和源数据不一样的更新、删除逻辑,因为这样才可以知道具体发生了什么变化。也就是说,数据源这边在备份那边的权限应该是不能改变历史记录数据的,比如只允许添加,等等。

关于这次入侵的具体情况,等有时间再写出来。

Avo走了

| 1 Comment

FreeBSD Vendor Summit 201211

| No Comments | No TrackBacks

FreeBSD Vendor Summit 是定期举行的使用 FreeBSD 的公司的交流会,这次是在 Yahoo 总部举办。不过,早上因为没有注意收听广播,结果在 237 上堵了半个小时,到会场的时候已经在演示 VTune 了。

Intel 的 VTune 是 Intel 非常好用的一套性能剖析工具。经过将近两年的不断努力,目前 Intel 已经可以提供用于 FreeBSD 的探测模块了,把生成的文件复制到安装了 VTune 的机器上,即可完成各种分析工作。Intel 的 Jim Harris 做了详细的演示,如果对购买和授权感兴趣,可联系 Intel 的销售 Greg Anderson (greg.anderson%intel.com)。预计2013年发布的 VTune 版本更新将内建相关驱动的源代码(BSD许可;如果现在就需要的话请和 Jim 联系),今天我们还讨论了关于把这些驱动直接放进 FreeBSD 的可能性,但估计需要另外走 Intel 内部的审批流程批准。这一进展相当令人振奋。

Warner 今年没有来参加 Vendor Summit,所以 Adrian 向大家介绍了近期 FreeBSD 在嵌入式方面的进展。内容和前几天 MeetBSD 的 Dev Summit 区别不太大。Robert Watson 强调了 Raspberry Pi 和 FreeBSD 之间有良好的关系,而且 Raspberry Pi 非常适合做教学用途。目前,FreeBSD 已经有了可以适用于不同 ARM 平台的、类似i386的通用内核,未来希望进一步发布不同的image来帮助新手完成安装。MIPS方面,现在有 zRouter 项目,目标是做一套完整的、类似 OpenWRT 的平台,其成果也正在逐渐合并到开发主线。

下午,后藤大地 (Daichi GOTO) 介绍了他的公司在日本推广 BSD 的情况,虽不明但觉厉。他提到了一些遇到的问题,例如 InfiniBand 性能等等,我想等段时间和他联系看看是不是有什么可以共享的资讯。

Cache IQ 介绍了他们的产品,这个产品是一个 NAS 加速系统,采用的是 FreeBSD (之前是专用系统,后用 FreeBSD 重写)。目前他们使用的是基于 FreeBSD 8.2-RELEASE + 从主线移植回去的特性,性能不错,全命中情形可以达到 32Gbps (4个万兆口)。针对他提到的移植问题,我们讨论了未来 Release Engineering 希望做的改进,一个可能的方案是做两套 HEAD 开发线,以兼顾需要长期维护的需求,不过这些方案还没有完全成形。

Garett Cooper 介绍了 ATF,Juniper 的人介绍了 bmake。对持续测试和集成而言,两个都是相当重要的工具。

最后 George 主持讨论了目前已有可以分享出来的资源、希望完成的工作和已经在做的工作,会议纪要应该会在稍后向 vendors@ 公布。

MeetBSD CA 2012流水账

| 1 Comment | No TrackBacks

昨天是会前的开发人员峰会,参加的人基本都是 src/ committer。我参加的讨论是 安装、虚拟化和存储。关于安装程序,目前基本的共识是 bsdinstall 需要重做(基本上 bsdinstall 是个 drive-by commit,作者现在态度是管杀不管埋,bug很多),而先前 Devin Teske 所做的 bsdconfig (目前未接入 world 联编,试了一下太 XX 复杂和强大了)和 DruidBSD 有很多东西可以添到安装程序中,而一票 committer 也已经为他撑腰,所以应该问题不会太大。

虚拟化方面,主要讨论了目前的现状。 Yahoo 在这方面做了一些工作,并将继续跟进。Sean Bruno 大致介绍了目前可用的驱动,NetApp 的开发人员着重介绍了他们的 BHyVe 的成果(普遍的意见是这些成果应尽快合并进 -CURRENT 主线)。此外, NetApp 和我们还讨论了关于微软 HyperV 支持的合并问题,目前微软的 HyperV 代码已经较为成熟,但合并还有一些非技术问题需要解决。

存储方面,讨论了目前遇到的一些问题。我同时处理了一个 mfi(4) 在操作超过 2TB 容量硬盘时的数据损坏问题,不过,这个修正已经来不及合并到 9.1-RELEASE 了,目前的想法是通过 Errata 方式先列出,等过一段时间以二进制更新的形式同代码一起发布。

今天是 MeetBSD CA 2012 的第一天。早上第一段是 NetBSD 的 David Maxwell 主持的讨论,实际的技术讨论不多。之后 Adrian Chadd 介绍了近期 FreeBSD 嵌入式方面的发展,目前 ARM 已经有了类似 x86 的通用内核(主要是 Warner Losh 的成果),并推荐大家尝试 Raspberry Pi。MIPS 方面,新加入的一批 committer 也有了相当多的成果,其中, zRouter 是 D-Link 的 Aleksandr Rybalko 主持的项目,目前已经支持多种无线路由器,等等。目前的问题是基本系统中仍有很多可以优化的空间,而高通 Atheros 也会继续支持相关的开发活动,包括 FreeBSD 的 wifi 支持。

Kris Moore 介绍了昨天讨论过的安装程序等的相关话题。下午, Sean Bruno 演示了使用 qemu 来进行内核开发的方法,除了 x86 之外, qemu 也可以模拟 ARM、MIPS 等硬件,除了硬件驱动之外,用 qemu 可以节省很多时间,此外,qemu 的许多设施也可以用来调试虚拟化所需的加速驱动。

Scott Long 这次又拿来了 Netflix 的 CDN 服务器。这是基于 BackBlaze 的机箱设计改良的 4U 服务器,64GB内存,36块硬盘(SATA),2-6块SSD,并配有2-4个万兆网口。采用的软件是 FreeBSD 9-STABLE、nginx、BIRD BGP服务等。Netflix 在运营过程中遇到和解决了 FreeBSD 中的一些可伸缩性的问题,目前已经可以做到单台服务器、2个万兆网口支持 12000 到 20000 个并发连接,跑到 18Gbps 的流量。

我厂的 Josh Paetzel 介绍了 FreeNAS 和 TrueNAS 产品;Michael Dexter 演示了 BHyVe,最后 Mark Linimon 介绍了最近一年 Ports Collection 的进展。

多年之前,老贾说过,对什么人都不能太好了,认识的,不认识的,都是这样。我觉得这方面我就是一直不觉悟。

最近有个人没事就在MSN上问我一堆问题,而这些问题完全是文档写得清清楚楚,或者稍微试一下就能知道答案的。我觉得我之前纯粹就是犯贱,照说,对这种问题应该直接假装看不见,本来咱也不认识,何必呢?

今天这哥们总算把我惹毛了,我这边改着patch,那边一条一条拼了命的发,当然,我的口气也不怎么客气,原文照登如下:

我擦,你丫不能自己查下文档么?要不付我点咨询费?有问题发到论坛去,别没事老跟im上问,我没义务支持私人的请求

嗯,是不太客气,于是,这哥们教训了我:

厚道点儿,你没亏吃

说到厚道嘛......只好先拉黑两天了,什么时候出来,看心情。另外:

  1. 我只在工作时间支持本公司客户提出的技术问题;我的私人时间优先解决我自己遇到的问题,然后是给社区无偿地做些事情,包括写代码和去论坛回答问题;
  2. 你提出问题的目的在于节省自己的时间,却在消耗我的时间;另一方面,你既然不愿意把问题发表在公开的论坛上,不愿意和公众分享这些知识,也就不会给社区带来什么贡献;
  3. 我对那种能节省你的时间,却不能给我自己社区带来好处的事情,不感兴趣。多说一句,对不起,就算您想给钱,我也没兴趣。

Monthly Archives

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.11