安全似乎落后于Docker阵营在其他方面的发展步伐。虽然越来越多的企业在数据中心使用Docker,但管理员们用来保护容器的技术却完全是慢慢站稳脚跟。在许多情况下,正是当初让Docker大受欢迎的功能特性恰恰也暴露了安全漏洞。

Docker网站称赞其容器是即刻奏效的解决方案

什么是没有隔离的内核?

Docker依赖Linux内核的功能:建立相互隔离的环境(应用程序在里面运行)。这些容器很精简,因为它们共享同一内核,却在不同的运行时环境中执行,这归功于控制组cgroup和命名空间,它们定义了容器可以使用哪些资源。与此同时,容器本身只能看到某些进程和网络功能。

虽然攻击者难以从一个被劫持的虚拟机与主机的内核进行交互,但容器隔离并不提供同样的防御。除了/sys和/proc外,攻击者还照样可以进入内核的关键子系统,比如SELinux和控制组,这意味着攻击者有可能避开主机的安全功能特性。与此同时,容器使用与主机系统同样的用户命名空间。换句话说,如果进程以根权限在容器中运行,它与内核或挂载的文件系统交互时,保留这些权限。因而,管理员还是别以根权限在容器中运行软件为妙;实际上,很少需要这样。

风险:Docker的守护进程

然而,Docker守护进程需要根权限。它管理主机上的容器,需要与提供隔离环境的内核进行对话。与守护进程进行交互的用户因而被授予了访问系统的权限。如果主机托管服务提供商通过Web界面将容器作为一个自助服务选项来提供,这种情形会来得尤其严重。

虽然使用docker群组是个办法,但不太可能改善安全,因为群组成员可以构建容器;而在容器中,首先可以运行根外壳,其次可以挂载主机的根文件系统。这里的唯一办法就是,严格监管对Docker服务的访问,避免不需要的权限升级。

此外,Docker的守护进程可以通过HTTP(S),借助REST API进行联系。如果你使用这项功能,就需要限制只由可信赖网络才可以访问API,或者通过SSL客户端证书或之类的机制来限制访问。

对策

新版本的Docker随带减小上述攻击场景带来的影响的功能特性。Docker以只读方式挂载/sys文件系统和/proc中的重要文件。容器无法写入到它们,因而防止容器中的权限进程操纵主机系统。

内核将根权限细分成了几项功能,然后将这些功能逐个分配给了进程。默认情况下,Docker阻止重要功能,防止容器中的权限进程为非作歹。这些功能包括网络配置、装入内核模块的功能或者访问音频子系统。如果某个特殊的应用程序需要被阻止的功能,Docker允许这些功能供某个容器使用。

SELinux局限性

SELinux是一种安全框架,它给每个文件和每个进程分配了多部分标签multipart label。策略定义了哪个进程标签可以访问哪个文件标签。Docker支持两个变种:类型强制type enforcement和多类别安全(MCS)。

类型强制限制了容器对主机文件系统的访问。所有容器进程都以同一种类型来运行,这样就可以访问容器中的文件和许多主机系统文件,但是又可以防止访问主机上的大多数文件夹(即/var、/root和/home)。

如果只使用类型强制,容器就能够轻松访问其他容器中的数据。归功于MCS,容器启动时,SELinux为容器分配了随机的MCS标签;Docker守护进程用这个标签标记容器中的所有文件,而内核可防止使用不同MCS标签的进程访问容器中的文件。

在许多企业,SELinux已被认为是一项不需要的功能特性,也是管理员们喜欢禁用的一项特性。然而,Docker容器的安全依赖安全虚拟化sVirt之类的功能特性。在几乎没有其他应用程序帮助的情况下,单单sVirt就足以防止来自其他容器的用户读取你的文件。

未来

就未来而言,Docker开发人员在计划增强容器的安全性和隔离性。三项功能特性会助一臂之力,包括用户命名空间、Seccomp,以及基于角色的访问控制(RBAC),加强对Docker守护进程的访问。

用户命名空间获得了优先权。Docker将来自容器的用户ID与其他主机的ID对应起来。其想法是大大限制攻击属于根目录的文件的能力。

