我有一个运行 32 位 Ubuntu 9.10(i686 2.6.31-20-通用内核)的 AMD Athlon XP-2500+ 主机(Shuttle MN31 主板,nForce 2 IGP + MCP-T 芯片组)。不幸的是,它的时钟漂移似乎非常糟糕(它每分钟提前接近一秒),以至于 ntpd 无法使机器保持同步。
我该如何处理才能让 ntpd 正常工作?
我将我的主目录的大部分点文件都置于修订控制之下,这样我就可以轻松地在我使用的五台左右台式机和数十台服务器之间移动更改。不幸的是,我的~/.gconf
目录在这方面有点痛苦,因为 gconfd 似乎真的很喜欢进行任意空白更改,更糟糕的是,更新mtime="..."
它没有更改的条目的属性。
有没有人对处理这个问题的好方法有任何想法?当值没有改变时,我宁愿永远不必提交空格更改或时间更改,这样我就可以轻松地跟踪我的差异随着时间的推移。
我有一个来自 OpenSSHknown_hosts
文件的条目;我想为此生成一个 SSHFP 资源记录。我可以ssh-keygen
毫无困难地使用它来生成指纹:
$ ssh-keygen -f foo_known_host -l
1040 09:a0:5c:5f:43:fb:e5:25:d8:0c:d8:dc:d7:7a:c4:62 foo.example.com. (RSA)
但它似乎不喜欢 DNS 指纹记录:
$ ssh-keygen -f foo_known_host -r foo
failed to read v2 public key from foo_known_host.
那么我该怎么做呢?
注意:如果您是通过询问搜索引擎如何从远程主机生成 SSHFP 记录(而不是上述指纹的本地副本)来到这里的,那么可以通过ssh-keyscan -D machine.name –
.
我正在设置一些新的 Ubuntu 服务器,我想保护它们上的数据以防被盗。威胁模型是想要硬件的攻击者,或者更确切地说是想要数据的天真的攻击者。
请注意本节。
威胁模型不包括需要数据的聪明攻击者;我认为他们会执行以下一项或多项操作:
将 UPS 拼接到电源线中,以保持机器连续运行。
在计算机和网络终端点之间插入一对以太网网桥,该网桥将通过无线网络桥接通信,该无线网络的范围足以使主机保持网络连接。
打开盒子并使用内存总线上的探针来抓取有趣的东西。
使用 TEMPEST 设备来探测主机正在做什么。
使用法律手段(例如法院命令)强制我披露数据
等等等等。
所以我想要的是在磁盘上的加密分区上拥有一些或理想情况下的全部数据,以及在某种外部媒体上访问它所必需的密钥材料。我能想到的存储密钥材料的两种方法是:
将其存储在可通过网络访问的远程主机上,并配置足够的网络以在引导过程中检索它。仅允许检索分配给受保护主机的 IP 地址(因此,如果在另一个网络连接上启动,则不允许访问加密数据),并且如果发现机器被盗,管理员可能会禁用它。
将其存储在 USB 存储设备上,该设备以某种方式比主机本身更难以窃取。将其放置在远离主机的位置,例如连接到房间另一个角落甚至另一个房间的 5 米 USB 电缆的末端,可能会显着降低攻击者获取它的机会。以某种方式保护它,例如将其链接到固定不动的东西上,甚至将其放入保险箱中,效果会更好。
那么我有哪些设置选项?正如我之前所说,我希望对所有内容(可能除了一个不包含 /etc 的小型引导分区)进行加密,这样我就不必担心我将文件放在哪里,或者它们在哪里重新意外着陆。
我们正在运行 Ubuntu 9.04,如果它有什么不同的话。
我们有几十个 Ubuntu 系统(从 8.04 到 9.40,台式机和服务器都只有串行控制台访问权限,我们希望在这些系统上运行修补版本的 glibc。
特别是,这是为了修复glibc 的解析器无法允许 OpenSSH 的 ssh 客户端等程序设置 AD 位;我们想做的事情的一般要点可在博客文章How to get OpenSSH to see DNSSEC AD flags on SSHFP lookups with glibc中找到。我们正在考虑进行更广泛的修改,将 AD 位支持添加到头文件中,以便我们可以编译标准 ssh 二进制文件,尽管这也需要替换 ssh 客户端。
所以我的问题是,进行更改、保持与 Ubuntu 的定期更新同步并将其分发到我们所有机器的最简单方法是什么?
我猜最好的办法可能是维护我们自己的 Ubuntu 源包副本,每次更新都更新我们的,适当地构建新版本,并通过设置一个位于包服务器列表中的服务器来分发它们每台机器。但是我对如何执行此操作的详细信息知之甚少,无法知道这是否是最佳选择。如果是,我想要一些关于设置细节的指针。
有些人可能想知道我为什么要这样做。有两个原因:
这个特性不会很快被添加到 glibc 中。它已经失踪了五年多,没有人对此表示任何关注;相反,他们说他们觉得添加该功能太危险了,因为更改的“高安全影响”,或者类似的事情。
我们有一项严格的政策,您不得通过 ssh 连接到未验证密钥的公司机器(即,我们使用“StrictHostKeyChecking yes”ssh 选项)。
我想避免在这里讨论上述任何一点。如果您想了解有关 glibc 维护者政策的更多信息,或者如果您不了解当您不遵循我们的安全政策时您所面临的攻击,请发布一个单独的问题,并通过电子邮件发送给我它的网址,我将从这里链接到它。
计算机安全的基本原则之一是永远不要运行您不需要的任何东西。
pgrep
今天,当我注意到我的 Ubuntu 9.04(桌面)机器正在运行一个 git 服务器守护进程时,我正在ping 一个进程。在快速发誓之后,我发现该git-daemon-run
软件包已(可能是无意的)安装,并且删除它摆脱了该过程(并确保它以后不会重新启动)。
但在其他情况下,我希望安装服务器包,但不希望服务器守护程序运行。例如,我lighttpd
用于内部测试(它由某些应用程序的特定测试脚本启动,并且仅在这些配置中侦听 localhost),但我不希望它通过一些随机配置文件侦听外部连接。(如果我想运行一个监听外部连接,我会自己配置和运行它。)
我真的不喜欢在暴露于 Internet 的机器上运行各种我不需要的随机服务器,因为谁知道它们会打开哪些安全漏洞。而且我更喜欢不必为防火墙而烦恼,因为这是另一个可能导致安全漏洞的错误和错误配置的潜在来源。除非管理员特别要求,否则将 Unix 机器配置为不启动任何服务器并不难;NetBSD(我认为也是 OpenBSD)默认采用这种方式。
如何配置我的 Ubuntu 系统从不启动任何类型的服务器守护程序,除非我明确告诉它我希望它启动?
(在我的书中,要求安装一个软件包并不是要求启动一个服务器。如果它应该是,这是一个糟糕的用户界面,因为许多软件包安装甚至没有服务器要启动,所以它使在没有意识到您已经这样做的情况下无意中启动服务器太容易了。)
编辑:为了清楚起见,问题不在于我希望能够停止现有服务器。问题是我不希望在没有明确请求的情况下启动新服务器。这意味着我应该能够执行任何系统管理员任务,例如安装软件包,并且确信没有服务器已启动。大多数回应都没有解决这一点。
最近买了一块SuperMicro X8DTU-F主板,内置BMC,基本运行IPMI系统。它原来是一个运行在 ARM 处理器上的小型 Linux 系统。
不幸的是,它运行了大量的软件,其中大部分是我不需要的,而且我没有能力将它放在防火墙后面。但是,我确实想要 IPMI 功能。使用过其中一种的人是否对如何保护该东西有一些具体的建议?它从本质上是一个 ROM 文件系统启动,甚至似乎没有任何挂钩可以关闭它运行的任何各种服务器......
我还对如何验证可用于通过所有各种服务访问系统的名称和密码列表感兴趣。默认值为ADMIN
/ ADMIN
,但 /conf 或 /etc 中的文件都没有“ADMIN”,这让我很担心。有文件/conf/shadow
,/conf/webshadow
里面有神秘的“测试”ID,这也让我感觉不太舒服。