IPCop-防火墙配置指南-全-

IPCop 防火墙配置指南(全)

原文:zh.annas-archive.org/md5/E3FAB64B313E2DFA7B781CAB942544AE

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

IPCop 是一个基于 Linux 的有状态防火墙发行版,位于您的互联网连接和网络之间,并使用您制定的一组规则来指导流量。它提供了大多数您期望现代防火墙具有的功能,最重要的是它以高度自动化和简化的方式为您设置了所有这些功能。

本书是一个易于阅读的指南,介绍了 IPCop 在网络中的各种不同角色。本书以非常友好的方式编写,使这个复杂的主题易于阅读和愉快。它首先涵盖了基本的 IPCop 概念,然后介绍了基本的 IPCop 配置,然后涵盖了 IPCop 的高级用法。本书适用于有经验和新手 IPCop 用户。

本书内容

第一章简要介绍了一些防火墙和网络概念。该章介绍了几种常见网络设备的角色,并解释了防火墙如何适应其中。

第二章介绍了 IPCop 软件包本身,讨论了 IPCop 的红/橙/蓝/绿接口如何适应网络拓扑。然后涵盖了 IPCop 在其他常见角色中的配置,比如作为 web 代理、DHCP、DNS、时间和 VPN 服务器。

第三章涵盖了三个示例场景,我们将学习如何部署 IPCop,以及 IPCop 接口如何相互连接以及与整个网络的连接。

第四章涵盖了安装 IPCop。它概述了运行 IPCop 所需的系统配置,并解释了使 IPCop 运行所需的配置。

第五章解释了如何使用 IPCop 提供的各种工具来管理、操作、排除故障和监控我们的 IPCop 防火墙。

第六章从解释我们系统中 IDS 的需求开始,然后继续解释如何在 IPCop 中使用 SNORT IDS。

第七章介绍了 VPN 概念,并解释了如何为系统设置 IPSec VPN 配置。特别关注配置蓝区——一个增强无线网络安全性的安全无线网络,即使已经使用 WEP 或 WPA。

第八章演示了如何使用 IPCop 管理带宽,利用流量整形技术和缓存管理。该章还涵盖了 Squid 网页代理和缓存系统的配置。

第九章着重介绍了可用于配置 IPCop 以满足我们需求的各种插件。我们将了解如何安装插件,然后更多地了解像 SquidGuard、Enhanced Filtering、Blue Access、LogSend 和 CopFilter 这样的常见插件。

第十章涵盖了 IPCop 的安全风险,补丁管理以及一些安全和审计工具和测试。

第十一章概述了 IPCop 用户在邮件列表和 IRC 形式上的支持。

本书所需内容

IPCop 在专用盒上运行,并且完全接管硬盘,因此不要使用有价值数据的硬盘。它可以在旧的或“过时”的硬件上运行,比如 386 处理器,32Mb 的 RAM 和 300Mb 硬盘。但是,如果您计划使用 IPCop 的一些功能,比如缓存网页代理或入侵检测日志,您将需要更多的 RAM,更多的磁盘空间和更快的处理器。

至少需要一个网络接口卡 NIC 来连接绿色接口。如果您将通过电缆调制解调器连接到互联网,您将需要两个网卡。

一旦安装,您无需连接显示器或键盘到 IPCop 盒子,因为它作为无头服务器运行,并通过网络用 Web 浏览器进行管理。

约定

在本书中,您将找到一些文本样式,用于区分不同类型的信息。以下是一些这些样式的示例,以及它们的含义解释。

代码有三种样式。文本中的代码单词显示如下:"在 Windows 中,ipconfig命令还允许用户释放和更新 DHCP 信息。"

代码块将设置如下:

james@horus: ~ $ sudo nmap 10.10.2.32 -T Insane -O
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-02 21:36 BST
Interesting ports on 10.10.2.32:
(The 1662 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 00:30:AB:19:23:A9 (Delta Networks)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.18 - 2.6.7
Uptime 0.034 days (since Tue May 2 20:47:15 2006)
Nmap finished: 1 IP address (1 host up) scanned in 8.364 seconds

任何命令行输入和输出都将以以下方式显示:

# mv /addons /addons.bak
# tar xzvf /addons-2.3-CLI-b2.tar.gz -C /
# cd /addons
# ./addoncfg -u
# ./addoncfg -i 

新术语重要单词以粗体字体引入。您在屏幕上看到的单词,例如菜单或对话框中的单词,会以这样的方式出现:"然后我们返回插件页面,点击浏览按钮,浏览到刚刚下载的文件,点击上传,插件就安装到服务器上了。"

注意

警告或重要提示会以这样的方式出现。

注意

技巧和窍门会以这样的方式出现。

读者反馈

我们始终欢迎读者的反馈。请让我们知道您对本书的看法,您喜欢或不喜欢的地方。读者的反馈对我们开发能让您真正受益的书籍至关重要。

要向我们发送一般反馈,只需发送电子邮件至<feedback@packtpub.com>,请确保在主题中提及书名。

如果有您需要的书籍,并希望我们出版,请在www.packtpub.com建议书名表单中给我们留言,或发送电子邮件至<suggest@packtpub.com>

如果有您擅长的话题,并且您有兴趣撰写或为一本书做出贡献,请查看我们的作者指南www.packtpub.com/authors

客户支持

现在您是 Packt 书籍的自豪所有者,我们有一些事情可以帮助您充分利用您的购买。

下载书籍示例代码

访问www.packtpub.com/support,并从书籍列表中选择本书,以下载本书的示例代码或额外资源。然后将显示可供下载的文件。

可下载的文件包含如何使用它们的说明。

勘误

尽管我们已经尽最大努力确保内容的准确性,但错误难免会发生。如果您在我们的书籍中发现错误——可能是文字或代码上的错误——我们将不胜感激,如果您能向我们报告。通过这样做,您可以帮助其他读者避免挫败感,并有助于改进本书的后续版本。如果您发现任何勘误,请访问www.packtpub.com/support,选择您的书籍,点击提交勘误链接,并输入您的勘误详情。一旦您的勘误经过验证,您的提交将被接受,并将勘误添加到现有勘误列表中。您可以通过选择您的书名从www.packtpub.com/support查看现有的勘误。

问题

如果您在阅读本书的过程中遇到问题,请联系我们的<questions@packtpub.com>,我们将尽力解决。

第一章:防火墙简介

在本章中,我们将介绍一些防火墙和网络概念,以足够的细节为那些已经遇到过它们的人提供一个复习,但尽可能地以最简洁的方式,因为理解网络概念并不是本书的重点。我们认为其中一些概念很重要,了解这些技术的使用方式和来源有助于更好地理解 IT 的工作方式,但对于时间紧张的读者,我们已经尽可能提供了对这些概念重要性的斜体总结。

如果您不理解我们讨论的所有概念,不要担心,同样,对网络概念更熟悉的读者应该能够跳过。IPCop 使许多这些概念的明确理解变得无关紧要,因为它试图尽可能简化和自动化管理。然而,如果您确实有兴趣更深入地了解这些主题,这里提供的介绍以及我们提供的一些 URL 和其他资源的链接应该会有所帮助。了解网络、路由以及一些常见协议的工作原理,虽然不是必需的,但如果您打算经常使用 IPCop 等系统,这也将对您有所帮助。

网络防火墙入门

在 20 世纪 70 年代初,随着数据网络变得更加普遍,构建它们的方式也呈指数级增长。对于许多人来说,互联网(IBM TCP/IP 教程和技术概述,Martin W. Murhammer,Orcun Atakan,Stefan Bretz,Larry R. Pugh,Kazunari Suzuki,David H. Wood,1998 年 10 月,第 3 页)或将多个网络连接在一起*的概念变得极为重要,因为连接不同的、相互对立的网络开始引起痛苦。

在 IT 和计算机科学的背景下,协议通常是指计算机为特定目的交换数据的常见格式。在网络中,协议最好比作一种语言——20 世纪 70 年代的网络情况是存在许多不同的语言,但很少有翻译器可以为人们进行翻译。

美国国防部的国防高级研究计划局www.darpa.mil)进行的研究,尤其是由其资助的研究,不仅产生了一系列旨在实现互操作性的网络协议(也就是说,为了实现设备之间的轻松、平台中立的通信),还建立了一个名为ARPANet的网络,专门用于这一目的。在语言方面,最好的比较是发展出国际语言世界语的发展——尽管这种国际语言的传播相当有限,但计算机有一个优势,那就是不需要花费数年时间学习特定的协议!

ARPANet 在 1976 年首次尝试使用 TCP/IP,到 1983 年 1 月,其使用被强制要求适用于网络中的所有计算机。到了 20 世纪 70 年代末,除了军方之外,许多其他组织也被允许访问 ARPANet,如 NASA、国家科学基金会NSF),最终还有大学和其他学术实体。

军方从 ARPANet 中分离出来,建立了自己的独立网络用于军事用途(MILNET),这个网络成为了 NSF 的责任,后者创建了自己的高速骨干网,称为NSFNet,以促进互联网的发展。

当 NSFNet 的可接受使用政策开始允许非学术流量时,NSFNet 开始与其他(商业和私人)网络(如通过 CIX 运营的网络)结合,形成了我们现在所知的互联网实体。随着 NSF 退出对互联网的管理和 1995 年 4 月关闭 NSFNet,互联网被不断增长的商业、学术和私人用户所填满。

互联网所基于的标准已经成为现代网络的基石,如今当有人提到“网络”时,他们往往指的是建立在(和周围)TCP/IP 基础上的东西,这是最初为 ARPANet 开发的一套分层协议,以及 TCP/IP 实现的其他标准,如 802.3 或以太网,它定义了 TCP/IP 在网络段上运行的最流行的标准之一的工作方式。

这些分层协议除了因历史和轶事原因对我们来说很有趣之外,还对我们有一些重要的影响。最显著的影响是,基于它们构建的任何设备都可以与任何其他设备完全互操作。因此,其结果是,我们可以购买任何供应商生产的网络组件——我们的戴尔笔记本电脑运行 Microsoft Windows 可以通过 TCP/IP 自由通信,在以太网网络上使用 Linksys 交换机,插入思科路由器,并查看托管在运行 AIX 的 IBM 服务器上的网页,也使用 TCP/IP 进行通信。

运行在 TCP/IP 之上的更多标准化协议,如 HTTP,实际上携带着信息本身,由于这些协议的分层,我们可以连接一个庞大而不同的网络集合,对于像 Web 浏览器和 Web 服务器这样的设备来说,这些网络看起来是透明的,它们使用 HTTP 等协议进行通信。在我们的戴尔笔记本电脑和 IBM 服务器之间,我们可能有一个拨号连接,一个帧中继网络段,互联网骨干的一部分,以及一个无线网络链接——这些都与 TCP/IP 或 HTTP 无关,它们位于网络的这些层“之上”,并在这些层之上自由传输。如果一辆载满孩子的校车可以使用飞机、渡轮、自行车道和缆车,而不用下车或意识到他们下面的交通工具在变化!TCP/IP 在这种意义上所能实现的分层通信是非常强大的,真正使我们的通信基础设施能够扩展。

防火墙的目的

这个网络及其支撑它的研究最初是基于一国军事目的的效用而获得资助的,远远超出了其最初的目标,并通过国际研究和采用,产生了一个正在塑造(并将塑造)未来几代人的现象。网络现在不仅是政府和研究机构的核心活动,也是各种规模的公司,甚至家庭用户的核心活动。无线技术的进一步发展使得这项技术对家庭用户、在外出时以及在不久的将来几乎在地球表面的任何地方都更加易于接触(和相关)!

许多这些网络协议最初是在一个词“黑客”还没有具有(负面)含义的环境中设计的,并且是在一个相互信任和尊重的文化网络上实施的。IPv4,作为通过互联网进行所有通信的基础(以及大多数私人网络),以及SMTP(用于发送电子邮件并将其从一个服务器中继到另一个服务器的协议)是这一点的两个主要例子。这两种协议的初始版本都没有设计用于维护现在与有效通信同义的三个特性保密性、完整性可用性(称为CIA 三位一体)。CIA 三位一体通常被定义为信息安全的目标- en.wikipedia.org/wiki/CIA_triad垃圾邮件拒绝服务攻击只是这两种协议中一些弱点的(恶意)利用的两个例子。

随着网络技术的发展和被政府和依赖于它们的大型组织采用,对这三种特性的需求增加了,网络防火墙成为了必需品。简而言之,网络安全的需求应运而生。互联网也已经走过了很长的路。随着准入门槛的降低,以及支撑它的技术知识变得更加易于获取,它变得越来越不友好。

随着人们越来越依赖互联网进行通信,防火墙已经几乎成为了防止未经授权的网络活动、自动攻击和内部滥用的主要防线。它们被部署在各个地方,术语“防火墙”在这个语境中用来指代从内置到常用操作系统(如微软的 Windows 操作系统 Service Pack 2 中内置的Windows 防火墙 (www.microsoft.com/windowsxp/using/security/internet/sp2_wfintro.mspx)只保护其运行的计算机,到在银行、数据中心和政府设施中部署的耗资巨大的设备(如思科的 PIX 系列防火墙产品(www.cisco.com/en/US/products/hw/vpndevc/ps2030/))。这样的高端设备可能管理和限制数十万台个人计算机之间的网络流量。

鉴于“防火墙”一词的使用增加,并且在词中添加了许多限定词以区分不同类型的防火墙(如有状态、代理、应用、数据包过滤、硬件、软件、电路级等术语),当有人告诉你他们的网络“有防火墙”时,很难知道他们的意思。因此,我们对 IPCop 的探索必须从对防火墙的实际含义的探索开始,掌握了这些知识,我们就可以将 IPCop 与这些知识联系起来,了解 IPCop 可以为我们提供什么功能。

为了改善我们的网络安全,我们需要首先确定我们需要解决的问题,并确定这个防火墙是否是解决这些问题的方案。出于满足流行词要求而实施防火墙是安全设计中的一个常见错误。

防火墙一词通常指的是一系列旨在做一件事的技术和设备-阻止未经授权的网络活动。防火墙充当了一个以上网络(或网络段)之间的瓶颈,并使用(希望)严格定义的一组规则,以允许或禁止某些类型的流量穿过防火墙的另一侧。最重要的是,它是两个或多个网络之间的安全边界。

防火墙的目的

在上图中,连接到互联网的 Web 服务器受到防火墙的保护,防火墙位于它和互联网之间,过滤所有进出流量。在这种情况下,防火墙阻止了攻击者的非法流量。这可能是由于多种原因,比如防火墙从互联网上阻止了攻击者尝试连接的服务,因为攻击者的网络地址被列入黑名单,或者因为防火墙识别到攻击者发送的流量是拒绝服务攻击的一部分。

在这种情况下,Web 服务器所在的网络(在这种情况下可能包含多个 Web 服务器)被防火墙与互联网隔离,有效地实施了一个安全策略,规定了从一个网络(或一组网络)到另一个网络可以传输什么。例如,如果我们的防火墙禁止攻击者连接到 Web 服务器上的文件共享端口,而“用户”可以自由访问端口 80 上的 Web 服务器,那么防火墙后面的其他服务器可能被允许访问文件共享端口以同步内容或进行备份。

分层协议通常使用开放系统互连OSI)层来解释。对于任何在网络或特别是防火墙中工作的人来说,对此的了解是非常有用的,因为与之相关的许多概念都需要了解这种分层工作方式。

OSI 层将流量和数据分为七层,每一层理论上都属于一个协议。尽管在理论上很好,但网络和 IT 应用并不总是严格遵守 OSI 层,因此值得将其视为指导方针而不是严格的框架。尽管如此,它们对于可视化连接非常有用,通常每一层都使用不同厂商设计的硬件和软件,与上下层进行互操作并不是不切实际的。

OSI 模型

OSI 模型如下图所示:

OSI 模型

第 1 层:物理层

物理层包括构建网络的物理介质。在物理层内运行的规范包括物理接口,如端口、电压、引脚规范、电缆设计和材料。网络集线器是一个第一层设备。

第 2 层:数据链路层

数据链路层在同一网络段上的主机之间提供连接。MAC地址在物理层上用于区分不同的物理网络适配器,并允许它们进行通信。以太网是一个第二层的标准。

第 3 层:网络层

网络层在不同网络上的主机之间提供连接,并且在这一层进行路由。Internet ProtocolIP)和Address Resolution ProtocolARP)存在于这一层。ARP 具有重要作用,因为它通过确定给定层三(IP)地址的层二(MAC)地址来在第二层和第三层之间进行中介。

第 4 层:传输层

传输层通常作为确保数据完整性的层。TCP是在这一层最常用的协议,它是一个有状态的协议,通过与远程主机保持连接,可以重新传输未到达目的地的数据。UDP是另一个(稍微不太常见)在这一层操作的协议,但它不是有状态的——它发送的每条消息都不是作为一个“连接”的一部分,并且被视为与回复(如果需要)或之前在两个主机之间传递的任何消息完全分开。

注意

IP、TCP/IP、UDP 和其他第四层协议

从对 OSI 层的考察中,我们可以看到 TCP 是在 IP 之上运行的协议,形成了 TCP/IP 的缩写。不幸的是,当人们使用术语 TCP/IP 时,并不总是指的是这一对特定的协议——“TCP/IP 协议套件”经常被定义为 IP、TCP 以及与之一起使用的 UDP 和 ICMP 等其他协议。这是一个值得注意的区别,尤其是在 IT 专业人员中很常见,在操作系统的文档中也很常见,比如微软的 Windows。

第 5 层:会话层

OSI 模型中的最后三层不再关注(互联)网络问题,而更多地涉及使用连接的软件和应用的实际问题。会话层是建立会话的机制所在,比如NetBIOS协议。

第 6 层:表示层

表示层处理与数据特定问题,如编码、压缩和加密。SNMPXML通常是在这一层存在的标准。

第 7 层:应用层

应用层是常用于通信的协议所在的层,比如HTTP、FTPSMTP

通常,第三层和第四层是防火墙最常处理的层,还有一小部分(但数量在增加)通常被称为“代理防火墙”或“应用层防火墙”,位于这些层之上(并且了解诸如 HTTP、DNS、RCP 和 NetBIOS 等协议)。值得注意的是,许多防火墙(错误地)将第三层以上的所有层都分类为应用层

对于我们的目的来说,对 OSI 层的深入理解(和解释)以及一些更概念性和技术性的网络方面是不必要的——尽管我们已经试图提供了一些概述,但这更多是为了熟悉和为了给你一些你可能想要在将来学习的想法。

对于我们的目的来说,知道分层存在就足够了。如果你有需要(或者有兴趣)了解更多关于这些主题的内容,本章中提供的一些 URL 可以作为很好的起点。你不一定要理解、同意或者喜欢 OSI 层,才能使用防火墙(事实上,许多 TCP/IP 堆栈并不严格遵循基于它们的流量处理),但知道它们的存在以及大致了解它们的设计目的以及围绕它们构建的技术如何相互作用,对于任何认真了解防火墙或网络的人,或者经常使用这些技术的人来说都是很重要的。

在许多情况下,维基百科(www.wikipedia.org)是技术概念的很好起始参考,维基百科的受众通常在 IT 方面很精通,提供了全面的主题覆盖!维基百科的 OSI 层页面有很好的参考资料和技术上准确的内容。这可以在en.wikipedia.org/wiki/OSI_seven-layer_model找到。

另一个关于 TCP/IP 所有事物信息的优秀在线资源是tcpipguide.com/

本章前面提到的 IBM“TCP/IP 教程和技术概述”,作者是 Martin W. Murhammer、Orcun Atakan、Stefan Bretz、Larry R. Pugh、Kazunari Suzuki 和 David H. Wood,是另一本很好(而且免费)的 TCP/IP 网络世界指南。尽管稍微有些过时(最后一次修订是在 1998 年 10 月),但围绕 TCP/IP 的许多标准在 20 多年来都没有改变,所以日期不应该让你太在意。这个指南以及许多其他与开放标准和 IBM 产品相关的指南可以在优秀的“IBM Redbooks”网站上找到www.redbooks.ibm.com/

对于 TCP/IP 的介绍,理查德·W·史蒂文斯的三本《TCP/IP 图解》书籍通常被认为是该主题的权威来源。完整套装的 ISBN 号码是 0-201-77631-6,可以在任何一家好的大型书店或在线书店找到。

网络结构

无论你是否知道,你使用的任何网络的机会都是建立在 IP,即互联网协议的基础上。IP 及其上面构建的协议(如 TCP、UDP 和 ICMP,所有这些协议都使用 IP 数据报)是几乎每个当前部署的网络的基础。这些网络构成的组件是可互操作的,因此它们的角色是明确定义和理解的。我们将简要讨论这些设备,特别是它们如何与防火墙相互连接。

以太网作为大多数这些协议通常层叠在其上的基础技术,构成了这些设备的基础。因此,网络设备、外围设备和设备通常被称为LAN、以太网或 TCP/IP 设备(或更常见的是网络设备)。还有其他正在使用的网络标准,其中两个是Token RingSNA网络,它们具有相当特定的用途。其中包括上述两种标准在内的许多标准通常被认为已过时。通常情况下,它们仍然部署在遗留原因的场景中,这些网络通常标志着需要更换或者已经被冻结更改。

值得一提的是,Token Ring 和 SNA 通常部署在较大的组织中,后者几乎完全与 IBM zSeries 等大型机进行通信。其他专门的 IT 环境,如集群,具有特定的网络要求,这使它们倾向于其他形式的网络。

然而,在这里,我们将考虑以下(以太网/IP)网络设备:

  • 服务器和客户端(微型计算机)

  • 交换机和集线器

  • 路由器

  • 组合设备

服务器和客户端

服务器/客户端关系是 TCP/IP 协议的基石,有必要对其有一定的了解,以便能够有效地管理、实施和思考。简单地说,客户端是指发起连接(即开始发送数据)到另一台计算机的任何设备,服务器是指监听这样的连接以允许其他设备连接到它的任何设备。

在 TCP/IP 的上下文中,网络上的所有设备都是服务器和客户端,无论它们是否被专门分配为服务器(如企业邮件服务器)或客户端(如台式电脑)。这是由于两个原因:首先,许多高级协议从服务器本身向客户端发起连接;其次,TCP/IP 连接实际上涉及在两个连接中发送数据到监听端口——最初是从客户端到服务器,以启动交易,连接(通常)到服务器上的一个众所周知的端口,以访问特定服务(如端口 80 用于 HTTP,端口 25 用于 SMTP,或端口 21 用于 FTP),流量来自客户端的(通常)随机的临时(即大于 1024)端口。

一旦数据到达,服务器从服务端向客户端发送数据(在这个连接中,服务器也是客户端!),并且发送到客户端的(随机)端口,该端口被用作初始连接的源端口。从服务器到客户端的服务端口的流量用于服务器回复客户端。从客户端到服务器和从服务器到客户端的数据流构成了一个完整的 TCP/IP 连接。当我们讨论流量过滤时,这种特定的区别后来变得重要。

在网络的范围内,服务器是为该网络上的主机提供固定服务的设备。通常涉及某种形式的集中式资源;尽管“防火墙”可以被描述为服务器,但它不一定必须接受连接(而是促进到其他位置和/或服务器的连接)。

服务器可以提供文件、电子邮件或网页,通过 DHCP 提供网络配置信息,通过 DNS 服务器提供域名和主机名与 IP 地址之间的转换,甚至提供其他更复杂的服务,例如单一登录或提供安全服务(如 Kerberos 服务器、半径服务器、入侵检测系统等)。对于本书的目的,我们通常将服务器视为为网络上的其他计算机和设备提供服务和数据的设备

客户端通常由用户直接使用,放置在桌子上,并连接有显示器和输入设备,或者是笔记本电脑(服务器通常要么共享这些外围设备,要么根本没有这些设备)。它们直接用于访问有时存储在其他地方(如网页或文件服务器上的文件)或本地(如存储在本地“我的文档”文件夹上的文档)的资源和信息。对于本书的目的,我们通常将客户端视为用户用于访问网络或互联网上其他计算机上的服务(以及访问存储在其中的数据)的设备

注意

有关客户端/服务器关系的更多信息,请参阅en.wikipedia.org/wiki/Client-server

交换机和集线器

集线器是一种网络设备,允许多个客户端连接到网络段,在这个范围内它们可以相互通信。逻辑上,集线器非常简单,基本上充当所有连接到设备的设备的逻辑连接器,允许流量自由地从端口流向端口,因此在一个四端口设备中,如果连接到端口 1 的客户端向连接到端口 4 的客户端发送数据,集线器(不知道“客户端”概念)简单地允许这个流量流向该设备上的所有端口——客户端 2 和 3 忽略不属于它们的流量。

交换机和集线器

交换机解决了集线器的一些缺点,并且通常优先部署。此外,集线器越来越成为过去时代的遗物,在零售店和在线购买变得非常困难。

交换机和集线器

交换机通过在内存中保持将端口与 MAC 地址相关联的表来工作,因此交换机知道哪台计算机插入了哪个端口。一些交换机可以“堆叠”,将这种功能应用于整个网络段,尽管在一个网络中,未经管理或未堆叠的交换机只是通过交叉连接电缆相互连接,给定的交换机只会在特定端口上看到大量 MAC 地址。

由于本地段上的流量(甚至是通过该段路由并且目的地是另一个网络的流量)是根据 MAC 地址直接从主机到主机(路由器到路由器,路由器到客户端,客户端到服务器等)传递的,因此交换机可以根据其拥有的端口决定特定数据报文的目的端口。由于需要处理,交换机的成本一直比集线器高,因为执行此类处理所需的电子元件的成本比集线器内部的“愚蠢”元件更高。

就其优势而言,交换机更快,因为任何两个端口都可以使用大量带宽,而不会影响设备上其他端口可用的带宽。在未切换的网络上,如果客户端 1 和 4 正在使用可用带宽的 90%生成流量,则网络的其余部分只有 10%的带宽(或者在处理 IP 强加的开销时,实际上更少)。在切换网络上,每个端口逻辑上具有显着增加的带宽限制,通常可达到交换机硬件的极限。

值得注意的是,许多交换机将对所有端口的流量设置总带宽限制,大多数中高端交换机都有一个“上行”端口,除了提供 MDI-X 功能(能够感知是否需要交叉链接,并在需要时在交换机中执行必要的修改,以便可以使用普通的“补丁”电缆进行交换机到交换机的连接),还是一个更高带宽的端口(在 100 兆交换机上是千兆位),或者是一个 GBIC 接口,可以实现模块化上行。

交换机本身也稍微更安全,因为任何设备都很难随意监听可能包含私人数据或身份验证信息(如密码)的网络流量。交换机了解哪些客户端插入了交换机上的哪个插座,并且在正常情况下会将数据从一个端口移动到另一个端口,而不会将无关的流量传递给不作为目的地的计算机。

然而,这并不是绝对的安全措施,可能会被一种称为 ARP 欺骗或 ARP 中毒的技术所规避(www.node99.org/projects/arpspoof/)。ARP 欺骗是一种非常著名的技术,存在多个平台的多个工具,允许人们执行它。在本地段上,ARP 欺骗允许具有管理员或系统级访问 PC 的任何用户(管理员凭据,一个备用网络插座,可以插入笔记本电脑,或者只是配置为从 CD 或软盘启动的计算机)拦截同一段上其他计算机发送的任何和所有流量,并将其透明地重定向到互联网(或其他目的地),而不会对用户造成任何可见的中断。一旦这个第二层协议被破坏,每个其他层的每个其他协议(除了使用证书的难以攻击的强加密协议)都必须被认为是被破坏的。

现代交换机通常具有许多形式的高级功能。传统交换机虽然比集线器更智能,但在上面描述的形式中被描述为“未管理”的交换机。更新的“受管理”交换机(通常具有更大的微处理器、更多内存和增加的吞吐量(在给定时间内可以穿越网络的数据量))提供更多功能。其中一些例子是提供增加的安全功能,如 MAC 地址过滤、DHCP 监听和监视端口。其他新功能可能涉及安全和网络结构,如虚拟局域网(vLANs)。正如前面提到的,一些“受管理”交换机提供堆叠功能,通过使用专有的链接电缆(例如 3com Superstack 交换机的“Matrix”电缆)或交换机的上行端口之间的普通补丁/交叉电缆,可以将一组交换机管理为一个,有效地共享配置和管理界面。

一些非常高端的交换机,如思科 6500 系列和 3com Corebuilder 交换机,还具有“路由引擎”,使它们能够实现一些路由器的功能。这再次导致在将它们应用于“现实生活”时,OSI 层之间的更多“模糊”。

交换机的范围从小型的四端口单元(通常与其他网络设备集成,并作为消费类电器销售,比如 Linksys WRT54G)到设计用于数据中心的大型、高可用性单元,支持许多并发客户端并具有极高的吞吐量。

在本书的背景下,我们将在一个相当简单的背景下考虑交换机,并忽略诸如 vLAN 和路由引擎之类的功能,这些功能超出了我们在谈论 IPCop 时可以合理处理的范围(这样的讨论更适合于网络书籍)。对于本书的目的,虽然了解交换机是有用的,但理解交换机是允许插入网络插座的所有客户端彼此交谈,并且为许多主机之间、网络之间以及存储在服务器上的共享资源提供连接的设备就足够了。

路由器

如果一系列交换机和集线器将我们的客户设备连接在一起以形成网络,那么路由器就是非常简单地连接这些网络的设备(换句话说,路由器是互联网的基础)。一个小型路由器(比如 1700 系列的思科路由器)可以通过 ISDN 或宽带连接将分支办公室与总部连接起来,而在另一端,思科、瞻博或北电(或基于 Windows 2003 或 Linux 等操作系统)的昂贵高端路由器可能有几个网络链接,并负责将一个较小的 ISP 与几个较大的 ISP 连接到互联网骨干网。在高端设备中,专用设备虽然基于与 PC 类似的架构,但可以处理比运行 Windows 或 Linux 等操作系统的“普通”计算机更多的流量,因此这些“骨干”路由器几乎从不是除了专用设备以外的其他东西。

在 TCP/IP 网络上,位于同一“子网”(即插入同一集线器/交换机或一系列集线器/交换机的计算机)的计算机将直接使用 ARP(地址解析协议)进行通信,以查找目标计算机的硬件(或 MAC)地址(正如我们在讨论 OSI 层时提到的,ARP 用于在第二层和第三层之间进行转换),然后直接向本地网络段上的这个 MAC 地址发送数据。正因为如此,“子网掩码”非常重要;它允许设备计算哪些网络地址是“本地”的,哪些不是。如果我们的网络使用(私有)地址范围 192.168.0.1,并且我们的子网掩码是 255.255.255.0(或一个 C 类网络或/24 CIDR 地址空间),那么任何不以 192.168.0\开头的网络地址都将被视为远程地址,设备将不会直接尝试连接它(通过第二层),而是会查阅“路由表”以查看通过哪个“路由器”(通过第三层)发送数据,作为连接到另一个网络的中介。

在较小网络(或结构良好的较大网络)上,客户端的一个相当典型的配置是只有一个路由器——“默认”路由器——通过它进行流量传输。使用前面的例子,如果我们的设备尝试连接到网络地址 192.0.2.17 的另一个设备,操作系统会看到根据网络适配器的网络地址和子网,这不是一个本地设备,然后将数据发送到“默认网关”,然后“路由”流量到正确的目的地。虽然可以配置客户端使用不同的路由器来连接不同的网络段,但这是一个更高级和不太常见的配置选项。

如果一个网络使用快速网络连接(如 ADSL 路由器)作为默认网关(用于互联网访问),并且使用另一个路由器访问内部网络的另一个子网(例如,一个公司有多个站点的分公司),则可能希望为客户端配置多个路由。在较小的公司中,这种情况更好的方案是通过一个处理两者的路由器提供内部和互联网连接,使客户端配置和管理更简单(所有流量通过默认网关,而不是每个客户端都指向不同路由器的静态路由表),但这可能并非总是可能或理想。

路由器

在上面的插图中,我们考虑一个拥有总部大楼的公司。总部局域网基础设施(在这里由左下角的柱廊建筑代表)包含内部访问的服务器,如文件、邮件、打印和目录服务器,以及客户端。在这个网络和互联网以及不受信任的网络段或 DMZ 之间(其中包含外部可访问的公司网站/邮件系统,托管公司网站并接受传入电子邮件)之间是一个防火墙。

除了总部后面的防火墙处的客户端,我们还有一个分部办公室,位于总部所在的城镇——当总部没有扩展空间时开设的。这个办公室在与总部相同的逻辑网络基础设施上拥有服务器和客户端系统,但在自己的(路由)子网中,通过建筑间的无线链接连接到总部网络,可能是通过微波或激光链接。

一个分公司(也许是为了我们虚构的业务在国家另一地区的销售人员,客户密度很高)也使用总部网络的资源。由于距离的原因,这个办公室也有自己的服务器(很可能是文件、打印和电子邮件系统,内容和信息与总部相应系统同步)。在自己的子网中,这个网络通过 VPN 连接,从分公司段到总部段通过互联网和防火墙隧道传输,因为租用线路或类似连接的成本过高。

由于网页/邮件服务向互联网开放,我们的总部有多个互联网连接以实现冗余。在这种情况下,总部基础设施(可能相当大)和互联网服务提供(总部防火墙本身很可能是或伴随着另一个路由器)通常会使用更多的路由器。这些都被简化了!

对于我们的目的,我们将考虑路由器是一个将数据包跨越广域网或互联网转发到它们正确目的地的设备

路由器、防火墙和 NAT

虽然很容易用这种干净利落的术语来谈论网络——基于层的分离网络和网络设备作为孤立的、明确定义的项目,但这通常并非如此。出于许多原因,包括网络拓扑和有限的资源,角色经常被合并,特别是在较小的网络中。经常,首先合并的是“防火墙”和“路由器”的角色。

由于网络经常由路由器连接在一起,这个自然的瓶颈点似乎是一个方便的防火墙位置。这本身是良好的网络理论,但经常是通过向现有路由器添加防火墙功能或规则集来实现的,而不对网络进行任何更改。虽然在小型网络上这是有些合理的,但它可能会导致处理负载的问题,并给设备(路由器)增加复杂性。一般来说,尽可能地分离角色是一个好主意,通过使用单独的路由器、防火墙、代理服务器等。

这也适用于服务器上的其他基础设施角色 - DNS 服务器、Kerberos 域控制器、DHCP 服务器、Web 服务器等等,应尽可能地保持分离,以提高性能、可靠性和安全性。

不幸的是,正如我们已经提到的,这并不总是可能的,有一些网络角色经常被合并,比如防火墙和路由器。特别是在没有为每个网络设备拥有自己的可路由 IP 地址的组织中(这几乎是每个中小型企业),需要进行网络地址转换。NAT 是一个过程,通过这个过程(为了缓解互联网可用 IP 地址的不断减少),本地网络将不使用在互联网上可用的 IP 地址。

网络地址转换

网络地址转换是互联网及其构建的协议的另一个结果。就像 DNS、SMTP 和 TCP/IP 等协议是在安全性经常被忽视的环境中设计的一样,互联网的增长程度也是如此。我们应该熟悉的 IPv4 寻址方案使用四个数字的八位组,每个数字的范围是 0 到 255,最多只有 40 多亿个地址(精确地说是 255⁴)。

鉴于互联网连接的广泛普及和使用 IP 地址的个人计算机、移动电话、PDA 和其他设备的数量庞大(其中路由器、非移动 IP 电话,甚至家用电器如冰箱和微波炉只是其中的一部分),这个地址空间虽然最初可能被认为是巨大的,但开始用尽。因此,为了减少 IP 地址消耗的速度,需要一种临时方法,这就是 NAT。

作为 NAT 在实践中的使用示例,考虑以下假设情景:

网络地址转换

考虑上面的图表 - 一个虚构的 ISP 和它的四个客户。每个客户由 ISP 分配一个 IP 地址,分配给 ISP 提供的连接直接连接的计算机或设备。

客户 A 是一个中等规模的律师事务所 - 客户 A 有一个基于 IPCop 的防火墙,几台服务器和几个私人网络段中的客户端。它使用 10.0.1.0/24(C 类)子网用于内部客户端,但其外部 IP 实际上被几十台计算机使用。

客户 B 是一个家庭用户 - 客户 B 只有一台电脑,一台笔记本电脑,直接连接到 ISP 的互联网连接。客户 B 的外部 IP 被一台计算机使用,没有 NAT 和私人内部网络。

客户 C 是一个较大的制造公司 - 客户 C 在其互联网连接上连接了一个高端防火墙,并在其内部网络中有大量不同的设备。客户 C 在其防火墙后面的网络段中使用 172.16.5.0/24 子网,并在其内部网络中有电话系统、客户端、服务器系统和中档主机系统。

客户 D 是一个家庭,有几台电脑供家庭成员使用,还有一台平板电脑——他们有几个客户端连接到由一台一体化交换机/路由器/防火墙设备(可能是之前提到的 Linksys WAP54G)提供的无线网络。

实际上,只有四个 IP 地址代表了互联网上数百个客户端,通过巧妙地利用技术,使用互联网服务提供商为客户端提供互联网访问,减少了 IP 地址的浪费,不为每个主机分配一个 IP 地址。

如果您的计算机作为网络上的主机存在,并且默认网关执行网络地址转换,并且您访问一个网站,您的计算机将发起到您正在连接的 Web 服务器的端口 80 的连接,您的计算机将从其拥有的 IP 地址(在 NAT 的情况下,是一个私有地址,如 192.168.1.23)发送数据包到目的地。目的地在互联网上的网站的情况下,将是一个互联网可路由的 IP 地址,例如 72.14.207.99(Google 的 IP 地址之一)。