由于所有容器都与同一个内核对话,内核功能方面的一个错误对主机和容器之间的边界以及对容器本身之间的边界来说都是致命的。来自谷歌的Seccomp可防止进程对特定系统调用的访问。虽然进程使用系统调用来访问内核,但在600个可用调用中大多数很少用到。要是没有这些调用,有望减小潜在的攻击面。Daniel Walsh在红帽公司从事容器安全工作。他认为,开发人员有望将可调用系统调用的数量最多减少50%。

此外,开发人员在期望完善对Docker服务的访问,补充验证选项。这么做意味着,并没有根授权以访问主机的用户可以使用这项服务。如果开发人员另外引入RBAC,Docker管理员就能为用户分配不同的角色,因而为他们提供与守护进程进行交互的受限制权限。在这些方案的帮助下,应该可以在未来进一步限制对容器或功能的访问。

结束语

Docker开发人员已经在许多方面积极响应,加强容器的安全,他们在继续添加新的功能特性,保持这个势头。最近为版本1.8中的Docker映像推出了一种验证系统,那就是内容信任Content Trust。此外,开放容器计划Open Container Initiative正考虑将更多的精力投入到安全方面上。

未来仍需要做大量工作。比如说,需要定义容器管理方面可持续的最佳实践,以促进容器在企业得到更广泛的使用。

这是一个被问及了一次一次一次的问题。

我就是一个会写代码的产品经理。我曾作为不同的角色有大约10年的专业编程经验,甚至还写过基本技术书籍和做过一些演讲。大约5年前,我转向了做软件产品管理,这使得我可以只在晚上和周末才写代码(只是因为兴趣)。

以我的浅见,如果你有专业的软件编程经验的话,这对你做产品经理觉得是一个很大的加分项。如果你缺乏这些经验,可以每周花费几小时来学习一下。

理解开发人员

产品管理的一部分,是做一个优秀的沟通和谈判代表。有过开发经验的价值是,你可以更好的与你正在一起工作的开发人员用他们的语言沟通。

如果你自己曾经开发过软件:

  • 你会知道需求变更的感觉以及与团队中其他固执己见的人的代码有冲突时的压力
  • 你会知道在一个严格的截至期限下,使用一个设计不合理的第三方 API 的感受
  • 你会明白回答“需要多长时间”会牵涉到多少方面
  • 你会被 KISSYAGNI 以及 Conway’s Law所吸引
  • 你会花费几天甚至几周时间解决Heisenbugs,每次你以为你已经解决了问题,之后你就会收到一份“不起作用”的报告,因为一些特殊的浏览器、操作系统、设备或者分辨率大小
  • 这意味着你已经分心了足够长的时间,你应该把干扰降到最低
  • 你会感受到代码重构带来的恐惧

作为一个产品经理,了解这些可以使你把自己放在一个更好的位置与软件开发人员工作、了解他们正在处理的挑战、更好的达到你期望的目标。

当然,不要参与讨论代码设计、架构以及使用何种语言,这从来都不是你的工作职责,如果你真这么做了,结果可能是弊大于利的。

如果不会写代码会怎样?

缺乏写代码的经验就意味着不能成为一个合格的产品经理吗?

在过去的大约15年时间内,我至少与4位不懂代码,但却非常优秀的产品经理一起工作过,这意味着不懂代码也可以做好产品经理。

但更多的情况下,我看到的是硬币的另一面,产品经理经常与开发人员争吵,因为他们缺乏最基本的软件开发常识。当然,他们的这种争吵并没有什么帮助。相反,这意味着他们的项目经常不能实现。

根据我工作过的产品经理来看,答案是很明确的:这要看情况。但其中有三大要素是必须的:兴趣(关注、倾听)、谦卑(承认无知、提出问题),并愿意学习(例如,你真正阅读的人月神话)。

12月7日,注册于天津开发区的恒拓开源(天津)信息科技股份有限公司(以下简称恒拓开源)携旗下运营的开源中国社区正式在新三板挂牌,股票代码为 834415。恒拓开源成为国内首家以开源技术为核心的公众公司。

由于开源中国社区9月正式进入的软件开发众包领域,推出了开源中国众包业务,随着恒拓开源的挂牌,新三板也迎来了首家软件众包平台。

用众包“革自己的命”

