7. 安全问题

在 Usenet 新闻服务器的背景下讨论安全问题似乎有些奇怪。传统上,Usenet 新闻一直是最开放和自由的网络服务之一。然而,随着互联网的指数级增长,所有服务都开始意识到潜在的威胁。互联网入侵者群体也获得了新的形象:许多互联网入侵尝试是由程序驱动的,并且利用了一系列“众所周知”的漏洞, 计算机安全和入侵社区已经识别并在其报告和建议中发布的漏洞。因此,“为什么有人会攻击我无害的 Usenet 服务器?”这个问题不再有效。如果它可以被攻击,它就会被攻击,仅仅是因为它的 IP 地址落在了被攻击的目标地址范围内,也许。

Usenet 新闻服务器的安全问题分为两类。首先是允许攻击者使您的服务器瘫痪或在其上运行其选择的代码的漏洞。其次是可能扭曲或破坏您的 Usenet 文章层次结构的漏洞,无论是通过垃圾邮件、未经请求的商业信息还是伪造的控制消息。第二类威胁是 Usenet 新闻特有的,需要 Usenet 特定的保护机制,其中一些机制需要利用 Usenet 管理员社区设计的防御机制。

7.1. 入侵威胁

在这里,我们讨论允许入侵者“获得对您的 Usenet 服务器的控制”或“使其瘫痪”的漏洞,这两种情况都可能令人 раздражать、尴尬,或者对您的业务或职业来说简直是灾难性的。

7.1.2. Usenet 软件中的漏洞

然后是服务器漏洞(如果有的话),这些漏洞是专门由 Usenet 新闻软件引起的。例如,如果入侵者有可能向您的服务器的 NNTP 服务器发出一些字节字符串,并使其执行入侵者选择的命令,那么此漏洞将属于此类。

任何接受来自客户端的文本字符串作为输入的服务器都容易受到缓冲区溢出类攻击,如果gets()C 库函数已在其代码中使用,而不是fgets()以及缓冲区大小限制。这是 1988 年莫里斯互联网蠕虫病毒使之闻名的漏洞,关于它的讨论可以在其他地方找到。(如果您有兴趣,请在 Google 上搜索。)据我们所知,INN NNTP 服务器和nntpd构成了 NNTP 参考实现的一部分,两者都没有已知的缓冲区溢出漏洞。此类漏洞在 NNTPd 或 INN 的情况下不太重要,因为这些守护进程不以root身份运行。事实上,如果它们以root身份运行,它们将开始导致底层 Usenet 软件发生故障。因此,即使一位勇敢的入侵者可以找到某种方法来获得对这些守护进程的控制权,她也只能以用户news的身份进入服务器,这意味着她可以破坏 Usenet 安装,但仅此而已。以root身份运行的守护进程,如果受到威胁,可能会允许入侵者控制操作系统本身。

UUCP 通常被认为是不安全的。我们相信,仔细配置 Taylor UUCP 可以堵住许多此类漏洞。UUCP over TCP 的一个漏洞是,用户名和密码以明文形式在 TCP 数据流中传输,这与 Telnet 或 FTP 非常相似。因此,如果安全是一个考虑因素,我们不建议以这种方式使用 UUCP over TCP。我们建议通过 SSH 隧道使用 UUCP,SSH 设置仅使用预装的公钥工作。这样,SSH 隧道设置就不需要用户名和密码,即使是故意的,密码也不会泄露。然后,UUCP 用户名和密码通过这个加密隧道传递,因此对于安全性来说是完全多余的;前面的 SSH 隧道提供了比 UUCP 用户名和密码更强大的连接身份验证。并且由于我们将 SSH 隧道设置为仅需要基于密钥的身份验证,因此它拒绝任何在使用用户名和密码设置隧道时尝试连接的尝试。

第三个可能的漏洞与处理传入 Usenet 文章的后端软件有关。可以想象,NNTP 服务器将接收传入的POST命令,接收一篇文章,并将其排队以在本地假脱机上进行处理;NNTP 服务器通常不对传入的帖子执行任何实时处理。定期处理传入假脱机(C-News 中的in.coming目录)的后处理软件将读取这篇文章,并以某种方式被迫运行入侵者选择的命令,无论是通过缓冲区溢出漏洞还是任何其他方式。

虽然这种可能性存在,但似乎 C-Newsnewsrun系列和 INN 都不容易受到此类尝试的影响。我们的评论基于可靠的证据,即这两个系统都在公共 Usenet 服务器的易受入侵的世界中存在了十多年。INN,这两个系统中较新的一个,于 2002 年 8 月 20 日完成了十年的生命历程。并且这两个软件系统的源代码都可以免费提供给所有人,包括入侵者。我们可以相当肯定的是,如果此类漏洞尚未被发现,那不是因为缺乏入侵尝试。

7.2. Usenet 服务特有的漏洞

Usenet 服务器管理员必须采取某些安全预防措施,以确保她的服务器不会被 раздражать 的垃圾邮件淹没,也不会被虚假的控制消息配置得乱七八糟。这些漏洞不允许入侵者在您的服务器上运行她的软件,但允许她搞乱您的服务器,导致您损失宝贵的周末(或一周)来整理混乱。

7.2.2. 虚假的控制消息

控制消息,在前面的第 2.4 节>中详细讨论,指示 Usenet 服务器采取某些操作,例如删除消息或创建新闻组。如果此功能“向公众开放”,那么任何稍有头脑的人都可以伪造控制消息来创建二十个新的新闻组,然后将数千篇文章发布到这些组中。在 90 年代中期,我们遭受了一场超过 2,000 条(两千条)newgroup控制消息的风暴袭击,这迅速教会了我们不受保护的控制消息的危险以及针对它们的保护措施。

针对此漏洞的标准保护机制是pgpverify,可以通过搜索pgpverify(程序)或pgpcontrol(整个软件包)从多个网站和 FTP 镜像站点下载。pgpverify.

pgpverify与公共密钥加密技术一起工作,很像 NoCeM,并且各个 Usenet 组层次结构的官方维护者都使用其私钥对控制消息进行签名。您的服务器将携带他们的公钥,并且pgpverify将检查每个控制消息上的签名,以确保它来自层次结构的官方维护者。然后,它将对合法的控制消息采取行动,并丢弃虚假的控制消息。

在当今 nuisance 泛滥的 Usenet 环境中,任何接收“公共”层次结构和控制消息馈送的理智的 Usenet 服务器管理员甚至都不会梦想在没有pgpverify保护的情况下运行她的服务器。