如果您的网关只是将此数据包转发给 Google,那么它很可能根本无法到达那里,因为您的计算机和 Google 之间的路由器几乎肯定会配置为“丢弃”来自 192.168.0.0/16 地址范围的数据包,这些数据包对于互联网通信是无效的。因此,您的路由器在转发数据包之前重新写入数据包,并将 192.168.1.23 替换为您的 ISP 临时分配给您的路由器的外部地址。

当来自另一端主机的回复返回时,路由器在记下翻译过程后,会在内存中的表中查找,根据连接的序列号确定 192.168.1.23 是发起主机,并重新写回数据包。实际上,您的客户端是伪装成连接到互联网的设备(或者它在伪装成他们),确实,“伪装”是 Linux 中 iptables/netfilter 防火墙组件中 NAT 的技术术语。尽管 NAT 过程会破坏一些更复杂的协议,但它是一种非常有效的方式,可以让成百上千台设备在一个互联网可路由(公共)IP 地址后面在线。

对于客户端来说,设置看起来就像他们的地址范围存在于互联网的一个正常路由段中,而实际上,“默认网关”正在执行网络地址转换。通过这种方式,IP 地址的全球短缺得到缓解,但牺牲了一些便利。特别是小型和家庭办公设备,如 D-Link、Linksys 等公司销售的设备,几乎总是使用网络地址转换来为其客户提供连接,IPCop 也使用它。

注意

私有地址范围

这些“私有”IP 地址范围在 RFC 1918 中设置。RFC 或请求评论,虽然不是技术标准,但是“关于互联网(最初是 ARPANET)的技术和组织笔记,始于 1969 年。RFC 系列中的备忘录讨论了计算机网络的许多方面,包括协议、程序、程序和概念,以及会议记录、意见,有时还有幽默。”对于协议、标准和惯例,它们是一个很好的第一参考线,尽管(通常取决于作者和预期受众)它们通常是相当技术性的。

私有 IP 范围中最为人熟知的可能是 192.168.0.0/16 范围,其中包括 255 个 C 类“子网”,其中最常用的是 192.168.0.1/24 和 192.168.1.1/24 子网。这个地址范围经常被用作小型办公室家庭办公室(SOHO)路由器的默认私有地址范围。还有另外两个私有地址范围用于这些目的,即 10.0.0.0/8 和 172.16.0.0/12 范围。

组合角色设备

因为 NAT 的结果,因此几乎总是处于小型办公室家庭办公室网络边界的设备几乎总是组合角色,尽管通常被营销为路由器/防火墙或简单地路由器,但通常执行以下所有角色:

  • 路由器(执行网络地址转换)

  • 防火墙

  • DHCP 服务器

  • 缓存/解析 DNS 服务器

一些这样的设备(包括 IPCop)可能还提供以下一些功能,其中大多数通常更常见于企业产品中:

  • 代理服务器

  • 内容过滤

  • 文件服务器

  • 入侵检测

  • VPN/IPSec 服务器

由于某些任务的复杂性,通常情况下,“嵌入式”组合设备很难配置,并且与其他设备(如来自其他供应商的 IPSec/VPN 设备)进行一些更复杂功能(如 IPSec 和文件共享)的互操作可能非常困难。尽管这些设备的价格和大小使它们对较小的网络非常有吸引力,但需要一些更高级功能的网络应该仔细考虑它们,并评估它们是否在经济和技术上能够满足他们的需求。

当需要组合角色时,更大、更完全设计的解决方案(如 Borderware、Checkpoint、Cisco 等的防火墙设备)或商业软件(如 Microsoft 的 ISA 服务器)通常比它们更有效地完成工作,并以更可配置和可互操作的方式。显然,我们相信 IPCop 不仅在其预期任务上比嵌入式设备做得更好,而且比一些商业防火墙和网关软件包做得更好!

流量过滤

了解防火墙的预期功能以及为什么它们的功能对我们很重要,现在有必要简要探讨一下防火墙是如何实现我们为其分配的广泛目的的。

个人防火墙

个人防火墙在过去五年中变得越来越普遍。随着 Windows XP Service Pack 2 中个人防火墙技术的加入(以及即将推出的 Windows Vista 中的增强技术),以及 OSX 和 Linux 操作系统中的防火墙堆栈,现在工作站和台式机运行防火墙软件已经成为相当正常的事情。

一般来说,防火墙软件有两种形式——一种是内置于操作系统中的防火墙软件(如 OSX、Linux 和 XP 的 Windows 防火墙),另一种是来自软件供应商编写的许多第三方防火墙。这类软件包的两个相对受好评的例子是 Agnitum 的 Outpost 软件包和 ZoneLabs 的 ZoneAlarm 软件包。

个人防火墙软件不能成为真正的防火墙。正如我们之前讨论过的,防火墙是防火墙一侧和另一侧之间的安全边界。根据定义,个人防火墙必须在做出是否允许数据存在的决定之前接受数据进入计算机。许多形式的利用都涉及对恶意构造的数据进行解析和评估时的误解。由于防火墙正在执行这些任务,它无法有效地隔离正在保护的软件部分和正在被保护的软件部分。即使对于较小的网络,个人防火墙也永远无法提供网络防火墙提供的隔离程度。

尽管个人防火墙软件相对有效地防御入站(入口)流量,但这种软件无法防御未经授权的出站(或出口)流量,因为在工作站上生成这种流量的应用程序通常会对防火墙的内部有一定程度的访问权限。如果登录用户是工作站的管理员(或者操作系统存在安全漏洞,允许非管理员应用程序获得系统或管理员权限),那么很可能可以绕过软件/个人防火墙,使用操作系统(www.vigilantminds.com/files/defeating_windows_personal_firewalls.pdf)的方式,这是使用与客户端本身不同的防火墙根本不可能的。

许多个人防火墙软件,如 ZoneAlarm,超越了仅由数据包过滤防火墙提供的服务,并作为基于主机的入侵检测系统(HIDS)或基于主机的入侵预防系统(HIPS)。这些系统积极监视,并在 HIPS 的情况下,防止对操作系统及其组件的更改。这些功能不能由像 IPCop 这样的网络防火墙提供,但对 HIPS 和个人防火墙同样适用批评——最终,如果其运行的主机受到损害,入侵预防系统的准确性也会受到损害。

安全领域的最新发展包括 rootkit 软件,它能够利用虚拟化软件(如 VMware)和硬件虚拟化支持(如 AMD 和英特尔最新处理器中的支持)为主机操作系统提供“后门”。像 VMware 和 Virtual PC 本身一样,这样的软件实际上充当了 OS 内部运行的容器(或 hypervisor),其结果是这样的后门实际上存在于安装它们的 OS 之外。鉴于这些概念已经公开展示,主机防火墙和 IPS 软件的作用得到了加强——作为安全解决方案的一部分,但并非“杀手级应用程序”。从根本上讲,我们可以肯定地得出结论,不同的软件包具有不同的优势,我们绝不能依赖特定的软件包。

尽管个人防火墙软件是整体安全策略的重要组成部分,但并非所有防火墙都是平等的,个人防火墙绝不能被视为网络整体安全策略中精心设计、精心维护的外围和分段防火墙的替代品。

无状态数据包过滤

“数据包过滤”是一个通常用来描述防火墙的术语,它在网络层起作用,根据数据包的标准决定数据应该去哪里。通常,这将包括源端口和目标端口以及源地址和目标地址——因此,例如,一个组织可能允许从业务伙伴的 IP 地址范围连接到其远程访问服务器,但不允许从互联网连接。其他标准可能包括连接的时间。

尽管快速且在历史上有效,“无状态”数据包过滤器仅在网络层操作,并且根本不检查通过它们传输的数据——一个配置为允许来自互联网到组织 DMZ 端口 80 的流量的无状态数据包过滤器将允许这样的流量,无论去往端口 80 的数据是什么,更重要的是这些数据是否实际上是已建立连接的一部分。

有状态数据包过滤

有状态的数据包过滤器理解通过它进行的正在进行的 TCP 连接的状态。当建立 TCP 连接时,源和目标主机之间会进行一个称为“三次握手”的特定过程。

这是对有状态防火墙的非常基本和简单的解释——本文的范围不包括有状态防火墙的整个主题(还有其他资源如en.wikipedia.org/wiki/Stateful_inspection),但对该主题的基本解释是有用的:

首先,连接中的客户端向目的地发出一个 TCP SYN 数据包。对于防火墙来说,这被视为一个“新”连接,此时防火墙将分配内存来跟踪连接的状态随着其进展。

其次,如果连接按预期进行,服务器会通过发送一个带有正确序列号、源和目的端口的数据包来回复,同时设置 SYN 和 ACK 标志。

第三,客户端在收到 SYN ACK 数据包后,返回一个仅包含 ACK 数据包的第三个数据包。通常,这个数据包也会包含与连接相关的一些数据的前几位。在这一点上,防火墙认为连接已经“建立”,并且将允许与该连接相关的数据(即来自源/目的地址的数据,去往和来自正确端口的数据,带有正确序列号的数据)自由通过防火墙。

如果未完成这一点,防火墙将在特定时间段后或者在可用内存用尽时忘记连接的细节,这取决于防火墙的工作方式。这种额外的内存使用使得“有状态”数据包检查更加依赖处理器和内存,尽管它只检查我们数据的头部,但它仍然不像检查数据一直到应用层并解开数据包的有效载荷的防火墙那样依赖处理器或内存。

然而,有状态防火墙的主要优势源于其对“已建立”连接的理解。在一个具有非有状态防火墙的多个客户端的网络中,允许这些客户端连接到端口 80 的外部站点,任何目的端口为 80 的流量都将被允许离开网络,但更重要的是,任何互联网上的主机都可以完全绕过防火墙,并通过从源端口为 80 发送其流量来连接到内部客户端。因为 Web 服务器的响应将来自端口 80,没有防火墙检查来自网络外部端口 80 的连接是否是对内部客户端的响应(即没有进行有状态处理),因此无法阻止这种情况发生。

然而,有状态的防火墙只有在数据是属于一个“已建立”的连接时才允许数据穿过防火墙。由于在三次握手之前发送的数据包不应该允许通过任何有效载荷,这最大程度地减少了攻击者对目标系统的实际影响,除非完全按照防火墙允许的方式连接到目标系统。

应用层防火墙

尽管有状态包过滤防火墙可以非常有效地限制网络上的流量去向,但它无法控制流量的确切内容。数据包内部的实际数据存在于比数据包防火墙更高的级别,因为作为网络层设备的数据包防火墙不了解应用层。

举例来说,考虑一个简单的办公网络,网关允许对端口 80(HTTP)的出站连接,以便允许网络上的客户端浏览互联网。网络管理员已经拒绝了对所有其他端口的连接,比如 443 和 25,因为公司政策规定员工不应该能够访问外部邮件(通过 25 端口)或需要 HTTPS 登录的网站(因为其中许多是 eBay 和网页邮件等网站,公司不希望员工访问)。它使用有状态防火墙来防止带有源端口 80 的流量进入其网络,因为这可能被用于攻击、探测或扫描其网络上的客户端。

然而,这种防火墙无法阻止员工访问端口 80 上的其他资源——例如,员工中的某人可能已经在端口 80 上设置了邮件服务器,并且正在使用它来阅读自己的邮件。另一个可能在公司外部或家中的服务器上运行 SSH 服务或 VPN 服务器,并且正在监听端口 80 并使用此连接来“隧道”其他流量,以便连接到 IT 政策禁止访问的服务(如邮件、IRC 等)。

除非管理员有一个理解应用层的防火墙,否则很难防止这种情况,因为只有这样,他或她才能根据流量的类型来限制流量。这样的防火墙通常被称为“代理防火墙”,因为它们的功能方式经常是通过代理流量——代表客户端接受连接,解包并检查数据,然后根据防火墙所设定的访问控制来转发到目的地。与有状态防火墙一样,应用层防火墙或代理服务器可以根据目的地、时间、内容(在这种情况下)和许多其他因素来限制流量。Squid 是与 IPCop 一起提供的开源代理服务器,在这方面非常强大,并且能够强制执行强大的访问控制,特别是与 Squidguard 附加组件结合使用时。

Web 代理服务器可以说是经常部署的应用层防火墙,尽管通常不被视为这样,许多代理服务器具有近似完整的应用层防火墙功能,通过阻止对端口 80 的正常连接并强制通过代理服务器连接到互联网,组织确保对端口 80 的请求是 HTTP,并且不允许在该端口上使用其他协议。不幸的是,许多协议(如端口 443 上的 SSL)由于使用了加密技术,很难进行代理,因此这些端口经常是不受保护的,因此是恶意入侵者(或错误的员工)用于不良目的的好选择。

将边境控制作为一个教训——我们通过护照限制跨境旅行,以验证某人是否被授权前往源和目的地国家——这类似于无状态数据包过滤,因为护照类似于数据包头部;它们包含有关持有者(或有效载荷)的信息。然后,我们使用签证来验证某人在旅行中的“状态”,也就是说,他们是否处于合法停留的状态,没有合法理由进入该国家(尽管根据法律他们可能有权进入),等等。单凭护照(及其检查)本身并不会根据某人的身份和所做的事情以及他们是否因安全原因被列入黑名单来限制旅行。这类似于应用层防火墙。此外,通过护照和名单,政府检查跨境旅行的人员本身,并检查他们的行李(有效载荷)以验证其是否合法携带(或包含违禁品,如爆炸物或军火)——这可以与应用层防火墙和入侵检测/预防系统进行比较。

代理服务器

因此,代理服务器可以是一种应用层防火墙。代理服务器非常简单,它接受来自一台计算机的请求,并将其传递给另一台计算机。在传递请求的同时,代理服务器还可能对该请求施加一定的限制。然而,最重要的是,代理服务器理解“请求”的概念,它提供的安全性不仅仅是允许客户端连接到目标服务器或服务本身,因为代理服务器不会允许任何东西穿过防火墙。

考虑我们之前的例子——希望允许客户端访问互联网,同时阻止他们访问某些资源(如邮件、在线拍卖网站、游戏等)的小型网络。网络管理员决定当前的防火墙策略不够,安装了代理服务器,并为网络上的客户端配置了 Web 浏览器(可以手动配置,也可以使用脚本或集中配置方法,如 Red Hat Directory 服务器或微软的 Active Directory)指向代理服务器进行互联网访问。

然后,网络管理员配置防火墙,以阻止网络上工作站的所有出站连接(允许代理服务器连接到互联网)。此时,如果有人使用网关/防火墙连接到互联网,比如一个假设的员工以恶意目的连接到端口 80 上的 SSH 服务器,这些连接将被防火墙拒绝(并可能被记录)。从这时起,每当员工使用他或她的网络浏览器连接到网站时,网络浏览器不再像以前那样尝试连接到相关网站并为用户检索内容。相反,网络浏览器连接到它被配置的代理服务器,并请求代理服务器提供所需的网页。

在这一点上,代理服务器实施任何形式的访问控制,将确定用户是否被允许访问所请求的资源。Dan's Guardian 是一个允许过滤不适当网站的 IPCop 软件包的例子。

代理服务器的另一个优点是,它们作为内容请求的瓶颈,可以检查网页是否已经被请求过,如果是的话,就给客户端一个本地(缓存)页面的副本,而不是检索相同内容的另一个副本。这样的代理服务器被称为缓存网络代理。微软的 ISA 服务器和开源软件 Squid 都是这方面的例子。

在确定没有内容的本地副本(如果代理服务器正在缓存)并且用户被授权查看内容(如果有生效的访问控制)之后,代理服务器将尝试自行检索内容,要么从上游代理服务器,要么(更可能)直接从互联网上检索。如果目标站点不存在,代理服务器可能会向用户返回错误,或者将远程站点返回的错误传递给用户。

透明代理(IPCop 支持),或者“拦截代理”(www.rfc.org.uk/cgi-bin/lookup.cgi?rfc=rfc3040)通过 NAT 执行此操作,无需重新配置(也无需客户端的参与),利用瓶颈来对流量施加网络策略。

代理服务器

在上面的示例中,我们的透明代理服务器为笔记本客户端获取www.google.com。假设我们允许访问大多数互联网站点(如 Google),但阻止包含“色情”等关键词或者列在黑名单上的站点。在这种情况下,代理服务器通过提供内容过滤来实现我们的 IT 政策目标。它还对内容进行清理,以确保只允许有效的 HTTP 流量,而不允许任意应用程序的连接(如 Skype 或 MSN),这是我们的 IT 政策不允许的。如果第二个客户端现在请求相同的页面,代理服务器可以提供缓存的副本(消除步骤 3),比第一次快得多,为客户提供更好的服务,并减少对互联网连接的负载。代理服务器本质上为客户端自身进行了“繁重的工作”。

在防火墙角色中,代理服务器的主要优势之一,除了更有效地限制用户访问某些资源之外,是它在一定程度上对进出网络的数据进行清理。由于为了流量进出网络,必须符合有关网页的标准,而 Web 代理理解这一点,因此“带外”或非标准数据要进出安全边界要困难得多。

一些软件包,如开源软件包 Zorp 和微软的 ISA 服务器,还会代理其他协议,如 RPC——这是防火墙世界中相对较新的参与者,除了企业网络外,很少见到部署具有这种功能的防火墙。

防火墙上有时也运行其他服务

尽管在企业场景中(如本章前面列出的网络拓扑示例)防火墙、路由器和代理服务器通常是独立的设备,在较小的网络中(甚至一些较大的网络中),角色经常被合并。即使在大型企业中,在我们的分公司,如果办公室只有 50 名员工,可能没有经济意义购买三个网络基础设施服务器(防火墙、路由器、代理服务器)和三个桌面基础设施服务器(文件服务器、邮件服务器、打印服务器)!通过将我们所有的网络任务放在运行 IPCop 之类的主机上,并在一个服务器上处理我们的桌面服务,我们可以减少设备数量三分之二,并可能提高性能(因为我们可以将这些服务放在更高规格的机器上)。我们更易管理的环境需要更少的电力,减少空调,占用更少的空间。

DNS

DNS,即域名系统(www.dns.net/dnsrd/rfc/),是互联网(以及私人网络)上用来将主机名转换为 IP 地址的系统。与之前的主题一样,这是对 DNS 做的一个非常基本、简单的解释——这是为了让人对这个主题有一个基本的理解,而不是培养 DNS 专家。已经有很多关于 DNS 理论和实践的书籍(www.packtpub.com/DNS/book 就是其中一个例子),而我们的范围不包括在这里重新创造它们。

除了用于互联网访问的默认网关和/或代理服务器外,客户端还被分配了一个 DNS 服务器,它允许它们查找任何给定 DNS 域名的互联网协议地址。当连接到另一个主机时,网络客户端将向其分配的第一个 DNS 服务器发出查找请求,请求 A 记录(除非它正在连接到诸如 SMTP 这样使用自己特定记录的服务,在这种情况下是 MX)。

DNS 服务器向客户端返回一个 IP 地址,或者多个 IP 地址,然后客户端使用这些地址通过默认网关连接到站点或向代理服务器发出请求以建立连接。在许多情况下,一个网站被定义为 A 记录的一个 IP 地址,客户端将连接到该地址,但在某些情况下,通常是对于较大的站点,有几个——在这些情况下,它们将以随机顺序由响应的 DNS 服务器每次请求时返回,使用这个顺序来平衡所有 IP 地址的流量。这种技术被称为“循环 DNS”,谷歌就是使用这种技术的一个典型例子。

电子邮件使用 MX 记录来指示特定域名的电子邮件应该发送到哪里。为一个域名列出的每个 MX 记录通常都有自己的“优先级数”——惯例是最低的优先级数是最重要的邮件服务器,因此一个域名通常会设置两个(或更多)MX 记录,一个主要的(例如,优先级为 10)用于主邮件服务器,一个次要的(例如,优先级为 50)指向备用 MX 服务器,以防主要服务器宕机。

在 Unix 或 Linux 系统上使用 dighost 命令(或安装了 cygwin 工具包的 Windows 系统),或者在 Windows(或 Unix/Linux)中使用 nslookup 命令,我们可以检索给定域名的 IP 地址列表以及(使用最新版本的 host 命令)其 MX 记录,如下所示:

james@horus: ~ $ host google.com
DNSIP address, retrievinggoogle.com has address 72.14.207.99
google.com has address 64.233.187.99
google.com mail is handled by 10 smtp2.google.com.
google.com mail is handled by 10 smtp3.google.com.
google.com mail is handled by 10 smtp4.google.com.
google.com mail is handled by 10 smtp1.google.com.
james@horus: ~ $

dig命令(它将要检索的记录类型作为第一个参数输入)也可以用来进行故障排除,如下所示:

james@horus: ~ $ dig mx google.com
; <<>> DiG 9.3.1 <<>> mx google.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64387
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;google.com. IN MX
;; ANSWER SECTION:
google.com. 118 IN MX 10 smtp3.google.com.
google.com. 118 IN MX 10 smtp4.google.com.
google.com. 118 IN MX 10 smtp1.google.com.
google.com. 118 IN MX 10 smtp2.google.com.
;; ADDITIONAL SECTION:
smtp3.google.com. 209 IN A 64.233.183.25
;; Query time: 21 msec
;; SERVER: 10.1.1.6#53(10.1.1.6)
;; WHEN: Sun Nov 20 19:59:24 2005
;; MSG SIZE rcvd: 132
james@horus: ~ $

作为循环 DNS 的完美演示,我们可以看到 MX 记录每次查询时以不同的顺序返回(2341,3412),从而在它们之间分散负载。

在 Windows 中,nslookup命令可以以交互模式用来查找 MX 记录(或 A 记录,如果没有设置显式记录类型,则为默认值)如下所示:

DNS

在排除防火墙和网络问题时,这些知识通常会很有用,因为 DNS 故障是可能导致连接失败的许多问题之一(也是在配置错误的 Active Directory 环境中几乎是故障的主要原因)。了解 DNS(以及如何手动查找 DNS 记录)和如何使用ping命令是 IT 专业人员用于调试连接问题的工具包中的前两个工具。ping命令通常用于排除连接问题,尽管经常使用的ping所使用的第四层协议 icmp 在客户端或目的地处被防火墙屏蔽(www.microsoft.com是一个丢弃 ICMP 数据包的网站的例子),因此ping无响应并不总是可以作为连接问题的明确指标。

IPCop 包括一个 DNS 服务器,默认设置为作为解析名称服务器,即它将接受来自客户端的 DNS 请求并在外部解析,将结果传递回本地网络上的客户端。与 Web 代理服务器一样,当解析名称服务器具有域名/IP 对应关系的缓存副本时,它可以将其传递回客户端,而无需完全解析,从而加快请求速度。客户端也可以配置通过防火墙向外部 DNS 服务器进行自己的 DNS 查询,但这是低效的,会通过防火墙打开不必要的端口,并且通常不建议这样配置。

DHCP

DHCP(动态主机配置协议)是 BOOTP 的后代,用于自动配置网络上的主机的网络地址和其他配置信息,如网关和 DNS 服务器信息。DHCP 使用广播流量——简单地说,配置为使用 DHCP 的客户端在连接到网络时会向地址 255.255.255.255(广播地址,转发到同一子网中的每个主机)发送一个带有 DHCPDISCOVER 消息的 UDP 数据包,请求 DHCP 服务器。

根据客户的要求,网络段上的 DHCP 服务器将发送一个 DHCPOFFER 请求,指定它向客户端提供的 IP 地址。一般来说,一个客户端只会被一个服务器提供一个 IP 地址(在同一网络段上运行多个 DHCP 服务器的情况非常罕见),但如果有多个服务器的情况,客户端将选择其中一个提供的 IP 地址。然后客户端向广播地址返回一个 DHCPREQUEST 消息,请求它选择的配置。如果一切顺利,服务器将返回一个 DHCPACK 消息给客户端,确认它可以获得分配的配置信息。

除了 IP 地址外,DHCP 还能够分配各种其他配置信息,最常见的几个选项包括 DNS 服务器、WINS 服务器、网关、子网掩码、NTP 服务器和 DNS 域名。IPCop 包括一个 DHCP 实现,默认配置为向客户端分发使用 IPCop 服务器进行互联网访问所需的信息,并使用动态 DNS 来通过 DHCP 请求发送的主机名填充 DNS 服务器,以便在客户端通过 DHCP 请求配置时为网络上的客户端设置 DNS 条目。

在 Windows 上,可以使用ipconfig /a命令查看 DHCP 配置(或静态网络配置),在 Unix/Linux 上,可以使用ifconfig -a命令。在 Windows 上,ipconfig命令还允许用户释放和更新 DHCP 信息。

总结

在本章中,我们涵盖了一些关于互联网的起源,一些设计考虑因素以及防火墙的重要性以及其在整个体系中的适应性。我们还了解了基本的网络,包括网络层的重要性及其功能,一些不同类型的防火墙以及防火墙可能运行的一些其他服务。

到目前为止,我们应该对 IPCop 中使用的协议和技术的范围有相对良好的理解。我们可能还发现了一些你之前没有听说过或不理解的技术,不用担心,这是件好事!如果有兴趣,可以根据这里总结的信息和提供的其他资源链接来学习这些技术。

第二章:IPCop 简介

在我们看如何使用 IPCop 之前,我们需要首先了解 IPCop 的背景以及它构建的工具。我们还需要查看这些工具分发的许可证,因此也需要查看 IPCop 许可证。对于那些想要直接进行安装和配置并且已经了解开源软件、GPL 和 Linux 背景的人来说,本章将不太有益。然而,我们还将在本章中看到选择 IPCop 的原因以及它具有的独特功能,这在决定是否以及如何部署 IPCop 时将会有用。因此,这非常重要。

自由和开源软件

许多人可能听说过几种常见类型的软件,比如免费软件,这是你被允许免费使用的软件,还有商业软件,比如微软 Windows 或 Adobe Photoshop。商业软件通常附带许可证,限制你以某种方式使用软件,并通常禁止你复制或修改它。

IPCop 是一种称为开源软件OSS)的软件类型。作为一种 OSS,IPCop 是根据称为GNU 通用公共许可证GPL)的许可证发布的。

与所有根据此许可证和其他类似许可证分发的开源软件包一样,IPCop 为其用户提供了一些基本的自由。

在 GPL 下,IPCop 用户被赋予阅读、修改和重新分发软件源代码的自由。唯一附加的条件是,如果你决定重新分发这个软件(例如,如果你复制了一份带有一些改进的 IPCop 并把它给朋友),你必须以相同的许可证提供修改后的作品,并提供源代码的访问权限。当我们看 IPCop 的历史时,我们会发现这对于那些想要将项目引向新方向的用户非常有益。

GPL 是最知名的开源许可证之一。然而,还有许多其他许可证,比如伯克利软件分发许可证BSD 许可证)。每个许可证在给予你的自由方面略有不同,但它们都必须至少允许阅读、修改和重新分发源代码,才能被开源倡议认为是开源许可证。

什么是源代码?

源代码是由计算机程序员用人类可读的语言编写的一组指令。然后这组指令通常由编译器转换成计算机可以运行的可执行程序。对于像微软 Windows 和 ISA Server 这样的闭源软件,你看不到这一点。而对于像 Linux 和 IPCop 这样的开源软件,你可以看到!

开源倡议是一个非营利组织,致力于推广开源软件,并帮助开发人员创建和使用开源许可证。它还维护着所有被接受为开源的许可证的列表。

您可以在开源倡议组织的网站www.opensource.org/找到所有被认可的许可证。

GPL 本身可以在 GNU 网站www.gnu.org/copyleft/gpl.html上找到。

除了是最知名的开源软件许可证外,GPL 也是最知名的开源软件 Linux 内核选择的许可证,这是 IPCop 的关键组件。Linux 内核的发布是在 GPL 下,这使得像 IPCop 这样的系统成为可能。Linux 内核是 Linux 操作系统的核心(比如 GNU/Linux 的各种变体)。内核由一个由世界各地的大多数志愿者组成的开发团队开发,但也包括许多依赖 Linux 进行业务的公司支付的开发人员,如红帽 Linux、Canonical、IBM、Novell 和 Sun Microsystems。

正如我们现在所知,创建开源软件意味着让用户能够修改我们的源代码,然后重新分发他们的修改。这就是 IPCop 所做的。IPCop 采用了 Linux 内核以及大量其他工具,将它们捆绑成一个软件的 distribution,并使用户能够创建一个功能丰富且易于使用的防火墙系统。这就是许多开源软件的创建方式,也是 OSS 背后哲学的一种功能。

分支 IPCop

不仅可以在 OSS 上构建软件,还可以进一步采取其中一个组件(或一组这样的组件——称为 distribution)并修改它,使其成为比原始开发人员设计更适合您需求的东西。例如,如果某个软件的用户和开发人员决定他们希望软件有更多功能,或者希望软件朝另一个方向发展,他们完全有自由这样做。这就是 IPCop 发生的情况。

在创建 IPCop 之前,SmoothWall 存在(www.smoothwall.org)。目前,SmoothWall 与 IPCop 非常相似,IPCop 中的所有初始代码都来自 SmoothWall 代码。然而,SmoothWall 采用了 双重许可 来商业发布其免费防火墙的变体。SmoothWall 的商业变体具有更多功能,可能导致免费和商业软件的开发目标之间发生冲突,因为如果改进免费产品会导致非免费产品赚取更少的钱,那么改进免费产品就没有动力。

这导致了软件用户和一些开发人员之间的紧张关系。当前的 IPCop 开发人员决定基于已经投入到 SmoothWall 中的工作来开发系统,但他们不想遵循 SmoothWall 当前的理念和方向。因此,决定创建软件的一个新分支——fork 它。分支背后的主要原因之一是希望创建一个具有商业 SmoothWall 中可用功能的防火墙,然后将其作为纯非商业的 OSS 发布。

像这样创建软件的新分支因非常明显的原因被称为 forking。用户和/或当前开发人员通常通过对源代码进行快照并决定朝不同方向开发来进行分支。他们添加不同的功能,可能删除一些对项目不重要的东西,从而创建了另一种替代软件,通常与原始软件竞争,或者为其提供替代品。

其他 forked 软件的例子包括 GNU 工具和 Linux 的许多不同发行版,如 Mandrake、Debian、Slackware、Ubuntu 等。它们中的一些是源自它们自己对 Linux 内核和 GNU 工具的打包,一些是源自彼此。例如,Adamantix 和 Ubuntu 源自 Debian,它们具有不同的设计目标,与彼此和其父软件不同。

分支也是商业软件经历的一个过程——例如,Windows 操作系统的许多不同版本最终都是从相同的源代码 fork 出来的。通过 fork 源代码并开发 Windows 的 server 版本(如 Windows 2003 Server)和 client 版本(如 Windows XP),微软能够更好地为每个版本提供适合该版本目的的功能,并为此收取价格。

OSS 有着丰富的多样性,如果没有涉及许可的自由,IPCop 本身就不会存在,因为它源自 GNU 工具、Linux、SmoothWall 和许多其他开源软件包。这绝不是一个详尽的清单,参与创建这样一个系统中所有代码的开发人员数量非常难以估计。

IPCop 发布的许可证意味着,如果公司选择在内部使用该系统,并随后决定对其进行一些更改,它是可以自由进行的——根据许可证,修改是一项理所当然的权利,您没有义务重新分发仅在内部使用的更改。如果您决定重新分发您的修改(给朋友、合作伙伴或其他公司),唯一要求的是您给予您的用户与您最初收到的相同的权利;即,如果您决定发布软件,则必须根据 GPL 发布软件。许可证甚至规定可以收取(合理的)分发费用以支付成本(尽管您重新分发给的人可以自由地向任何人免费重新分发软件!)。这给软件增加的权力很难衡量,但很容易看出这可能是有益的。

OSS 中分叉的例子是 IPCop 从 SmoothWall 中分叉出来。逻辑上没有什么可以阻止再次发生这种情况,作者认为,软件的多样性和选择是一件好事。

如果我们还没有掌握这个许可证的力量,一个很好的例子就是高度安全的安装。在需要完全控制源代码并能够随意修改软件以适应安全环境的情况下,拥有 IPCop 及其源代码可以为您提供一个功能齐全的防火墙,您可以基于此创建一个更定制的系统,以确保网络安全。这可以是对系统底层的更改,也可以是对配置选项的更改,甚至是添加和删除防火墙功能。由于没有重新分发的要求,您可以决定将其完全保密,并且只需要少量的开发投资就可以拥有一个内部系统。有很多软件选项可以提供这种功能,这是 IPCop 等 OSS 相对于市场上的闭源和商业竞争对手的最大优势之一。

如果您不需要这种灵活性,您仍然可以从使用这种灵活性的开发人员中受益,以创建一个非常有用的系统。开放的开发过程的性质是代码的开放性的直接结果,能够接触到项目(如 IPCop、Linux 内核或 Apache Web 服务器)的大量人员意味着这些软件包可以被高度打磨并且保持无 bug,而商业产品的开发团队可能不会如此勤奋。

IPCop 的目的

IPCop 是一种非常易于使用的小型办公室/家庭办公室(SOHO)网络防火墙。它提供了大多数您期望现代防火墙具有的基本功能,最重要的是它以一种高度自动化和简化的方式为您设置了所有这些功能。很容易启动和运行 IPCop 系统,几乎不需要任何时间。

对于 IPCop 中的功能,我们通常需要为高端防火墙系统付费,或者使用一系列其他工具进行组合。IPCop 使用了一些强大的工具,并为我们创建了一个预构建的软件包。

IPCop 的创建是为了填补市场上的空白,即小型网络用户需要一些通常只有大型网络才能负担得起的功能,就专业知识或金钱而言。本书希望提供额外的专业知识,使商业产品的适当替代品真正发光,并介绍如何在多种不同的场景中设置 IPCop。

构建在稳定组件上的好处

IPCop 很可能会作为操作系统的附加组件开发,就像 Shorewall 是要安装在 Linux 系统上的应用程序,或者 ISA 服务器是要安装在 Windows 系统上的应用程序,这样它就成为了一个可以安装在现有设置上的应用程序。然后你就需要维护软件包下面的系统。

这种缺点是,如果你的服务器只是作为网络防火墙,你需要对 Linux 操作系统有足够的基本了解才能安装软件,如果你想让它表现良好,你需要配置操作系统和 IPCop 本身。然而,由于 IPCop 安装为自己的操作系统,你不需要真正了解 Linux 就能使用系统。在稳定性方面,这意味着 IPCop 开发人员可以集中精力在一个平台上进行开发,并且可以完全确信他们控制着这个环境。他们完全负责配置这个环境,当涉及支持时,他们可以相对确信用户没有通过错误配置操作系统来破坏系统,如果他们这样做了,那么希望他们了解后果,要么正确地做,要么了解为什么在他们摆弄后 IPCop 会崩溃!

稳定性、安全性、可靠性和易用性可能是较小网络中最重要的因素,也是 IPCop 似乎擅长的领域。作为基于 Linux 内核 2.4 系列构建的系统,该系统具有显著的安全性、稳定性和可靠性。此外,安装了在世界各地不同规模网络中使用的工具,意味着有大量用户群体,这些系统经过了充分测试,并且有许多个人和公司在使用它们,报告了它们的错误,并依赖它们进行业务。

Linux 内核是最大的开源软件之一,包括来自世界各地众多开发人员开发的数百万行源代码。Linux 具有许多现代操作系统功能,如对无线和蓝牙设备的支持,以及最新的加密网络通信。正如我们将在本书的过程中看到的那样,其中一些功能对 IPCop 开发人员和因此受益于 IPCop 分发中可以包含的功能的用户来说是非常宝贵的。IPCop 的开发人员不必过多担心底层网络通信,因为他们已经在现有的内核代码之上构建了 IPCop,这些代码管理着这一切。

这种层叠——软件叠加在其他软件之上——使开发人员能够集中精力在他们最擅长的领域,对于 IPCop 开发人员来说,这个领域就是制作易于使用的防火墙。你可能会发现这是一个熟悉的概念,来自我们在上一章中介绍的 OSI 模型的网络层叠。这种互操作性,无论是在应用程序堆栈、操作系统还是一组网络协议中发生,对于构建可靠、安全的系统至关重要。开放标准,从 HTTP 等网络协议到开放文档格式等文档格式,对此至关重要。

我们提到的其他一些软件包括 Apache 和 OpenSSH。Apache 是用于配置 IPCop 的页面的网络服务器,它为世界上一些最大的网站提供动力。根据最新的网络服务器调查,Apache 几乎在全球 70%的网络服务器上使用(news.netcraft.com/archives/2005/11/07/november_2005_web_server_survey.html)。

因此,Apache 看起来是一个非常稳定和可靠的系统,并且在开发 IPCop 用户界面时给予了开发人员非常大的灵活性,这个界面几乎完全基于 Web。除了设置过程之外,没有真正的需要超越 Web 界面。通过结合 Apache 服务器的内置功能和 IPCop 自己的脚本,开发人员可以在最小的努力下完成非常高级的任务。然后,这种稳定性和易用性会透明地转移到用户身上。用户完全不知道 Apache 是系统中正在工作的一部分,用户只需具备浏览网页所需的知识就可以配置防火墙。由于这正迅速成为一项必不可少的技能,并且已经加入阅读和写作作为学校课堂教授的技能之一,这使得 IPCop 非常易于接近。使用这样易于接近的技术是 IPCop 努力实现其目标的众多方式之一。

在没有全职 IT 人员的网络和那些 IPCop 只占很少时间的员工的网络中,易用性变得至关重要。大多数 IPCop 用户不想了解创建和维护会话状态规则进行数据包过滤的内部工作原理。IPCop 旨在使这种知识变得不必要。前端允许我们快速配置防火墙的基本和高级功能,而无需了解底层系统的深入细节。在这种易用性的基础上,还有一些强大的配置选项,允许我们设置相当高级的配置,使用 IPCop 构建的工具要难得多。虚拟私人网络和服务质量控制是这方面的绝佳例子——单独使用提供这些服务的软件包有非常陡峭的学习曲线,但当它们被整合到 IPCop 中时,它们相对容易配置。

