《Linux防火墙(第4版)》——第1章 数据包过滤防火墙的预备知识 1.1OSI网络模型

简介: 一个简单的防火墙设置有时被称作“堡垒防火墙”,因为它是您抵御外部攻击的主要防线。您的许多安全措施都建立在这位保卫您领地的“卫士”之上。它会尽一切可能来保护系统安全。

本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第1章,第1.1节,作者:【美】Steve Suehring(史蒂夫 苏哈林)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1部分 数据包过滤以及基本安全措施

第1章 数据包过滤防火墙的预备知识

一个小型站点可能会通过多种方式连接到互联网,如T1专线、电缆调制解调器、DSL、无线、PPP、综合业务数字网(ISDN)或者其他的方式。直接连接到互联网的计算机通常是安全问题的焦点。无论是一台计算机还是由连接起来的多台计算机所组成的局域网(LAN),对于小型站点来说,最初的焦点将是直接连接到互联网的那台计算机。这台计算机将被用来搭建防火墙。

防火墙(firewall)这个术语根据其实现方式和使用目的不同而有多种不同的含义。在本书中,防火墙意味着直接连接到互联网的计算机。防火墙也是针对Internet访问实施安全策略的地方。防火墙计算机的外部网卡便是连接到互联网的连接点,或称为网关(gateway)。防火墙存在的意义是保护网关内部的站点免受外部威胁。

一个简单的防火墙设置有时被称作“堡垒防火墙”,因为它是您抵御外部攻击的主要防线。您的许多安全措施都建立在这位保卫您领地的“卫士”之上。它会尽一切可能来保护系统安全。

在这条防线之后的是您的一台或一组计算机。充当防火墙的计算机所扮演的角色可能只是简单地作为您局域网中其他计算机连接到互联网的连接点。您可以在防火墙后的计算机上运行本地的私有服务,例如共享的打印机或者共享的文件系统,或者让您所有的计算机都能连接到互联网。您的某台计算机上可能会存放着您的私人财务记录。您也许想让这台计算机访问Internet,但您不会想让任何人来访问这台计算机。有时,您可能希望向互联网提供您自己的服务。局域网中的某台计算机可能会托管着您的个人站点,另外一台计算机则可能会作为邮件服务器或者网关。您的设置和目的将决定您的安全策略。

防火墙存在的目的是为了执行您定义的安全策略。这些策略反映了您所做出的决策:允许哪些Internet服务访问您的机器,通过您的计算机向外提供哪些服务,哪些服务只为特定的远程用户或站点提供,哪些服务和程序您只希望在本地运行以便仅供您私人使用。安全策略实际上就是访问控制和授权使用私有及受保护的服务、程序以及您计算机上的文件。

虽然家庭和小型企业系统并不会遇到大型公司站点所面临的全部安全问题,但设置安全策略的基本思路和步骤仍是相同的。只是无需考虑那么多的因素,而且安全策略通常没有大型企业站点那样严格,其重点在于保护您的站点免受互联网上不速之客的访问。数据包过滤防火墙是一种常用的保护网络安全和控制外部访问的方法。

当然,拥有防火墙并不意味着您拥有了全面的防护。安全是一个过程,而不是一块硬件。例如,尽管有防火墙的存在,仍有可能通过下载间谍软件、广告软件或点击恶意邮件,使计算机的防护之门大开,继而招致外部对网络的攻击。采取措施以消除外部攻击所带来的危害与在防火墙上花费资源同样重要。在您的网络中使用最佳实践将有助于减少您的计算机被恶意使用的机会,并给予您的网络以弹性。

需要记住的一点是,互联网模式(Internet paradigm)是基于端到端透明这一前提的。对于正在通信的两台计算机来说,两者通信所使用的网络对二者来说是不可见的。实际上,如果通信路径上的某个网络设备失效,则两台计算机之间的流量会在两台计算机不知道的情况下通过新的通信线路继续传输。

理想情况下,防火墙应该是透明的。然而,防火墙可以通过在两台端点计算机之间的网络内引入单一故障点,来破坏互联网模式(Internet paradigm)。而且,并不是所有的网络应用程序使用的通信协议都能轻易通过一个简单的数据包过滤防火墙。如果没有额外的应用程序支持或更加复杂的防火墙技术,则不可能使特定流量穿越防火墙。