近几年,随着各行各业互联网化步伐的加快,软件开发的需求也在迅速增涨。工信部数据显示,2015年1-10月,我国软件业务收入34732亿元,同比增长16.4%。但和整个软件行业巨大的市场需求相比,传统软件外包发展却无比平缓,市场规模增长量仅达到3.6%,远低于去年同期的12.9个百分点。

究其原因,传统的软件外包行业中开发成本高、合同流程繁琐、项目周期长等门槛,让许多中小型企业团队都望而却步。

作为国内首家以开源技术做企业服务的公司,恒拓开源自2007年创立起,就一直为企业提供软件开发外包和开源技术咨询。但在企业成长的过程中,恒拓开源洞悉到互联网发展的新规律就是“去中心化、去中介化”,传统软件外包以信息的不对等、不透明作为盈利基础的商业模式必将遭遇发展瓶颈。

于是,恒拓开源开始尝试转型,“革自己的命”,将“共享经济”的模式应用在软件开发领域,用众包代替传统的外包,撬动软件开发市场。

BAT齐聚众包平台,程序员17天赚8万

作为中国互联网发展三驾马车的BAT,坐拥着一批最优秀最顶级的程序员团体,依然有“需求无法满足”的时候。在开源中国众包平台上线试运行一个多月,阿里云成为了首批用户,以悬赏的方式投放了近百万元的众包项目。随后,腾讯Bugly也与开源中国众包达成战略合作关系,通过悬赏发布了近千个项目,截止发稿时,记者了解到,百度也表达了初步的合作意向,将为众包平台提供进一步演示支持。

除了帮助软件开发需求方解决燃眉之急,开源中国众包更大的愿景是希望帮助程序员改变“工作累挣钱少”的生存现状。通过让程序员便捷地接私活,挣外快,开发者们的智慧价值达到最大化。这并不是空中楼阁,水月镜花,近日,在开源中国众包平台上,一名程序员利用闲暇时间,在17天里完成阿里云的悬赏任务,税后收入高达8万元,连阿里云的项目负责人都感叹,这可能是他见过的时薪最高的工程师了。

据了解,开源中国上线至今两个月时间,发布了近90个悬赏,项目总额超过300万元,平均报名时间只花了3.8天,平均项目结项时间11.5天,并让越来越多的程序员体会到“私活赚万金金”的甜蜜滋味。

软件开发众包的“三重门”

在国内众包理念兴起的时间不长,软件开发领域的众包更是新兴事物,一些普通的企业团队、开发者还未培养用众包做开发,通过众包接私活的意识。此外,不同于淘宝、京东等实体交易的平台,软件开发的众包过程更加复杂,标准难以统一,更容易发生纠纷。国内软件众包平台若想取得长足发展,必要跨越这“三重门”:

  • 平台上是否有足够多靠谱的项目
  • 是否有足够多的开发者
  • 功能是否完善、技术是否强的第三方平台

在恒拓开源创始人、董事长,开源中国CEO马越看来,开源中国众包平台无疑是同时具备了这三大要素。恒拓开源8年企业级服务积累的大量项目资源,可以作为种子项目放置到平台上,确保靠谱项目的持续发包,使平台充满活力。

此外,与国内其他平台相比,开源中国众包依托开源中国社区,拥有近200万开发者注册会员的资源池,人才涵盖了多种编程语言,不同技术层面,可以保证平台接包方的人力供给。

为了解决软件众包开发标准难量化,结果难评估的问题,开源中国独创性地将云技术和众包结合在一起,打造一个名为“码云”的“云开发”平台,集成了软件开发过程中必备的环节和功能。众包要平台上进行交易的所有项目开发过程都被要求在“码云”上进行,发包商可以利用“码云”上的服务,对开发过程中每一个关键节点进行把控和监管,确保开发质量。

有了这些人力、项目、过程把控的多重保证,恒拓开源推出的开源中国软件开发众包,才真正做到了以共享经济的打破了森严的开发技术壁垒,解决了传统软件开发成本高、周期长等问题,并帮助创业团队在初期钱少、缺乏CTO、没有开发团队的情况下实现软件项目开发。

智慧交易领域的阿里巴巴