IPCop 填补的空白

防火墙有各种不同级别可用。在光谱的一端,有企业系统,如 Check Point 和 ISA,可以执行各种强大的功能,并且可以控制各种规模和拓扑结构的网络的流量。在另一端,我们有在主机上运行的个人防火墙,如 Agnitum、ZoneAlarm 和 Windows XP Service Pack 2 中内置的防火墙,可以保护单个机器。还有许多提供基本防火墙功能的家用路由器。这让我们面临一个问题,即 IPCop 适合哪种角色,是否符合我们的需求。

IPCop 最适合,正如我们之前讨论的那样,用于 SOHO 网络。如果我们的网络相对较小,只有一个互联网连接,比如家庭网络或小型企业,或者我们有几个站点,各自有独立的互联网连接,需要在中型企业中连接在一起,那么我们肯定可以从使用 IPCop 来处理这些连接中受益。IPCop 的另一个重要方面是成本。由于 IPCop 本身是免费的,我们防火墙的唯一费用是硬件成本(通常是低规格的机器)和管理机器的成本(由于易于使用的界面,成本相对较低)。对于较小的网络来说,这是非常有吸引力的。

像 ISA 服务器和 CheckPoint 这样的系统非常昂贵,需要大量的背景知识才能正确配置和保护。相比之下,IPCop 几乎默认作为一个非常安全的路由器和防火墙。更大型的企业系统也有更高的系统要求,通常对于较小的网络来说是过度的。设置这些系统所需的费用和时间不太可能为较小的企业网络带来良好的投资回报。IPCop 还受益于简单性,而使用通用操作系统(如 Windows 甚至带有通常不必要的服务的 Linux 发行版)时无法获得。IPCop 有特定的角色,因此许多服务和其他应用程序可以被移除,使您留下一个专业化的系统。

在另一端,个人防火墙如 Agnitum、ZoneAlarm 等提供的防火墙。通常在 SOHO 办公室中,使用 Windows Internet Connection Sharing(或廉价路由器)来完成 IPCop 经常承担的角色。

这些防火墙通常提供基本功能,并且不允许我们创建 VPN 或从单个集中设备保护多台机器。当考虑到 IPCop 提供的功能,如创建 DMZ、入侵检测系统和网络服务时,您会发现简单的基于主机的系统可能不足以满足我们的需求,而 IPCop 的强大功能以及易用性成为一个引人注目的选择。

目前,IPCop 最常见的用途是在具有一定防火墙和 Linux 知识的人中,但不想花时间从头开始设置防火墙。这绝不是 IPCop 的唯一用途。不需要真正的 Linux 或防火墙经验,本书的目的是以易于理解的方式介绍 IPCop,使具有最基本计算机知识的用户能够快速上手并设置一个简单的防火墙来保护他们的网络。

IPCop 的特点

在本书中,我们将讨论 IPCop 的 1.4.10 版本,这是写作时的最新版本。由于 IPCop 不断在开发中,新功能将被添加,其中一些功能可能会发生变化。

Web 界面

许多防火墙都配备了混乱复杂的用户界面,需要大量的培训和经验才能熟悉。例如,ISA 服务器界面以难以理解而闻名,通常界面设计并不是为了使常见任务变得简单易行。

通常,像 ISA 服务器和 BorderWare 这样的专有防火墙会将端口转发等常见功能重新命名,并将其称为完全不同的东西,即使对于具有防火墙经验但不了解特定用户界面的管理员来说,也不会让生活变得更轻松。举个简单的例子,BorderWare 将端口转发称为内部代理,ISA 称为发布,而 DrayTek 的一系列(可靠且功能齐全,但配置有些棘手)路由器将其称为虚拟服务器。在某些情况下,这些定义是有原因的(应用层防火墙将代理流量,正如我们之前发现的那样),但即使有理由,也并不会让生活变得更轻松!

我们将仔细研究如何设置 IPCop,因此将花费大量时间在界面内。因此非常幸运的是,界面非常易于使用和直观。IPCop 开发人员决定使用基于网站的界面内置系统,因此对于大多数人来说,界面是一个熟悉的环境,因为几乎不太可能有人设置防火墙而从未使用过网站。

Web 界面

仅仅使用网站作为图形用户界面GUI)是不够的。界面仍然必须设置得易于理解和访问所有常见功能。我们将要查看的大多数功能将包括填写简单的表单,这是一种有效且易于管理的界面。IPCop 在使用这样的界面方面并不独特。许多设备,如 Linksys、DrayTek 和 D-Link 制造的 SOHO 电缆路由器,以及从思科设备到 HP Procurve 交换机等许多高端产品都有类似的设置,但很少有这些产品包含 IPCop 提供的所有功能和易用性。

网络接口

IPCop 提供最多四个网络接口,每个接口通常连接到一个单独的网络。对于大多数 IPCop 部署来说,这是足够的数量,因为在中小型网络中很少有许多网络汇聚在一个点上,但是 IPCop 可以通过使用虚拟专用网络(VPN)连接到更多的网络。可用的四个网络被赋予标识颜色以便于管理。

绿色网络接口

IPCop 部署的绿色网络段代表内部网络,并且是隐式信任的。IPCop 防火墙将自动允许所有从绿色段所有其他段的连接。

绿色段始终是以太网网络接口卡(NIC),不支持在此容量上使用任何其他设备。本地网络可能只是一个插入绿色接口的小型集线器,也可能包括几十个交换机、到另一个站点的二层桥接器,甚至是路由器。

注意

绿色接口上的寻址

绿色网络应该使用私人地址范围(私人地址范围可以在 RFC1918 中找到)。虽然可能使用公共可寻址地址范围来设置这个,但默认的 IPCop 配置是使用 NAT 来仅暴露一个 IP 地址,因此,在绿色网络段使用公共地址范围将是没有意义的,因为 IPCop 会将其视为私人地址范围!使用 IPCop 作为路由防火墙(而不是执行 NAT 的防火墙,这是默认配置)需要更高级的配置,并且无法通过 GUI 完成。

通常,一个接近这种复杂性的网络会选择使用基于 IPCop、另一个免费软件包或商业软件包构建的一个或多个防火墙或路由器,但是有足够的网络知识和几个硬件平台,可以使用 IPCop 构建一个复杂、安全的网络拓扑。

红色网络接口

与绿色网络接口类似,红色网络接口始终存在。红色网络接口代表互联网或不受信任的网络段(在更大的拓扑结构中)。

IPCop 防火墙的主要目标是保护绿色、蓝色和橙色段以及它们上的网络主机免受红色段上的流量、用户和主机的影响。红色网络段通常有良好的防火墙,并不会向内部网络段开放大量端口(如果有的话)。默认为无。

注意

红色接口上的寻址

红色段几乎总是使用由您的互联网服务提供商分配的公共地址范围。互联网服务提供商使用私人地址范围来设置其内部网络的大部分,并在其网络和暴露在互联网上的骨干网之间执行 NAT 是可能的(但不太常见)。

GPRS 和 3G 网络通常会这样做,一些有线 ISP 也会这样做。如果有疑问,请咨询您的 ISP 或检查已连接到您的 ISP 的现有计算机或路由器。网站www.dnsstuff.com可以用来WHOIS一个 IP 地址以检查注册情况,如果您不确定一个 IP 地址是私有还是公共,这是一个检查所有权的绝佳方式。

红色网络段是 IPCop 支持硬件的唯一网络段,除了以太网网络接口卡之外。红色网络段可以是静态分配的以太网网络接口,也可以是使用 DHCP 分配的,也可以是 USB ADSL 调制解调器,ISDN 卡,甚至是连接到公共交换电话网络的拨号模拟调制解调器。

IPCop 在这个接口上支持的其他硬件接口包括:

USB 和 PCI ADSL 调制解调器

DSL是一种技术,允许宽带、高速互联网或网络信号通过现有的铜线路发送。这种形式的互联网供应非常受欢迎,特别是在传统上对像有线这样的服务的接受程度较低的国家,因为它不需要昂贵的挖掘和重新布线街道和建筑物以安装新的电缆或网络基础设施。DSL 的一个缺点是 DSL 信号的相对短的传输距离,需要靠近电话交换机,尽管随着技术的进步,这个限制正在增加。

IPCop 将允许使用 DSL 服务(包括SDSLADSL)的用户直接将某些品牌的调制解调器连接到 IPCop 防火墙。有三种主要的方法可以将 IPCop 防火墙连接到 DSL 线路。

第一个是通过以太网将 IPCop 主机连接到 ADSL 调制解调器。通常来说,这是最稳定的方式,但设置起来更加困难。许多基于 Conexant 芯片组的路由器都是完整的路由器,通常设计为在网络中充当 NAT 路由器。这些设备通常有一个以太网端口(插入交换机或集线器)或几个以太网端口(和一个小型内置交换机),并为网络中的客户端分配私有地址(通常在 10.0.0.0/8 范围内),充当防火墙。连接 IPCop 主机到这些路由器的后面而不更改默认配置是一个坏主意,因为这样做就相当于进行两次网络地址转换。

虽然 NAT 在执行一次时经常会破坏协议,但执行两次几乎是一种确保让您头痛的网络方式。除了由于在您和互联网之间基本上有两个网络而引起的路由问题之外,很难通过这些路由器实现诸如 BitTorrent、SIP、在线游戏或传入服务(如 SMTP 邮件)的端口转发,因为每个端口转发必须配置两次。因此,这些路由器必须被配置为充当 NAT 网关,而是回退到像正常路由器一样的行为。如果没有多个 IP 地址,这是不可能的,这使得家庭用户或企业如果希望使用 IPCop 而没有来自 ISP 的固定 IP 地址池,陷入了困境!

因此,一些基于以太网的 ADSL 路由器具有一个称为PPP 半桥的功能。这个功能允许通过以太网(即您的 IPCop 防火墙)连接的设备获取来自 ISP 的公共IP 地址,并禁用路由器充当防火墙或 NAT 网关。在这种模式下,ADSL 路由器在认证期间获取到的 IP 地址,并通过 DHCP 分配给第一个请求 DHCP 地址的设备。这个功能应该在您的 ADSL 手册中有所说明。

配置 ADSL 的第二种方法是使用直接连接到 PC 或防火墙的 USB ADSL 调制解调器。虽然可能最简单(因为它需要最少的网络知识,没有复杂的布线或硬件安装),但这些调制解调器是最便宜、最不可靠的,并且在所有三种方法中性能最差。

配置 ADSL 的第三种方法是使用内部 ADSL 或 SDSL 卡,占据防火墙、PC 或服务器内的一个 PCI 插槽。这可能是配置 ADSL 最不常见的方法。

IPCop 在一定程度上支持所有三种:在可能的情况下,作者强烈建议使用以太网 ADSL 调制解调器,配置为使用静态地址集的路由器,或者(如果这不可能)使用 DHCP 本地或使用类似 PPP 半桥的解决方案。以下是 IPCop 支持的设备列表:

  • 阿尔卡特 SpeedTouch 系列 USB ADSL 调制解调器

  • ECI USB ADSL 设备(包括 BT Voyager 调制解调器,Zoom 5510 ADSL 调制解调器和其他几十种类似设备)

  • BeWan USB/PCI ADSL 调制解调器(USB 调制解调器的 ST 系列和 PCI 调制解调器的 ST 系列)

  • Conexant USB 调制解调器(包括 Zoom 5510,DrayTek Vigor 318 和其他几种)

  • Conexant PCI 调制解调器

  • Amedyn ADSL 调制解调器(HCL 只列出了 Zyxel 630-11,Asus AAM6000UG USB)

  • 3com 3CP4218 USB ADSL 调制解调器

ISDN 调制解调器

综合业务数字网ISDN)是一种(慢速)宽带互联网接入方式,早于 ADSL 或电缆连接。 ISDN 本质上是一种数字电路电话线。在广泛采用电缆、DSL 和卫星宽带之前,ISDN 经常被使用,并且在一些分支办公室、远程办公和没有 DSL、电缆或卫星可用性的地区仍然被使用。

IPCop 支持大量 ISDN 调制解调器(1.4.10 HCL 列出了 34 个)。完整列表可在 IPCop Wiki 网站上找到(www.ipcop.org/modules.php?op=modload&name=phpWiki&file=index&pagename=IPCopHCLv01)。

模拟(POTS)调制解调器

IPCop 应该支持任何硬件模拟(拨号)调制解调器。硬件设备通常通过串行端口或作为 ISA 卡连接。

使用 PCI 接口的较新调制解调器通常是基于软件的。这意味着调制解调器的某一部分工作是由连接的计算机的 CPU 通过软件执行,而不是由调制解调器本身执行。

没有执行这项工作的设备驱动程序,这些调制解调器将无法工作,由于通常没有为 Linux 操作系统编写的这些设备的驱动程序,它们通常被视为在 Linux 中损坏。 USB 调制解调器也应该在 IPCop 中工作。

IPCop HCL 列出了一个与 IPCop 兼容的 PCI 调制解调器,即PCI Smartlink 5634PCV

电缆和卫星互联网

一般来说,来自欧洲和美国的提供商的电缆互联网服务提供以太网调制解调器,这些调制解调器将在 IPCop 中正常工作,因为它们通过 DHCP 提供公共的可路由 IP 地址。然而,一些电缆提供商提供的 USB 调制解调器不太可能在 IPCop 中工作。卫星互联网也是如此(USB 调制解调器不太可能在 IPCop 中工作)。

橙色网络接口

可选的橙色网络接口被设计为DMZ网络(有关 DMZ 防火墙的更多信息,请参见www.firewall.cx/dmz.php)。在军事术语中,DMZ(非军事区)是不允许进行军事活动的地区,例如两个不同(和敌对)国家之间的边界。因此,在防火墙术语中,术语DMZ具有类似的含义,作为组织内部网络和互联网等外部网络之间的网络段。在这个段中,服务器受到防火墙保护,但与内部客户端隔离(因为它们有互联网暴露),后者位于更受保护的前线之后。

组织通常会将任何面向外部世界的服务放入这个不受信任但隔离的网络,比如网页服务器(为网站请求提供服务的外部客户端)或者更常见的邮件服务器(外部服务器连接以通过 SMTP 传递邮件)。

注意

橙色接口的寻址

橙色网络接口通常使用私有地址范围,因为 IPCop 执行 NAT。与绿色区域一样,路由而不是NAT的防火墙需要高级配置。

因此,DMZ 被认为是一个不受信任的网络段,仅次于红色网络接口。橙色网络段上的主机不能连接到绿色或蓝色网络段,所有从橙色网络段到这些内部网络段的流量必须通过DMZ pinholes显式允许。从红色网络段到橙色网络段的流量可以通过端口转发允许。

然而,橙色网络上的客户端不应该将 IPCop 防火墙作为 DNS 或 DHCP 服务器。这有其合理的安全原因——除了更难配置之外,为这个网络段上的 IPCop 主机提供的服务的额外暴露,会增加 IPCop 主机受到来自橙色区域攻击的风险,降低为绿色区域的客户提供安全服务的能力。

蓝色网络接口

可选的蓝色网络接口是 IPCop 相对较新的一个功能,是在 1.4 版本系列中引入的。这个网络专门设计用于一个独立的无线段。蓝色段上的主机除了通过类似于橙色网络的特定pinholes之外,无法访问绿色网络。

注意

蓝色网络段的寻址

蓝色网络几乎总是使用私有地址范围。

IPCop 还允许通过虚拟专用网络连接到绿色区域,使客户端完全访问这个网络段上的资源。

蓝色段不一定要是无线段,因为蓝色段只是另一个网络段,主机的无线连接对于 IPCop 是透明的,所以如果您在绿色区域的主机数量不够用,完全可以将蓝色段用作网络的另一个子网。

以这种方式使用蓝色区域也是分隔具有不同网络使用的主机的好方法,比如特定员工组使用的工作站子网,在公共区域或工厂车间。蓝色区域甚至可以用作网络的默认区域,管理员不希望网络上的主机自动访问网络上的每个资源,就像绿色区域一样。

在这样的拓扑结构中,IT 人员可能被分配到绿色区域以访问网络资源,而工作站可能被保留在蓝色区域,只能访问他们需要的网络区域。

简单的管理和监控

作为一个旨在易于使用的设备,如果用户每次新版本发布都需要重新安装,那对用户来说就没有太大用处。如果用户无需在任何时候登录到机器上的 Linux 控制台,那将非常有益。IPCop 的开发人员显然同意这一点,因此内置了一个简单的升级系统。这可以完全通过 Web 界面管理。然而,如果用户确实想要登录到 Linux 控制台并进行更改,可以通过连接到机器的键盘/显示器或者从本地网络(绿色接口)上的计算机使用 SSH 来简单地完成。出于安全考虑,SSH 默认情况下被禁用,必须在使用之前启用。

注意

本地控制台

在 PC 上运行 IPCop 防火墙等服务器通常会将键盘和显示器分离,因为它们很少被使用。尽管方便,但这可能会导致一些主板(和软件包)不喜欢热插拔键盘和鼠标(特别是 PS/2 连接器)。尽管显示器是热插拔的(因此您可以随意断开并重新连接显示器到 IPCop 系统),但我们建议您将 IPCop 系统连接到键盘或 KVM 开关。

将键盘分离的另一个副作用是,许多计算机的 BIOS 在启动时会停止并等待按键,如果它没有检测到连接的键盘。对于没有连接键盘的计算机,通常可以(而且确实应该)在 BIOS 配置中禁用此行为。

您还可以从同一界面备份和恢复配置,这确保了防火墙的所有常见管理任务都可以非常轻松地进行管理,更重要的是,无需了解 Linux 或 bash shell。

通过 Web 界面提供的状态,我们可以准确地了解系统的运行情况。例如,我们可以看到防火墙上当前正在运行的服务、内存和磁盘使用情况,以及流量图,如果我们对此感兴趣的话。

简单的管理和监控

再次,这些功能展示了基于 Web 的界面的强大之处,以及为什么选择了这种特定的界面。我们还可以在不登录系统的情况下快速查看重要的系统信息,而无需使用交互式 shell。

还可以使用基于 Web 的日志查看器查看日志,这意味着您可以轻松地监视系统,而无需直接登录系统。IPCop 还具有将这些日志导出到远程 Syslog 服务器以简化管理和日志聚合的功能,特别是如果您有几台设备需要监视的话。

调制解调器设置

许多家庭用户正在使用 ISDN 或 ADSL 调制解调器进行拨号(包括 USB/ADSL 调制解调器),因此 IPCop 支持它们非常重要。IPCop 支持各种常见的调制解调器,并且具有加载额外驱动程序以支持默认不支持的调制解调器的功能,这些调制解调器的配置选项相当灵活。防火墙很少支持这种方式的调制解调器和驱动程序;这是 IPCop 最独特的功能之一,也是它在 SOHO 网络中如此合适的原因之一。

调制解调器设置

服务

IPCop 为小型网络提供了各种基本服务。严格来说,将这些服务提供在本应作为网络保护机制的设备上并不是防火墙的最佳实践,但在较小的网络中,经济因素起了作用,将所有基本网络服务由一台机器提供非常有用。

Web 代理

IPCop 既可以用作代理,也可以用作防火墙。您可以轻松管理缓存并在绿色接口上配置代理。在这里,定义接口的好处变得非常明显,因为这意味着只需简单地点击复选框即可在 IPCop 上设置代理。

Web 代理

DHCP

随着网络的增长,手动为客户端分配网络配置变得非常困难,能够自动化这一过程以及管理所使用的网络地址非常重要。IPCop 中的动态主机配置协议DHCP)配置使您能够轻松为绿色接口上的客户端提供 DHCP 服务,如果您不确定如何做到这一点。通过 DHCP 进行这项操作简化了客户端的配置,这意味着大多数机器将自动连接到网络并自动获得互联网访问权限,而无需在主机上进行任何配置。

DHCP 服务,IPCopweb 代理

动态 DNS

一般来说,SOHO 用户的互联网连接将具有类似 31-34-43-10.some ISP.net 的完全合格的域名FQDN)。互联网上计算机的 FQDN 可用于与其建立连接,因此,例如,对 Google 的连接会转到www.google.com。对于家庭用户,您的 FQDN 不是像google.com这样的域名,而是您的 ISP 用来识别您来自哪个 ISP 以及您在网络上是哪个客户端的域名,并且通常会使事情对人类更加可理解。

尽管这对于 ISP 管理其客户是有意义的,但对于远程连接到像这样提供互联网连接的网络却很困难。即使您可以记住并分配您的 ISP 分配的域名,如果您希望人们能够访问您托管的服务,这仍然不是一个解决方案,因为防火墙或路由器的 IP 地址,因此 FQDN 会不时更改。

因此,许多网络使用动态 DNS。使用动态 DNS 系统,运行在连接到互联网的防火墙或客户端上的小型软件将更新互联网上的服务器(动态 DNS 服务器)与您的 IP 地址,并将固定的主机名(例如 yourname.dynamicdnsprovider.com)重定向到当前的 IP 地址。如果您连接到 IPSec VPN,或者其他服务,如 HTTP,VNC 或终端服务,或者如果客户端使用这些协议远程连接到您,连接可以建立到这个动态 DNS 主机名,并且将无缝地转到与动态 DNS 服务器更新的 IP。

动态 DNS 服务,IPCopDHCP

由于这些服务需要不断更新服务器以保持 DNS 工作的当前 IP 地址,因此使用动态 DNS 需要运行软件并不断与动态 DNS 提供商通信的计算机或其他设备。

动态 DNS 是一个在较大的防火墙产品中并不常见的功能,而且在大多数低端家用路由器中也并不常见。

动态 DNS 服务,IPCopDHCP

时间服务器

网络上的主机通常需要配置为保持相同的时间,无论是因为身份验证机制(如 Kerberos)还是仅仅为了方便。 IPCop 提供了网络时间协议NTP)服务,可用于使网络上的所有客户端保持同步。

使用 NTP,IPCop 服务器连接到互联网上的 NTP 时间服务器,从中确定正确的时间。然后使用计算机的时钟在内部保持这个时间,并作为网络内的客户端的 NTP 服务器。通过定期从上游 NTP 服务器更新,IPCop 盒可以确保时间保持在合理的准确度范围内。

通过从本地源更新,而不是让每个本地客户端从外部时间源更新,您可以使客户端相互保持准确(因此即使时间不是严格准确,您也知道所有本地客户端保持大致相同的时间,这对于日志审计和 Kerberos 等重要)。最重要的是,它还减少了 NTP 服务器的负载,这些服务器为您提供免费服务!

有关如何配置客户端操作系统与 NTP 服务器通信的信息可以在这里找到:

时间服务器服务,IPCop 动态 DNS,设置

高级网络服务

流量整形和入侵检测是相当先进的网络服务,我们不太希望在大多数 SOHO 设备中看到。IPCop 不仅提供了这些功能,而且使它们非常易于管理,当我们开始配置 IPCop 时,我们将看到这些相当复杂的系统如何被轻松维护。

高级网络服务

端口转发

这是一个在从 SOHO 到大型企业的防火墙中非常常见的功能。IPCop 的好处有两个。首先,我们没有任何限制可以添加的转发数量,其次设置非常容易。对于一些 SOHO 设备,我们不仅在可以转发的端口数量上有限制,而且通常还会发现围绕它的非常复杂的配置。企业系统本质上是复杂的,在这个特定功能中,复杂性被加剧。

端口转发

正如我们所看到的,IPCop 防火墙对客户端来说既是邮件服务器,又是 Web 服务器,但在这个示例配置中,端口 25 和 80 的连接实际上被转发到端口转发菜单中配置的服务器。在 IPCop 配置中,这些服务器可能位于橙色区域。

端口转发

虚拟私人网络

这使您能够通过(虚拟)私人链接加入更多的互联网网络。这是 IPCop 的主要功能之一,这意味着它不仅可以用于 SOHO 网络,还可以用于中型企业。IPCop VPN 实现的细节将在后面的章节中进行彻底讨论。

虚拟私人网络

ProPolice 堆栈保护

IPCop 已经构建为使用 ProPolice,这是一种机制,用于保护防火墙上运行的服务免受通过互联网进行攻击。ProPolice 提供的堆栈保护是一种相当有效的机制,可以防止网络服务中常见的一种特定类型的漏洞。

为什么选择 IPCop?

在评估 IPCop 在我们环境中的使用时,我们应该看一下它提供的功能,这可以从我们刚刚看到的功能列表中看出。然后,我们需要确定它是否将是我们网络的最有效解决方案。通常对于中小型网络来说,IPCop 非常有益,并且可以极大地简化网络管理。然而,对于非常大型的网络,我们可能会发现 IPCop 不够。重要的是要弄清楚我们的网络将如何组合在一起,然后选择 IPCop,如果有它可以适应的角色。对于 SOHO 网络来说,这可能是一个非常简单的拓扑结构,可能需要很少的思考。在较大的网络中,IPCop 可能在基础设施内的特定角色中有部署的空间,例如作为关键远程网络的网关设备,如分支办公室。

总结

在本章中,我们看了一下 IPCop 中可用的功能集。我们对 IPCop 究竟能做什么有了一个概念,并且结合上一章的知识,我们知道它作为防火墙的表现如何。我们现在也对 IPCop 可能有用的情况有了一个概念,以及我们需要理解什么才能使用它。如果我们对任何主题都是新手,一些截图可能看起来有点复杂。当我们逐步了解这些功能时,一切都会被解释清楚,以便我们充分理解每个选项,并知道我们是否需要配置特定区域以及我们希望如何设置它。对于那些对技术更熟悉的人来说,这可能已经为他们提供了 IPCop 中一些功能如何工作的概述。

第三章:部署 IPCop 和设计网络

现在我们了解了 IPCop 作为一个与任何其他系统不连接的防火墙的功能,我们需要开始考虑它如何连接到它们,以及对我们有什么影响。正如你现在可能意识到的那样,部署 IPCop 的范围是相当广泛的,特别是与 Linux 的知识和开源软件的灵活性结合在一起,即使是一个 IPCop 盒子的可能排列方式也是相当无限的!也就是说,大多数网络使用的功能核心,在所有这些排列中,有一些核心网络布局可能在大多数 IPCop 部署中是常见的。

因此,我们在这里要做的是概述部署 IPCop 的几种常见方法以及这些拓扑结构背后的动机,这取决于我们想要部署哪些 IPCop 组件。

接口之间的信任关系

正如我们现在了解的那样,IPCop 支持的四种网络接口——绿色、红色、蓝色和橙色——它们之间有不同级别的信任。这里有一个简单的表格,概述了允许从哪个接口到哪个接口的流量。这个表格和其中包含的知识应该成为我们规划的基础,当考虑使用多少个接口以及用途时。这基本上是 IPCop 管理指南中的流量流动图表。

从接口 到接口 状态 如何访问
红色红色红色红色 防火墙橙蓝绿 关闭关闭关闭关闭 外部访问端口转发/ VPN 端口转发/ VPN 端口转发/ VPN
橙色橙色橙色橙色 防火墙红蓝绿 关闭打开关闭关闭
蓝蓝蓝蓝 防火墙红橙绿 关闭关闭关闭关闭 蓝色访问蓝色访问蓝色访问 DMZ 针孔/ VPN
绿绿绿绿 防火墙红橙蓝 打开打开打开打开

在可视化流量通过 IPCop 防火墙的方式时,我们可以将其看作是一个巨大的十字路口,中间有一个交通警察(字面上就是 IP Cop——因此得名!)。当一辆车(在网络术语中,一包数据)到达十字路口时,警察根据 IPCop 使用的路由表决定数据包应该朝哪个方向前进,并将其推向适当的方向。

在绿色客户端访问互联网的情况下,我们可以从前面的表格中看到这种访问是打开的,所以警察允许流量通过。然而,在其他情况下,情况可能并非如此。例如,如果蓝色客户端尝试访问绿色段上的客户端,警察可能会允许流量通过,如果它通过 VPN 或通过 DMZ 针孔——但如果蓝色段上的客户端没有这些东西明确允许流量通过,它就会被阻止。汽车被拦下,车上的人成了虚拟牢房的受害者!

请注意,当我们说明 IPCop 配置时,红色接口位于最上方(北),橙色接口位于左侧(西),蓝色接口位于右侧(东),绿色接口位于底部(南)。有了这四个接口,它看起来像这样:

接口之间的信任关系

改变 IPCop 功能

与 IPCop 防火墙的许多行为方面一样,可以改变防火墙规则的行为,以定制 IPCop 以满足默认规则无法满足的拓扑结构。在防火墙规则的上下文中,自 1.4 系列发布以来,IPCop 就有一个文件允许用户专门添加自己的防火墙规则(/etc/rc.d/rc.firewall.local)。自 1.3 版本以来,已经有了 iptables 链,CUSTOMINPUT, CUSTOMFORWARD,等,允许手动添加 iptables 规则。

具体使用 iptables 超出了我们的范围,但我们建议感兴趣的读者阅读:

Linux iptables HOWTO 网址:www.linuxguruz.com/iptables/howto/

拓扑结构一:NAT 防火墙

我们的第一个拓扑结构是许多市场上存在的 NAT 防火墙的即插即用替代品。在小型办公室和家庭中,诸如 D-Link、Linksys 等公司销售的嵌入式 NAT 防火墙经常被部署,以提供小型网络经济有效的互联网访问。诸如Internet Connection Sharing(有关 Microsoft 的 Internet Connection Sharing 的更多信息,请参见www.microsoft.com/windowsxp/ using/networking/learnmore/default.mspx),这是自 Windows 98 以来内置在客户端版本的 Windows 中的一种组合 NAT 防火墙、DNS 代理和 DHCP 服务器,也经常被用于允许一个带调制解调器或网络接口的 PC 充当其他客户端的网络网关。在这里,我们将考虑ICS,因为这样的拓扑结构与 ICS 实际上是替换以前提到的 Linksys 或 NETGEAR 型号路由器所需工作的超集。我们从这些路由器之一迁移到 IPCop 的过程将是相同的,只是需要在客户端上停用 ICS 软件——如果我们移除路由器,这是不必要的,路由器可以保持配置不变(和/或作为备份,或在其他地方重复使用)(有关在不同 Windows 版本上实施(因此,停用)ICS 的更多信息,请参见www.annoyances.org/exec/show/ics)。

这样的拓扑结构与 ICS 可能看起来像这样:

拓扑结构一:NAT 防火墙

这样的解决方案虽然便宜和方便,但通常不具备可扩展性或可靠性,并且安全性较差。它们使工作站面临不必要的安全风险,提供有限的吞吐量,并且经常不可靠,需要频繁重启和死机。

与软件防火墙一样,网络防火墙被设计为工作站和互联网之间的屏障。通过将其中一个工作站直接连接到互联网,并使用 ICS 等解决方案,虽然可以减少共享互联网连接所需的资源,但也会使该工作站面临不必要的风险。此外,该计算机还需要一直开机运行——与没有不必要组件和低功率电源运行 IPCop 的低端 PC 相比,这可能会更吵,而且功耗更大。

在这种情况下,IPCop 提供了一种经济有效的替代方案,为小型企业和家庭用户提供了强大的防火墙,而无需过于复杂,并添加了嵌入式解决方案或 ICS 中不存在的其他功能,如可定制的 DHCP 服务器、入侵检测、代理服务器等。

在这种情况下,使用 IPCop 作为替代,替代网络可能看起来像这样:

拓扑结构一:NAT 防火墙

这样的拓扑结构确保了在数据传输到客户端之前进行防火墙处理,使用专门设计为网络防火墙的软件包,极大地提高了客户端的服务质量以及他们的网络提供的安全性。在这种情况下,IPCop 使用的组件将是:

  • 绿色/红色区域

  • DHCP 服务器

  • DNS 服务器

在这种情况下,网络管理员或顾问还可以选择启用以下任何一项功能,以增强为网络提供的服务:

  • 入侵检测

  • IPSec 以允许远程工作或远程支持

  • 端口转发以允许远程访问 VNC 或终端服务/远程桌面,用于远程支持的简化模型(比 IPSec 更方便,尽管固有地更不安全)

在这种情况下,停用 ICS 非常简单——我们只需禁用 ICS 功能,如下图所示(从外部、面向互联网的 ICS 网络接口的网络连接属性中获取)。

拓扑结构一:NAT 防火墙

删除 ICS 就像取消选择允许其他网络用户通过此计算机的互联网连接进行连接选项一样简单。完成后,我们应该点击确定,如果有要求,重新启动,然后我们可以自由地禁用和/或删除工作站上的外部接口(如果我们希望在机器上留下第二张网络卡或者它有两张内置卡,或者如果我们使用外部调制解调器或其他打算从我们的 IPCop 主机中删除或安装的硬件)。

注意

IPCop 的入侵检测系统

入侵检测功能是 IPCop 的一个强大组件,易于启用和使用。尽管对 IPCop 的 IDS 生成的日志文件进行精确分析需要相当的技能和经验,但它很容易打开,除非 IPCop 防火墙有特定的空间要求(即在运行设备上有一个非常小的硬盘或紧凑闪存卡,或者 CPU/内存不足以进行分析),否则没有理由不启用 IDS 系统。

对于这种拓扑结构,防火墙规则很简单;因为绿色段自动被允许访问红色接口上的资源,所以不需要特定于拓扑结构的设置来设置这个。

在这样一个小办公室环境中部署 IPCop 的另一个重要好处是,如果业务需要增长,它所拥有的解决方案是可扩展的。这样一个运行着一些 Windows 工作站的工作组的企业可能会决定工作组不足以满足其需求,需要集中管理、文件存储和配置。

即使在这样的预升级场景中,IPCop 也是有利的,因为它提供了内置的开放升级路径。从简单的 NAT 和 DHCP 转移到具有多个网络段、端口转发和代理服务器的网络不需要硬件或软件升级。如果服务器已经有几张网络卡(而且现在这些价格很便宜,如果预期会扩展的话,没有理由不这样做),甚至可以在几乎没有或没有明显中断现有客户服务的情况下完成。

拓扑结构二:带有 DMZ 的 NAT 防火墙

在一个不断发展的小公司办公室环境中,对于传入电子邮件的需求可能会迫使激活橙色区域,并在该区段部署和安装邮件服务器。

这样的公司可能会选择将其桌面和内部服务器基础设施放在绿色网络段内,并将其服务器放在 DMZ 上的交换机/集线器上,或者简单地使用交叉线缆连接到 IPCop 主机的橙色接口。由于这些系统暴露在互联网上,这种分段提供了一个重要的优势,使得入侵者更难以扩大对网络的访问。

注意

DMZ 和外部网络段基础设施

尽管使用交叉电缆将 DMZ 服务器或外部路由器连接到防火墙(或另一个路由器)通常非常方便,但使用集线器或交换机通常会产生回报——不可避免的是,当您实际上可能需要在这些系统相关的连接问题上进行故障排除时,您可能需要交换机或集线器,而在这种情况下,您可能无法及时找到并安装交换机/集线器,或者可能不想中断仍然存在的任何连接。

使用集线器和交换机也可以为未来的扩展计划,并且使您可以更轻松地添加另一个系统。带有半打端口的小型交换机也不贵!

微软的 Exchange 邮件服务器在相当长的一段时间内通过使用“前端”和“后端”交换角色来支持这样的配置(尽管这些角色将在未来的 Exchange 版本中被弃用)。然而,通过不同的网络配置,例如使用 Novell 的 eDirectory 或 RedHat 的 Directory Server(RHDS)等管理系统的 Linux 客户端,或者过滤设备,一个类似的系统与外部面向 SMTP 服务器(也许运行开源 MTA exim)同样有益。

拓扑结构二:带 DMZ 的 NAT 防火墙

在这种拓扑结构中,客户端可以自由连接到邮件服务器(无论是通过 POP、IMAP、RPC 还是 RPC over HTTP)。为了使作为网络域的一部分存在的邮件服务器能够对目录服务器进行身份验证,我们还需要使用 DMZ Pinholes 功能打开适当的端口(取决于目录提供者)到目录服务器。

注意

防火墙活动目录域控制器

有关活动目录需要复制的特定端口的信息(即在域控制器之间,如果邮件主机和目录服务器是域控制器)可在www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/deploy/confeat/adrepfir.mspx找到

尽管在这种情况下,将邮件主机的妥协意味着域控制器的妥协,DMZ 的安全性好处将受到限制,但仍然会有一些安全性好处——在互联网面向角色中运行域控制器是不推荐的!

客户端或服务器与域控制器通信所需的端口可以在以下文章中找到,该文章详细介绍了在 Windows 2003 系统上配置 Windows 防火墙所需的端口:

support.microsoft.com/default.aspx?scid=kb;en-us;555381&sd=rss&spid=3198

我们还设置了一个端口转发规则,从 IPCop 防火墙的外部 IP 地址到邮件服务器的 25 号端口。这允许外部邮件服务器连接到邮件服务器以传递电子邮件。

在这种拓扑结构中,邮件服务器的妥协(在绿色段可能会妥协整个网络段)是受控的,因为防火墙提供了一定程度的保护。

在这种拓扑结构中,我们使用 IPCop 防火墙的以下功能:

  • 红色、橙色、绿色区域

  • DMZ Pinholes

  • DHCP 服务器

  • DNS 服务器

  • 端口转发到橙色段

我们还可以选择使用以下功能中的任何一个:

  • 入侵检测系统

  • 端口转发到邮件服务器上的 Web 服务器(通过 Horde、SquirrelMail 或 Outlook Web Access 等 Web 邮件解决方案进行 IMAP 或 Exchange 邮箱的外部访问)

  • 代理服务器(用于桌面互联网访问)

  • 用于远程访问绿色和橙色段的服务器或外部支持的 IPSec

  • 后端邮件服务器在绿色区域中,使用橙色区域中的服务器作为中继,执行反垃圾邮件和反病毒扫描/过滤