更加复杂的问题就是网络地址转换(Network Address Translation[NAT],Linux的说法是地址伪装)了。NAT使得一台计算机能够通过转换多台计算机的请求并将它们转发至相应的目的地从而代表很多其他的计算机。NAT和RFC 1918定义的私有IP地址的使用有效地减轻了即将出现的IPv4地址短缺。但NAT和RFC 1918私有地址空间的结合会使得某些类型的网络流量要么难以传输,要么需要复杂的技术或昂贵的成本才能完成传输。
最后一个复杂的地方来源于多媒体和点对点(P2P)协议的广泛使用,它们在实时通信软件和网络游戏中都有应用。这些协议与当今的防火墙技术相互对立。现如今,特定的防火墙解决方案必须对每一个应用协议单独进行建立和部署。而那种简单地、经济地处理这些协议的防火墙架构仍处在标准委员会的工作组的讨论中。

我们应该牢记,混合使用防火墙、DHCP和NAT会引入复杂性,导致站点为了满足用户使用某些网络服务的要求,不得不对系统的安全性做出一定程度的让步,理解这一点至关重要。小型企业通常不得不部署多个局域网和更复杂的网络配置,以满足不同本地用户的多种安全需求。

在深入了解开发防火墙的细节之前,本章将先介绍数据包过滤防火墙的基础概念以及机制。这些概念包括网络通信的参考架构、基于网络的服务是如何被识别的、什么是数据包,以及网络上的计算机之间相互发送消息和信息的类型。

1.1 OSI网络模型

开放系统互联(Open System Interconnection,OSI)模型代表了基于层次的网络框架。OSI模型中的每一层都提供了不同于其他层的功能。如图1.1所示,OSI模型共包含7层。

screenshot
这些层有时是以编号来标识的,最低层(物理层)是第一层,而最高层(应用层)是第七层。如果您听别人说过“三层交换机”,那他/她指的就是OSI模型中的第三层。作为一个对安全和入侵检测感兴趣的人,您必须了解OSI模型的各层,以便完全理解那些会对您的系统造成危害的攻击途径。

OSI模型中的每一层都很重要。那些您每天都在使用的协议,例如IP、TCP、ARP等也都分布在OSI模型的不同层。每一层在通信过程中都有它们各自不同的功能和角色。

OSI模型中的物理层被传输介质占据,例如电缆规格和相关的信号协议;换言之,它们传输比特。大多数情况下,除了保护设备和布线,网络入侵检测人员通常不会关心物理层。本书不会讨论太多有关物理安全的内容(门锁能多有趣?),因此我也不会投入太多的时间介绍OSI模型中的物理层。当然,保障物理线路安全的方式不同于保障无线设备安全的方式。

紧接着在物理层上层的是数据链路层。数据链路层在给定的物理介质上传输数据,并负责传输过程中的错误检测和恢复。物理硬件地址的定义也在这一层,例如以太网卡的介质访问控制(Media Access Control,MAC)地址。

在数据链路层之上的便是IP网络里至关重要的第三层——网络层。它负责逻辑寻址与数据路由。IP协议是网络层的协议,这意味着IP地址和子网掩码由网络层使用。路由器和一些交换机工作在第三层,它们在逻辑上或物理上分隔的网络之间传递数据。

第四层——传输层——是能够建立可靠性的重要一层。传输层的协议包括TCP和UDP。第五层是会话层,在该层上,会话在两个端点之间建立。第六层是表示层,主要负责与其上的应用层进行通信,还定义了使用的加密方式等。最后是应用层,它负责向用户或应用程序显示数据。

除了OSI模型之外,还存在另外一种模型,即DARPA模型(有时也被称作TCP/IP参考模型),这种模型仅分为4层。在讨论大多数有关网络的内容时,使用OSI模型是一种惯例。

当数据从应用程序处沿OSI模型的各层向下传递时,下一层的协议会在数据上添加一些它们自己的额外信息。这些数据通常包括一个由上一层添加到数据上的头部,有时还会添加尾部。这个过程称为封装(encapsulation)。封装的过程会一直持续直到数据在物理介质上传输。对于以太网来说,数据在传输时被称为帧。当以太网帧到达了它的目的地后,数据帧会开始沿OSI模型的各层向上传递,每一层都会读取发送方相应各层的头部(也有可能读取尾部)信息。这个过程称为解封(demultiplexing[1])。

1.1.1 面向连接和无连接的协议
在OSI模型的某些层中,协议可以根据它们是否面向连接来定义。这个定义参考了协议所提供的包括错误控制、流控制、数据分片和数据重组等功能。

