我们有几个Ubuntu系统(从8.04到9.40不等),台式机和服务器都只有串行控制台访问,我们希望运行补丁版本的glibc。
特别是,这是为了解决glibc的parsing器无法允许来自OpenSSH的ssh客户端程序设置AD位的问题 ; 我们想做什么的一般要点可以在博客文章中find。 如何让OpenSSH在使用glibc的SSHFP查找中查看DNSSEC AD标志 。 我们正在考虑做一个稍微更广泛的修改,在头文件中添加AD位支持,以便我们可以编译一个标准的ssh二进制文件,尽pipe这也涉及replacessh客户端。
所以我的问题是,做出这个改变的最简单的方法是什么,保持它与Ubuntu的定期更新同步,并将其分发到我们所有的机器?
我猜测最好的事情可能是维护我们自己的Ubuntu源代码包,每次更新都更新我们的版本,根据需要build立新版本,并通过设置一个服务器来分发它们每台机器。 但我不知道如何做到这一点的细节知道这是最好的select。 如果是这样,我想要一些指向设置这个细节的指针。
有些人可能会想知道为什么我想这样做。 有两个原因:
这个function不会很快添加到glibc中。 现在已经失踪了五年多了,没有人对此表示任何担忧。 相反,他们表示,他们认为,由于变化的“高度安全影响”,或者这样的事情,添加该function太危险。
我们有一个严格的政策,你可能不能通过SSH连接公钥机器的密钥没有validation(即,我们使用“StrictHostKeyChecking是”ssh选项)。
我想避免在这里讨论上述任何一点。 如果您想了解更多关于glibc维护者的政策,或者如果您不了解在您不遵守我们的安全政策时您打开的攻击,请发表一个单独的问题,通过电子邮件发送给我它的URL,我会从这里链接到它。
你想完全按照你的build议,并保持修补程序包。 设置回购是非常简单的,我只是使用apt-ftparchive来编写Packages文件。 有一个procmail规则来观看ubuntu-security-announce列表,并警告你感兴趣的任何安全更新。 如果你在找乐子之前从来没有build立过软件包,但是如果你能够阅读文档,这并不是特别困难。
在你的内部服务器上build立一个自动储存库 ,并与Ubuntu的版本同步。 确保你的客户端都没有从ubuntu添加“build议更新”版本库,并自己注册(作为修补程序的维护者),这样你将能够领先于实际的更新并提供高级版本。
将该版本命名为子更新,因此将会是“over”ubuntu的版本,例如,当前版本是:
$ apt-cache policy libc6 libc6: Installed: 2.9-4ubuntu6
假设你的组织被称为例子,它应该是2.9-4ubuntu6example1 。 你甚至可以在PGP上签名你的档案,为了额外的安全。
没有必要使用SSH,你可以使用PackageKit + PolicyKit让用户更新它,而不给它们root权限(假设你是严格的)。
作为一个便笺,我敢打赌,补丁不被接受的原因是因为Ulrich Drepper,他拒绝几乎所有“他不信任”的人的补丁。 很快,Debian就会切换到eglibc,后者有更友好的开发人员考虑添加任何补丁。