本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第2章,第2.6节,作者:【美】Steve Suehring(史蒂夫 苏哈林)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.6 私有网络服务VS公有网络服务
最容易因疏忽导致未经请求的入侵即是允许外部访问那些被设计为只用于LAN的本地服务。一些服务,如果仅仅在本地提供,绝不应该跨越您的本地局域网和互联网的界限。如果这样的服务在您的局域网外可用,那么有些服务会骚扰您的邻居,有些会提供您应该保密的信息,有些则代表着明显的安全漏洞。
一些最早期的网络服务,尤其是被设计用于本地的分享并且简化在受信任的环境里跨多个实验室的计算机间访问的r-*-based。后来的一些服务用于接入互联网,但它们被设计于一个互联网基本是由学者和研究者构成的延伸社区的时代。那时,互联网是相对开放、安全的地方。由于互联网成长为一个包括了普通大众访问的全球性的网络,它已发展成为一个完全不受信任的环境。
许多Linux网络服务被设计用于提供系统中的一些本地信息:关于用户的账户、哪个程序在运行哪个资源正被使用、系统状态、网络状态、通过网络连接的其他计算机的相似的信息。并不是所有的这些信息化服务本身代表了安全漏洞。并不是说某人可以用它们直接对您的系统获得非授权的访问。它们只是提供了您系统的信息以及用户账户,这些信息对某些在寻找已知漏洞的人来说十分有用。它们可能还提供了例如用户名、地址、电话号码等等,您绝对不希望轻易地被任何问询的人了解信息。
一些更危险的网络服务被设计用于提供局域网内对共享文件系统和设备的访问,例如网络打印机或传真机。
一些服务难于正确的配置,一些则难于安全的配置。整本书都致力于配置一些更复杂的Linux服务。特定的服务的配置则超出了本书的范围。
有些服务仅仅在家庭或小型办公室环境是没有意义的。一些则倾向于管理大型网络,提供互联网路由服务,提供大型数据库信息服务,支持双向的加密和认证,等等。
2.6.1 保护不安全的本地服务
最简单的保护您自己的方式就是不提供服务。但如果您需要这些本地服务中的一个呢?并不是所有的服务都能够在数据包过滤层被充分地保护。文件共享软件、即时通讯服务和基于UDP的RPC服务都是众所周知难以在数据包过滤层保障安全的。
一种保卫您的计算机的方式是不要在防火墙计算机上托管您不希望公众使用的网络服务。如果服务不可用,那么远程的客户端也就无法连接到它。让防火墙只做防火墙。
一个包过滤防火墙并不能提供绝对的安全。一些程序需要比数据包过滤层能提供的更高层的安全措施。一些程序则有太多问题,以至于不应冒险运行在防火墙计算机,甚至不安全的住宅主机上。
小型站点(例如在家庭站点)通常没有多余的计算机通过“在其他计算机上运行私有服务”来执行访问安全策略。这里必须做出些折中,尤其是所需的服务仅由Linux提供。然而,在局域网中的小型站点不应该在防火墙机器上运行文件共享或其他私有的LAN服务,例如Samba。这台计算机不应该有任何不必要的用户账户。不需要的系统软件应该从该系统中移除。此计算机除了安全的网关外不应该拥有任何其他功能。
2.6.2 选择运行的服务
当上面说到的都已做完时,您唯一可以决定的便是哪些服务是您需要或想要的。保障系统安全的第一步便是决定您打算在防火墙计算机上以及在防火墙后的私有网络中运行哪些服务和守护进程。每个服务都有它自己安全的考量。在选择运行于Linux下或其他操作系统下的服务时,一般的规则是“仅运行那些您了解和需要的网络服务”。了解一个网络服务,在运行它之前知道它做了什么、供谁使用十分重要——尤其是它运行在直接连接到互联网的计算机上。