让我们回想一下电话呼叫时的那种面向连接的协议。通常存在一种用于拨出电话并进行通话的双方都认可的协议。拨出电话的人,即通信的发起者,通过拨出电话号码来开始一次通话。另一个人(或者一台机器,越来越多的情况下是机器)接受电话通信的请求以便开始对话。发起者的通话请求通常由接收者一端的电话铃声所表示。接收者拿起电话,说“你好”或者其他的问候语。这时,发起者便对接收者的问候致以礼貌的回复。至此,我们可以确定会话已经成功建立了。接下来进行的便是会话的内容。在会话过程中,如果出现了一些问题,例如线路上有杂音,则一方会要求另一方重复他/她刚才所说的话。通话结束时,大多情况下,两方都会说“再见”来表明他/她已经说完了,而这通电话也将在不久后结束。

这个例子基本上显示了面向连接的协议(例如TCP)的部分场景。其实也有例外,就像TCP协议中也有一些异常或错误一样。例如,有时候,会话的发起会因为技术原因而失败,而这通常在发起方和接收方的掌控之外。

与面向连接的协议不同的是,无连接的协议更像是通过邮局传递明信片。在发信人将消息写在卡片上并将它丢进邮筒之后,发信人(大体上)就失去了对发出消息的控制。发信人并不会直接收到关于明信片是否被成功送达的确认消息。无连接的协议包括UDP和IP。

1.1.2 下一步
接下来,我将开始对互联网协议(IP)进行更加详细的介绍。然而,我强烈建议您再花些时间学习OSI模型以及相应的协议。协议和OSI模型的知识对于安全专家而言至关重要。我强烈推荐一本由Kevin R. Fall和W. Richard Stevens合著的TCP/IP Illustrated, Volume 1, Second Edition,它几乎是所有计算机专家桌上的必备之物。

相关文章
|
8天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
8天前
|
网络协议 安全 Linux
Linux网络名称空间之独立网络资源管理
Linux网络名称空间是一种强大的虚拟化技术🛠️,它允许用户创建隔离的网络环境🌐,每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用📦和网络安全🔒等领域至关重要。本文将详细介绍在Linux网络名称空间中可以拥有的独立网络资源,并指出应用开发人员在使用时应注意的重点。
|
8天前
|
安全 网络协议 Linux
Linux网络名称空间概述
Linux网络名称空间是操作系统级别的一种虚拟化技术🔄,它允许创建隔离的网络环境🌐,使得每个环境拥有自己独立的网络资源,如IP地址📍、路由表🗺️、防火墙规则🔥等。这种技术是Linux内核功能的一部分,为不同的用户空间进程提供了一种创建和使用独立网络协议栈的方式。本文旨在全方面、多维度解释Linux网络名称空间的概念、必要性和作用。
Linux网络名称空间概述
|
16天前
|
Linux
Linux中centos桌面消失网络图标
Linux中centos桌面消失网络图标
13 0
|
6天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
20 6
|
9天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
12天前
|
域名解析 监控 网络协议
Linux网卡与IP地址:通往网络世界的通行证 🌐
探索Linux网卡与IP地址关系,理解网卡作为网络通信的关键。Linux网卡需配置IP地址以实现唯一标识、通信、路由、安全管理和网络服务。无IP地址时,网卡在特定情况如局域网服务、网络监控、无线认证和网络启动可有限工作,但通用功能受限。配置IP地址通常通过`ifconfig`(传统)或`ip`(现代)命令,永久配置需编辑网络配置文件。配置错误如IP冲突、子网掩码错误、默认网关和DNS配置不当可能导致服务中断、网络拥堵、安全漏洞和数据丢失。重视网络配置的正确与安全至关重要。
Linux网卡与IP地址:通往网络世界的通行证 🌐
|
3月前
|
网络协议 前端开发 数据处理
|
4月前
|
网络协议 网络架构
【计算机网络】OSI、TCP/IP、五层模型
【计算机网络】OSI、TCP/IP、五层模型
|
4月前
|
网络协议 数据安全/隐私保护 网络虚拟化
深入了解OSI模型:计算机网络的七大层次
OSI模型 OSI模型是一个网络通信的概念模型,用于描述计算机网络中各个不同层次之间的通信和功能。它将网络通信分为七个不同的层次,每个层次负责不同的任务,使得网络通信的设计、开发和管理更加模块化和可维护。以下是OSI模型的七个层次以及它们的主要功能: 1、物理层(Physical Layer): 功能:处理物理传输介质上的原始比特流,确保数据在传输媒体上能够以适当的方式传输。 示例设备:集线器、中继器、网线等。 主要任务:比特编码、电压规范、物理拓扑等。 2、数据链路层(Data Link Layer): 功能:负责将原始比特流分割成帧并添加地址信息,以便在直接连接的设备之间传输数据。 示例设
141 0