TCPWrappers 还在使用吗?

TCPWrappers 还在使用吗?

据我目前了解,tcpwrappers 可以通过 inetd 或 xinetd 使用。最近我得知,inetd/xinetd 是早期为了更有效地利用硬件而出现的,因此现在很少见到。

我的问题是,tcpwrappers 现在是否也被认为是一种过时的技术。如果是,它们的替代品是什么?

答案1

tcpwrappers 最初是作为一个独立程序实现的,它将检查 hosts.allow 和 hosts.deny。如果连接通过,则将启动所需的守护进程来运行单个请求。inetd 的配置将配置为使用守护进程的程序和选项作为参数来运行 tcpd 包装器。

xinted 是扩展的 inetd。它比旧的 inetd 具有更多的配置选项。内置了一些简单的服务,如 echo、chargen、time、daytime 和 discard。许多经常连续运行的守护进程都可以从 xinetd 运行。这通常在服务很少使用时完成。这限制了需要运行的进程数,但代价是启动时间变慢。可以以这种方式运行的服务包括邮件服务器、vnc、apache 和许多其他守护进程。

inetd 执行的任务与 xinetd 相同,但每个服务只需一行简单的配置。这限制了它的配置能力,但简化了自动配置。可以自动配置 inetd 的安装程序可能无法对 xinetd 执行相同的操作。现在许多站点选择使用 xinetd 而不是 inetd。

包装器代码已制成库,并经常与始终运行的守护进程链接。这些守护进程将使用该库在使用传入连接之前对其进行检查。这允许基于名称的限制,而防火墙无法可靠地实现这些限制。这包括许多基于 DNS 的检查。通常使用该库构建的守护进程之一是 xinetd。

答案2

在某些端口上持续运行的服务。inetd 等服务节省内存的原因是它们不需要守护进程一直运行,只需按需运行即可。如今,按需守护进程非常少见。

Apache、MySQL 和 Tomcat 等程序都保持运行并监听其指定端口。有些程序甚至会启动新进程来处理每个连接,而其他程序则只在同一个进程中处理。由于不必在每次启动连接时加载一堆代码,因此建立特定连接的成本比使用 inetd 类进程要小。

答案3

您对 TCPwrappers 和 [x]inetd 的看法都是错误的。

tcpwrappers 可以通过 inetd 或 xinetd 使用

是的 - 但是您可以将它们与任何网络守护进程一起使用 - 这只是在构建应用程序时使用不同的库的问题。

inetd/xinetd 的出现是为了更有效地利用硬件,因此现在很少见到

不,事实并非如此 - 与独立守护进程相比,通过 [x]inetd 运行服务一直非常低效 - 它们的区别在于代码更简单,并且只有在建立连接时才会映射到内存中。

今天情况依然如此 - 如果您运行的是专用网络服务器,那么如果每天只有一个用户连接几次来收集由 cron 作业生成的邮件,那么保持守护进程运行(例如 POP 消息)就没有什么意义了。或者,当您需要在无头机器上进行远程 GUI 访问时,启动 VNC 服务器。

tcpwrappers 的一个优点是,与基于内核的防火墙相比,它们使编写复杂的响应脚本变得非常简单。

答案4

本质上,TCP-Wrappers 为通过“超级服务器”调用的服务所做的工作可以被状态防火墙取代(对于其他进程和“超级服务器”),在大多数现代 Linux 安装的情况下,通过 iptables/netfilter 取代(对于基本功能,无状态防火墙规则也可以)。

相关内容