随着“互联网+”概念的提出以及“大众创业万众创新”的热潮席卷,新三板、互联网创业双双迎来了异常火爆的一年。有数据显示,截至11月10日,新三板当前挂牌公司总量为4034家,其中有2469家为今年刚在新三板挂牌。而按照行业分类来看,信息技术类挂牌企业近千家,占据了新三板约25%的席位。当越来越多的互联网企业跻身新三板时,资本市场呼唤更具特色及发展前景的新鲜血液,希望培育能与中国经济发展趋势相呼应的本土互联网公司。

业内人士分析认为,恒拓开源准入新三板,成为落实以众创、众包、众扶、众筹等新模式加快推动大众创业万众创新系列重要政策的行业引领者及新标杆,是金融资本、行业资源、互联网创业相结合的现象及事件,具极大的示范效应。

开源中国众包平台将在12月12日上线“找人”和“整包”两类模式,去满足更多的开发需求。在谈及未来众包平台的商业发展模式时,马越表示:“平台以后会收取接包方10%的平台管理费,并为有需求的发包方提供增值服务。五年内,开源中国众包要力争成为智慧交易领域的阿里巴巴”。他认为,开源中国仍需两年的所谓的破冰期。2016年,开源中国平台的交易额将达到1亿元,2017年达到4亿元,2018年达到20亿元,2019年达到100亿元。

微软官方博客宣布,将要开源 Microsof Edge 浏览器使用的 JavaScript 引擎 Chakra,开源的版本称之为 ChakraCore。代码将于下一月发布到GitHub上。

微软称它包含了 Chakra 所有的关键组件——解析器、解释器、JIT(just-in-time)编译器、垃圾收集器和API。ChakraCore将是一个功能完整的、独立的 JavaScript 虚拟机,可嵌入到衍生产品中,驱动需要脚本功能的产品如 NoSQL 数据库、生产力工具和游戏引擎。

伴随着 JavaScript 库和框架使用的不断普及,微软一直在努力优化 Chakra 引擎,并且它现在相信,若想让它变得更加通用,那么开源则是最佳途径。虽然一开始 ChakraCore 仅针对 Windows 开发,不过微软打算未来将其扩展至其他平台。

作为目前最好的GPU破解HASH的软件,hashcat号称世界最快,“支持每秒猜测最多80亿个密码”。北京时间12月5日凌晨,hashcat的作者“atom”宣布将工具开源。

Hashcat是一个基于GPU的Hash密码破解工具。在Hashcat诞生之前已经有一些近乎完美的密码破解工具,例如 “PasswordsPro”、“John The Ripper”,2009年出世的Hashcat则实现了对于现代CPU多内核的利用。

Hashcat在操作系统上支持Windows 7/8/10、Apple OS X 以及GNU/Linux,通过七种独特破解模式,适用于超过100种极为优化的哈希算法。

作者解释开源理由

atom在博客中如是说道:

“长期以来我都在考虑这重要的一步——对于这个项目来说,将Hashcat和oclHashcat开源意义非常重大。 作为开源软件的拥护者,因此何时将软件开源曾是需要面对的一个难题。”

atom简单陈述了开源的原因有以下几点:

  • 大多数hashcat或oclHashcat的使用者是渗透测试人员或者取证分析人员。他们通常对于GPU内核有特殊的需求,开源无疑对他们的工作产生积极的作用。
  • 通常软件在开源之后,集成外部库会变得更加轻松。
  • 目前暂时没有原生支持OSX系统,主要原因是Apple不支持对内核代码的“离线”编译。而开源项目中,你可以“及时”使用Apple OpenCL Runtime进行编译。这也就意味着oclHashhcat将首次支持OSX系统。

最终确定将工具开源的理由则是bitsliced DES GPU内核的实现。为了达到最大的效率与性能表现,salt必须在编译时与内核一同嵌入。而salt本身取决于输入时给定的hash。这个hash值显然只能于运行时出现,而非编译时。这就要求内核在运行时进行编译,而只有在开源代码中才能实现这一点。

在博客结尾,atom俏皮地说:

“现在你们是不是以为我要离开这个项目了?

“我不会这么做的!我会留在这里,和过去一样,继续支持这个项目!”

开源地址:https://github.com/hashcat/

工具下载:https://hashcat.net/hashcat/