拓扑结构三:带有 DMZ 和无线的 NAT 防火墙

在一个更大的组织中,或者如果上面的网络增长了,我们可能会选择使用一个或多个 IPCop 防火墙来扩展我们的网络拓扑结构。非常大的网络超出了本书的范围,因为它们需要网络/IT 专业人员从多个来源获取的知识和经验。

注意

IPCop 邮件列表

IPCop 用户邮件列表是有关扩展 IPCop 并在更高级角色中部署它的非常好的信息来源。对于那些对 IPCop 有更多兴趣的人来说,订阅并浏览这个邮件列表是值得的。这个邮件列表的存档可以在sourceforge.net/mailarchive/forum.php?forum_id=4957找到,并且有一个订阅页面在lists.sourceforge.net/lists/listinfo/ipcop-user

一个人可能会使用多个 IPCop 防火墙,以便分隔多个站点,或者进一步将一个或多个 DMZ 与物理上不同的防火墙分隔开。

值得考虑的是,IPCop 主要是为中小型企业和家庭/家庭办公市场设计的网络防火墙。虽然可以在更大的部署中设置 IPCop,但这相当罕见,而且有其他软件包可能更适合这样的部署。在这种情况下,IPCop 的网络分割的限制开始变得更加繁重,而不是方便,而且为了满足组织的需求,需要的工作量可能超过手动设置另一个防火墙软件包以适应相同拓扑结构的工作量。

在这个例子中,我们将考虑一个 IPCop 盒子可以部署的最广泛的范围,使用所有四个网络接口来保护一个具有内部(绿色)网络、互联网或广域网连接(红色)、包含多个服务器的 DMZ(橙色)和一个带有 IPSec VPN 系统的无线段的网络。

在这种情况下,我们几乎肯定会选择部署 IPCop 包含的所有高端功能,例如代理服务器和入侵检测系统。

拓扑结构三:带有 DMZ 和无线的 NAT 防火墙,IPCop 功能

在这种情况下,我们为各个网络接口提供的服务如下:

在红色接口上,除了默认的防火墙策略外,我们还调用了端口转发功能,以允许在 DMZ 上的邮件服务器上的 25 号端口和邮件服务器上的 443 号端口(HTTPS)的连接,以允许对业务网络邮件系统的连接。我们还允许对 IPCop 防火墙的传入 IPSec 连接,以允许远程访问远程工作的员工,并为 IT 人员和第三方软件和硬件供应商提供远程连接以支持目的。

在蓝色接口上,我们通过 IPSec VPN 为客户提供连接,以便他们可以访问在绿色段和 DMZ 段内运行的服务器提供的服务。供应商和访客可以通过在无线接入点上配置的预共享密钥模式的 WPA 来访问绿色段。

注意

WPA 和 WEP

WPA 旨在引入更先进的无线标准的一些特性,以完全取代 WEP,但在该标准准备就绪之前。WEP 系统用于保护 802.11 无线局域网的不安全性已经有充分的文献记录,WPA 最显著地采用 TKIP 协议(以及其他更改)来不断更改用于加密通过空中传输的数据的加密密钥。使用 TKIP,而不是一个不断使用的密钥,大大减轻了加密被破解的严重性(实际上,它只在短时间内被破解),尽管这意味着用于生成这些加密密钥的预共享密钥必须强大且严加保护。

WPA-RADIUS 或 WPA-Enterprise 采用 RADIUS 服务器。RADIUS 通常用于对交换机或系统进行用户认证,以提供互联网服务,允许接入点强制客户计算机使用用户名和密码或加密证书对 RADIUS 服务器进行认证,然后才允许它们完全与无线接入点关联。以这种方式利用 RADIUS 服务器比 WPA-PSK 更安全得多,因为消除了预共享密钥的不安全性(每个客户端都有自己的证书或用户名/密码,并且可以单独锁定或分发),并且因为为每个客户端创建了一个唯一的加密隧道,使得无线网络更像交换机而不是集线器(通过加密)。

WPA2,消除了 WPA 和 TKIP 的一些加密弱点,更加强大,并且使用 AES 加密标准来实现最大的数据安全。

Microsoft TechNet 在其 RADIUS 服务器(IAS,Internet Authentication Service)上有关于实施 WPA-RADIUS 的优秀指南,可在线通过以下网址获取:使用证书服务保护无线局域网:www.microsoft.com/technet/security/prodtech/windowsserver2003/pkiwire/swlan.mspx?mfr=true

使用 PEAP 和密码保护无线局域网:www.microsoft.com/technet/security/topics/cryptographyetc/peap_0.mspx

仅使用接入点的 WPA-PSK 可以防止未经授权的用户访问无线段和互联网,并且对于大多数中小型网络来说是一个足够的解决方案;使用支持 WPA2-PSK 的新型接入点可以增加这种安全性,对于没有接入点或实施 RADIUS 或证书服务的网络基础设施的用户来说更加安全。

防火墙策略和 IPSec 系统确保访客/供应商只能访问红色区域(互联网),而不能访问网络上的任何资源。

在橙色接口上,我们的针孔允许 DMZ 服务器连接到绿色区段中的目录服务器和 Kerberos 域控制器,以便通过公司目录系统登录到它们的用户进行身份验证。这确保了这些服务器的策略和配置是集中管理的,并且为它们存储了中央日志,但是外部服务的妥协可能造成的损害大大减少,确保了业务安全和合规性。

在绿色接口上,我们允许连接到所有接口,因为绿色区段内的工作站和服务器是受管理的服务工作站,用户没有足够的访问级别来对其访问的资源造成损害。

在这种情况下,我们正在使用以下 IPCop 功能:

  • 红色,橙色,绿色,蓝色区域

  • DMZ 针孔

  • DHCP 服务器

  • DNS 服务器

  • 端口转发到橙色区段

  • IPSec 用于远程访问绿色、橙色、蓝色区段

  • IPSec 用于蓝色用户访问内部资源

  • 入侵检测系统

  • 端口转发到外部的邮件服务器上的 Web 服务器

  • 代理服务器(用于桌面互联网访问)

在一个较大的组织中,我们还可以选择使用 IPSec 的站点到站点模式,以将这个办公室与一个或多个分支或总部连接起来。在这个角色中,就像在单个网络防火墙的角色中一样,IPCop 表现出色。

规划站点到站点 VPN 拓扑

除了本地服务,比如我们之前在 IPCop 部署中所示的服务,我们还可以使用 IPCop 中的 IPSec 软件来配置与分支或总部、商业伙伴、支持公司或第二站点的“站点到站点”VPN。在这种情况下,拓扑规划可能变得重要,因为网络规模增长。

如果我们有多个站点,考虑如何配置 VPN 隧道以提供服务和稳定性对我们的客户非常重要。例如,在两个附属办公室连接到一个主办公室,并且彼此包含文件服务器同步内容的情况下,从附属办公室到主办公室设置两个 VPN 隧道在“辐射”拓扑中几乎没有意义。在文件传输过程中,额外的跳数会减慢主站点的互联网连接速度,并导致传输速度变慢。

相反,如果我们有许多较小的办公室,对站点间流量的要求很少,而总部有一个大型的互联网连接,我们可能会决定通过一个单一的地点汇聚所有网络活动的增加控制对我们而言是值得的。随着网络规模的增加,从站点到站点形成个别 VPN 隧道在“网状”配置中可能变得非常复杂和难以管理——尽管作为 IPCop 的部署不太可能,但超过十几个服务器的这样的部署将越来越难以灵活地管理,除非考虑使用路由协议(如 RIP 或 OSPF)来计算我们的路由表!

在考虑 VPN 设计时,花一点时间来确定你的冗余和速度目标(例如,设置从远程办公室到彼此的 VPN 是否值得冗余,以防主站点出现故障)。在纸上计算一下,考虑一下哪些流量将通过你的 VPN,然后选择最适合你的、可扩展的最佳设计。

总结

在本章中,我们提供了 IPCop 可能被部署的三种情景的高层概述,以及在这些情况下使用 IPCop 的好处和缺点的分析。

这三种拓扑将在本书中进一步用作维护和部署的案例研究。

拓扑一:双主机防火墙执行网络地址转换,为少数客户端提供服务。这是一个很好的替代方案,可以取代小型 SOHO 路由器或微软的互联网连接防火墙。它比其他类似情况的解决方案更安全、更可靠、更可扩展。

这种拓扑使用了 IPCop 的 NAT 功能,并可以使用端口转发来访问外部服务,入侵检测系统用于增加网络安全性。

拓扑二:一个带有用于外部服务的单独段的 DMZ 防火墙,比如传入邮件。通常由一个小型或中型企业使用,他们已经超出了单子网网络,这是一个常见的过渡阶段,从嵌入式设备的小型网络到具有商业或中高端防火墙的大型网络。

这种拓扑使用了 IPCop 的 NAT 功能,以及 DMZ 的针孔,以允许 DMZ 段中的服务器访问资源并对绿色区域中的服务器进行身份验证。入侵检测系统可以用于增加安全性,端口转发用于允许外部(红色区域)访问 DMZ 中主机上运行的服务。

拓扑结构三:一个带有独立段的 DMZ 防火墙,用于外部服务,如传入邮件和无线访问。这通常由一个已经超出单子网网络的中小型企业使用。这类似于第二个拓扑结构,但增加了第三个内部段,即蓝区,用于不太受信任的无线客户端。

这可能是拓扑结构二的常见扩展,或者是对具有两个工作站段的较大网络进行分割的一种方式。

该拓扑结构使用了 IPCop 的 NAT 功能,以及 DMZ 针孔,以允许 DMZ 段中的服务器访问资源并对绿区中的服务器进行身份验证。入侵检测系统可用于增加安全性,并且端口转发用于允许外部(红区)访问 DMZ 中主机上运行的服务。IPSec 服务器用于允许蓝区中的主机访问绿区和橙区的资源。

该拓扑结构也可以用于对网络进行分割或提供更好的安全性,而无需使用无线技术。

第四章:安装 IPCop

现在我们已经介绍了一些基本的网络和防火墙原则,并且了解了 IPCop 允许我们利用的功能,我们可以看看如何安装防火墙。IPCop 可以通过多种方式安装,但使用 CDROM(有时还有一个附带的软盘)是最简单和最常见的方法。因此,我们将详细介绍这种安装方法,并在后面的部分中讨论更高级安装的选项,比如通过网络安装和调试安装过程。

硬件要求

IPCop 的最低硬件要求非常低,设计用于常见的 PC 硬件。我们的主要问题通常不是“这台机器是否足够强大来运行 IPCop”,而更多是“这台机器是否足够强大来处理通过它的带宽”。

IPCop 的最低系统要求是:

  • 基于386PC或更高配置(这意味着您可以使用一台非常老的 PC 作为防火墙)

  • 32MBRAM

  • 200MB 硬盘(或固态硬盘)

  • 每个接口需要一个网卡(最多四个)。每张卡都有唯一的硬件或 MAC 地址,现在值得记下这些地址以便在以后识别这些卡。

  • 如果红色接口不是以太网,则需要连接设备

其他硬件考虑

尽管由于 IPCop 的最低要求,很容易将其放在一台旧工作站或过时的 PC 上,但值得退一步考虑我们如何使用它。在家庭环境或非常小的办公室中,旧 PC 可能提供所需的可靠性水平,但如果互联网访问至关重要,特别是如果我们在 IPCop 中使用更复杂的功能,比如 VPN 或复杂的防火墙规则,这些功能更难复制,硬件故障可能是关键的,即使我们有备份。

因此,值得考虑稍微更可靠、更新的主机。还有基于防火墙所处环境的考虑。在家庭或小型办公环境中,防火墙可能不在服务器房或通讯柜中,旧电源供应器的噪音虽小,但可能令人讨厌。此类服务器的功耗也需要考虑——去除一些不必要的组件或将电源供应器降级为更新、更高效、更低功率的型号可能解决噪音和功耗问题。

也值得考虑硬件设置——我们的服务器的位置应该考虑到不会出现重布线的问题,也不会需要重新安置或被绊倒。正如我们之前提到的,我们还应该在 BIOS 中启用某些设置,比如禁用“错误时停止”功能(这样我们的服务器在键盘被移除或组件损坏时不会在提示处冻结,除非我们希望发生这种情况)。另一个常见的 BIOS 选项是“断电后恢复”选项——在断电事件中使我们的服务器自动重新开机。

安装程序

在开始安装 IPCop 之前,我们必须确保我们已经做好了充分的准备,并且拥有所有必要的设备。以下是一个简短的清单,以确保我们在开始之前已经准备好了一切;任何特定于 IPCop 的设备,比如 CD 和软盘介质,将在安装过程中详细说明。

  • 我们是否有一台能够满足最低系统要求的机器?

  • 我们的机器是否有足够的资源来处理我们预期的带宽使用?

  • 我们是否拥有所有必需的网卡及其驱动程序,并且已经检查它们是否与 IPCop 兼容?

  • 我们是否已经准备好了 IPCop 机器周围的所有必需设备?例如电缆、交换机和一个客户机来测试配置。

  • 我们是否有可靠的互联网连接?

一旦我们确定了所有先决条件的硬件和连接可用,我们就可以开始安装。我们将不得不下载 IPCop 安装 ISO 并将其刻录到 CD。最新版本可以在 IPCop 的 SourceForge 项目页面上找到sourceforge.net/project/showfiles.php?group_id=40604。撰写时的最新版本是 1.4.10:prdownloads.sourceforge.net/ipcop/ipcop-install-1.4.10.i386.iso?download

在下载 ISO 并使用您选择的 CD 刻录软件将其刻录到 CD 后,我们可以开始安装。

注意

使用软盘安装

如果您的 IPCop 机器无法从 CD 启动,您可以在 CD 的images文件夹中找到一个软盘镜像,例如boot-1.4.0.img,可以使用 Linux 上的dd命令将其复制到软盘,或者使用 IPCop 光盘上提供的rawwritewin.exe

现在我们可以将 IPCop 光盘插入 CD 驱动器,然后启动机器,然后应该会出现以下屏幕:

安装过程

正如您所看到的,有一个非常显眼的消息,即安装 IPCop 将销毁系统上的所有数据。这意味着 IPCop 遇到的第一个磁盘将被擦除、重新分区和格式化,以便安装 IPCop 系统。为了保护我们的数据,非常重要的是要验证系统中只有一个磁盘,并确保其中没有任何有价值的东西。一旦我们确定了这一点,我们就可以开始安装,而不必担心数据丢失。

此时按下enter将会将我们引导到安装系统,但我们也可以向内核提供额外的参数。如果按下enter后系统无法正常启动,我们应该重新启动机器,并尝试上面的选项之一。如果我们的机器没有 PCMCIA(通常在笔记本电脑上找到)我们通常可以使用nopcmcia选项,USB 也是一样。许多 IPCop 系统运行在旧硬件上,USB 在这种情况下较少见。

按下enter后,我们将会看到语言选择屏幕。假设我们想要一个英文 IPCop 系统,我们可以选择默认选项,否则选择我们偏好的语言。您可以使用箭头键导航菜单项。然后我们将看到 IPCop 的欢迎消息,并附有指示,随时按取消键可以导致重新启动,以防我们改变主意。

安装介质

安装过程的下一个阶段,如下图所示,是安装介质的选择。

安装介质

IPCop 可以通过 FTP 或 HTTP 安装到没有 CDROM 驱动器的机器上。在这种情况下,我们会从软盘启动机器,然后让主机从互联网上下载通常包含在 CDROM 上的内容。由于我们的机箱中有 CDROM,我们可以选择CDROM选项。然后会出现一个提示消息,上面写着请在 CDROM 驱动器中插入 IPCop CDROM。这并不意味着安装过程没有检测到 CD。在这一点之前,我们可以从 CD 或软盘启动,安装过程允许这样做,如果我们点击确定,安装应该会正常进行。

硬盘分区和格式化

然后我们将收到警告,系统即将对硬盘进行分区和格式化。

硬盘分区和格式化

这是不可逆转的点,按下Enter会完全擦除磁盘,我们会丢失驱动器上的任何数据。如前所述,只要我们确保系统中只有一个驱动器,并且该驱动器是我们不介意擦除的,我们就可以继续。按下Enter将开始分区和格式化过程。如果我们有一个大磁盘,这可能需要一两分钟的时间。通常最好将较小的磁盘放入 IPCop,因为它不会占用大量空间,这取决于我们预计 IPCop 会有多少日志文件。但是,我们必须确保满足最低要求,大约为 200 MB,而超过 10 GB 左右的空间几乎不太可能被使用,除非您最终使用需要更多空间的附加组件-这些附加组件可能会提供磁盘空间要求。

从软盘备份恢复配置

在这个阶段,我们可以选择从软盘上恢复之前保存的配置,这是备份 IPCop 配置的理想方式。

从软盘备份恢复配置

由于这是我们的第一个 IPCop 安装,我们可能没有软盘。但是,如果有的话,我们可以选择恢复,其余的系统配置将根据我们以前的安装选项自动运行。现在我们将选择跳过这一步,继续进行手动安装。

绿色界面配置

正如我们在前几章中讨论的那样,IPCop 对系统中安装的 NICs 有一个颜色方案。这是安装过程中我们第一次遇到这些的地方。

绿色界面配置

绿色接口对应于我们的本地网络,我们现在可以选择这个接口。最简单的方法是允许 IPCop探测网络卡,它完成得非常可靠。但是,如果我们确切地知道要使用哪种制造和型号的卡,我们可以选择手动选择它,然后会为我们提供一个已知卡的列表供我们选择。此屏幕还提到特殊模块参数,这些是我们可以在必要时传递给内核中的网络驱动程序的选项。一旦配置了这个阶段,我们就可以远程完成安装的其余部分,并且稍后会要求我们配置其他卡。

在这个阶段的一个小复杂之处在于,如果我们让 IPCop 探测网络卡,IPCop 发现的第一张卡将用作绿色网络接口。我们可能有选择特定接口的特定卡的原因:例如,我们可能有一张 10Mbit 和一张 100Mbit 的卡,并希望使用 10Mbit 卡进行互联网连接。在这种情况下,我们可以采用两种技术之一-要么自己选择我们想要作为绿色接口的特定卡的驱动程序,要么按顺序将卡放入机器,使绿色卡位于最低编号的 PCI 或 ISA 插槽。还要注意,IPCop 给卡的名称可能不是与使用的芯片组相关的卡的制造或型号的名称,例如,许多常见的卡将被识别为Digital 21x4x Tulip PCI …

有时这可能需要一些工作,特别是两张相同的网络卡共享同一个盒子可能会导致对分配给哪个接口的网络卡感到困惑。一些卡,例如较旧的 3Com Etherlink 卡,在主机中有多张卡时可能会很难使用。在这些大多数情况下,特别问题的帮助可以通过 IPCop 社区找到。

完成了吗?

哇,这太容易了!看来我们已经完成了安装。

完成了吗?

不要太过分; 这条消息意味着基本系统文件已经就位,我们最基本的配置已经完成。现在,我们必须根据我们的特定需求设置 IPCop,选择我们想要使用的接口类型以及我们的寻址系统将如何工作。在这里按Enter将带我们进入 IPCop 的配置。

区域设置

我们从键盘布局选项开始。

区域设置

我们应该选择我们想要使用的键盘布局。对于标准美国键盘的用户,选择us,对于英国键盘的用户,选择uk。在这里选择错误的布局可能会使菜单导航和命令稍后有点困难,所以一定要选择正确的选项。如果您不确定,可以检查您的桌面系统是如何配置的。

我们还将被提示选择我们的时区,比如GMTEST;再次小心选择正确的选项,并检查您的桌面系统如何配置。

主机名

现在我们必须给 IPCop 机器取一个名字。

主机名

如果我们已经在网络上有一个命名方案,我们可以使用它;其他选项可能是firewallipcop的默认值。如果我们将 IPCop 盒用作 DNS 服务器,它将回复该名称的自己的 IP 地址,因此可以方便地寻址 IPCop 的 Web 前端。

DNS 域名

IPCop 在我们的本地网络上的默认域名如下图所示:

DNS 域名

如果我们没有,我们可以使用默认值,尽管作为企业网络,我们可能已经在本地段上使用了一个域;我们应该在这里输入,小心不要重叠内部和外部 DNS。例如,如果我们在外部使用reboot-robot.net,那么在内部使用lan.reboot-robot.net可能是一个更好的主意,以允许内部客户端使用 DNS 引用内部和外部机器。错误配置这一点,或者使用不属于您的域名,可能导致该域在网络内部的客户端无法访问。例如,如果我们在这里放入aol.com,那么我们可能会难以访问 AOL 的网站和其他服务。

ISDN 配置

如果我们有 ISDN 调制解调器,我们现在可以在这里配置它:

ISDN 配置

我们将需要参数,比如使用的协议和要使用的电话号码,所有这些都可以由 ISDN ISP 提供。如果您必须拨打 9 来获得外线,那么也应该包括在内,必要时可以通过插入逗号添加暂停。如果我们没有 ISDN,我们应该选择禁用它;然后我们可以设置其他连接方法,比如在后续步骤中设置 DSL。

网络配置

我们现在应该看到网络配置菜单

网络配置

这是设置过程的一个重要部分,直接关系到我们在上一章中讨论的网络拓扑结构。

我们首先决定我们的网络配置类型。有许多选择,而在上一章中,我们概述了其中一些。在这个例子中,我们将通过GREEN + RED拓扑结构的安装过程。

根据我们在上一章中决定的拓扑结构选择适当的选项后,我们可以继续进行网络配置菜单中的第二项。

驱动程序和卡分配

对于系统中找到的每张网络接口卡,我们将在菜单中收到提示,如下图所示:

驱动程序和卡分配

如果我们选择了具有更多接口的拓扑结构,比如橙色或蓝色,我们可以将卡分配给我们想要指定的接口。在上面显示的示例中,我们有一张卡,并将其分配给RED接口;这将成为我们的互联网连接。

地址设置

网络配置菜单中的下一个选项是地址设置。在这里,我们可以定义服务器上要使用的地址。

Address Settings

我们始终希望绿色、橙色和蓝色接口是静态的,每个接口的子网不同。红色接口将取决于我们的 ISP,他们将提供配置信息。对于静态、PPPOE 和 PPTP,地址和配置信息应根据您的 ISP 的指示进行配置。然而,如果我们使用 DHCP,所有需要做的就是点击DHCP选项,将所有其他设置保持默认(除非您的 ISP 另有指示)。大多数电缆连接将使用 DHCP,而 ADSL 连接将根据使用的 ADSL 路由器、调制解调器或接口卡的类型而有所不同。

DNS 和默认网关

我们还应该为 DNS 和默认网关服务器提供服务。

DNS 和默认网关

如前所述,这对于 DHCP 并不总是必要,通常也不是一个好主意,因为它会覆盖 ISP 提供的 DHCP 设置。

DHCP 服务器

如果我们决定使用 IPCop 作为我们的 DHCP,那么我们必须配置各种 DHCP 选项。

DHCP Server

如果我们有一个简单的网络,有几个客户端,我们可能希望我们的 IPCop 处理 DHCP。在一个更大的网络中,我们可能已经使用了专用的 DHCP 服务器;如果是这样,我们应该禁用 DHCP 服务器。

DHCP 需要一系列地址来分配给客户端。我们首先提供这个范围,由起始地址结束地址定义。在上面的例子中,我们选择了10.0.0.10010.0.0.200。默认租约和最大租约时间是我们允许 DHCP 客户端租用IP 地址的持续时间。通常情况下,除非您的网络对指定时间的租约有特定要求,否则通常没有真正的理由去更改这些设置。

通常,正如我们之前讨论过的,我们可以选择任何内部寻址方案(只要我们使用内部地址)。只要我们在使用上保持一致,并合理配置一切,这都会起作用,而这个示例安装的默认设置(除了域名后缀,正如我们之前提到的)将会起作用。再次强调,正如我们之前讨论过的,唯一的例外是如果我们的 ISP 本身使用这些(RFC1918)地址——这些信息可以从您的 ISP 那里获得。

域名后缀应该预先填充我们之前在配置中提供的信息,通常后缀应该与网络上的其他客户端一起使用,以确保所有客户端都配置了相同的设置,这也与 IPCop 机器匹配。

完成!

现在我们可以兴奋了!我们已经完成了 IPCop 的安装过程。

完成!

在这里按下Enter后,系统将首次重启到我们的 IPCop 安装中。

首次启动

当 IPCop 系统启动时,我们将看到以下屏幕,这是作为 IPCop(Grub)的一部分安装的引导加载程序。现在我们可以选择我们想要使用的引导选项,并在引导之前可选择添加任何内核参数。几秒钟后,默认条目应该会引导。

First Boot

注意

Grub

Grub 是 Linux 中常用的引导加载程序之一,它在计算机的 BIOS 和操作系统之间起着中介作用,让我们可以选择多个操作系统或者只为一个指定选项(例如在前面的屏幕截图中显示的菜单中选择 SMP 或 ACPI 支持,而不是标准内核)。

有关 Grub 的更多信息可以在 FSF 网站上找到。

www.gnu.org/software/grub/

然后我们应该在屏幕上看到一些引导信息输出,持续几秒钟,然后是一系列令人满意的愉快的蜂鸣声,最后是以下输出:

 IPCop v1.4.10 - The Bad Packets Stop Here
flaminghomer login: 

这是 Linux 登录提示符,表示我们已经安装并成功启动了 IPCop 系统。IPCop 现在将作为我们的基本 NAT 防火墙运行,无需进一步配置。

总结

在本章中,我们介绍了如何使用之前介绍的配置和拓扑来启动和运行 IPCop 系统。我们还看到 NAT 应该通过防火墙;客户端应该能够获取 IP 地址,使用 DNS,并访问互联网。现在我们可以继续定制系统,并启用默认情况下不可用的功能和服务。在接下来的几章中,我们将介绍基本配置,然后再看看更高级的选项,比如入侵检测和 VPN。

第五章:基本 IPCop 使用

现在我们已经介绍了 IPCop 防火墙的安装以及我们想要部署它的几种情况,我们可以讨论如何管理和操作 IPCop 防火墙。假设安装成功,一个默认的 IPCop 安装会呈现给我们一个 Web 界面。Web 界面允许我们通过任何 Web 浏览器配置防火墙,并且(默认情况下)仅对 Green 内部接口上的客户端启用。

Web 服务器默认情况下在端口 445 上运行(用于HTTPS流量),尽管这些端口可以被更改;该端口与常用/分配的端口(443)不同。应该注意,使用此端口访问 Web 界面将产生证书弹出窗口—这是由于使用自签名的SSL证书造成的,可以安全地忽略。

HTTPS 管理的端口分配可以使用 IPCop 控制台或SSH会话中的setreservedports命令更改为 445 以上的任何端口,并且这可能是考虑到远程访问其 IPCop 主机的任何人的一个考虑因素,因为一些互联网服务提供商将防火墙流量到端口 445,以防止像 Sasser 这样的蠕虫,它利用端口 445 上 Windows 的漏洞(SMB通过TCP)。将此端口更改为 445 以下必须手动完成,尽管不应轻率进行,并且需要编辑与setreservedports相同的文件(www.ipcop.org/modules.php?op=modload&name=phpWiki&file=index&pagename=IPCop140HttpsPortHowto)。

不加密的端口 81 的流量在 1.4 版本之前的版本中已经不再支持,并且最初只是为了支持不支持 HTTPS/ssl 的浏览器。自 IPCop 防火墙的 1.4 版本以来,已经进行了更改,以便仅允许 HTTPS 管理(尽管端口 81 可以重新配置)。

通过ipcopfirewall:445/(其中 ipcopfirewall 是主机的名称或 IP 地址)访问我们的 IPCop 防火墙,然后,我们会看到默认配置屏幕,其中包括 IPCop 防火墙的状态概述、更新状态、系统负载和所有适当配置选项的菜单。此时出现的有关证书的任何消息都可以安全地忽略,这是因为您的 IPCop 主机生成自己的 SSL 证书,而不是使用您的浏览器可能知道的证书颁发机构CA)(如 VeriSign 或 CAcert)颁发的证书。

系统菜单

系统菜单中的项目对系统的功能性相当关键。

系统菜单

软件更新

安装后,我们应该做的第一件事是确保我们的 IPCop 防火墙应用了适当的更新。尽管许多软件更新提供了新功能和现有软件包的更新和错误修复,但有些是为了解决新的安全问题,为了维护防火墙的完整性;尽可能频繁地应用这些更新是很重要的。

软件更新功能在系统 | 更新菜单下提供。

软件更新

刷新更新列表按钮连接到 IPCop 服务器并检索已发布更新的列表—页面上的可用更新部分将指示何时需要提供更新,并提供下载链接。更新必须按原样(不解压或提取)从互联网手动下载,然后通过浏览按钮上传到防火墙。

正如更新文件的名称(*.tgz.gpg)所示,更新使用GNU 隐私保护GPG)签名,这可以防止未经授权(或被篡改)的更新由任何人发布,而不是首先篡改用于签署更新的 IPCop 密钥。GPG 签名防止更新文件被篡改或解压重组或修改,导致 IPCop 拒绝使用已被入侵者篡改或解压而不是简单下载和上传的更新文件。

更新将指示是否需要重新启动 IPCop 防火墙,但在许多情况下,不需要重新启动,通常是内核更新需要这样做。

IPCop 防火墙的某些版本(通常是主要版本增量,例如 1.3-1.4)要求完全重新安装防火墙,因为升级过程太复杂,无法通过更新进行。在这种情况下,可以备份防火墙配置,因此防火墙不需要完全从头开始重建。

密码

下一个系统菜单允许我们更改密码——这个屏幕相对简单,给了我们重置admin密码(可以完全控制 Web 界面)和dial密码的选项。dial用户只允许用户连接或断开连接,必须手动拨号,例如模拟调制解调器。

系统上的第三个帐户,即根帐户(在安装过程中设置的密码),具有重置admindial用户帐户密码的权限,但此功能必须在 IPCop 防火墙的控制台上或通过 SSH 使用,SSH 必须手动启用。

SSH 访问

SSH 访问允许我们使用具有适当权限的帐户(例如根帐户)远程安全建立控制台会话。SSH 是一个非常有用的工具,对它的全面覆盖超出了本章甚至本书的范围。在其最基本的形式下,SSH 可用于以与机器本身的控制台上所做的方式(即文本方式,在命令行上)运行命令和管理系统。

在 IPCop 的上下文中,这非常有用,因为我们可以运行安装过程中运行的设置程序(允许我们重置或更改参数,如网络配置和卡分配,或重置密码)。如果您更改了网络拓扑或在 IPCop 防火墙中添加/替换了网络卡,可能希望通过 SSH 重新配置它。

SSH 访问

注意

SSH 密钥

hacks.oreilly.com/pub/h/66是关于使用 SSH 密钥的简要概述,以及其他资源的一些指针(以及关于该主题的大量用户评论)。

密钥认证允许使用存储在客户端计算机上的密钥(类似于 SSL)来验证客户端,而不是在 SSH 身份验证阶段(SSH-USERAUTH)期间每次通过互联网传输的密码。假设密钥未被盗用或泄露,这种身份验证方法比使用密码更安全,但更复杂,更难理解和配置,而且灵活性稍差(在要用于登录到 SSH 服务器的任何系统上都需要密钥文件,而密码只需记住)。

SSH 通常也更有用作为诊断工具——IPCop 中包含许多只能通过命令行访问的工具,如vim(强大的文本编辑器)、诸如pingtraceroute的网络实用工具,以及tcpdump,通过转储网络流量或仅在控制台上查看标头来调试网络问题非常有用。我们还可以使用许多标准的 Unix 实用程序,如touchgrep。这些(实际上,除了vimtcpdump之外,本段中提到的所有命令)都是由busybox提供的,该程序在您通过控制台或 ssh 登录时运行以提供所使用的 shell。

注意

Busybox Shell

在以下网址了解有关busybox shell 及其提供的选项:www.busybox.net/downloads/BusyBox.html

连接到 SSH

在 Linux 或 Unix 系统上访问 SSH 相当容易——一旦我们启用了 SSH,它将在(非默认)端口 222 上运行,因此类似于以下命令将使您进入 IPCop 主机(假设主机名为"IPCop"):

james@horus: - $ ssh -p 222 root@ipcop
root@ipcop's password:
Last login: Thu Feb 27 12:31:22 2006 from 10.0.2.241
root@ipcop:- #

在这一点上,您可以像登录到机器一样工作。在 Windows 平台上,有一个名为PuTTY的优秀免费 SSH 客户端,而 Linux 和最近的 Unix 平台(如 OS X)几乎普遍安装了命令行 SSH 客户端。在 OS X 中,可以通过Terminal.app访问,而在任何最近的 Linux 桌面中都可以使用 konsole、gnome-terminal、rxvt 或任何其他 Linux 终端仿真器来使用 SSH。

注意

下载 PuTTY

www.chiark.greenend.org.uk/~sgtatham/putty/download.html下载 PuTTY

要使用 PuTTY,请启动从上述网址下载的putty.exe文件。这应该会弹出一个类似于以下图示的框:

连接到 SSH

要连接到 IPCop 主机,请将主机名或 IP 地址输入主机名框中,并将端口号222输入端口框中。您可以通过在已保存的会话文本框中输入配置文件名称并单击保存来保存这些设置;下次打开 PuTTY 时,将在多列表框中列出一个条目,目前只显示默认设置,其中包含您在已保存的会话框中输入的名称。您只需双击此条目即可连接。使用用户名root和安装过程中设置的密码进行连接,然后您应该会得到一个与之前在 Linux 系统上列出的非常相似的提示。

关于 SSH 的更多信息

SSH 本身是一个成熟的协议,在非常广泛的部署中,并因此构成了最小(并且被充分理解的)安全风险。它由 OpenSSH 团队设计和维护,以 OpenBSD 而闻名,后者被认为是世界上最安全的操作系统之一。因此,如果您不需要 IPCop 中 VPN 功能提供的更丰富的 VPN 连接形式,SSH 提供了一个更低调的选择(和安心)。

SSH 还为我们提供了其他几个强大的工具——SSH 协议包括允许通过 SSH 进行网络连接隧道化的功能(TCP 转发)。通过在我们的 IPCop 防火墙上启用此选项并将 SSH 暴露给外部世界,我们可以以非常轻量级、平台无关的方式访问内部网络资源和/或 IPCop 配置页面,而无需 VPN 的开销或复杂性。

例如,这可能是在 IPCop 防火墙后面内部访问客户机器的一个很好的方式,或者只是访问 IPCop Web 界面而不将 Web 服务器暴露给互联网。

注意

使用 SSH 进行网络流量隧道

简而言之,有几种方法可以通过我们的 IPCop 防火墙使用 SSH 来隧道网络流量。启用 TCP 转发后,我们可以使用动态端口转发通过代理服务器通过 SSH 会话发送连接。使用 SSH 的命令行版本,我们可以使用类似以下的命令:

james@horus: ~ $ ssh -D 1234 -p 222 root@80.68.90.223
root@ipcop's password:
Last login: Thu Mar 2 10:22:42 2006 from 207.46.250.119
root@ipcop:~ # 

只要我们保持这个SSH连接打开(并且我们可以像普通的 SSH 连接一样使用它),我们的本地机器(即我们启动连接的系统)将在回环接口上运行一个代理服务器(即仅在地址 127.0.0.1 上监听)和端口 1234。然后,我们可以使用任何支持代理的应用程序连接到 IPCop 主机可以连接到的任何主机。这可以是一个穷人的 VPN,用于在公共互联网连接上私下访问网站,或者如上所述,我们可以使用它来访问 IPCop 主机或内部网络资源上的 Web 界面。

SSH man 页面非常全面——在任何 Linux/Unix 系统(除 IPCop 外)上使用man ssh,或者在 Google 上搜索"man ssh",都会提供ssh命令的其他可用选项的全面列表。PuTTY 也通过 GUI 支持类似的选项(包括以相同方式进行动态端口转发)。

关于 SSH 的更多信息

源端口框中输入您希望在客户端上用于代理连接的端口,选择动态,点击添加,然后像平常一样连接。一旦为特定连接配置了这个设置,如果选择在 PuTTY 中保存配置文件,这个设置将与主机名和端口号一起保存。

注意

SSH 和 TCP 转发

www.securityfocus.com/infocus/1816是 Brian Hatch 于 2005 年撰写的关于 SSH 在这一领域的能力的一篇优秀的安全焦点文章。这很复杂,但如果您对这个主题有丝毫兴趣,那么阅读起来是非常值得的。

SSH 访问页面还允许我们查看 SSH 密钥。强烈建议使用这些——但超出了本书的范围。同样,SSH 文档(和 SSH man 页面)强烈建议作为了解这一点的良好信息来源。

GUI 设置

GUI 设置菜单显示在以下图片中:

GUI 设置

我们可能要认真看一下的唯一选项(并且不是立即明显的)是启用 Javascript选项,如果我们使用较旧(或文本模式)的客户端连接到 IPCop,我们可能需要禁用它。

备份

我们可以使用 IPCop 中的备份菜单将设置备份到软盘或通过网络访问的文件中。除了用于灾难恢复目的,这也是升级主要版本增量之间的重要部分,其中不总是可能进行就地升级(必须重新安装防火墙并恢复配置)。

备份

顶部的备份配置:选项允许我们在 IPCop 主机上创建备份——点击创建按钮允许我们创建一个列在备份集下的备份。

注意

备份加密

从 IPCop 1.4.0 版本开始,IPCop 包括了由 Tim Butterfield 编写的带加密功能的备份。当 IPCop 进行加密备份时,它会使用存储在机器本身上的随机密钥来进行,恢复备份时需要该密钥。如果您的备份是加密的,您将需要一个密钥的副本来恢复备份。

有关这是如何工作的更多信息,请参阅作者在将备份附加组件集成到 IPCop 代码主体之前的原始页面:

www.timbutterfield.com/computer/ipcop/backup.php

备份

通过选择相关的备份并点击“选择”,我们可以下载适当的备份并将其保存在另一台机器上进行归档,或者保存到 CD、磁带等。由于许多 IPCop 防火墙的空间有限,这允许以不影响操作效率的方式维护全面的备份集(并且比仅在同一主机上存储备份更具有容灾能力)。由于防火墙配置往往相对静态,IPCop 主机的备份计划可能不需要频繁,但出于明显的原因,强烈建议定期备份计划(或在每次重大更改后备份的程序)。

关机

关机菜单相对简单,允许手动重新启动或关闭 IPCop 主机,并允许我们安排主机定期重新启动。

关机

检查我们的 IPCop 防火墙的状态

我们的管理程序的一部分应该包括监视 IPCop 防火墙,以确保 CPU 负载、内存使用、网络吞吐量等保持健康水平。系统管理员的一个极其重要的角色是为他或她的系统建立一个基线,以便能够识别异常 - 许多入侵和硬件故障首先是通过网络活动的下降(或上升)或 CPU 负载来注意到的。

检查我们的 IPCop 防火墙的状态

基本状态屏幕允许我们在检查防火墙的生命周期统计数据之前查看一些基本系统统计数据。在 IPCop 盒上运行的服务显然会严重影响盒子执行其工作的能力,作为一个快速指示器,服务显示在防火墙停止正常运行时是有用的,以确保防火墙认为正确的服务正在运行。

许多服务,如安全外壳服务器和 Web 代理,默认情况下未运行 - 前一图像说明了默认设置,并添加了 SSH 服务器(我们在本章前面启用了)。

检查我们的 IPCop 防火墙的状态

内存是相当明显的。性能问题,特别是在作为较大网络的 Web 代理的主机中可能是由于内存不足引起的。虽然不总是内存问题的指标,特别是如果主机负载过重并且使用了 IPCop 提供的一些更密集的功能(如代理服务器),但是值得了解交换指示器。交换是将分配给进程的内存移动到硬盘上的过程,而不是存储在系统的随机存取内存中。这实际上允许系统使用比主机实际拥有的更多物理内存,但在执行交换操作时会降低速度;访问已经被交换出的程序的数据的硬盘上的速度比从真实内存中访问要慢得多。

重要的是要注意,由于 Linux 分配和管理内存的方式,已使用内存的百分比(顶部行)代表不可变地使用的内存量 - Linux 内核将频繁访问的文件缓存到内存中的磁盘缓存中以提高性能,这解释了一些内存使用情况。通常更明智的做法是查看没有缓冲/缓存的内存(第二个指示器),以更好地指示实际可用内存量。这是free命令的输出的更美观、图形化版本。

检查我们的 IPCop 防火墙的状态

IPCop 系统的磁盘使用情况也应该相对不言而喻。/boot分区用于存储操作系统内核和配置信息(由于这是作为软件更新过程的一部分进行管理,即使在高水平下使用也不是关键)。用于唯一真正增长的东西的最大分区被挂载到/var/log,正如名称所示,用于存储日志文件。

检查我们的 IPCop 防火墙的状态

运行时间和用户: 运行时间是不言而喻的。用户可能不是;因为这是(字面上)w命令的输出,用户指的是通过控制台或 SSH 登录到 Linux 主机本身的用户。这不应被理解为没有人使用IPCop 作为防火墙、代理服务器或通过 Web 界面登录。

在这种情况下,负载是根据w命令的Unix负载。列出的三个数字分别代表过去 1、5 和 15 分钟的负载。该数字代表正在使用或等待 CPU 时间的进程数量,或处于不可中断的睡眠状态。每个这样的进程都会使负载数字加 1,您看到的数字是该时段的平均值。

负载并不总是衡量系统负载的好方法,网络吞吐量、特定 CPU 统计信息以及更详细的输出,详细说明特定进程的信息通常更有用作为诊断工具(而不是粗略指标)。

检查我们的 IPCop 防火墙的状态

加载的模块: 是另一个特定于操作系统的信息。Linux 内核将功能模块捆绑为可加载的模块,如果不需要,可以将其移除或者不加载。每个模块化并且正在使用的功能都会显示在这里;其中大多数将在启动时加载,并代表从网络卡的设备驱动程序到 iptables 所需的模块,用于执行不同的防火墙功能(其中一些显示在前一个图中)。

除非您有特定的需求了解或查看正在使用哪些模块(或者只是好奇),这并不是非常有用的信息。前一个图形基本上是lsmod命令的输出。

检查我们的 IPCop 防火墙的状态

这是命令uname -a的输出,从左到右显示:内核名称、网络节点主机名、内核发布版本、内核版本、机器硬件名称和操作系统。

网络状态

网络状态屏幕上包含的信息通常在故障排除网络问题时非常有用。

我们得到的第一个工具是ifconfig命令的着色版本输出,系统上的网络接口被赋予 IPCop 用于标识它们的颜色。当 IPCop 主机连接到通过 DHCP 分配配置信息的网络(如电缆或 ADSL 连接)时,这通常对于验证连接丢失是否与 IPCop 主机相关或服务提供商的网络中断有关是很有用的。由于我们可以看到错误和丢包的数量,这通常也对于排除其他网络问题很有用。

网络状态

lo接口代表本地环回适配器,地址为127.0.0.1,应始终存在。在这个系统上,红色接口是不活动的,但在一个完全配置的 IPCop 系统上,我们可以在这里看到多达五个接口(红色、绿色、橙色、蓝色和环回)。

网络状态

当前动态租约表实际上显示了分配给内部网络段上客户端的DHCP租约。在这种情况下,我们有两个客户端,其中一个没有在 DHCP 请求中提供主机名,另一个(Knoppix)提供了。IPCop 会将主机名注册到 DNS,因此主机Knoppix应该可以通过 IPCop 的 DNS 服务器作为Knoppix进行寻址。

过期的租约通过(划掉)进行了评分。这里显示的输出基本上包括/var/state/dhcp/dhcpd.leases的内容。

除了让我们调试 DHCP,这也是获取特定系统的 MAC 地址的一种快速有用的方法,无论是用于设置静态预留还是其他任何目的。

网络状态

路由表由防火墙用于确定系统处理的 IP 数据报应该转发(或发送)到何处。关于路由的全面讨论超出了本书的范围,但主机路由表是许多网络问题的一个很好的起点,对路由的彻底理解对于有效管理防火墙、网络甚至一组工作站至关重要。

网络状态

ARP 表包括本地网络段上 IP 地址和硬件(MAC)地址之间的当前映射。通常每个网络上的客户端都有条目,以及上游路由器的一个条目(通常是电缆/ADSL 路由器,或更通常是 ISP 的上游路由器)。与许多其他项目一样,这对于某些网络故障排除非常有用,但超出了本书的范围。

系统图表

IPCop 使用一个名为rrdtool的软件包(oss.oetiker.ch/rrdtool/)来维护一组与系统和网络活动相关的统计数据图表。这些在系统安装时会自动设置,我们在系统图表菜单下可以访问的统计数据包括CPU 使用率、内存使用率、交换使用率磁盘访问

系统图表

前面的图表是这种图表的一个示例(用于 CPU 使用率)。点击特定图表会深入到该特定统计数据,为您提供上一天、上一周、上一月和上一年的该指标的图表。

您应该注意,由于 rrdtool 的 UTF 问题(这会阻止使用特殊字符),IPCop 目前受到限制,只能以英语生成这些图表。

网络图表

IPCop 还维护系统中各接口上的网络流量图表。这些与系统图表的工作方式完全相同。

网络图表

连接

连接功能显示了通过 IPCop 防火墙当前进行的所有连接的彩色输出。在此屏幕上点击 IP 地址会对该地址执行反向 DNS 查找,如果配置了反向 DNS(即地址有PTR记录),则会给出与地址相关的主机名。

服务

虽然 IPCop 是一个防火墙软件包,但它包含许多功能,超出了普通防火墙的范围。例如,DNS 和 DHCP 功能通常由单独的主机提供。IPCop 专为较小的部署设计,其中半打不同的服务器(路由器、防火墙、DHCP 服务器、DNS 服务器、代理服务器、入侵检测系统等)根本不可行,它将所有这些功能捆绑在一起。

服务选项卡是我们可以配置 IPCop 中许多独立元素并需要更复杂设置的功能的地方。其中一些在它们自己的章节中介绍;其他几乎总是与 IPCop 一起部署的功能(如 DNS 和 DHCP)将在此介绍。

DHCP 服务器

DHCP 服务器页面的顶部允许我们重新配置安装 IPCop 时设置的一些选项(如起始和结束地址和租约时间)。其他选项,如WINS服务器和附加的 DHCP 选项,现在可以添加到我们的配置中。

DHCP 服务器

如果您不了解 DHCP,那么您可能不需要重新配置它(如果您的 IPCop 盒子正常运行)。但是,您最好了解 DHCP(以及它存在的各种缺陷)。

在页面的下方,我们可以配置固定租约。固定租约(有时称为保留)允许您配置 DHCP 服务器,以便为与特定 MAC 地址匹配的主机响应特定的 IP 地址(而不是从池中随机选择的地址)。这样做的好处是,您可以在集中管理 IP 配置的同时,通过 IP 地址可靠地连接到主机,而不是依赖 DNS。

DHCP 服务器

对于一些设备,如网络打印机或 IP 摄像头,通常不处理动态 DNS(或使用不友好且经常不可更改的主机名),如果您不想在网络上的每个设备上手动设置 IP 地址,这是一个福音。

在此之下,我们可以(再次)看到当前动态租约。如果我们刚刚将一个支持 DHCP 的设备连接到我们的网络,但想要为其分配一个特定的地址,这是一个有用的功能;我们可以复制 MAC 地址,为其创建一个固定租约,并重新启动设备,此时它应该重新获取正确的(静态)地址。

根路径文件名选项对许多网络管理员或 IT 专业人员来说可能不熟悉,用于配置从网络引导系统和通过NFS读取文件。在绝大多数部署中(如页面所示),可以安全地忽略它们。

动态 DNS

许多较小企业或家庭中的互联网连接使用动态分配的 IP 地址,通过 PPP 或 DHCP 等协议,从 ISP 拥有的地址池中分配。这使得 ISP 可以最小化所需的 IP 地址数量(理论上,它只需要与任何给定时间在线的最大客户端数量一样多的 IP 地址),并且使得集中配置更容易。

由于客户端的 IP 地址通常会话对话地更改,如拨号连接的情况,或者在不确定的时间间隔内更改,如 ADSL 或 Cable 客户端的情况,传入连接是一个问题。如果 IP 地址不断变化,就无法让客户端 VPN 到 IPCop 服务器,或者将邮件传递到 IPCop 主机所在的站点。

动态 DNS 提供商解决了这个问题。通过在客户机上使用一个代理,不断更新互联网上的服务器,动态 DNS 提供商可以更新 DNS 名称(例如 youripcopserver.afraid.org)与当前 IP 地址,这样只要 IPCop 主机保持在线,客户端就可以始终通过相同的 DNS 名称连接到它。

IPCop 支持广泛的动态 DNS 提供商列表,其中大多数是免费的。Afraid.org(freedns.afraid.org/)是一个很好的选择,具有可靠和良好设置的服务。所有动态 DNS 提供商的工作原理基本相同——您通过提供商的网站注册一个帐户,然后提供 IPCop 所需的详细信息,以便它可以注册自己。此时(并给一两分钟让一切开始运作),您注册的主机名应该解析为 IPCop 的红色 IP 地址。一般来说,这非常简单和直接。

如果您想在外部进行此测试,但没有外部主机可以进行测试,有几个在线 DNS 测试服务,如www.dnsstuff.com,您可以使用它们来查找您域名的A记录,以查看它是否解析为正确的 IP 地址。

动态 DNS

一般来说,默认情况下选中的在连接期间 IPCop 使用的经典 RED IP选项将是最适合您的选项。如果您的 IPCop 路由器位于另一台路由器后面,实际上连接到 IPCop 盒子通过互联网会遇到问题,甚至在连接到内部服务时也会遇到更多问题,因为您的流量实际上会经历两次网络地址转换。如果您能够这样做,建议的解决方案(如页面所建议的)是删除其他 NAT 路由器,并将 IPCop 红色接口直接插入您的互联网连接。

注意

配置端口转发

请注意,为了能够连接到您的 IPCop 主机(或其后面的任何资源),您将不得不配置端口转发到内部服务,以及能够从互联网解析您 IPCop 主机的 IP 地址。

一些路由器不允许这样做(例如以太网 ADSL 调制解调器),它们将允许您启用桥接模式,而不是执行 NAT。使用 Conexant 芯片组(等等)的 ADSL 路由器具有半桥特性,通过 DHCP 将从 ADSL 提供商接收的 IP 地址传递给通过电缆/DSL 调制解调器的第一台计算机的路由器以太网端口。这是一个技巧,但是一个有用的技巧,因为它允许一个主机直接连接到互联网,而无需复杂的设置。

您应该咨询制造商的文档或支持服务,以获取有关设置的信息,因为这是一个非常复杂的主题,因各个路由器而异。

注意

动态 DNS

请注意,在本书的上下文中,短语动态 DNS指的是两件事。其中一种是在此提到的,指的是将 IPCop 主机的 IP 地址注册到互联网上的提供商,以便互联网上的客户可以通过可预测的主机名(例如youripcopbox.afraid.org)找到 IPCop 主机,即使 IP 地址发生变化。

另一种是在其他地方提到的,指的是 IPCop Green 网络中的客户端向 IPCop DNS 服务注册它们的主机名,以便 IPCop 内部段上的其他计算机可以从它们的主机名解析其 IP 地址。这第二个服务严格来说是内部的,与外部世界没有直接关系。

编辑主机

主机文件在 Linux/Unix 中为/etc/hosts,在 Windows 中为%SystemRoot%\System32\Drivers\Hosts,提供了一种手动设置主机名-IP 地址关系的方法,而无需使用 DNS。这对于测试目的、作为 DNS 的备份或在没有 DNS 的环境中可能很有用。如果您需要强制 IPCop 将特定主机名解析为特定 IP 地址,您可以在这里这样做,而无需复杂的 DNS 配置。这是一件事,除非您对其功能有很好的理解,否则不应该随意更改。

时间服务器

NTP是一种旨在从互联网同步时间的协议。非常简单地说,您的 IPCop 主机连接到一个 Stratum 2 NTP 服务器,并确定时间;这个 Stratum 2 NTP 服务器本身连接到一个 Stratum 1 服务器(或多个服务器),以便将其时间源维持在可接受的精度水平。

Stratum 1 服务器根据外部时间源(如 GPS 时钟或无线电接收器)维护其时间。保持这种分工是为了减轻 Stratum 1 服务器的负载,否则它们将无法应对客户端的数量。将服务器同步到 Stratum 1 NTP 源被认为是一种不良做法,除非您有一个庞大的(以千计计数)网络。您还应尽量选择一个距离您尽可能近的 Stratum 2 服务器(或池),因为服务器越接近,系统就能越准确地设置其时钟。

准确的时间对于网络设备非常重要,特别是对于防火墙,因为能够准确辨别记录事件(如入侵)发生的顺序通常对于维护功能性基础设施和调查(和起诉)入侵者至关重要。

NTP 通常在互联网上保持 5-15 毫秒的精度水平。有关 NTP 的起源、重要性以及可用 NTP 服务器列表的详细解释,请访问ntp.isc.org/bin/view/Main/WebHome

IPCop 具有同步到外部 NTP 源并为本地网络上的客户端提供 NTP 服务的能力。

时间服务器

默认设置,如果您勾选了从网络时间服务器获取时间设置,应该可以正常工作,但建议您选择一个离您更近的主要 NTP 服务器(或池)。正如配置页面所示,IPCop 也可以自动同步时间。

IPCop 还可以通过 Web 界面设置时间。如果系统时钟特别不同步,手动同步后可能不会立即发生 NTP 更新。如果出于某种原因不希望使用 NTP,您可以保持通过此方式更新时间,或者只是用它来测试 NTP,方法是将时间设置不正确,然后验证 NTP 是否确实起作用。

防火墙功能

IPCop 中的防火墙下拉菜单包含配置防火墙本身功能的功能。由于 IPCop 的设计理念是将绿色区域视为隐式信任,并从那里降低信任,因此 IPCop 本身没有出口过滤功能。因此,在这里配置的两个主要选择是外部访问,它允许您控制 IPCop 允许的入站方向的端口,以及端口转发。有关设置更细粒度的防火墙策略的更多信息,请参见第九章 ,特别是有关出口流量(即从绿色到红色的流量)的设置。

外部访问

IPCop 防火墙默认情况下会丢弃红色区域中发起的所有流量。几乎所有通过防火墙进入网络的流量(例如响应网络内部客户端发出的对网站的get请求而提供的网站)都是允许的,但为了允许外部主机连接到 IPCop 防火墙本身,以访问诸如 Web 界面或 SSH 之类的服务,我们需要添加一个外部访问规则。

外部访问

正如我们所看到的,IPCop 默认只有一个外部访问规则,用于端口 113(ident)。尽管 IPCop 主机默认情况下没有在此端口上运行的服务,但此规则存在是为了允许连接到 ident(例如 IRC 或 Internet Relay Chat)的服务连接而不必等待连接超时。通过外部访问打开此端口,IPCop 防火墙上对 ident 的任何连接都将遇到关闭的端口,从而加快连接速度,而不是过滤端口。

因此,默认情况下,如果我们添加一个允许规则,流向允许端口的流量将会命中 IPCop 的外部接口上的端口。外部访问屏幕让我们可以通过 IPCop 的最外层防御允许流量进入,实际上端口转发(或允许流量命中特定内部机器)是在下一部分完成的。

端口转发

由于我们只有一个外部(红色)IP 地址和多个内部客户端,为了允许从互联网连接到特定内部机器上的特定端口,我们必须在红色接口上分配一个端口与内部机器上的服务对应,并将这个流量转发到内部客户端。

在某些情况下,例如如果我们要将内部 SSH(22)服务器发布到网络上,我们可能选择使用不同的外部端口来监听内部主机上的端口。例如,我们可能将防火墙上的端口 4022 转发到内部主机上的端口 22。这种方法的好处是我们可以容纳同一服务的多个实例(使用端口 4023、4024 等),并且隐藏我们的 SSH 服务运行的端口会有轻微的安全性好处。

这种方法的一个主要缺点是在某些情况下,端口对于运行在其上的应用程序是至关重要的。例如,HTTP 流量默认使用端口 80——浏览器需要额外的参数(通常在 IP 地址或主机名的末尾由冒号跟随端口号表示)来访问替代端口上的 HTTP 流量,就像 IPCop 自己在端口 81 和 445 上的 HTTP/HTTPS 接口一样。

如果我们将 HTTP 流量重定向到端口 81(或其他端口),那么在防火墙只允许连接到端口 80 的客户端后面,可能会意外地阻止访问我们的 Web 服务器。

一些服务需要特定的端口号。如果我们有一个内部邮件服务器,我们从 IPCop 防火墙转发端口 25(SMTP)到该服务器,我们必须在外部使用端口 25,否则向我们中继邮件的邮件服务器将无法连接到邮件服务器——SMTP 服务器使用端口 25,Web 上没有使用替代端口的方法。

端口转发

因此,我们的源端口指的是我们在外部接口上打开的端口。目标端口指的是目标主机上的端口。例如,如果我们想要将外部端口 4022 转发到内部主机 10.1.1.123 上的端口 22,我们会在源端口框中输入4022,在目标端口框中输入22,并在目标 IP框中输入10.1.1.123

注意

转发多个端口

您可以通过指定端口范围来转发多个连续的端口。这是通过使用冒号来界定范围中最低和最高的端口来实现的。例如,如果我们想要将外部接口上的端口 10 到 30 转发到网络中的服务器上的端口 10 到 30,我们会在源端口目标端口中分别输入10:30

源 IP 或网络(空白表示“全部”)框允许我们仅接受特定主机的连接。如果我们要打开一个诸如RDP3389)这样的协议到 Web 上,而我们对其安全性并不完全满意,我们可能会选择这样做。或者,我们可能会选择仅从受信任的 IP 地址块主动允许连接,而对所有的端口转发规则都采取这种方法(除了 SMTP,它要求连接来自许多不同的主机,以至于以这种方式设置基于 IP 的过滤几乎是不可能的)。

如果我们要转发诸如 DNS 这样同时使用 UDP 和 TCP 的协议,我们可能会选择不同的协议

防火墙选项

防火墙选项页面允许我们启用和禁用 IPCop 主机上各个接口对ICMP(互联网控制消息协议)回显(ping)请求的响应。通常认为禁用任何不必要的流量是一个好的做法,尽管在防火墙规则中允许这种流量是一个相当常见的遗漏。

虽然这个选项并不是一个与此相关的主要问题,因为它只允许从 IPCop 主机发送 ICMP 响应,但在严格控制出站流量的环境中,有很多理由禁止 ICMP 流量。可以通过 ICMP 隧道传输 IP 流量(即通过 TCP、UDP 和 ICMP 进行的所有连接,包括网页访问、DNS、端口扫描和任何其他类型的 TCP/IP 网络活动)。

这可能导致这样一种情况,即在使用机场或咖啡店网络时,一个恶意用户可以在不支付的情况下访问互联网(因为这种预认证或支付系统通常允许 DNS 和 ICMP 流量穿过他们设置的防火墙),或者在企业中,员工可以规避防火墙策略以访问未经授权的资源和站点。

有关通过 ICMP 进行 IP 隧道传输的更多详细信息,请参见 thomer.com/icmptx/

防火墙选项

使用 Ping 进行网络故障排除

在运行在 IP 之上的三个协议中,构成了互联网上常用的TCP/IP 协议栈(TCP、UDP 和 ICMP)中,ICMP 经常被忽视。ICMP 可以被视为一种管理通道,主要用于发送错误消息和其他用于诊断问题和处理数据的信息。

Ping 实际上使用 ICMP 的“回显请求”和“回显回复”消息,第一个名为 ping 的实用程序是在 1983 年编写的。这种工作方式有时被等同于声纳,发起主机发送一个回显请求消息,通常是发送到特定的 IP 地址的主机。接收主机然后回复一个回显回复消息,发起计算往返时间,以毫秒(ms)显示出来。

这提供了一个很好的、快速的测试:

  • 连接性(对方主机是否回复)

  • 网络延迟(所花费的时间长度)

  • 网络可靠性(保持使用ping命令运行,使用 Windows 的 -t 标志或者在许多其他 ping 实现中默认情况下,通常是检测网络使用或延迟突然增加或连接丢失的好方法)。

最近,互联网上许多主机已经开始对这种类型的 ICMP 流量进行防火墙处理,不回应“回显请求”数据包。在某些情况下,这可能是为了减少带宽使用,而在其他情况下,管理员可能出于安全原因而阻止它。微软(www.microsoft.com)是一个高调的网站的例子,它会丢弃 ping 请求,而谷歌(www.google.com)则是一个不会丢弃的例子。

注意

有关 Ping 的更多信息

有关 ping 的更多信息,请参见 ftp.arl.mil/~mike/ping.html,了解 ping 的原始作者 Mike Muuss 的更多信息,以及 ping 故事的链接(和图片),这是任何 IT 图书馆或书架的有价值的补充!

摘要

我们已经通过 IPCop 网页界面的主要配置,并且到目前为止应该对我们如何利用 IPCop 提供的各种选项来管理、故障排除和监控 IPCop 防火墙在不同场景下有了扎实的理解。

第六章:使用 IPCop 进行入侵检测

现在我们有一个功能齐全的防火墙,大多数基本功能都已设置好,我们感到非常安全。但如果有恶意入侵者呢?如果他们真的进来了,我们怎么知道?我们该怎么办?

这些是入侵检测系统IDS)试图回答的问题;它会检测网络安全方面的问题,并记录任何它识别出的可疑活动,以便我们能够有效地处理安全事件。

IDS 简介

市场上有各种各样的入侵检测系统,从企业级的托管网络监控解决方案到简单的主机日志记录系统。入侵检测系统和 IDS 之间也有区别。IPS 比 IDS 更进一步,试图阻止正在进行的攻击,而 IDS 试图记录攻击并在必要时通知负责人采取安全事件响应计划。

IDS 可以进一步分类为NIDSHIDS,区别在于前者监视网络,后者监视主机。在选择 IDS 时,这一点很重要,因为我们必须确定我们究竟在监视什么。

例如,许多管理员不会在 Windows 或 Unix 系统上使用 HIDS,因为它们内置了大量日志记录的能力(事件日志/系统日志),因此更喜欢监视网络上的流量以寻找恶意行为的迹象。这也比主机监控更可靠,因为很难相信受到威胁的主机的日志。

在 IPCop 的情况下,我们的防火墙上内置了一个 NIDS,预先配置并准备好使用的Snort入侵检测系统。

Snort 简介

Snort 是包含在 IPCop 中的 IDS,是当今最知名和常用的sniffers之一,被世界各地的大大小小网络所使用。它不断更新的签名覆盖了大量的漏洞,拥有庞大的用户群,商业支持以及在线和印刷版的优秀文档。Snort 最初是由 Martin Roesch 在 20 世纪 90 年代末开发的,最初被设计为一个 sniffer,可能还有一些其他功能,因此得名 Snort。

最初作为 sniffer,Snort 相当不错,并与稍老一点的亲戚 TCPDUMP 有关。最终,Snort 被扩展并被认为更像是 NIDS 而不是 sniffer(许多 Snort 的用户并不知道它的 sniffing 能力,并纯粹将其用作 IDS)。

随着 Snort 的广泛应用,Martin Roesch 决定成立一家以 Snort 为基础的公司,提供他作为 Snort 开发者所拥有的安全服务专业知识。这导致了 Sourcefire(www.sourcefire.com)的创建。Sourcefire 现在提供基于 Snort 的商业支持和其他服务。尽管它也雇佣了全职开发人员来开发 Snort,但它仍然是一个开源产品,因此可以与 IPCop 一起提供。IPCop 开发人员为此添加了一个预配置的 Snort 系统,在 IPCop 界面中提供了非常易于使用和简单的管理选项。

我们需要 IDS 吗?

IDS 的需求完全取决于网络和我们想要做什么。一般来说,我会说我们需要它,除非我们能想到一个不需要它的充分理由。

IDS 的附加好处是我们可以看到通过我们的网络的流量,并尝试隔离任何看起来恶意的流量。这很重要,因为许多防火墙缺乏这一功能(除了具有第七层支持的防火墙,被称为应用层防火墙)。由于防火墙在网络通信的较低层工作,它们的过滤规则通常仅限于 IP 地址、端口、时间以及少数其他标准。如果我们的防火墙不检查数据包的有效载荷,而只是根据数据包标头做出决定,那么这些设备可能会允许一些恶意流量通过,这并非不可想象。我们的 IDS 的作用是对这些数据包进行深度检查,查看其中包含的数据,并做出决定,比如:“这看起来像 Code Red 蠕虫吗?”,“这是对我们 sendmail 服务器的缓冲区溢出的尝试吗?”,或者“我们的用户刚刚受到了最新的 0-day WMF 漏洞的利用吗?”。对于管理员来说,被通知任何引起 IDS 警告的数据包是非常有价值的,因为我们可以利用这些信息进一步了解我们的网络状态,看看我们是否有重大问题需要处理,尽管这些警告通常是误报。我们可以把 IDS 看作是一个早期警报系统,提示可能有需要我们关注的事情发生。为了保护我们的网络,这是非常有价值的信息!

附注

第七层过滤(应用层)

对于 IPCop,有提供在这一层进行过滤的选项,但这些选项不是默认提供的,需要安装第三方附件。

IDS 是如何工作的?

NIDS 通常在具有尽可能多网络监控能力的设备上运行,通常在网关设备上或附近运行(如 IPCop 的情况),或者在交换机的某种监控端口上(SPAN/Mirror 端口)。然后,NIDS 设置设备上的网络卡以工作在混杂模式,这意味着它们会将数据包通过网络堆栈传递,无论这些数据包是否是发送给该设备的。这很重要,因为 NIDS 通常会监视除自身以外的其他机器。然后主机上的 NIDS 会接收这些数据包,并查看数据负载(有时也包括标头),以查看是否有任何恶意行为。这可能听起来像人工智能,因为 NIDS 只是坐在那里思考经过的数据包;实际上比那要简单得多!

每天都会有利用漏洞、病毒、蠕虫、间谍软件和其他恶意软件生成网络流量,这些流量通常具有特定于所使用软件的模式,利用漏洞中的特定字符串,它联系的特定主机以及 TCP/IP 标头中的特定选项。有许多人在监视他们的网络,当他们注意到看起来很奇怪的东西时,他们会记录下来,并通常向同行寻求建议,看看是否有人注意到类似的情况。很快,如果检测到恶意活动,有人会为他们喜欢的 IDS 编写签名,而且在许多情况下会同时为几个 IDS 编写签名。基于这些签名,IDS 检测引擎将决定是否将数据包标记为可能恶意。这些很少是 100%准确的,因为它们可能会产生误报或漏报。这种检测被设计为额外的防御层,不能确定网络是否已经遭到入侵。可以做的是提醒管理员有异常情况发生。在 IPCop 上的 Snort 处于一个很好的位置,可以警告任何试图通过防火墙到受保护接口的恶意行为,甚至在受保护接口之间。

使用 Snort 与 IPCop

使用 IPCop 设置 Snort 是一个非常简单的过程。SourceFire 要求用户注册,如果他们想下载更新的签名。我们确实希望有更新的规则,所以我们应该确保注册 SourceFire。可以通过按照在 Snort 网站上注册并生成 Oink 代码的屏幕上的说明来完成。

使用 Snort 与 IPCop

注册后,我们填写上一个屏幕上的表格。我们通过选中相应的复选框来选择要监视的每个接口。作者的偏好是在此时监视所有接口,然后在监视日志时进行过滤。除非我们有一个允许访问订阅规则的付费订阅,否则我们应该选择SourceFire VRT rules for registered users,然后输入从 Snort 网站获取的Oink Code。现在我们可以下载最新的规则。就是这样!通过填写一个非常简单的表格,我们现在为我们的网络配置了一个 NIDS。现在我们肯定是安全的!

监视日志

单独的入侵检测系统毫无用处;它需要一双眼睛来查看日志并采取行动,或者一些自动通知系统。IPCop 的 Web 界面提供了对网络中发生的情况的原始第一印象。

这可以在Logs IDS Logs菜单选项下找到,如下图所示:

监视日志

日志屏幕默认显示今天的日期,并提供了一些有趣的信息。今天是 12 月 20 日,激活了 381 条规则,这意味着 Snort 注意到网络上发生了 381 次可能的攻击。这个数字是异常高的,因为数据是作者人为生成的,但通常情况下,你会预期每天激活几条规则,具体取决于你的网络规模。家庭用户应该预期看到很多端口扫描和自动蠕虫攻击。如果我们更仔细地查看其中一条规则,我们可以看到 Snort 在日志中向我们展示了什么。

日期:12/20 12:51:41 名称:SNMP 请求 udp

优先级:2 类型:尝试信息泄漏

IP 信息:10.0.0.102:32833 -> 10.0.0.200:161

参考资料:未找到 SID:1417

我们可以看到,来自 IP 地址10.0.0.102的计算机尝试使用攻击者的端口3283310.0.0.200的端口161发出基于UDPSNMP请求,试图获取我们网络的信息。我们还有一个SID值为1417。这是让我们知道发生了什么的基本信息。我们可以看到谁、什么、在哪里以及何时——这对入侵检测非常重要。这里唯一没有明显解释的值是 SID。

SID 是 Snort 签名 ID,数字本身是指向 SID 在线数据库的链接,其中包含有关此事件的更多信息。

监视日志

这为我们提供了大量信息,并让我们准确地缩小了在这种情况下发生了什么。在虚警部分,我们可以看到当系统被安全扫描软件扫描时,这个事件可能发生,而在这种情况下是完全正确的,因为作者使用 OpenVAS(www.openvas.org)对 IPCop 盒进行了扫描,这是一个开源漏洞扫描仪。

注意

OpenVAS

OpenVAS 是 Nessus 安全扫描仪的一个分支,现在作为一个独立项目进行开发,以提供对 Nessus 最新的非 GPL 版本的替代方案。

优先级

另一个非常重要的字段是优先级,在这种情况下是2。Snort 默认有以下三个级别:

  • 级别 1:

  • 检测到可执行代码

  • 尝试或成功获取管理特权

  • 特洛伊木马签名

  • 级别 2:

  • 尝试/成功的拒绝服务

  • 尝试/成功信息泄漏

  • 异常的客户端端口连接

  • 级别 3:

  • 端口扫描

  • 可疑字符串检测

每当检测到攻击时,匹配规则的优先级将被引用,以为事件赋予其优先级编号。这些数字是规则的一部分,如果必要,可以通过手动修改 Snort 规则来进行修改。这里不会涵盖手动修改 Snort 配置;但是,关于 Snort 的主题有许多书籍和大量在线文档可供使用。

日志分析选项

由于 Snort 是一个被广泛使用的项目,因此有各种分析产品可用。我们将快速浏览一些最常用的产品以及它们提供的功能。IPCop 的日志记录系统对于大多数分析来说并不完全足够,并且绝对不能用于提供通常在入侵尝试时所需的报告。已经创建了许多项目,以便分析和报告这些日志。为了使用这些工具,您可能需要配置 IPCop 以将日志记录到远程 syslog 服务器,或者在某些情况下,您可以安装并添加到 IPCop 中。

Perl 脚本

对于 Snort 日志分析来说,最简单的安装和使用产品之一是出色的 SnortALog。它提供了一些出色的功能,最有用的是它用于报告生成的能力 - 您可以获得 ASCII、PDF 或 HTML 格式的报告,其中的图像表示为 GIF、PNG 或 JPEG。这使得报告非常出色,因为您可以获得各种图表和统计数据,然后可以在演示文稿或其他报告中使用,用于网络安全状态的报告。SnortALog 与 Snort 提供的所有输出选项兼容,并且具有易于使用的 GUI 用于生成报告。还有 SnortSnarf 的选项,它提供了与 SnortALog 类似的功能;但是 SnortALog 相对容易使用,而且显然 SnortSnarf 已不再开发。SnortALog 还提供了更多的报告选项,并且外观更加精致。

酸和碱

还有一些更全面和复杂的系统可用于监视和分析 Snort 日志。例如,基于 PHP 的 ACID 需要使用 Web 服务器,并提供 Snort 日志的实时监控和统计信息。此外,通过上述 PERL 脚本生成的统计信息,您可以进行非常强大的进一步分析。例如,您可以进行相当广泛的查询,以仅提供您当前分析最感兴趣的事件,您可以查看生成事件的数据包内容,并仔细分析数据包数据,以充分确定攻击的程度以及它是否是误报。BASE 是 ACID 的替代品(从 ACID 分叉出来),提供类似的功能,值得比较这两者,以找到我们监视入侵检测系统的首选产品。

下一步该怎么办?

一旦确定发生了事件,迅速采取行动是非常重要的。尽管 Snort 本身只提供了一些关于进一步查看特定事件的想法,但管理员有责任决定如何处理事件。

在较小的网络中,正式的事件响应计划并不总是必要的,但是如果我们知道如何处理特定攻击,可以帮助维护系统安全。一些很好的例子包括端口扫描、拒绝服务和利用尝试。然后我们可以决定诸如:

  • 我们是否想要报告这些?

  • 如果发生其他保护系统,我们是否想要分析它们?

  • 我们需要通知某人吗?

在设置 IDS 时回答一些基本问题,可以使 IDS 在成为网络保护有效计划的一部分时具有更多的价值。

总结

在本章中,我们已经介绍了什么是 IDS 的基础知识,它是如何工作的,如何在 IPCop 中使用 Snort,以及与 Snort 一起使用的其他工具。

在这一点上,我们已经了解了网络保护、网络监控,至少对如果发生攻击尝试我们会做些什么有一个基本的想法。这使我们在网络上处于一个良好的状态,并确保我们完全了解正在发生的事情。正如在本章的介绍中提到的,入侵检测系统(IDS)应该给我们一个网络安全状态的基本概述——我们是否受到攻击,攻击来自何处,以及攻击目标是什么。

凭借这些信息,我们可以有效地增加网络的安全性。使用这样的自动化工具意味着我们可以更容易地每天监控这些活动,并确保我们始终了解我们的周围环境。了解我们的网络如何运作以及每天通过它的数据类型是发现网络入侵的重要措施。如果我们没有基线来进行比较,我们就无法意识到出了问题;不断监控我们的 IDS 给了我们这个基线。

第七章 虚拟私人网络

正如前几章所讨论的,支撑网络运作方式的许多技术是根据与今天的 IT 专业人员和计算机用户面临的考虑截然不同的情况设计的。其中最突出的是安全问题。

远程访问是 IT 专业人员关注的另一个主要问题,它是允许员工、承包商、客户和供应商通过广域网或互联网访问资源和服务的做法。这种做法不仅涉及将公司的内部网络连接到互联网,还允许来自互联网的流量访问内部网络,因此带来了固有的安全风险。其中一些风险源于远程访问系统给攻击者探测和攻击网络的能力,而另一些风险源于传统上,信息是以明文形式通过互联网传输的,没有任何形式的篡改保护。

最后一个问题的含义是,如果我们使用传统的协议,比如 HTTP 或 NFS 来访问我们的信息,或者让他人通过互联网访问我们的信息,那么任何具有适当访问权限的人(即任何具有物理或逻辑访问我们网络基础设施的人——交换机、路由器、集线器、防火墙等)都可以拦截、阅读、复制或篡改我们的信息。

因此,与其简单地将诸如 HTTP 服务器、邮件服务器、文件服务器和终端服务或 VNC 服务器等服务直接暴露在互联网上,现在越来越多的做法是将这些服务安全地放在一个VPN虚拟私人网络之后。

什么是 VPN?

顾名思义,VPN 是一个虚拟网络。也就是说,与企业或小办公室的本地网络不同,后者通常包括成千上万码的电缆和许多网络设备,虚拟网络根本没有实体——事实上,它存在于现有网络之上。它也是私有的,这意味着在这种情况下它既是加密的(这样第三方就无法看到我们发送和接收的内容),又是经过验证的(我们需要用密码等方式来确认身份才能使用它)。

考虑一个涉及一家小公司的情景,该公司有少数销售员经常在国内外不同地方工作。销售人员需要定期将销售信息与其他在外和在内的销售员同步,以及发送和接收电子邮件和访问其他类型的公司信息。直到现在,这些服务只能在我们的防火墙后面访问。

销售员使用虚拟私人网络,将笔记本电脑连接到所住酒店的无线网络,使用电脑的无线适配器提供互联网访问。一旦通过 Wi-Fi 连接到互联网,他/她就连接到公司的 VPN,VPN 客户端软件建立了与公司 VPN 服务器的安全连接。笔记本电脑上出现了一个新的虚拟网络接口,分配给销售员笔记本电脑的 IP 地址对应于公司网络的内部段。

现在,前往内部网络的流量可以通过这个网络接口。通过这个接口的流量由 VPN 客户端软件封装并通过加密的 VPN 链路发送,然后在另一端由 VPN 服务器解封装并路由到内部网络。销售总监在公司总部的办公桌上可以看到销售员的笔记本电脑在网络上,就好像它实际上插在网络上一样,尽管访问速度稍慢!

这是对 VPN 软件实际工作方式的技术上的极度简化,但它在高层次上给出了这个过程如何发生的一个很好的概念。网络感知应用程序(如电子邮件客户端、FTP 客户端或 Samba 客户端)可以访问内部网络上的资源,而不必意识到网络连接,只需简单地进行与以前相同的连接即可——VPN 软件和驱动程序处理封装和解封装。公司越来越多地使用 VPN 进行与上述情况非常相似的场景,使用各种技术,包括IP 安全IPSec)、第二层隧道协议L2TP)、点对点隧道协议PPTP)、SSH、SSL 以及一些专有协议,如专有 VPN 服务 Hamachi 使用的协议。

除了提供对另一个网络的访问之外,最近设置的一些 VPN 系统,例如 Hamachi 提供的或作为 Google Wi-Fi 服务一部分的 VPN 服务,只是在使用不受信任的网络连接(特别是公共场所的无线网络连接)时提供一些隐私保证(通常是未加密和非安全的)。

专有互联网 VPN 服务

Hamachi 的 VPN 服务(www.hamachi.cc/)是互联网 VPN 服务中不断增长的一种,它只寻求为用户提供隐私(即用户无法访问互联网上不可用的额外资源,与我们的销售员和公司 VPN 不同),以保护用户在不受信任的网络连接上(如 Wi-Fi 网络)的隐私。

在这种情况下,流量被隧道传输到 VPN 连接所有者拥有的服务器,并且额外的隐私是通过假设这些所有者(如 Hamachi)不太可能试图拦截您的信息,而不是您通过不受信任的网络连接连接的其他用户(可能有支持此操作的政策)。

IPSec

尽管许多 VPN 协议都在常见的部署中(PPTP 和 L2TP 由于它们作为 Windows 产品系列的一部分而广泛部署),IPSec 是最独立、标准化的解决方案,并以一种形式或另一种形式纳入了大多数 VPN 解决方案。

大多数支持 IPSec 的设备将与其他这类设备形成隧道,尽管这并不是保证——特别是具有此功能的低端设备(如 SOHO 路由器)通常非常难以配置和故障排除,并且通常对 IPSec 功能的制造商支持不佳。尽管 IPSec 应该是可互操作的,但在两端使用相同的设备通常可以避免很多麻烦!还值得注意的是,在谈到互操作性时,IPSec 只支持主模式IPSec,而不支持主动模式IPSec。

PPTP 和 L2TP

PPTP 最初由思科设计,后来由微软许可为 Windows 拨号网络的 VPN 协议(实际上是 Windows 中原生支持的第一个 VPN 协议)。流量使用微软挑战-握手认证协议 v2MS-CHAPv2)或可扩展认证协议-传输层安全EAP-TLS)(使用证书)进行认证,并使用MPPERSA RC4)进行加密。尽管 PPTP 通过证书加强了安全性,并且比 IPSec 复杂得多,但如果没有证书,它仍然比 IPSec 弱,并且受到较少的广泛实施。

L2TP 是 Cisco 的第二层转发L2F)和 PPTP 的进化进程。它不实现认证或加密,因此通常与 IPSec 一起使用以形成 VPN。由于使用了 IPSec,L2TP/IPSec VPN 比使用 PPTP 更安全,并且存在使用更高级加密的潜力。

IPSec 本身的范围不仅仅是用于 VPN,它还是IPv6规范的强制部分。最初它是为两种部署场景而设计的:

  • 隧道模式: 隧道模式中的 IPSec 旨在像前一种情况一样,将流量从一个以上的主机(或整个网络或网络)隧道到另一个主机或一组网络,端点用于在流经中间网络之前和之后封装和解封装流量,通常是互联网。

  • 传输模式: 传输模式中的 IPSec 旨在一般保护 IP 通信。尽管可以在互联网上部署,但通常部署用于保护 LAN 段,无论是在需要加密特定主机之间通信的关键任务场景中,例如 Web 和数据库服务器,还是保护整个网络。这样的系统可以作为分布式防火墙策略的一部分来使用——通过配置网络上的所有主机只使用 IPSec 进行通信,任何未经授权连接到网络的主机都无法直接连接到其他主机,有效地将该主机隔离在网络的某一层。

微软采用这种设置作为其服务器和域隔离的一部分(有关在 Windows 平台上使用 IPSec 进行逻辑隔离的更多信息,请参见www.microsoft.com/technet/itsolutions/network/sdiso/default.mspx),这是安全最佳实践的一部分,也是网络访问保护NAP)和网络访问隔离控制NAQC)框架的一部分。

正如我们所看到的,IPSec 是一个复杂的主题,可以用来做很多事情。然而,在本章的范围内,我们只需要知道 IPSec 可以用来保护 IP 流量,在这种情况下,IPCop 利用 IPSec 作为 VPN 系统的一部分,允许远程客户端通过互联网上的安全加密隧道出现为虚拟地连接到内部网络,以及一个或多个网络(例如客户的内部网络或酒店无线网络)。我们还可以使用 IPSec 来连接两个 IPCop 防火墙(或一个 IPCop 防火墙和另一个支持 IPSec 的路由器或防火墙),以形成一个虚拟站点到站点网络。以下链接提供了学习更多关于 IPSec 的绝佳起点:

关于部署 IPSec 的更多信息

对于希望充分设置、管理、维护或支持使用 IPSec 作为站点到站点部署的网络的任何人来说,对 IPSec 的基本理解都是重要的。

即使是比 IPCop 更少亲身参与的解决方案,例如商业防火墙与站点到站点 VPN 解决方案,也经常需要高级调试,这又需要对它们使用的协议有深入的了解。商业防火墙套件与 VPN 支持,如微软的 ISA 服务器、Checkpoint、Borderware,或者从小型 VPN 路由器到企业级防火墙的任何防火墙设备,通常很难进行故障排除。

特别是设备,由于它们在许多定制的免费 IPSec 软件实例中的使用,很难进行故障排除,因为它们与其他 IPSec 软件包相似,但经过 OEM 供应商的修改。维基百科在撰写时列出了九种不同的 IPSec 软件供应商。

出于所有这些原因(以及好奇心),您希望对为什么要学习 IPSec 有一些想法(或者没有想法!)。

我们可以在 IPCop 中以两种方式设置 IPSec:其中一种被称为具有预共享密钥的 IPSec;预共享密钥就像是已知于连接的两个端点的密码。虽然设置简单,但比第二种方式不安全,第二种方式依赖于由证书颁发机构(CA)颁发的证书。

注意

预共享密钥与证书

PSK 比证书不安全,因为它是一种固有较弱的安全机制。预共享密钥通常(像密码一样)被选择,因为它对人类来说是可记忆的,因此比证书更容易被暴力破解,证书包含高度随机的字符集,并且需要对公钥和私钥部分都有了解才能造成安全漏洞。

证书可以由 Verisign、Thawte 或 CAcert.org 等 CA 发行,或者您可以设置自己的 CA(要么仅用于生成这些证书,要么作为更大 PKI 系统的一部分)来完成这个过程。您不必为此支付费用,也不必经历(非常)痛苦的经历。

注意

配置您自己的 CA

如果您使用带有 Active Directory 的 Windows Server,您可能已经具备了一个灵活、安全的 PKI 系统的基础设施和软件,其中包括您自己的 CA。微软 TechNet 上有关于此的出色指导:

www.microsoft.com/windowsserver2003/technologies/pki/default.mspx

如果您使用另一个操作系统,或者更愿意将您的 PKI 环境与 Windows 基础设施分开,onlamp.com 在以下 URL 上有一个很好的入门指南:

www.onlamp.com/pub/a/onlamp/2003/02/06/linuxhacks.html

运行您自己的 CA,特别是如果您开始依赖它来执行诸如 IPSec 和文件加密之类的任务,这在任何业务中都是一个极其重要的角色,如果出现问题,可能会给生产力带来大量的头痛,如果被破坏,可能会造成很大的损害。如果您决定采取这一步骤,强烈建议您阅读有关证书颁发机构最佳实践的信息,并听取一些在这一领域是专家的人提供的一些建议。

微软的指导虽然是针对 Windows 的,但在 CA 最佳实践方面提供了出色的指导,许多关于 CA 位置和管理、以及智能卡和 HSM 使用的建议,无论您选择在哪个平台和操作系统上运行您的 CA,都适用。至少,如果您没有 Windows 基础设施,值得看看另一方是如何做的(以及它的实施是否有任何价值),然后再决定是否自己建立这样的基础设施。

成功 VPN 的先决条件

对于站点到站点的 VPN,IPSec 设置过程也可能会有些混乱,因为术语。因此,在尝试设置 VPN 之前,将所需的所有信息都写下来是非常重要的。作者甚至建议使用易于理解的表格,比如下一页上显示的表格。

VPN 设置的绝大多数问题(其中许多令人沮丧并且需要花费大量时间)都是由于配置错误和不匹配的设置引起的。花几分钟时间制定部署计划,并清晰地在一张纸上标出您的设置,将为您节省宝贵的时间和理智。

我们的先决条件是:

可靠的网络

由于 VPN 连接是通过中间网络(如互联网)进行的,它们的成功和稳定性取决于中间网络的可靠性。VPN 会给网络增加更多开销,任何延迟或低带宽都会在 VPN 上被(轻微地)放大。

连接到互联网的两个端点运行 IPSec 软件

我们需要在两个端点上运行 IPSec 软件才能使站点到站点 VPN 正常工作!

静态红色 IP 地址用于两个端点或动态 DNS 主机名

没有这些,我们就无法始终建立连接。虽然很少见,但一些 ISP 会为客户分配 RFC1918 范围内的地址,也就是说,192.168.0.0/16,10.0.0.0/8 和 172.16.0.0/12。虽然这种情况不太可能发生,但首先要检查你是否有一个真正的 IP 地址!

不重叠的内部地址空间

没有重叠的地址范围,我们无法将流量从一个站点路由到另一个站点。

正如您可能已经从前一章关于网络的内容中了解到的那样,路由和路由对于将数据从一个网络子网传递到另一个网络子网非常重要。当计算机尝试连接到另一台计算机时——例如,连接到 192.0.2.33 上的 SSH 服务器——操作系统首先检查以确定这个 IP 地址是否是本地的。如果我们的计算机具有 IP 地址 192.0.22.99 和子网掩码为 255.255.255.0,计算机将使用 IP 地址和子网掩码的二进制进行计算,以确定 IP 地址的哪一部分是网络部分,哪一部分是主机部分。在这种情况下,IP 地址的前三个八位组(192、0 和 22)是网络部分,而第四个(也是最后一个)八位组是主机部分。

由于 192.0.2.33 地址的网络部分(192.0.2)与进行连接的计算机的 IP 地址的网络部分(192.0.22)不匹配,计算机无法通过交换机或集线器直接连接到目的地,因此必须将数据传递给路由器,以便直接将数据传输到目的地或通过一个或多个路由器传输数据。

路由表包含一系列条目,其中包含对应于 IP 地址的网络,通过这些子网可以到达。由于客户端计算机必须连接到一个路由器才能将数据发送到非本地机器,路由表中列出的每个路由器 IP 地址必须与客户机中网络适配卡分配的 IP 地址处于相同的子网中。一般来说,客户端计算机往往只有一个网络适配卡,只有一个(重要的)路由——即默认路由。这是客户端计算机如果在路由表中没有其他更高的条目,则将传输流量的路由器。

在大多数 Linux 发行版中,您可以使用ip route list命令显示路由表的输出,在 Linux 和大多数 Unix 发行版中,使用没有参数的route命令。在 Windows 中,使用route print命令将显示路由表。

在 VPN 配置中,我们的主机必须知道 VPN 连接的另一端是哪个子网,以及本地是哪个子网。因此,使用重叠的 IP 范围会破坏 VPN——如果我们有一个使用 192.168.0.1/24(或带有子网掩码 255.255.255.0 的 192.168.0.1)地址范围的网络,并且配置了一个使用 192.168.0.1/24 地址范围的网络的 VPN,我们的计算机或 VPN 路由器将无法将数据包从一个范围路由到另一个范围,因为它不知道主机 192.168.0.22 计算机在哪个192.168.0.1/24 地址范围内。

地址空间应该经过规划,如果您预计您的网络将来需要访问 VPN 或站点到站点 VPN,您应该选择一个非默认的私有 IP 地址范围(例如 10.0.0.0/8(10.0.0.1 到 10.255.255.255)范围,或者一个非标准的 192.168.0.0/16 子网(例如 192.168.130.0/24)以便在将来更容易地处理。

时间和耐心

IPCop 使用的leftright术语可能会有些令人困惑——在这方面可以给出的最好建议是选择一个站点作为left,另一个站点作为right。下面的表格演示了这一点——一个站点清楚地标有L,另一个R。换句话说,配置 VPN 的两端要相同!

IP 地址

这些示例使用 172.16.0.0/12 地址范围中的外部地址—如果您在 Internet 上配置 VPN,您的实际红色外部地址将是您的 ISP 分配的公共地址。

为了本章的目的,我们将考虑在剑桥和牛津两个物理分离的位置之间的两个 IPCop 防火墙之间的网对网配置。在本例中,这两个主机被认为是设置为红-绿配置的 IPCop 防火墙,其互联网连接具有固定 IP 地址。

左侧站点 站点名称: ____ 剑桥 _______
红色(外部)IP ____172.16.12.19 网关(内部)IP _192.168.0.10
内部网络 _192.168.0.0/24
预共享密钥: _____ "不要和陌生人说话!" ______________________________ __________
右侧站点 站点名称: ____ 牛津 _______
--- --- --- ---
红色(外部)IP ____172.16.22.19 网关(内部)IP 192.168.1.1__
内部网络 _192.168.1.0/24
预共享密钥: _____ £agh@;323lkj$%=sdf9SD-+" _____________________________ ____________

以下页面包含这些表格的空白版本,以便您可以,如果愿意,将这些表格用于您自己的环境。

左侧站点 站点名称: ____________________
红色(外部)IP __________________ 网关(内部)IP __________________
内部网络 __________________
预共享密钥: _______________________________________

注:

右侧站点 站点名称: ____________________
红色(外部)IP __________________ 网关(内部)IP __________________
内部网络 __________________
预共享密钥: ____________________________________

注:

首先,在剑桥防火墙上,我们使用红色 IP 配置全局设置:

时间和耐心

接下来,我们添加一个新的 VPN 并选择网对网虚拟专用网络:

时间和耐心

接下来,我们将 VPN 配置设置输入对话框:

时间和耐心

附加的 IPSec 设置

完美前向保密PFS)和死对等检测DPD)是您可能希望考虑启用的两个附加设置。两者都需要 VPN 隧道两端的支持,但分别提高了安全性和有效的服务提供。

PFS 确保在 VPN 上使用的密钥被破解时,使用其他密钥加密的数据也不会受到威胁—密码学中完美前向保密的属性将数据泄露分隔开,以防密码学被破解,使攻击者必须破解会话生命周期中使用的每个密钥才能拦截或解密所有会话数据,而不是能够破解一个密钥并访问所有会话数据。

DPD 使用Internet 密钥交换IKE)来查询 IPSec 伙伴,以确保其仍然活着。这确保了您的 IPSec 端点准确地知道会话的状态,因为它将检测故障并关闭连接(因此尽可能重新建立会话)更迅速。

接下来,我们添加 VPN 并验证它是否出现在主VPN对话框中:

时间和耐心

一旦我们在牛津 IPCop 主机上配置了相同的 VPN(具有适当的配置信息),我们的 VPN 应该是可用的。

验证连接

在最近的 IPCop 版本中,VPN 页面上有一个清晰的指示器,指示 VPN 的状态。然而,在那之后,我们首先要查看网络状态屏幕,在那里我们应该看到类型为ipsecXUP VPN 接口,其中 X 是一个数字(对于我们配置的每个 VPN,从 0 开始递增)。

我们还应该使用route命令或带有r标志的netstat命令(netstat -nr)检查路由表,以查看 VPN 隧道另一侧子网的路由是否存在。如果一切正常,我们可以尝试对远程侧私有子网中的主机进行 ping 测试。

通常,VPN 问题是由配置问题引起的,其中许多问题可以通过仔细注意合理 VPN 的先决条件来避免——其中一些例子是参数不匹配、子网重叠或存在网络配置问题。在尝试重新配置之前,重置现有的 VPN 配置总是值得的,如果有疑问,第二双眼睛通常可以帮助发现您忽略的错误。

如果您绝对确定您的配置匹配,并且您的网络已正确配置,那么可能存在互操作性问题。支持 IPSec 的不同设备经常不像预期那样一起工作,有时根本不起作用。SOHO 和嵌入式设备经常在与正常Openswan 安装和其他 IPSec 堆栈交流时表现出非常奇怪的行为。事实上,支持 IPSec 的廉价路由器经常只能与具有相同型号和相同固件版本的其他路由器通信,甚至不能与同一供应商的其他路由器通信。这是一个相当棘手的领域,通常并不是很有趣。如果有疑问,您可以控制的 IPSec 堆栈(例如 IPCop 的)或受支持的堆栈(例如您可能在受支持的 Cisco 路由器上找到的堆栈)通常值得额外的费用或努力。

尽管我们的设置没有涵盖这一点,但 IPCop 防火墙允许为 VPN 使用动态DNS 名称(如管理章节中所述)。正如 VPN 配置页面所示,IPCop 机器启动后,这些更新可能需要一段时间才能完成;因此,如果您的系统使用动态 DNS 和 IPSec,您可能希望在启动 VPN 之前配置 60 秒(或更长时间)的延迟,以防止 VPN 失败。如果主机启动的最初几分钟内始终发生故障,这也值得注意!

使用预共享密钥的主机到网络连接

我们的主机到网络或路由战士连接的程序与网络到网络配置非常相似。我们首先在添加对话框中选择适当的 VPN 类型:

使用预共享密钥的主机到网络连接

然后,我们使用适当的参数配置 VPN:

使用预共享密钥的主机到网络连接

值得注意的是,您只能使用 PSK 进行一次主机到网络连接。

使用证书的主机到网络连接

基于证书的 VPN 配置比预共享密钥复杂得多,但也显著提高了 VPN 提供的安全级别。

证书和 X.509 的简要解释

请注意,本书对 X.509、证书或密码学进行详细解释——这里的信息旨在让您对 IPSec 的功能有一些了解,以便您理解它在什么情况下起作用——但更进一步,让您了解您知道的东西,并且如果您认为重要,可以自行阅读。

这些都是非常复杂的话题,如果您使用这项技术,值得花费数小时甚至数天的时间阅读。维基百科几乎涵盖了这里提到的几乎所有技术术语的综合文章,虽然不具权威性,但通常是指向正确方向的极好指南,并且经常有出色的内容。

在这种情况下,证书是 X.509 证书,其起源于 X.500,这是一组用于目录服务的标准,包括协议目录访问协议DAP),是 LDAP 的前身。

广义上说,目录服务是一组用于存储有关网络、其提供的服务以及其用户的信息的应用程序和协议,通常包括用户名、用户配置文件、登录信息、安全信息以及许多其他应用程序特定信息。

在目录服务系统中,目录是存储在目录服务器上的数据库,通常位于中央位置。该数据库通常包含用户、计算机和其他对象的条目,每个对象都有参数,例如用户的用户名分机号

X.509 证书类似于目录中的条目,因为它们在一个单一文件中存储了许多参数。X.509 证书中存储的参数包括一些强制字段,如序列号、主题、颁发者以及存储在证书中的密钥的信息,还有用于将附加信息合并到证书中的扩展,以及在 X.509 PKI 系统中加入功能。

X.509 系统使用证书颁发机构(CA)来发行和管理这些证书。这些 CA 通常存在于树的顶部,并且有一种层次结构。

如果您打开任何现代浏览器的副本,您已经将证书存储库(或者在 Windows 中,操作系统本身)集成到了浏览器中。在 Windows 中,可以通过 Internet Explorer 访问它,方法是点击工具 | Internet 选项 | 内容 | 证书,显示一个类似以下的窗口:

证书和 X.509 的简要解释

窗口顶部的标签指示正在查看的证书的类型,在这个例子中,所选的标签(默认标签)是个人证书,这些证书是由证书颁发机构颁发给用户或计算机的。这些证书可能用于使用S/MIME等标准发送签名电子邮件,或者使用 IPSec 访问 VPN。

与证书关联的私钥在这些情况下将被用来签署电子邮件以验证发件人(或者可能是签署电子邮件并使用其公钥加密给另一个 S/MIME 用户),或者用于认证到 VPN 服务器。

前一张图片中可见的最右边的标签是受信任的根证书颁发机构

证书和 X.509 的简要解释

就像我可以验证发送给我的 PGP 签名电子邮件一样,如果我有发送者的公钥(在数学上,我可以建立电子邮件是由相应私钥的所有者发送的,这种方式不容易被破坏),我可以验证证书是由前一张图片中显示的证书的一个关联私钥签署的。

由于密钥分发很困难,使用根证书签名非常重要,因为它使我们能够将所有信任放在一个地方。由于我们知道(理论上)VeriSign 只有在验证了他们所说的人的身份后才向人们发放证书,因此如果我们收到由 Verisign 的根证书签名的joebloggs@somecompany.com的安全电子邮件证书,发送者是joebloggs@somecompany.com(假设我们同时信任 Verisign 和 somecompany.com 的安全性)。

在线购物、电子邮件和许多其他事情的背景下,这是非常重要的!简而言之,这些签名使您的计算机能够根据签署证书的人以及我们是否信任他们和他们的证书发行过程来做出关于如何处理证书的决定。

HTTPS 使用 X.509 证书作为 SSL 的一部分,因此当您查看一个安全网站(URL 前缀为https://)时,您的浏览器要么认识到 SSL 使用的证书是由该地址的根证书颁发机构颁发的,要么不认识。在后一种情况下,浏览器通常会弹出一个错误——这可能是因为证书是为稍微不同的网址(例如,如果您访问www.gmail.com,该网址使用了不同 URL 的证书),或者因为证书是自签名的或由您信任的根证书存储中没有的根证书签名的(例如 CAcert,www.cacert.org,或者在没有完整一套受信任的根证书的设备上,比如智能手机)。

根证书包含在诸如浏览器之类的产品中,由开发它们的公司或组织自行决定——这是互联网上使用的 X.509 PKI 实现的许多缺陷之一。

回到 IPSec;IPSec 可以像 HTTPS 一样使用 X.509 证书来验证 VPN 中的客户端。请注意,与这些证书相关的密钥实际上并不用于加密 VPN 本身发送的内容,而是用于安全交换会话密钥,然后用于加密实际数据。完美前向保密性是其中一个原因——使用相同的密钥会使整个 VPN 容易受到威胁——但也有两种主要类型的加密密码可供使用。

一种常用于加密电子邮件或文件加密的方法使用公钥和私钥,被称为非对称密码,其中公钥用于加密数据,然后以只有私钥持有者才能访问的格式。这种密码非常适合用于像电子邮件这样的通信,因为您可以随意分发您的公钥,用户可以在世界任何地方离线加密信息发送到您,然后通过不受信任的网络发送给您。只有当您收到该信息时,它才会被解密。

另一种对称密码只使用一个密钥——相同的密钥用于加密和解密。由于涉及的数学问题,这些密码加密和解密速度更快,但由于只使用一个密钥,不太实用——密钥分发成为一个问题,因为在一个拥有大量人员的环境中,需要非常多的密钥才能让每个人都能与其他人安全通信——实际上是每个人对每个其他人一个密钥!

由于在快速数据流上使用非对称密码的实际性,诸如 IPSec 和 SSH 之类的通信会生成用于传输数据的对称密钥(使用诸如 RC4、AES 和 blowfish 的密码),然后使用非对称密钥(使用诸如 RSA 的密码)在会话完全建立之前交换用于此传输的密钥。

IPCop 中的 IPSec 证书

IPCop 1.4.0 版本不仅包含基于证书的 IPSec 隧道的支持,还包含内置的 CA,以避免配置自己的 CA 或从第三方 CA 购买证书的麻烦!

因此,我们在配置基于证书的 IPSec VPN 的第一步是在 VPN 证书颁发机构窗口中。在 IPCop 中,默认情况下,这将列出根证书主机证书未出现

IPCop 中的 IPSec 证书

如果我们正在使用现有的根 CA(或配置站点到站点的 VPN),我们需要使用上传 CA 证书按钮上传证书文件,但对于路由战士配置(或在从另一个防火墙上传证书文件之前),我们首先需要在CA 名称字段中输入 CA 的名称,完成后,点击生成根/主机证书开始生成我们自己的根 CA 和主机证书的过程。

IPCop 中的 IPSec 证书

加载下一页后,我们需要填写我们希望 X.509 证书具有的参数。我们需要填写的参数是组织名称,IPCop 主机名,电子邮件地址,部门,城市,州国家

IPCop 中的 IPSec 证书

这些都应该是相对容易理解的-根据您的环境,您可能希望或不希望使用真实信息填写每个字段。输入的数据并不重要,但将被发放根或主机证书的客户端看到。填写此表单后,点击生成按钮。由于此步骤涉及生成证书,可能需要一些时间(取决于您的 IPCop 主机的规格)。在这一点上,可以随意冲杯咖啡。

IPCop 中的 IPSec 证书

完成此步骤后,您应该回到 VPN 配置页面,与之前相同,但有一个显着的例外,即表中的根证书主机证书条目应该已填充,并且旁边会有按钮,允许您下载根证书下载主机证书

我们的下一步是下载主机和根证书文件的副本。我们可以通过点击表中它们条目右侧的软盘图标来完成。根和主机文件都应该保存在硬盘或网络共享的位置,而不是在进行配置的 PC 上打开或安装(除非这是您执行配置的主机)。

IPCop 中的 IPSec 证书

使用证书的站点到站点 VPN

完成了这种方法保存了我们的主机和根证书后,我们在另一个 IPCop 主机上执行相同的过程。完成后,我们将每个 IPCop 防火墙的根和主机证书导入到另一个防火墙的身份验证屏幕中,当我们创建站点到站点的 VPN 时,选择上传证书选项,而不是本章前面详细介绍的使用预共享密钥选项。

完成后,两台服务器将使用证书而不是 PSK 进行身份验证,这为我们的 VPN 配置增加了相当大的安全性。

VPN 身份验证选项

VPN 身份验证菜单中,配置 VPN 时我们有四个选项可用,这些选项会影响我们如何配置我们的客户端:

  • 使用预共享密钥:如前所述,我们只能使用预共享密钥进行一次 VPN 配置,如果我们使用此配置,只需将选择的 PSK 输入到此字段中即可。

  • 上传证书请求: 通常,在从 CA(包括 VeriSign 和 Equifax 等 CA)获取证书时,首先在将安装证书的系统上进行证书请求是一种常见做法。这是一个由原始系统生成的具有 X.509 证书的密钥,但没有由任何根 CA 签名,因此缺乏任何信任机制。通过将这个请求文件发送给 CA(并让 CA 处理它),我们可以收到相同文件的签名副本。这个响应文件必须重新导入到发出请求的机器中(其中包含已签名密钥的私有密钥部分),一旦导入,就可以组合成完整的证书(具有公钥/私钥)。在使用相同已签名证书的多台机器(如 Web 集群)的配置中,一旦证书响应重新导入,最终证书应该从原始机器中导出。

一些 IPSec 软件具有生成证书请求文件的能力。在这种情况下,我们可以在认证对话框中简单地选择上传证书请求选项,一旦 IPCop 处理了请求文件,就可以像处理根证书和主机证书一样从 VPN 页面下载证书。这个证书可以重新导入到客户端中。

  • 上传证书: 如果 IPSec 对等端有我们希望使用的证书,比如我们正在配置与另一个 IPSec 主机的站点到站点 VPN,我们将以这种方式上传主机和根证书文件。通过将右侧的 IPCop 主机的主机和根证书文件上传到左侧的 IPCop 服务器,并将左侧的 IPCop 主机的主机和根证书文件上传到右侧的 IPCop 主机,我们使两个防火墙都意识到对方,并可以在网对网 VPN 中使用证书。

  • 生成证书: 如果 IPSec 对等端自身不处理证书,也无法生成证书请求,我们可以从 IPCop 生成证书。这比使用证书请求略不安全,因为在使用证书请求时,私钥(用于使用证书的私钥)在任何时候都不会在开放网络上传输(即使恶意攻击者拦截了 CA 的证书响应,他或她也无法做太多事情),但如果我们打算在局域网上传输证书(或者在生成对话框中输入一个强大的 PKCS12 文件密码,用于加密证书),那么我们可以在一定程度上减轻这个风险。这个过程产生的证书可以像证书响应方法一样从 VPN 页面下载。

为 VPN 配置客户端

这是一个复杂的话题,在不同的主机平台上差异很大。IPCop Wiki 提供了 Windows 客户端的说明,这些客户端没有很好的内置 IPSec VPN 支持。

如果我们使用证书进行 VPN 配置,我们要么需要使用像 IPCop 这样有自己 CA 的客户端,要么使用 IPCop 创建证书,就像之前详细说明的那样。如果我们的 VPN 要求不太复杂,或者我们不想使用证书,我们可以使用 PSKs。

注意

Windows 客户端配置

有关 Windows 2000/XP 中的客户端配置,请参见:www.ipcop.org/modules.php?op=modload&name=phpWiki&file=index&pagename=OpenVPNHowto

Linux 用户可以使用与 IPCop 本身使用的相同软件包来建立与服务器的连接,Linux、BSD 和 OSX 用户应该查阅其操作系统文档,以找到在其环境中配置此项的最合适方式,因为对客户端操作系统的全面调查超出了本书的范围。

蓝区

从 1.4 版本开始,IPCop 已经支持蓝色区域,这是一个无线段,其防火墙规则比橙色或绿色区域更为激进,专门设计用于不受信任的无线段。这可以是一个开放的无线网络,只允许一些客户端访问其他网络,也可以是一个具有额外安全层的封闭无线网络,甚至可以是有线网络,不一定非要是无线的。

在过去几年里,无线安全一直备受关注。从对 802.11 标准提供的安全措施缺乏理解,到最初由 WEP 加密提供的安全性不足,无线安全仍然是许多 IT 部门和制造商的痛点。即使 WPA 在预共享密钥和企业(带有半径服务器)模式下提供了改进的加密,仍然不足以满足对机密信息要求强加密的监管要求和企业政策。

更好、更安全的无线标准(如备受期待的 802.11i 的 WPA2)承诺使用更好的今天技术的版本,具有改进的程序和更强的加密,但目前还没有,许多旧设备和客户端可能不支持它们。出于所有这些原因以及深度防御提供的安心感,建立 VPN 连接和/或在无线网络上使用 IPSec 往往是一个好主意。

传统上,这样的设置一直复杂且昂贵,但现在 IPCop 为家庭用户提供了丰富的企业级功能。

蓝色区域 VPN 的先决条件

为了建立一个有效的蓝色区域 VPN 设置,我们需要一个由 IPCop 支持的以太网卡,并配置适当的 IP 地址信息(即非重叠的私有子网),并配置 DHCP 服务器以分配正确地址范围内的信息(即与 IPCop 蓝色接口相同子网,并将蓝色接口地址作为网关和 DNS 服务器)。

设置

蓝色 VPN 的设置与路由战士 VPN 相同,只是配置蓝色接口而不是红色接口。

注意

IPCop 蓝色 VPN Wiki

IPCop 有一个专门用于蓝色 VPN 配置的 Wiki 页面,如果设置发生变化,应该进行更新;www.ipcop.org/modules.php?op=modload&name=phpWiki&file=index&pagename=IPCop140BlueVpnHowto

总结

我们已经涵盖了 IPCop 防火墙和 IPSec VPN 的三种常见配置方案。虽然我们没有完全覆盖整个主题,但我们希望为您提供足够的信息,让您了解 VPN 的工作原理,并成功地配置(希望如此)您的 IPCop 主机以进行基于证书和预共享密钥的 VPN。有许多关于 IPSec 的好书,包括本书出版商(如www.packtpub.com/openswan/book)撰写的几卷关于使用 Linux 构建 VPN 的书籍,由 Openswan 的开发人员撰写。

尽管 IPSec VPN 得到了广泛支持,但绝不是最容易配置的。基于 SSL 的 VPN,使用与 HTTPS 相同的加密技术,如 OpenVPN,由于相对容易的配置以及协议的简单性,正在迅速变得流行;IPSec,即使与 L2TP 等协议结合使用,也是复杂的,并经常被防火墙和网络地址转换所破坏。

OpenVPN 除了更容易防火墙外,还可以在任意数量的端口上运行,比如那些经常允许通过防火墙的端口,几乎没有应用层检查,比如 443 或 53。对于远程员工来说,PPTP 或 IPSec VPN 难以使用且不稳定,因此,OpenVPN 可能值得一看。不幸的是,这种易用性是有代价的——OpenVPN 目前还没有得到广泛支持,虽然 Windows 和 Linux 存在客户端,但并不常用,而且 IPCop 并不原生支持 OpenVPN(尽管有一个 OpenVPN 的附加组件)。

关于 OpenVPN 也有一些资源,包括一些来自这个出版商的资源(www.packtpub.com/openvpn/book),以及关于 OpenVPN 一般和与 IPCop 结合的无数在线 howto(home.arcor.de/u.altinkaynak/howto_openvpn.html)。

希望有了这些材料和外部资源的链接,好奇的 IPCop 管理员现在有了所需的信息,可以更多地了解这个主题,并可能挑选一本特定主题的书来阅读!

第八章:使用 IPCop 管理带宽

我们现在非常清楚 IPCop 不仅仅是一个基本的数据包过滤防火墙。我们已经看到了内置的入侵检测系统以及强大的 VPN 选项。我们还有另一个增加,就是通过几种不同的技术来管理流量,即流量整形和缓存。现在我们将看看如何在需要的地方使用这些技术来提高网络的性能。

带宽问题

目前大多数网络中通常会提供和使用多种不同的服务,并且可能会有多个链接到其他网络。由于有这么多的服务,我们可以很快地用尽带宽。确保您的网络上有足够的带宽供所有服务和用户使用的最简单方法是购买低争用率的快速链接。这是一个很好的理论,但经济现实要复杂一些,因为带宽可能很昂贵,可能是服务的主要开销。为了应对这一问题,我们可以与我们拥有的服务合作,尝试减少它们的带宽使用。

最初可以通过使用尽可能节省带宽的协议来减少带宽使用;然而,有时我们别无选择,必须使用由应用程序、供应商或用户指定的特定协议。这时,我们可以考虑减少该应用程序对网络的负担。我们可以使用一些技术和设备来做到这一点,每种技术和结果都有所不同。然而,IPCop 本身有一些简单的选项,可以帮助我们管理带宽。

HTTP 问题

在整个互联网上,最常用的协议之一是 HTTP(尽管点对点文件共享应用程序正在迅速赶上)。大多数企业都有一个基于 HTTP 运行的网站作为他们的基本互联网存在,几乎没有不使用 HTTP 的互联网用户。我们可以非常有信心地认为这将是我们网络上使用的协议之一。

当涉及带宽时,HTTP 给我们带来了一个重要的问题——用户期望 HTTP 几乎是即时的。由于带宽拥塞而导致用户的网页浏览体验出现延迟,远非理想的情况,可能是网络用户首先会注意到(并抱怨!)缺乏带宽的地方。幸运的是,IPCop 为我们提供了非常强大的选项,以减少 HTTP 对网络的影响。

解决方案:代理和缓存

虽然代理本身并不是节省带宽的措施,但它是与带宽控制和监控相关的功能。代理允许您监视、修改和控制对 Web 内容的请求。您可以选择要记录和/或拒绝的流量,以及在通过代理时修改这些请求。由于代理位于 Web 客户端和 Web 服务器之间,它还可以执行一些其他功能,比如缓存。

在同一网络上的用户通常会访问一些相同的网站。这意味着每当用户访问网站时,他们将下载页面上的所有 HTML 和图像。如果这些内容只下载一次,然后以某种方式存储以供后续请求相同内容的客户端呈现,那对我们的网络显然是有利的。我们的浏览器在本地级别为我们做到了这一点,因此如果我们多次访问同一页面,我们的浏览器可能已经为我们缓存了本地副本。

这正是缓存代理会为我们提供的,但它会为所有人缓存。每当用户下载页面及其图片时,代理将在内存中保留一份副本(和/或将其写入磁盘)。每当出现对相同内容的请求时,代理不会将其传递给原始网站,而是为客户端提供文件的缓存版本的副本。我们可以大大减少带宽,特别是如果我们的用户访问许多相同的网站。这并不意味着您获取的信息将过时;网站可以要求代理不缓存时间相关的信息(股票信息、天气等)。

Squid 简介

Squid是最有用和功能强大的 Web 代理和缓存系统之一。它是免费和开源的,这就是为什么它可以与 IPCop 一起使用。Squid 本身有相当复杂的配置文件,并执行各种代理和缓存功能。正如我们所期望的那样,IPCop 很好地抽象了这种复杂性,并让我们相对轻松地配置 Squid。

Squid 诞生于 Harvest Cached 的分支,Harvest Cached 是一个代理/缓存项目,并于 1994 年发布了其第一个版本,因此 Squid 的开发时间跨越了 10 多年。这导致了一个相当稳定和功能齐全的代理和缓存应用程序。原始的 Harvest Cached 项目已不再开发。

配置 Squid

IPCop 中的 Squid 配置屏幕非常易于操作,您只需点击几个框即可进行基本配置。

配置 Squid

在这个例子中,我们只有一个绿色接口;但是,我们可以在所有其他接口上启用代理——除了红色接口,即互联网连接。

第一步非常明显;我们通过点击第一个复选框在需要的接口上启用代理,然后选择代理监听的端口(在 IPCop 中默认为 800,尽管 Squid 通常在端口 3128 上运行)。我们还可以勾选启用日志框,这是接口非特定的,因此我们要么记录所有内容,要么不记录任何内容。如果我们想要在某个时候监视代理,启用这个选项是个好主意。我们还可以通过配置上游选项将此代理链路通过我们的 ISP 提供的代理,例如,这些选项可能由 ISP 或其他代理服务提供商提供。可能需要连接的主机端口,以及用户名和密码。

透明代理需要更多的解释。传统上,代理在机器上的特定端口上监听,客户端必须配置为连接到此端口。例如,代理可以在 IP 地址 10.0.0.1 上监听端口 800。在这种情况下,我们将配置所有的 HTTP 客户端连接到此代理。Firefox 和 Internet Explorer 有网络设置对话框,我们可以在其中配置代理访问。Firefox 代理配置屏幕如下图所示:

配置 Squid

这是一种简单的使用方法,但如果我们必须像这样配置所有的应用程序,这可能会变得乏味,特别是如果我们有许多需要以相同方式配置的机器。这就是透明代理变得有用的地方。代理不再监听一个端口并转发请求,而是监视通过机器的所有流量,并在检测到 HTTP 流量时尝试进行缓存。这也有一个缺点,即一些其他协议可能看起来像 HTTP,并且尝试缓存这些协议可能会破坏它们。如果我们启用了透明代理,不久后某个应用程序开始出现问题,关闭透明度作为初始步骤是值得的。这是一个罕见而具体的问题,但可能很难追踪。

缓存管理

缓存大小:我们希望缓存占用磁盘多少空间?这默认设置为 50MB,对于大多数小型网络来说是相当合理的。如果我们有很多用户,可能需要将其增加到几百兆字节。除非是真正大型网络,否则很少需要超过 1GB。此外,如果这个数字明显大于 IPCop 机器上可用的内存,那么我们将有大量的磁盘读/写,这可能会减慢速度。

最小对象大小:有时我们不希望缓存真正小的文件,因为这可能效率低下。然而,通常将其设置为零是一个好主意,因为这些文件的重复 HTTP 开销可能会影响性能。

最大对象大小:同样,我们可能不希望缓存过大的文件,因为这将很快填满我们的缓存,并导致我们陷入磁盘读/写问题,这是我们希望避免的。

通常应该使用前两个选项的默认设置,除非我们有特定的需求需要更改,例如用户不断下载相同的大文件。

传输限制

我们还可以控制系统中文件传输的最大和最小大小。除非有特定的情况需要这样做,否则这不是一个好主意,因为这可能会让用户非常沮丧。如果我们想要防止用户下载诸如 ISO 之类的非常大的文件,这将非常方便,以防止滥用网络带宽进行个人使用。

在没有缓存的情况下管理带宽

HTTP 并不是我们网络上唯一需要足够带宽的协议。例如,如果我们在网络上有在线游戏或语音和视频通信,这些服务通常由于其对时间敏感的使用而需要比其他服务更高的优先级。你不会希望因为网络上的某个用户正在下载大文件而与客户进行声音不连贯的对话,或者在家庭网络上,你不会希望因为有人决定开始收听在线广播电台而失去在线游戏中的高分。这就是流量整形的用武之地。

流量整形基础知识

为了确保服务质量(QoS),我们必须控制流量,使高优先级的流量被视为高优先级!通过流量整形,我们可以使用与数据包过滤相同的参数;然而,我们不是决定是否传递流量,而是对哪些流量享有最高优先级做出更复杂的决定,因此首先处理或给予比网络上使用的其他协议更多的带宽。

流量通常用于控制媒体服务。视频和音频服务严重依赖低延迟和充足的可用带宽,因此在网络中引入流量整形以适应这些服务是很常见的。

注意

ISP 利用流量整形

一些 ISP 像我们在这里描述的那样使用流量整形,以提供更好的服务给依赖带宽和延迟的服务。

还有另一种商业用途,即服务提供。ISP 可以进行流量整形(有些确实这样做),以便一个内容提供商的服务比另一个更好。例如,ISP 可以收费进行优先整形,如果 Google 为此服务付费,他们将确保他们的内容和服务比他们的竞争对手如 Yahoo!和 MSN 更快更具响应性。

这是一种有效地排挤竞争对手的方法,因为 ISP 的用户可能会选择更好的内容提供商。显然这并不完全符合 ISP 用户的利益,但对于 ISP 和可能为这些服务付费的内容提供商来说,这肯定是一项有利可图的投资。

流量整形配置

流量整形配置页面非常简单,可能会给我们提供更多选项,但我们有能力基于使用的端口进行整形,这使我们足够具体以区分大多数服务以进行流量整形。

流量整形配置

流量整形旁边的复选框用于启用该服务。然而,在我们定义一些流量整形规则之前,这对流量不会产生任何影响。

我们还必须提供上行和下行速度。这是我们的网络可以传输数据的速度。常见上传和下载速度的快速参考如下表所示,这可能对我们的设置并不完全准确。建议我们测试自己的速度或咨询我们的 ISP 以获取更准确的信息。

连接类型 上行(kbit/秒) 下行(kbit/秒)
拨号 48 56
电缆(1 兆) 256 1000
T1 192 1540

可以在这里找到更完整的不同服务及其上传和下载速度的指南:en.wikipedia.org/wiki/List_of_device_bandwidths

添加流量整形服务

添加流量整形服务

为了添加一个服务,我们填写三个必填字段,然后选择启用。点击添加会在底部窗格的流量整形服务中添加一行新的行。在这种情况下,我们已经添加了端口5060 UDP(SIP)作为优先级,这将确保该服务在网络上优先处理。这些是相当基本的流量整形选项,我们没有能力定义端口范围或按 IP 地址进行整形。我们只能限制为三个优先级——低、中、高,并且端口一次添加一个。不需要列出所有将通过 IPCop 的端口,因为未指定的端口将默认以中等级处理。要删除此规则,我们只需点击右侧的垃圾桶;我们还可以使用操作标题下的复选框启用或禁用添加的规则。

编辑流量整形服务

为了编辑我们已经添加的服务,我们可以点击操作标题下的铅笔,这应该显示如下屏幕:

编辑流量整形服务

我们可以看到,我们的规则现在以黄色突出显示,以便清楚地知道我们正在编辑哪个规则,并且我们在上面的配置框中有原始参数。添加按钮也已更改为更新。我们现在修改任何我们需要的值,然后点击更新按钮,这将保存规则并将我们带回初始的流量整形屏幕。

对于 IPCop 还有其他可用的模块,可以进一步扩展这些功能,如果您有一些严肃的流量整形工作要完成,这是值得考虑的。

摘要

在本章中,我们已经介绍了使用 IPCop 进行缓存和流量整形以及如何配置这些功能。即使在最小的网络中,这也可能很有用,因为我们优先考虑服务访问,允许网络上的用户保证使用中的关键服务获得最佳的服务。在 IPCop 中进行这样做的选项相当基本,我们在控制方面受到限制。然而,我们已经看到,可以对服务产生影响,以改善我们的带宽利用率。

第九章:定制 IPCop

IPCop 是市场上功能最齐全的 SOHO 防火墙之一,到目前为止,您应该已经熟悉了大部分功能,但您可能已经注意到了一些不足之处。也许有一些地方 IPCop 没有以恰当的方式执行某个功能,或者没有我们需要的特定功能。那么我们该怎么办呢?我们可以使用一些必要的插件来定制 IPCop。

插件

在其核心,IPCop 是一组基于 Linux 的工具,通过令人印象深刻的基于脚本的粘合剂粘合在一起。因此,毫不奇怪,我们可以修改、扩展和改进系统以满足我们的需求。这就是开源软件社区部分变得重要的地方,因为我们发现系统的用户已经开发了各种插件,可以安装和使用在 IPCop 上。

插件通常由第三方开发,即 IPCop 开发人员以外的人。它们通常是为了填补用户在软件中发现的某些空白而开发的,然后发布,以便其他用户可以从这项工作中受益并解决类似的问题。

我们将查看一些常见的插件,它们提供了什么,以及我们如何使用它们。我们可以在 IPCop 网站上找到插件的链接:ipcop.org/modules.php?op=modload&name=phpWiki&file=index&pagename=IPCopAddons

防火墙插件服务器

防火墙插件服务器允许我们使用简单、用户友好和基于 Web 的系统来管理一些 IPCop 的插件。为了在本章中使用插件,有必要安装它。

我们可以从firewalladdons.sourceforge.net/下载防火墙插件服务器包。

在撰写本文时,我们将使用文件:heanet.dl.sourceforge.net/sourceforge/firewalladdons/addons-2.3-CLI-b2.tar.gz

对于以后的版本,此位置可能会更改,与文件名相关的以下命令应更改以反映下载文件的名称。

首先,我们使用scp命令将此文件复制到服务器,指定端口 222,这是 IPCop 默认的 SSH 访问端口,并指定 root 用户。

 $ scp -P 222 addons-2.3-CLI-b2.tar.gz root@10.0.0.200:/ 

我们将被提示输入 root 帐户的密码,这是我们在安装 IPCop 机器时设置的密码。

现在文件已经就位,我们可以登录 IPCop 机器并对其进行设置。

 $ ssh -p 222 root@10.0.0.200 

注意

P 与 p

请注意,使用ssh时小写-p用于端口,而使用scp时大写-P用于端口。这种差异可能会变得非常恼人,并且可能导致难以发现的拼写错误。如果无法连接,请检查您是否对命令使用了正确的大小写。

输入 root 密码后,我们应该看到以下提示:

 root@ipcop:~ # 

现在,我们输入以下命令来设置插件服务器:

 # mv /addons /addons.bak
# tar xzvf /addons-2.3-CLI-b2.tar.gz -C /
# cd /addons
# ./addoncfg -u
# ./addoncfg -i 

命令完成后,我们登录到 IPCop Web 界面,应该会看到页面顶部的菜单中新增了一个选项。

防火墙插件服务器

我们将查看我们的 Web 界面现在具有的一些新页面,以及它们提供的附加选项。

ADDONS-NEWS页面显示有关防火墙插件服务器及其提供的插件的更新。除了我们想要查看多少新闻之外,这里没有配置选项。它作为一个通用信息页面,使用从插件网站下载的重要新闻。

防火墙插件服务器

ADDONS页面提供有关已安装的插件和当前可用的插件的信息,并允许我们安装或删除插件。

防火墙插件服务器

ADDONS-UPDATE页面向我们提供有关插件更新的信息,方式与ADDONS页面提供有关插件本身的信息相似,显示可用内容,并为我们提供了安装更新的方法。

防火墙插件服务器

安装插件

现在我们熟悉了防火墙附加组件服务器的界面,我们可以开始安装和使用附加组件。我们将从 SquidGuard 开始,你可能已经注意到它在之前的截图中已经安装了。要安装附加组件,我们转到附加组件页面,向下滚动直到看到我们想要安装的附加组件。然后点击右侧的信息超链接,这将带我们到附加组件的详细信息和下载页面。对于 SquidGuard,这个页面是firewalladdons.sourceforge.net/squidguard.html

在这个页面上,我们可以获得有关插件的详细信息,并提供当前版本的下载链接;在撰写本文时,当前版本是:heanet.dl.sourceforge.net/sourceforge/firewalladdons/SquidGuard-1.2.0-GUI-b11.tar.gz。这可能会更新,因此首先检查之前的链接!

我们下载附加组件,它以一个 GZIPPED TAR 存档的形式提供。然后我们返回到附加组件页面,点击浏览按钮,浏览到我们刚下载的文件,点击上传,附加组件就安装到服务器上了。

注意

注意:有时在上传附加组件时,特别是像 SquidGuard 这样会重新启动 Web 服务器的附加组件,我们可能没有页面自动刷新和/或连接可能会超时。点击刷新,或者在浏览器中点击停止然后刷新应该会把我们带回附加组件页面。

对于使用防火墙附加组件服务器安装的所有其他附加组件,流程是相似的,因此当我们查看其他附加组件及其工作原理时,我们无需重复这些步骤。

常见附加组件

现在我们将查看一些常见附加组件的配置以及它们的使用方式。由于我们已经安装了 SquidGuard,我们可以从这个附加组件开始。我们不会在本文中涵盖所有的附加组件,因为它们相当多。但是,我们将涵盖最常见和重要的附加组件。建议我们至少熟悉其他可用的附加组件,因为它们可能满足我们以后可能认识到的需求。

SquidGuard

SquidGuard 是一个内容过滤插件,可以与 Squid 一起安装。它主要用于阻止不适当的网络内容,并可以配置一组动态规则,包括对各种主题的全面禁止和/或根据它们对我们网络上的受众的适用性进行黑名单和白名单设置。

SquidGuard 配置屏幕如下:

SquidGuard

正如我们所看到的,我们可以根据 SquidGuard 配置中预定义的各种主题进行过滤。

在上面的截图中,我们选择了过滤广告、色情、暴力和赌博相关网站。

我们还配置了一些其他选项来帮助控制我们的网络使用。我们已经确定 IP 地址为10.0.0.201的机器是一个特权机器(可能是我们自己或管理员的机器),允许它绕过过滤器并无差别地访问网站。10.0.0.202处于被禁止的 IP 范围,是一台不允许通过这个 Web 代理访问任何互联网资源的机器。网络 IP 范围表示网络上的所有其他用户将受到之前配置的其他规则的约束。请注意,网络 IP 范围包括机器200-250;所有其他范围可以类似地指定,允许我们在必要时在规则中包含多个 IP 地址。

我们还有一些其他重要和强大的配置选项。如果我们允许白名单,然后点击编辑框,我们会看到以下屏幕:

SquidGuard

通过输入 URL 并单击添加,我们允许访问该域,而不管其他规则如何。在这种情况下,URL www.reboot-robot.net 已被列入白名单。

黑名单配置屏幕与之前完全相同,列出的任何域都将被 SquidGuard 阻止,除了特权 IP 地址。

除了直接配置要阻止和不要阻止的内容之外,我们还有一些其他需要解释的选项。

  • 启用日志记录:允许我们记录 SquidGuard 允许和拒绝的连接

  • 启用广告日志记录:允许更详细地记录被阻止的广告

  • 邮件日志:记录通过防火墙的邮件信息

  • 自动更新:从 SquidGuard 网站下载用于阻止的 URL 的自动更新

  • 邮件服务器:发送邮件给管理员时要使用的服务器

  • 管理员电子邮件:发送日志的电子邮件地址

  • 邮件用户名:如果邮件服务器需要身份验证,则使用的用户名

  • 邮件密码:之前使用的密码

注意

邮件设置

您将注意到这些邮件设置作为任何提供与网络管理员通信的插件的一部分。值得随时保留这些信息,并可能专门为我们的 IPCop 机器创建一个电子邮件帐户/地址。

此页面上唯一需要的框是我们的网络 IP 范围和我们的管理员电子邮件;其他所有内容都可以选择配置(可选字段旁边有蓝色星号)。

在页面底部,我们有启动/重新启动 SquidGuard按钮,当我们已经根据需要配置了服务,并希望保存和在运行的机器上使用配置时,可以使用该按钮(诚然,这并不直观)。更新黑名单按钮允许我们下载更新的黑名单以供内容过滤选项使用。

配置完 SquidGuard 后,我们现在应该有一个有效的内容过滤系统,以确保网络上的用户不会访问被认为是不良的网站。

如果我们想要监视并控制怎么办?细心的读者可能已经意识到,当我们启用日志选项时,可能应该有访问这些日志的权限,可能是在 Web 界面中。如果我们将鼠标移动到日志上方,我们确实会看到SquidGuard 日志;点击这将给我们:

SquidGuard

这使我们能够在类似于系统上默认日志的界面中查看 SquidGuard 日志。

增强过滤

增强过滤插件是最有用的插件之一,它解决了 IPCop 默认严重缺乏的一个功能。IPCop 的默认安装将允许从绿色接口到其他接口的所有流量出站,而没有任何过滤。通常希望控制用户可以从绿色接口访问的端口和 IP 地址。例如,我们可能希望阻止除网站运行的端口之外的所有出站连接。这将允许默认阻止点对点文件共享程序和即时通讯程序。这是防火墙的首选默认设置,我们在第三章中讨论过。增强过滤还允许对无线连接进行基于 MAC 的过滤。

注意

基于端口和 IP 的阻止并不完全有效

请注意,阻止应用程序使用的端口并不会阻止用户在另一个端口或通过位于 IPCop 受保护网络之外的代理服务器上使用该应用程序。同样,使用代理可以克服基于 IP 的阻止。应用层过滤增加了这种保护,但如果没有对网络上的内部资源进行严格控制,大多数网络级别的过滤机制都可以被绕过。

有关更多信息,请参阅增强过滤网页:firewalladdons.sourceforge.net/filtering.html

在撰写时使用的版本是从以下 URL 下载的,并且安装方式类似于 SquidGuard:

heanet.dl.sourceforge.net/sourceforge/firewalladdons/EnhancedFiltering-1.0-GUI-b2.tar.gz

以下图显示了增强过滤配置屏幕,可以通过单击防火墙|增强过滤:来访问:

增强过滤

在这里,我们可以启用增强过滤禁用它,以及在 GREEN 网络接口上设置默认拒绝。当我们介绍防火墙时,我们讨论了默认拒绝以及为什么它是一种更易管理和更安全的设置。

我们还可以为网络之间的连接添加特定的防火墙规则。我们必须提供源和目标 IP 地址,源子网掩码和目标子网掩码,网络和目标端口。

一个例子是只允许我们的邮件服务器向我们的 ISP 邮件服务器发出邮件,以便为网络中继邮件。我们将指定源 IP地址为我们的邮件服务器的 IP 地址,目标 IP地址为 ISP 的邮件服务器的 IP 地址,并设置端口为25。这意味着我们的邮件服务器可以向 ISP 中继邮件,但网络上的其他机器不能。这将有助于防止我们的用户使用外部邮件帐户,并防止带有恶意软件的机器发送恶意软件或垃圾邮件,而不经过我们的邮件服务器和潜在的邮件过滤软件。

正如我们现在所看到的,主要优势是我们可以非常具体地控制本地网络机器可以访问哪些服务器和这些服务器上的服务,这是 IPCop 本身默认不提供的功能。

蓝色访问

增强过滤插件提供的另一个选项是根据 IP 地址和 MAC 地址过滤蓝色(无线)接口。这是一种粗糙但相当有效的方法,可以限制对具有特定 MAC 地址的机器的无线接口的访问。MAC 地址是唯一的网络接口卡,并且是识别卡的相当有用的方法。MAC 地址过滤绝不是加密无线连接的替代方法,但是是一个有用的辅助措施。

注意

MAC 欺骗

MAC 地址很容易被欺骗,大多数常见操作系统都有工具来修改网卡的 MAC 地址。MAC 地址并不是在设备本身中修改,而是在操作系统中修改。例如,Linux 可以使用其默认网络配置工具ifconfig来做到这一点,而 Windows 存在许多工具来完成相同的任务。IPCop 有一个插件,可以在 GUI 中为红色接口提供 MAC 欺骗功能。

蓝色访问配置屏幕可以通过单击防火墙|蓝色访问:来访问。

蓝色访问

源 IP 和源 MAC 地址填充了被允许从这个接口访问网络的机器的信息,当启用复选框被勾选时,只有匹配列表的机器才能访问任何网络资源。蓝色设备列表中的机器是已被允许访问的机器。

LogSend

LogSend 是一个插件,允许我们将日志从 IPCop 机器发送到各种管理员和/或 DShield 服务。这很有用,因为它允许我们使用外部工具更深入地分析我们的日志,而无需配置 syslog 服务器。

LogSend 网页位于:firewalladdons.sourceforge.net/logsend.html

撰写时使用的当前版本是:heanet.dl.sourceforge.net/sourceforge/firewalladdons/Logsend-1.0-GUI-b3.tar.gz

LogSend 配置页面通过单击日志 | LogSend访问。

LogSend

LogCheck的配置相对简单;我们可以选择启用服务,启用DansGuardian(由 Cop+插件提供)日志、代理日志和Snort日志的邮件发送。每个日志都可以发送到不同的管理员,但通常会使用相同的电子邮件地址,如上图所示。

注意

DShield

DShield选项可能需要一些解释。DShield (www.dshield.org) 是由 SANS(系统管理、网络和安全研究所:www.sans.org)提供的服务。它汇总和分析来自世界各地数千个系统的日志,以获取关于最常被攻击的端口和最严重的攻击 IP 地址的详细信息。这是为了让系统管理员随时了解互联网的当前状态。发送到 DShield 的任何日志都将添加到该数据库中,如果我们注册了 DShield 帐户(发送日志不需要),我们还可以使用其在线分析工具来监视来自我们自己的入侵保护系统的数据。

LogSend 中的 DShield 配置功能使我们可以轻松使用 DShield 服务发送我们的日志。所需的只是启用 DShield,并设置发送日志时使用的时区和返回电子邮件地址。如果我们还提供我们的用户 ID,我们可以确保日志归属于我们的帐户,并在 DShield Web 界面上可用。DShield 管理员是任何日志信息将被发送到的地址。

我们还有熟悉的邮件服务器选项,可以提供要使用的邮件服务器、发件人和所需的任何身份验证凭据。我们在 IPCop 的其他领域也看到了这些选项。

Copfilter

Copfilter 将 IPCop 从防火墙扩展为类似于 Symantec 和 MacAfee 提供的安全设备,试图保护我们的网络免受各种恶意软件的侵害。Copfilter 将监视 Web、FTP 和电子邮件流量,以便检测并阻止其中发现的恶意软件。

Copfilter 网页是:www.copfilter.org

撰写时使用的版本是:heanet.dl.sourceforge.net/sourceforge/copfilter/copfilter-0.82.tgz

Copfilter 安装是直接进行的,而不是通过插件界面。它的安装方式与防火墙插件服务器的安装方式非常相似。

$ scp -P 222 copfilter-0.82.tgz root@10.0.0.200:/ # provide password
$ ssh -p 222 root@10.0.0.200 # provide password
# cd /
# tar xzvf copfilter-0.82.tgz
# cd copfilter-0.82
# ./install 

然后我们应该看到以下输出:

============================================================
Copfilter installation -- Version 0.82
============================================================
WARNING:
This package is NOT an official ipcop addon. It has not been approved
or reviewed by the ipcop development team. It comes with NO warranty or
guarantee, so use it at your own risk.
This package adds firewall rules, proxies, filters, virus scanners
and precompiled binaries to your ipcop machine,
Do NOT use Copfilter if firewall security is an issue
Continue ? [y/N] 

它警告我们安装 Copfilter 会重新配置防火墙,并可能改变一些功能,可能会降低安全性。

注意

复杂性和安全性

这引入了一个重要的观点,我们在安装插件时应该考虑。我们向防火墙添加的代码和功能越多,出现问题的可能性就越大。软件错误会导致崩溃,更重要的是安全妥协。在我们用各种插件填充系统之前,重要的是要权衡功能带来的价值与系统中额外代码的潜在风险。

Copfilter 现在应该安装,当它设置自身时,我们会看到一些消息滚动。当 Copfilter 完全安装时,我们应该看到以下消息:

Copfilter 0.82 installation completed successfully ! 

如果我们现在登录到 Web 界面,我们应该看到新的菜单选项添加到 IPCop 配置站点。我们将在接下来的几节中看一下它们。

Copfilter

状态

Status屏幕为我们提供了有关使用 Copfilter 安装的工具的信息(又一个简单包中强大工具的集合!)。您可以在此处启动和停止所有服务。通过单击Virus QuarantineSpam Quarantine按钮,您可以查看扫描软件保存的项目。

Status

monit:允许我们比 IPCop 提供的基本状态信息更详细地监视系统,管理服务是一个重要的补充(www.tildeslash.com/monit/)。

p3Scan:用于扫描恶意软件的电子邮件代理服务器(POP3)(p3scan.sourceforge.net/)。

ProxySMTP:类似于p3scan,但用于扫描 SMTP。

HAVP:用于 HTTP 代理,允许扫描网站上的恶意软件(www.server-side.de/)。

Privoxy:另一个 HTTP 代理,更专注于隐私和广告(www.privoxy.org)。

frox:透明的 FTP 代理,允许针对 FTP 协议的功能类似于HAVPPrivoxyfrox.sourceforge.net)。

Spamassassin:非常强大和可定制的反垃圾邮件软件。这是 ISP 常用的反垃圾邮件解决方案之一(spamassassin.apache.org/)。

ClamAV:用于与其他软件配合提供病毒扫描引擎的防病毒软件(www.clamav.net/)。

Renattach:识别和重命名危险的电子邮件附件,如.exe,.bat.pif,以防止用户意外或无意中打开危险文件(freshmeat.net/projects/renattach/)。

Rules Du Jour:用于保持 SpamAssassin 规则的最新状态(www.exit0.us/index.php?pagename=RulesDuJour)。

P3PMail:类似于前面提到的 p3Scan;但是它检测电子邮件中的危险 HTML 并将其删除(www.exit0.us/index.php?pagename=RulesDuJour)。

电子邮件

我们希望为本书的目的启用所有服务,但如果我们现在尝试这样做,许多服务将失败,因为我们尚未配置我们的电子邮件设置。如果我们点击Copfilter | Email,将会出现熟悉的Email选项屏幕,我们可以相应地填写。

EmailCopfilterstatus

填写完这些内容后,我们可以开始启用和配置服务。

监控

monit在 Copfilter 中非常容易设置,并且是一个功能强大且可靠的工具。如Monitoring屏幕(点击Copfilter | Monitoring)所示,monit将不断监视运行的服务,并将在 60 秒内重新启动任何失败的服务。手动停止服务将导致该服务的监视被关闭。要为所有服务重新打开监视,需要重新启动monit本身。

我们可以在此配置窗口中打开monit。我们现在应该打开它,以便它可以监视其他服务,因此在下拉框中选择On,然后单击Save按钮。

POP3 过滤

POP3 是常用的邮件协议,用于接收邮件。如果我们有用户从 ISP 的邮件服务器下载电子邮件,那么我们可以配置此屏幕以通过 POP3 过滤任何传入的邮件,并根据我们的需求进行调整。

POP3 Filtering

在隔离电子邮件或附件时,我们应该小心,因为这很快就会开始占用硬盘空间。如果我们为使用 IPCop 盒子而配置了低规格的机器,那么我们可能会在硬盘空间上遇到问题。如果这开始引起问题,只需备份 IPCop 配置并重新安装到更大的硬盘上。

按照上一图所示的方式配置此屏幕,然后点击“保存设置(并重新启动服务)”按钮。这将启用 POP3 扫描。通知将发送到我们在之前的电子邮件屏幕中配置的电子邮件地址。

SMTP 过滤

乍一看,这个页面与 POP3 页面相同,但具有 SMTP 倾向(在这里我们应该配置相同)。然而,当我们向下滚动时,我们会看到:

SMTP 过滤

这为我们提供了一些额外的选项,主要与我们网络上的电子邮件服务器有关。我们之前讨论过使用 DMZ 和 IPCop 使用橙色网络作为 DMZ。如果我们的电子邮件服务器在 DMZ 中,我们可以将端口 25(或特定 IP 上的端口 25)配置为转发到我们的电子邮件服务器。由于这是 SMTP 过滤部分而不是端口转发部分,因此在电子邮件接近我们的服务器之前,我们也可以过滤所有电子邮件。这使我们能够保护我们 DMZ 中的机器免受攻击,并随后保护我们的用户,因为带有恶意软件的电子邮件永远不会触及他们的收件箱!

所示的配置选项是相当合理的水平,除非我们需要白名单或具体的隔离要求。

HTTP 过滤(和 FTP)

Copfilter 的最消耗资源的功能之一是 HTTP 过滤,主要是因为 HTTP 流量涉及大文件和相当详细的扫描,而且 HTTP 是大多数网络上使用的最流行的协议之一。

HTTP 过滤(和 FTP)

将 HTTP 代理配置为透明通常是一个好主意,因为这不需要重新配置客户机器。正如在此屏幕上所指出的,如果防火墙变得非常忙碌,这可能会对通过防火墙的应用程序产生不利影响。在繁忙的网络上使用 HTTP 过滤可能不是一个好主意,除非 IPCop 机器非常强大。如果在使用互联网时遇到缓慢的情况,请将 HTTP 过滤禁用为初始故障排除步骤之一。

FTP 过滤器设置非常简单,只需要从关闭切换到打开。它的工作方式与透明 HTTP 过滤器大致相同。FTP 过滤器使用较少,因为它比 HTTP 协议不太流行,现在有许多其他比 FTP 更受欢迎的文件传输方法。

反垃圾邮件

除了与恶意软件作斗争,我们还在每天邮箱中不断地与垃圾邮件的泛滥作斗争。幸运的是,Copfilter 对垃圾邮件的选项相对简单。

反垃圾邮件

一旦启用,我们可以配置将电子邮件视为垃圾邮件的分数。每条消息都会被检查是否具有各种类似垃圾邮件的特征;它具有的特征越多,得分就越高。如果我们将此阈值设置得太高,那么我们将允许一些垃圾邮件通过,如果设置得太低,我们增加了误报的机会。默认设置效果非常好,应该使用,除非有大量垃圾邮件通过。我们还可以在此页面上配置贝叶斯过滤。但是这可能会消耗大量资源,不建议在提供许多其他功能的盒子上使用。打开德国规则将阻止德语垃圾邮件通过过滤器;这是因为最近发送的垃圾邮件大量使用德语。启用Razor, DCC, DNSBL选项将基于已知垃圾邮件站点的数据库进行阻止,这些数据库可能相当大,并且如配置屏幕上所述,它们可能会降低性能。

反病毒

ClamAV 在 Linux 系统上非常常用作病毒扫描器。然而,它涵盖了各种操作系统的病毒,显然其最大的签名数据库与 Windows 平台相关。因此,它非常适合保护网络上的 Windows 客户端免受病毒攻击。ClamAV 被用作 Copfilter 中其他工具的扫描引擎,因此当我们使用它时,其他服务已经在使用它了。

防病毒

我们可能希望调整自动更新的应用时间,以及在安装后不久执行 ClamAV 的手动更新。我们还可以从这个菜单中向renattach配置文件添加其他文件扩展名,比如 WMF。这些文件将被重命名,以便不会因为双击而自动执行。

注意

WMF 和媒体文件漏洞

最近,微软 Windows 出现了一个非常严重且备受关注的漏洞,如果用户查看 WMF 格式的图像,就可以利用这个漏洞。这突显了一个经常被忽视的事实,不仅可执行文件可以包含可执行代码。

测试和日志

Copfilter 插件有自己的日志区域,遗憾的是选择不像其他插件那样在日志菜单中添加选项。在这个区域,我们可以查看和下载各种格式的日志;然而,它们太多了,不值得在这篇文章中进行覆盖。日志相对容易阅读和理解,而前面提到的项目网站上的文档将提供更多关于这些日志的信息。

这里还有三个重要的功能是测试按钮。

  • 发送测试病毒邮件: 这个按钮发送一封带有 EICAR 测试病毒的邮件。

注意

EICAR

EICAR 是一个测试病毒定义,所有防病毒软件都能识别。它被用作校准工具,以确保我们的防病毒解决方案在不必通过网络发送病毒的情况下工作。

www.eicar.org/anti_virus_test_file.htm

  • 发送测试垃圾邮件: 发送一封应该被垃圾邮件过滤器拦截的邮件。

  • 发送测试邮件+危险附件: 通过电子邮件发送一个危险的附件,以测试 renattach 的功能。

在信任设置保护我们网络资源之前,运行每个测试以及可能进行一些手动运行以通过过滤器发送测试非常重要。

运行中!

如果我们现在看一下状态屏幕,我们应该看到所有的服务都已经启动,并且正在被监控和控制。

运行中!

总结

我们已经看到 IPCop 不仅仅是一个简单的 NAT 防火墙。它可以处理多个网络区域,并独立对待每个区域。我们可以真正控制这些网络段如何相互通信。防火墙不仅仅可以进行过滤,它还可以控制、监控并报告网络的状态,为我们提供一个网络功能的全面视图,而 IPCop 可以满足这些要求。

我们还将 IPCop 视为类似于许多供应商昂贵商业产品的网络设备。在这方面,IPCop 可以处理高级防火墙和一些应用层或第七层过滤。我们之前讨论过这一点以及 IPCop 的第七层不足之处。现在我们看到了如何解决这个问题以及其他问题,以创建一个真正有用和强大的边界设备。

我们看了一下 IPCop 可用的各种附加组件,并对一些常用的和有用的选项进行了比较详细的了解。我们已经看到使用 IPCop 等开源软件的一些直接好处,比如它的简单可扩展性或“可黑客化”。我们介绍了一些使用 SquidGuard 的高级代理选项及其在 IPCop 上的使用。我们还看了 Copfilter——IPCop 最受欢迎的附加组件之一,它可以过滤许多常见的恶意软件和其他不良流量的协议。然而,我们只是浅尝辄止 IPCop 的附加组件,因为还有更多的附件组件。从在 IPCop 上安装 Nmap 到 SETI 客户端,应有尽有!值得探索可用的选项,因为这里介绍的只是常见应用的概述。

第十章:测试、审计和加固 IPCop

在本章中,我们将研究对安全和补丁管理的一些常见态度,并讨论在 IPCop 的背景下我们可能如何处理这些主题。我们还将讨论一些常见的安全风险,一些常见的安全和审计工具和测试,并找出下一步该去哪里。

安全和补丁管理

安全,非常宽泛地说,是保持我们的系统处于一种状态的过程,要么被认为是不可行的入侵,要么是对保持这些系统运行所带来的漏洞和风险的理解、管理,并且进行补偿或接受。与常识相反(对于一些人来说,也与直觉相反),没有绝对安全的系统。

在安全社区中有一个广为人知的格言,“安全是一种旅程,而不是目的地。”

世界上最好的安全顾问、程序员或 IT 专业人员只能够根据他们所使用的硬件和软件的能力来保护计算机系统。即使是一个完美设置、按教科书部署的安全软件包也存在风险,因为应用组件、操作系统组件或硬件可能出现故障,从而危及系统的安全。软件故障可能导致各种问题,它可能允许入侵者获取信息,导致系统功能异常,甚至控制系统。

一个相对无害的故障,仅仅提供给攻击者信息,可能会为他或她提供进一步研究计算机系统上运行的软件的其他漏洞所需的信息,导致进一步的妥协,可能导致控制系统。

此外,无论任何供应商、专业人士或开发者告诉你什么,都没有解决方案,无论是闪亮的新软件、闪亮的新硬件、陈旧的安全专家,还是聪明的配置更改,都能解决你所有的安全问题。它们(可以)都有所贡献,但没有什么是万能药*。

我们所能做的就是牢记这些原则,分层设置我们的环境,尽可能不依赖任何一种安全措施,并使损害得到限制。事实上,类似 IPCop 的防火墙在较大的组织中被用来隔离不同的网络和子网,正是出于这个原因。

使我们的系统尽可能安全的过程有两个重要的组成部分,我们在这里关注。

第一个,也是最基本的,是保持我们系统上运行的软件是最新的。如果我们运行的软件过时,因此存在漏洞,那么全面的防火墙策略、优秀的权限设置和强大的密码几乎毫无意义。虽然我们使用的大多数软件包中可能存在尚未被发现的安全漏洞,但如果我们(以及软件开发者)不知道它们的存在,入侵者知道的可能性也会降低。如果开发者知道这个漏洞(更糟糕的是,如果它已经被修补),我们应该自动假设任何想要入侵我们系统的攻击者也知道它。未打补丁的系统比打了补丁的系统要难以保护得多。

第二个,更困难的步骤是系统加固的过程。这可能涉及一系列步骤,从更改文件系统权限和制定防火墙策略,到在我们的系统周围设置入侵预防系统、物理安全措施(如锁和闭路电视),甚至定期备份(能够回溯并检查我们的系统看起来是非常重要的,通常对我们认为可能受到威胁的系统进行分析至关重要)。

为什么我们应该关注

对于一些读者来说,这个话题可能显而易见,而对于其他一些人来说,他们习惯于从不同的角度思考 IT 和计算机,可能并不明显。作者的经验是,非常有能力的经理、IT 专业人员和计算机科学家经常对计算机如何被滥用、这种滥用可能造成多大的损害以及这些事情有多容易实现毫不知情。

然而,暂且不考虑这种误解,有许多善意的经理、家庭用户和 IT 专业人员确实明白计算机可以被入侵,并且意识到他们可以做更多来保护他们的系统。这产生了一个广泛流传的最大谬论之一,这种观点通常由组织中具有很大影响力的人坚定地持有。这是一个错误的观点,对于任何重视赚钱能力并使用计算机来实现这一目标的组织(现在几乎是每个人),或者任何使用个人电脑进行诸如会计、在线银行业务或在线购物等活动的家庭用户。这种错误观点是基于这样的前提:计算机的唯一威胁是特定攻击者根据其身份选择公司,而作为家庭用户、小型企业或无聊的制造公司,一个人是免疫的。

当然,病毒、蠕虫、广告软件和间谍软件——安全和 IT 专业人员正在处理的四个最常见问题——与公司被针对无关,一些最大的(也是最昂贵的)事件处理结果导致形象丧失或法律责任,这是入侵者利用公司系统作为突破口进入其他系统的结果。这些问题对于家庭用户来说可能是毁灭性的,他们的信用卡被盗刷,遭受身份盗用,或者因为有人滥用他们的在线拍卖账户而承担法律责任。

在网络上对灾难恢复的许多论文进行快速调查,一遍又一遍地出现了不同版本的相同统计数据——X%的公司经历 Y 天的停机时间后永远无法恢复 [灾难]。X 和 Y 在不同的论文中有所不同,但 X 总是一个两位数,Y 总是一个个位数。这一点就足以让你保护系统免受可能抹去你的数据并破坏你的业务能力的入侵者的影响——无论业务是指经营一家实际公司还是简单地能够报税。

所有这些都假设我们没有监管要求——探讨诸如 ISO 17799 之类的标准远远超出了我们的范围,许多法规和标准(包括 ISO 17799)包括有关业务连续性和灾难恢复规划的规定。

你有这本书并且正在阅读本章节的这一部分,可能意味着这段文字是在说已经被说服的人,但至少——希望你如果遇到还没有被说服的人,你可能会有一些有用的观点!

设备及其对我们管理 IPCop 的影响

现在我们已经简要探讨了安全性和灾难恢复的概念,我们可以继续讨论这实际上如何影响我们对 IPCop 的持续管理和保护。进入 IT 中另一个常见的失败,防火墙(以及打印机、交换机和路由器等网络设备)是一些最不受关注的设备。大多数中小型企业根本不对这些设备进行任何例行管理,经常留下可能暴露在互联网上的交换机和路由器,其软件版本可能存在入侵者可以利用的漏洞!诸如简单网络管理协议SNMP)之类的服务,通常默认使用公共/私有社区字符串(类似于密码),经常允许入侵者悄无声息地完全控制设备(有时比通过设备的网络配置界面更有力)。

另一个常见的先入之见是,因为设备不是个人电脑,没有屏幕、键盘或鼠标,所以它不是计算机,也不需要更新。互联网的广泛用户群以及设计为路由器、防火墙等设备的产品数量并没有帮助改变这种忽视。

设备,一个不是计算机的计算机,对此有很大影响。设备广泛来说,是设计为在没有正常软件中心服务器所需的管理和更新的情况下运行的计算机。不幸的是,许多这些设备都基于类似于非设备设备的软件,尽管设备通常比设置为执行相同工作的等效服务器更加严格地锁定和保护,但它们并不免于类似的安全问题。

我们的 IPCop 系统设计为类似于一个设备。它完全由一个团队(IPCop 团队)设计和更新,它运行在个人电脑上,并且基于一个定制的正常操作系统,以提供非常特定的功能(并且几乎不暴露操作系统的运行情况)-因此在某种程度上我们需要将其视为一个设备。我们应该(与任何设备一样)通过固件更新我们的系统,并且如果我们希望它保持运行(并且可支持),我们仍然需要避免过多地研究防火墙的运作方式,但是了解其内部运作和工作原理对我们保护 IPCop 非常有益。

基本防火墙加固

首先,我们需要考虑 IPCop 在外部世界中的表现。任何黑客、渗透测试人员、IT 专业人员或分析师在评估特定设备构成的威胁时,无论他们打算修复它还是通过它进行入侵,第一步都是对该设备进行概要分析,以了解以下一些信息:

  • 设备是什么

  • 它运行的操作系统是什么

  • 它可能运行在什么样的硬件上

  • 服务器运行的服务,因此可以推断出...

  • 服务器运行的软件(服务)以及基本操作系统之外的内容

  • 以上任何内容(特别是服务)是否存在不安全的情况

作为合法的审计员、经理和 IPCop 系统的维护者,我们大部分信息都可以从记忆中获取,也可以从我们的文档或者登录到主机本身获取。对于攻击者来说,这些信息非常有价值,但情况并非如此,因此我们需要了解入侵者如何收集这些信息,以防止其这样做。

检查我们的防火墙对客户端的暴露

在评估我们的 IPCop 盒子在外部的样子时,最基本的工具是端口扫描器。正如我们在本书的前面所了解的,服务器可以打开任意数量的端口,以允许用户连接到其运行的服务。我们还应该知道,IPCop 可能默认情况下至少打开一个端口供内部客户端使用——端口 445,这是 HTTPS 通过 Web 界面进行配置的端口。端口扫描器非常简单地尝试连接到许多不同的端口,并查看它从哪些端口收到回复,将这些定义为打开的(即在另一端有活动)。

对于基础设施如防火墙进行端口扫描是进行安全审计或定期检查的重要练习,原因有几个。其中最显著的是我们可能并不总是知道我们的服务器在运行什么。我们可以通过在 shell 中使用netstat命令或通过 Web 界面查看我们的防火墙认为自己打开了哪些端口的列表。然而,如果我们之所以扫描我们的服务器是因为我们相信恶意入侵者可能已经在我们的防火墙上安装了软件进行不正当目的,那么这种软件有一个打开的端口(例如,允许入侵者重新连接并通过后门获得访问权限)可能会被netstat命令和操作系统的某些部分隐藏起来。

在这种情况下独立扫描系统是检测此类活动的少数方法之一,因此如果你对安全性很重视,定期进行这种扫描是一个好习惯;你永远不能太谨慎。

注意

通过互联网进行端口扫描

许多互联网服务提供商对通过其网络进行端口扫描有相当严格的政策,并会将任何此类活动视为非法,即使对自己的服务器进行端口扫描并不违法(而许多人认为对非自己的系统进行端口扫描是法律上的灰色地带,尽管越来越多地被视为犯罪活动)。更为合理的 ISP 将区分对自己系统进行端口扫描(显然是有同意的)和对他人进行端口扫描。然而,有些则更加武断(有些人会使用不自由这个词!)。

对于在 ISP 网络中传输此类活动进行密集扫描是非常耗费资源的,而且 ISP 很少会对不是发送到他们服务器(或者一般高价值系统)的流量进行扫描,因为这需要很大的开支。然而,在你考虑这样做并把自己置于不便或责任的风险之前,最好先检查你的 ISP 的条款和可接受使用政策!这些几乎总是可以在 ISP 的网站上找到,或者可以向 ISP 要求提供。

例如,BT(英国电信)宽带服务的 AUP(可在www.abuse-guidance.com/上找到)中对端口扫描的规定如下:

“你不得运行”端口*扫描“软件,访问远程机器或网络,除非得到这些远程机器或网络的管理员或所有者的明确事先许可。这包括使用能够扫描其他互联网用户端口的应用程序。[...]”

“如果你打算运行端口扫描应用程序,你必须向 BT 提供从扫描目标获得的书面同意的副本,授权该活动。这必须在运行应用程序之前提供给 BT。”

这与大多数 ISP 发布的 AUP 类型相似,尽管有点官僚主义。

使用扫描器 Nmap 进行的示例扫描可能看起来像这样:

james@horus: ~ $ sudo nmap 10.10.2.32 -T Insane -O
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-02 21:36 BST
Interesting ports on 10.10.2.32:
(The 1662 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 00:30:AB:19:23:A9 (Delta Networks)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.18 - 2.6.7
Uptime 0.034 days (since Tue May 2 20:47:15 2006)
Nmap finished: 1 IP address (1 host up) scanned in 8.364 seconds

从这次扫描中可以看到,Nmap 版本 3.81 默认扫描的 1663 个端口中有一个是开放的—端口 22,也就是 SSH 运行的端口。由于这是一个没有防火墙的 Linux 主机,Nmap 还可以检测系统的正常运行时间(使用 TCP 时间戳,RFC1323,www.faqs.org/rfcs/rfc1323.html)。我们还可以猜测机器上次重启的时间,并且基于机器对 Nmap 在扫描过程中发送的各种非标准数据包的响应方式的特点,Nmap 可以对主机进行操作系统指纹识别(通过使用-O标志请求),准确度相当高。

Nmap 是一个非常强大的工具,也是全球最常用的 IT 安全工具之一。(新编写的)手册页(man Nmap,或者从网站上—www.insecure.org/nmap/man/)不仅非常详细地介绍了工具的使用方法,还介绍了工具的工作原理和原因。

您可能想尝试其他扫描器,特别是在 Windows 平台上(Nmap 在该平台上安装有些麻烦,并且经常被服务包和补丁阻止工作),包括 Superscan(www.foundstone.com/index.htm?subnav=resources/navigation.htm&subcontent=/resources/proddesc/superscan.htm)。

从内部网络查看 IPCop 防火墙的默认配置(即如果您从绿色区域对服务器进行端口扫描,或者如果员工、孩子或客户连接到公司网络进行了防火墙扫描),我们只会看到端口 445 是开放的。

许多端口扫描器(包括 Nmap)并不会扫描服务器上可能连接的每个端口,正如我们从前面的扫描中所看到的—Nmap 默认扫描 1663 个常用端口。这样做有两个原因:首先,我们发送(和接收)的数据越少,扫描速度越快;其次,我们发送和接收的数据越多,扫描就越容易引起怀疑(或者引起网络问题)—希望对于 Nmap 这样的合法用户来说不是一个问题!

由于通常只扫描众所周知的端口,因此,我们已经实施了一个实际的加固措施的实例—从 443 端口更改为 445 端口(这不是一个常见的服务端口)。这可能是“通过混淆来增加安全性”,但这*并不是坏事—除了使对该端口进行的任何连接更加明显(它们必须来自有意的连接尝试,而不是意外浏览或自动蠕虫通过 HTTPS 影响 HTTP 服务器),它确实会减少(微妙的)入侵者网络侦察的有效性。

端口扫描使我们能够从内部网络确定防火墙上运行的服务

那么在外部呢?嗯,端口扫描在这里同样有价值(甚至更有价值)。

外部端口扫描允许我们测试互联网在我们的防火墙外部接口上看到的开放端口是否与我们在防火墙外打开的任何端口转发或漏洞对应。出于与内部主机端口扫描相同的原因,这是积极的安全策略的重要部分。

尽管我们可以通过 IPCop GUI 检查我们允许进入网络的端口,但端口扫描是另一种验证我们的端口转发是否转发到适当位置的方法。我们已经转发到网络内部主机的端口,如果在端口扫描中没有显示(被过滤),也可以通过这种方式进行识别;尽管我们可以在 Web 界面中查看哪些端口被转发,但我们无法验证这些端口被转发到任何地方。在一个大型环境中,我们可能不知道所有转发的端口,这可能是识别防火墙中不需要的漏洞(我们可以删除)的一种方式。

一些网站,如 Sygate 的(scan.sygatetech.com/),将自动(免费)为您的主机进行端口扫描,并通过 Web 向您呈现结果。如果您的 ISP 有限制或者您没有另一台直接连接到互联网的计算机进行扫描,这将非常有用!

我们的防火墙上正在运行什么?

除了审计我们的防火墙以查看它正在监听哪些端口之外,我们还可以定期审计它,以确定防火墙上正在运行哪些进程。有几个软件包可以帮助我们完成这项工作。

在最简单的情况下,像ps命令这样的 binutils,可以列出系统上运行的进程,可以用来确定我们的系统在做什么。top命令可以实时显示进程,并可用于监视系统上的进程(例如监视不可预测的进程并找出导致性能不佳的原因)。

然而,ps命令并不适合这些情况。主要原因是:入侵者很容易用不显示恶意进程的版本替换ps命令(执行此类任务的一组工具通常被称为rootkit)。另一个原因是,比较ps输出相当耗时,并且需要对系统上的进程有相对详细的了解(即使ps输出没有直接被修改,许多恶意进程也可能伪装成合法进程)。

幸运的是,我们还有许多其他应用程序可以用来预防和检测系统被篡改的情况。其中第一个,也是在 Unix 和 Linux 系统上使用的较旧的工具之一,叫做 tripwire (sourceforge.net/projects/tripwire)。Tripwire 是一个主机入侵检测系统(HIDS),它将监视系统上的特定文件(如系统二进制文件如ps和配置文件)。Tripwire 不是实时监控,而是在事后寻求检测这些更改。Tripwire 可以为我们提供这些事件的警报,用于安全目的和其他目的(如变更管理或仅仅是正常的 IT 流程的一部分)。

Tripwire 是一个开源工具,可以作为 IPCop 的附加组件使用。

对于这些情况的另一个有用工具是 chkrootkit (www.chkrootkit.org/)。与 tripwire 一样,chkrootkit 检查系统上的文件,但 chkrootkit 是一个在用户请求时启动的脚本,专门用于扫描被识别为恶意的文件。尽管定期运行以进行验证进程很有用,但预防胜于治疗的古老格言仍然成立,负面扫描并不意味着系统是干净的。由于 chkrootkit 是一个脚本,您可以使用wget命令下载脚本,或者使用scp (www-hep2.fzu.cz/computing/adm/scp.html)将其上传到服务器,并在服务器上直接运行新下载的副本。

注意

SCP

SCP,或安全复制,是包含在 IPCop 中的 SSH 服务器/客户端的功能的子集。在 Unix/Linux 命令提示符下使用scp命令,或在 Windows 上使用诸如 WinSCP(winscp.sourceforge.net)之类的工具,您可以访问 IPCop 系统上的文件系统并远程操作文件系统。尽管非常有用,但scp很容易被用于不良目的,因此应谨慎保护和保护 shell 访问。

高级加固

到目前为止,我们已经意识到可以对 IPCop 的操作和设置进行两个重大改变,以使其更加安全。首先,审计开放端口,使我们能够减少防火墙和系统对互联网的暴露。其次,利用某种形式的入侵检测或事后扫描系统,如 tripwire 和 chkrootkit,使我们更有可能检测到任何突破我们防御的人。

然而,加固我们的主机远不止是安装服务或运行一些端口扫描软件这么简单。保持加固系统涉及删除我们不需要的任何功能,以及对系统安全进行深思熟虑的更改。在这方面,IPCop 已经得到了相当大的加固,使其比任何主要发行版的默认 Linux 安装都更加安全。为了使 IPCop 更加安全,已经采取了一些步骤,包括以下内容。

堆栈破坏保护程序(Propolice)

堆栈破坏保护程序SSP)(www.research.ibm.com/trl/projects/security/ssp/)是用于创建 IPCop 和许多其他开源应用程序中的二进制可执行文件的 GCC 编译器的补丁集,由 IBM 的 Hiroaki Etoh 开发。SSP 有助于保护计算机软件中操纵堆栈的漏洞,堆栈是添加和删除数据的区域,如缓冲区溢出攻击。

缓冲区溢出攻击中,攻击者可能利用软件中的漏洞将数据写入与分配给该数据的内存区域相邻的内存区域(如堆或堆栈)。当存在这种情况时,可能编写恶意应用程序以允许攻击者在系统上运行自己的(恶意)代码,从而一般会破坏安全性。

SSP 通过验证堆栈是否被篡改来保护堆栈免受攻击,并导致发生这种情况的任何应用程序出现分段错误并退出。因此,在 IPCop 上编译了这一功能的所有软件都受到一定程度的保护,以防止常用于利用系统的某些攻击类型。

服务加固

IPCop 默认删除了不必要的服务-许多操作系统,包括广泛部署的 Linux 版本和旧版本的 Windows 操作系统,运行了许多不必要的服务,这些服务对正常运行是不必要的。这些常见的例子包括 Windows 上的 IIS 服务器和 Linux 上的 Apache 服务器等 Web 服务器,以及在大多数部署中不使用的进程,如 finger、nfs、portmap、telnet 等。

由于每个这些进程都存在利用缓冲区溢出等漏洞来入侵系统的风险,因此消除的每个服务都关闭了潜在入侵的另一扇门。入侵可能是从 2001 年利用 IIS Web 服务器中的缓冲区溢出的 Code Red 蠕虫,到 2002 年利用 OpenSSL 握手过程中的缓冲区溢出来威胁 Apache Web 服务器的 Slapper 蠕虫,一直到恶意入侵者进行更精确的攻击。

如果我们不需要包括 SSH 或 Squid 在内的 IPCop 提供的服务,或者通过附加组件安装的服务,最好的做法是不启用它们,并最好将它们从系统中完全删除。虽然像 SSH 和 Apache 这样的服务通常暴露在互联网上,比起像 Squid 这样不常暴露的服务,风险要小一些,但任何不需要的服务都应该被移除。

日志文件和监控使用

作为良好安全管理的一部分,保留注意行为和信息系统使用趋势的能力非常重要,这使我们能够主动注意到变化。代理服务器使用、内存使用或 CPU 负载的变化可能表明一些无害的事情,比如用户活动增加或需要升级硬件、硬件故障,甚至是恶意活动。

通过图表建立基线

因此,建立服务器行为的基线是非常重要的,以便能够识别特定行为何时变得不寻常。IPCop 通过提供图形工具来监视(和绘制)代理连接和 CPU 使用率等统计数据,极大地帮助了我们。定期审查这些数据并解释任何主要的突变或行为变化对于您的主机的安全非常重要。

作者已经意识到了几种情况,其中系统已被入侵并用于恶意目的,并且在系统上游路由器的流量监控表明流量增加。随后的调查随后揭示了恶意活动,并导致服务器被关闭和清理。

日志文件

日志文件是安全管理的另一个重要部分,也是恶意活动的常见指示。管理员需要阅读他们的日志文件,并建立服务器产生事件的基线。例如 Apache web 服务器日志和/var/log/auth.log文件存储了认证事件,这些日志非常重要,通常提供有关尝试入侵系统、猜测密码或收集系统信息的宝贵信息。这可能包括尝试通过 SSH 服务器或 IPCop 管理界面等 HTTP 服务器使用暴力破解来发现用户名和密码。

注意

审计 SSH 日志事件

由于恶意蠕虫在线,对默认端口 22 的 SSH 服务器进行粗暴的暴力破解尝试是在线生活中非常常见的一部分。几乎任何连接到互联网的 SSH 服务器都很可能生成大量的日志事件,例如尝试使用 root 和 admin 等常见系统帐户登录失败。这些是相对正常的,并且有力地证明了将 SSH 移动到替代端口(IPCop 默认情况下)以区分这样的尝试和真正的入侵尝试是有道理的。

/var/log/auth.log中由 SSH 服务器上的暴力破解尝试引起的日志示例可能如下所示:

Apr 30 09:34:48 firewall sshd[28936]: Illegal user library from 217.160.209.42
Apr 30 09:34:48 firewall sshd[28938]: Illegal user test from 217.160.209.42
Apr 30 09:34:50 firewall sshd[28944]: Illegal user admin from 217.160.209.42
Apr 30 09:34:50 firewall sshd[28946]: Illegal user guest from 217.160.209.42
Apr 30 09:34:50 firewall sshd[28948]: Illegal user master from 217.160.209.42
Apr 30 09:34:53 firewall sshd[28960]: Illegal user admin from 217.160.209.42
Apr 30 09:34:53 firewall sshd[28962]: Illegal user admin from 217.160.209.42
Apr 30 09:34:53 firewall sshd[28964]: Illegal user admin from 217.160.209.42
Apr 30 09:34:54 firewall sshd[28966]: Illegal user admin from 217.160.209.42
Apr 30 09:34:55 firewall sshd[28972]: Illegal user test from 217.160.209.42
Apr 30 09:34:55 firewall sshd[28974]: Illegal user test from 217.160.209.42
Apr 30 09:34:56 firewall sshd[28976]: Illegal user webmaster from 217.160.209.42
Apr 30 09:34:56 firewall sshd[28978]: Illegal user username from 217.160.209.42
Apr 30 09:34:56 firewall sshd[28980]: Illegal user user from 217.160.209.42
Apr 30 09:34:57 firewall sshd[28984]: Illegal user admin from 217.160.209.42
Apr 30 09:34:58 firewall sshd[28986]: Illegal user test from 217.160.209.42
Apr 30 09:34:59 firewall sshd[28994]: Illegal user danny from 217.160.209.42
Apr 30 09:35:00 firewall sshd[28996]: Illegal user alex from 217.160.209.42
Apr 30 09:35:00 firewall sshd[28998]: Illegal user brett from 217.160.209.42
Apr 30 09:35:00 firewall sshd[29000]: Illegal user mike from 217.160.209.42

日志文件通常相对容易理解,而在这不成立的情况下,相关软件的文档(如 OpenVPN (www.openvpn.net)、OpenSSH (www.openssh.com)和 Apache web 服务器 (www.apache.org))通常非常好。

使用和拒绝服务

并非所有安全风险都源自软件和凭据的妥协。许多安全风险通常被称为拒绝服务DoS攻击,影响计算机系统提供的服务质量,可能与系统妥协一样具有破坏性。如果您的防火墙关闭,无法向客户发送电子邮件确认业务交易,那么收入损失可能会大于如果您的防火墙被入侵者知晓交易的情况。

确保我们系统的安全性的一个极其重要的方面是确保它们运行的硬件是足够的,因此性能监控,如第五章中提到的,应该定期进行,并且应该对异常活动,如高网络或 CPU 使用率,进行核算。这样的管理是确保我们的防火墙不仅对简单攻击进行了保护,而且还能够抵御 DoS 攻击和使用量激增的重要部分。

如果一个性能计数器(或多个)出现异常高或最近急剧上升,我们可以做一些事情来排除问题。可能是,特别是如果我们的硬件规格较低(Pentium II 或更低)而我们的网络相对较快(五 Mbit 或更快),那么机器可能只是负载过重—使用 IDS(Snort)或代理服务器(Squid)将增加处理器的负载和内存使用。

CPU 和内存使用情况

如果 CPU 使用率很高,我们可以首先查看哪个应用程序正在使用 CPU!虽然通过 Web GUI 没有太多有用的诊断信息,但幸运的是我们可以使用top实用程序来查看系统上正在运行的进程,以及它们正在使用的内存和 CPU 时间的百分比等统计信息。

CPU 和内存使用情况

虽然看起来可能有点吓人,但top命令的输出相当合乎逻辑,并且在您查看时会动态更新。上面的top输出来自一个干净的 IPCop 1.4.10 系统(没有配置代理服务器或 IDS),大多数列出的进程都是不言自明的。

以字母k开头的进程都是(在本例中)内核进程。sshd,毫不奇怪,是 SSH 服务器进程(d代表守护进程,在 Unix 和 Linux 术语中基本上意味着服务器进程)。httpd是提供基于 HTTP 的 GUI 的进程;dnsmasq既是 DNS 又是 DHCP 服务器。syslogd保留系统日志,mingettybash都是处理和提供基于文本的控制台的进程。

在这种情况下,CPU 使用率非常低—99.6%空闲0.4%的实际使用率仅归功于top!因此,我们可以得出结论,这个系统没有性能相关的问题(或者它们是如此普遍,以至于top本身受到影响并提供虚假输出—这几乎是不可能的,除非系统已被入侵,top本身被攻击者替换)。

在下面的例子中,我们可以看到 CPU 使用率为29.7%—有第二个 root 登录(通过 SSH 登录的每个用户将会出现一个新的bashsshd进程),负责运行grep命令(在文件或大量文件中查找特定的文本),这个命令使用了大量的 CPU 时间(可能也使用了大量的磁盘时间)。这是本例中的第二次登录,运行的grep命令(它将消耗 CPU 时间并使用磁盘,但不应该破坏任何东西)是从文件系统的根目录运行的(在命令行中cd/)。

CPU 和内存使用情况

了解系统上正在运行的进程是一个好主意。虽然许多入侵行为将涉及替换二进制文件,比如运行pstop的文件,但通常情况下,即使入侵者没有对系统进行 root(管理员)访问,也会有通过pstop可见的正在运行的进程。不可见的进程,或者像pstop这样的二进制文件的修改版本,可能会被 chkrootkit 等应用程序检测到。

如果您的 Squid 代理、HTTP 服务器或其他进程大量使用 CPU 或内存,您可能会遇到需要关注的问题(或者可能是攻击者)。我们还可以使用ps命令列出系统上运行的进程,尽管 IPCop 中包含的ps命令是 busybox 工具包的一部分,比大多数 Linux 系统中包含的真正(binutils 版本)ps命令功能更弱。

已登录用户

我们可以使用w命令查看通过 SSH 登录的用户,如下图所示:

已登录用户

正如我们所看到的,有三个root用户登录的实例:第一个在tty1上,登录到 IPCop 主机本身的物理终端上,而pts/0pts/1终端都是虚拟终端,通过 SSH 访问。WHAT列显示用户当前交互运行的进程——在第二个会话中,是w(w 将在枚举系统上运行的进程时检测到自身在运行),而其他两个会话都在bash,这是命令行本身的名称(即另外两个用户要么处于空闲状态,要么在命令行上输入而没有特定的应用程序在前台)。

Linux 系统管理的掌握是复杂的,但 IPCop 配备了一些简单的工具,如top, ps, w, netstatroute,它们可以分别显示实时和快照的进程信息、已登录用户、网络连接和路由表。对这些工具的了解以及对网络和 Linux 操作系统架构的基本理解将在诊断问题、分析入侵和解决性能问题方面帮助我们很多。

其他安全分析工具

除了我们提到的工具之外,还有许多其他工具可以帮助我们分析防火墙的状态并寻找安全漏洞。许多较小的实用程序,如 Nmap,具有非常具体的目的,而一些工具的范围更广。作为一个安全扫描程序,Nessus 由于其使用范围而值得特别关注。Nessus 汇总了许多不同的安全漏洞,并有能力在一个主机或整个网络上寻找这些漏洞。

Nessus 报告的一些漏洞可能是误报,而在这些情况下,Nessus 可能不确定是否存在特定的不安全配置。或者,误报可能是一个应该被禁用的已启用功能,但实际上正在使用。无论哪种情况,Nessus 虽然有用,但是需要谨慎使用,特别是在像 IPCop 这样的系统上,它被精心设计成不以相当正常的方式进行维护。

然而,在您的 IPCop 系统以及其他系统(如服务器、工作站、打印机、交换机和无线接入点)上,Nessus 能够发现各种各样的安全漏洞和常见的配置错误。在www.nessus.org/了解更多关于 Nessus 的信息。

下一步去哪里?

你可能觉得自己生活在一个真空中,无法获得有关安全等问题的帮助,也没有足够的信息来进一步了解这些话题。幸运的是,情况并非如此,在线资源中有大量关于安全话题的信息。这里已经提到了一些很好的例子。

Full-Disclosure

如果有一个在线安全社区的中心,你可以很有说服力地认为它是 Full-Disclosure。

作为对其他经过审查的邮件列表的回应,这些列表中的信息并不是自由可得的,审查是在线安全讨论的例行部分,Full-Disclosure 的概念提倡信息的完全可得性,正如列表的名称所暗示的那样,邮件列表提倡这些理念。

因此,根据这些原则,该列表完全没有经过审查(除了极少数高度反社会行为,如垃圾邮件或重复且令人不快的冒犯行为),并且促进了有关安全的所有信息的全面可用性。Full-Disclosure 是一个繁忙的列表,由来自安全社区各个领域的人员组成。有关 Full-Disclosure 宪章的更多信息,请访问lists.grok.org.uk/full-disclosure-charter.html

维基百科

尽管维基百科通常不被视为安全专用信息来源,但许多有关技术主题如 TCP/IP、防火墙和计算机安全的文章都非常好,而计算机安全文章是一个很好的起点,因为它链接到了维基百科文章和非常全面的第三方资源(参见en.wikipedia.org/wiki/Computer_security)。

SecurityFocus

尽管不是供应商中立(SecurityFocus 归杀毒软件供应商赛门铁克所有),SecurityFocus 是一个很好的门户网站,有许多由知识渊博的贡献者撰写的好文章。SecurityFocus 也是许多好的邮件列表的主页,包括著名的 Bugtraq(请参见www.securityfocus.com)。

文学

有许多关于安全的好书,涵盖了广泛的主题。其中一些非常广泛,很快就会过时,而一些则涵盖了极为详细的主题。关于不同主题的(相对)备受推崇的书籍的随机选择如下:

Counter Hack Reloaded: A Step-by-Step Guide to Computer Attacks and Effective Defenses, ISBN 0-13-148104-5

这本由 Ed Skoudis 和 Tom Liston 撰写的备受赞誉的书籍代表了对计算机安全的相当全面的概述,从网络开始,涵盖了 Unix 和 Windows 环境中的操作系统安全,网络侦察,软件缺陷以及各种攻击和黑客技术。这是一本很好的、严肃的、易于理解的技术性安全入门读物。

The Art of Deception: Controlling the Human Element of Security, ISBN 0-47-123712-4

这本由 Kevin Mitnick 撰写的非技术性书籍涵盖了社会工程学的主题,即通过操纵人来破坏计算机系统。这包括电话呼叫、冒充员工、假装来自公用事业公司,甚至贿赂,以获取对计算机系统的物理和逻辑访问以及有关它们的信息。

Hacking Exposed 5th Edition, ISBN 0-07-226081-5

这本第五版的相对技术性书籍代表了对多种不同技术的黑客行为的广泛观点。尽管它的封面和态度稍微有些耸人听闻,它不会在一夜之间教会你所有关于黑客或计算机安全的知识,但它确实涵盖了一些安全领域的基本主题,并且实际上演示了计算机是如何被破坏的,对于新手来说是一个不错的起点。

TCP/IP Illustrated 3 Volume Set, ISBN 0-20-177631-6

这本由 Richard W. Stevens 撰写的经典书籍经常被誉为 TCP/IP 网络的the书籍,并且是关于 TCP/IP 工作原理的极好(尽管在某些地方非常技术性)的入门读物。除了在网络章节中提到的 IBM 红皮书第七章之外,对于任何对安全感兴趣的人来说,这都是值得一读的,因为(特别是关于防火墙)了解网络工作原理对于理解网络计算机系统的安全至关重要。

Linux Server Security, Second Edition, ISBN 0-59-600670-5

这本相对技术性的书籍是关于 Linux 服务器安全的极好入门读物,从文件系统权限和数据库安全到 iptables。对于任何对运行 Linux 服务器感兴趣的人来说,这都是值得一读的。

《网络安全监控之道:超越入侵检测》,ISBN 0-32-124677-2

这本由安全公司创始人 Richard Bejtlich 撰写的相对技术性的书籍不仅涵盖了传统入侵检测的缺陷,还涵盖了对网络、安全或防火墙管理员至关重要的许多技能,比如使用tcpdump和 IDS 分析工具。

总结

最重要的技能不是掌握如何保护(或仅仅管理)任何计算机系统,而是在需要时能够尽可能短的时间内找到所需信息的能力。往往这些信息是可以在线获取的——如果你知道去哪里找——而且像这样的书籍通常会为你提供足够的知识,让你能够自行学习更复杂的主题。类似于我们之前提到的网站,比如维基百科和 SecurityFocus,以及 Full-Disclosure 和 SecurityFocus 邮件列表等邮件列表,都是很好的起点,每天都会发布广泛的用户和内容类型。

即使你不成为常规用户或发帖者,如果你对安全有丝毫认真的话,订阅 Full-Disclosure 一个月或两个月是值得的!

我们已经审查了一些常见的安全态度,审查了 IPCop 提供的一些安全措施,以及我们可以采取的一些技术和操作安全措施,并为感兴趣的读者提供了一些学习更多安全知识的起点。

计算机安全是一个令人愉快、复杂、备受关注且颇具时尚感的话题,因此作为进一步研究的来源非常具有吸引力!

第十一章:IPCop 支持

我们现在已经涵盖了 IPCop 的主题,并且意识到了它在我们的网络中的用途,以及 IPCop 是否对我们特定的网络和组织有用。IPCop 的推动力是其开源性质和背后的社区,这一点我们在本书中一直试图强调。

我们已经看到了如何使用相当简单的工具集创建非常复杂和强大的系统。我们也知道如何使用 IPCop 界面配置这些工具,以及如何管理和增强 IPCop 本身。这一切都是可能的,因为 IPCop 背后有强大的开源社区。包括所有用户和开发人员,他们不断推动 IPCop 的发展,以创建一个真正有效的 SOHO 路由器、防火墙和强大的网络设备。正如我们一直展示的那样,所涉及的工具很多,有许多开发人员和用户参与其中。将所有涉及 IPCop 的工具的开发人员结合起来,很容易就能达到数千名高技能人员,他们创造了我们使用的产品。

然而,事情并不止于此,经过所有这些工作之后,他们仍然为我们提供更多。这些编写系统、编译、测试、调试和发布它的开发人员也提供他们的时间来帮助支持使用它的用户。

支持

与大多数开源软件一样,IPCop 也有许多支持机制。其中最容易访问的是 IPCop 网站本身www.ipcop.org,其中包含文档、教程和常见问题解答。如果用户在使用其他支持机制之前先查看 IPCop 网站以获取答案,这将极大地帮助任何开源项目,避免分散其他用户或开发人员的注意力。如果我们遇到了这本书没有解决的问题,并且在我们喜欢的搜索引擎上搜索或在 IPCop 网站上搜索后仍然找不到解决方案,那么我们可以考虑其他支持机制。

用户邮件列表

有两个邮件列表需要特别注意:

  • 公告: 这个邮件列表偶尔会发布与 IPCop 相关的公告,通常限于新版本的通知或重要的安全更新。它可以在lists.sourceforge.net/mailman/listinfo/ipcop-announce找到。

  • 用户: 这是一个繁忙的 IPCop 用户讨论列表,用户可以在这里相互寻求支持,通常也可以从 IPCop 开发人员那里获得支持。您应该在这里提出关于新功能的想法,帮助解决当前功能的问题,或者在您认为已经发现了 IPCop 软件中的错误时进行初步检查。该列表可以在lists.sourceforge.net/mailman/listinfo/ipcop-users找到。

Internet Relay Chat (IRC)

IRC 是与开源软件相关的快速支持查询的最常见位置,而托管#ipcop 频道的 Freenode 网络有各种官方支持频道。你会经常发现大约 50 名用户在线——作者们经常是其中的常客。这个频道的大多数用户互相帮助,并且经常讨论产品,将其与其他产品进行比较,并经常讨论功能请求或“愿望清单”。

您可能无法在常规支持区域获得有关附加组件的支持。直接去找源头,也就是附加组件的开发人员,获取他们产品的全面支持通常更好。

回馈支持

许多人感到有必要或义务回馈他们发现有用的项目,IPCop 提供了这样的途径。

支持开源软件最明显的方式是推动软件开发。用户可以为 IPCop 开发插件,就像许多用户所做的那样,或者为 IPCop 核心编写代码,这通常受到当前开发人员的欢迎,因为它减轻了负担,并确保 IPCop 可以在所有需要关注的领域得到发展。

IPCop 有两个开发邮件列表:

您不能直接向 IPCop 捐赠现金,因为这会增加处理慈善捐赠的复杂性,成为 IPCop 开发人员的职责,并需要额外的、不必要的管理。但是,您可以选择支付给开发人员,以便他们继续开发 IPCop。这是支持他们努力的最简单方式。

没有义务以任何方式支持该项目,但我们大多数人意识到,如果我们喜欢一个项目并支持它,通常可以帮助它变得更好或帮助维护它。支持的另一个例子是编写书籍和其他文档,例如本书,通过降低所需的技能门槛并确保一切得到充分解释,吸引更多用户参与项目。

编写代码通常被视为对开源软件项目做出贡献的唯一真正方式,但正如您所看到的,还有许多其他选项,所有这些选项显然都受到 IPCop 开发团队的欢迎。

总结

作为 IPCop 的用户,您可以以任何方式使用该软件,甚至可以重新分发它,甚至可以修改它,如果需要的话。该软件可以朝着另一个方向发展,就像 IPCop 自己的创建一样,它是从 Smoothwall 分叉出来的。这确保了软件的存在并且在未来几年内仍然有用,因为您可以相信会有足够的用户成为开发人员,以保持项目的持续发展。

您可以利用本书中获得的知识,创建符合您规格的网络设备,并根据需要进行修改和调整。有各种选择和选项,而且该软件受到 GPL 的保护,可以使其在遇到任何问题时得以生存。这意味着您可以对软件的选择非常有信心,因为您的网络不依赖于公司的生存,而是依赖于全球成千上万的用户和开发人员,表明他们可以并且将会共同努力,以创建真正卓越的软件。

posted @ 2024-05-16 19:07  绝不原创的飞龙  阅读(17)  评论(0编辑  收藏  举报