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

第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层。


这些层有时是以编号来标识的,最低层(物理层)是第一层,而最高层(应用层)是第七层。如果您听别人说过“三层交换机”,那他/她指的就是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,它几乎是所有计算机专家桌上的必备之物。

时间: 2024-11-08 18:27:37

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

《C语言编程魔法书:基于C11标准》——第2章 学习C语言的预备知识 2.1 计算机体系结构简介

第2章 学习C语言的预备知识 我们在第1章已经大致介绍了C语言的概念以及编译.连接流程.我们知道C语言是高级语言中比较偏硬件底层的编程语言,因此对于用C语言的编程人员而言,了解一些关于处理器架构方面的知识是很有必要的,对于嵌入式系统开发的程序员而言更是如此了. 另外,C语言中有很多按位计算以及逻辑计算,所以对于初学者来说,如果对整数编码方式等计算机基础知识不熟悉,那么对这些操作的理解也会变得十分困难.因此,本章将主要给C语言初学者.同时也是计算机编程初学者,提供计算机编程中会涉及的基本知识,这样

基于Linux系统的包过滤防火墙(3)

第3章.包过滤防火墙配置举例 3.1 建立包过滤防火墙 3.1.1网络结构 本节为一个的网络结构建立一个包过滤防火墙. 这个网络结构假设内部网有有效的Internet地址.为了将内部网段198.168.80.0/24与Internet隔离,在内部网络和 Internet之间使用了包过滤防火墙.防火墙的网接口是eth1(198.168.80.254),防火墙的Internet接口是eth0 (198.199.37.254).加外,内网中有3台服务器对外提供服务.分别为: → WWW服务器:IP地址

《Linux防火墙(第4版)》——2.2 选择一个默认的数据包过滤策略

2.2 选择一个默认的数据包过滤策略 就像本章前面所说的那样,防火墙是一个实现访问控制策略的设备.这个策略的大部分的决策基于一个默认的防火墙策略. 实现一个默认的防火墙策略有两种方法: 默认拒绝所有消息,明确地允许选定的数据包通过防火墙: 默认接受所有消息,明确地拒绝选定的数据包通过防火墙. 毫无疑问,推荐的方法是默认拒绝所有消息的策略.这种方法可以更容易地建立一个安全的防火墙,但您需要的每项服务和相关的事务协议必须被明确地启用(见图2.3). 这意味着您必须了解您启用的每一项通信协议."拒绝所

《构建高可用Linux服务器 第3版》—— 导读

前言 我的系统架构师之路 2004年我初识UNIX开源系统.那会儿我正在一家大型国有企业做系统管理员,负责值守公司的Windows Server 2000服务器.当时"震荡波"和"冲击波"这两种病毒很猖狂,虽然我们在防毒方面投入了大量的精力和金钱(当时购买的都是正版Windows 2000系统和正版瑞星杀毒软件),但新上线的机器,偶尔也有遗漏的时候,没有打补丁的机器无一幸免,所以对这个问题比较头疼.有一次去朋友的公司(某省太平洋寿险下面的一个分支机构)参观,我发现他

基于Linux系统的包过滤防火墙(1)

第1 章.基于路由器的包过滤防火墙 1.1 包过滤防火墙的一般概念 1.1.1 什么是包过滤防火墙 包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运.它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作. 在Linux系统下,包过滤功能是内建于核心的(作为一个核心模块,或者直接内建),同时还有一些可以运用于数据包之上的技巧,不过最常用的依然是查看包头以决定包的命运. 1.1.2 包过滤防火墙的工作层

4MLinux 2.3-server-edition发布 Linux的迷你发行版

4MLinux是一个Linux的迷你发行版.主要四个功能是:系统维护和恢复工具,多媒体视频播放,微型服务器(使用inetd后台进程)和游戏控制台. 4MLinux 2.3版本是一个4MLinux- 2.2 -服务器版的更新版本,更新内容: -由inetd后台程序控制的服务器: FTP, HTTP, SFTP, SSH, and Telnet.-支持一个代理服务器(Polipo1.0.4.1).-编程环境包括PHP5.3.6的CGI版本,最小版本的Perl5.14.1,SQLite 3.7.7.1

千牛卖家版登陆不了安装了防火墙怎么办

  千牛卖家版登陆不了安装了防火墙怎么办 情况一:系统防火墙设置原因,控制面板---系统和安全-----WINDOWS防火墙------允许程序或功能通过WINDOWS防火墙-------千牛 然后在千牛前面打勾,保存,退出搞定! 情况一:电脑的DNS出问题了.找到本地连接,修复下就行了.或者借用360安全卫士修复dns. 情况二:找到360安全卫士,进去之后,(一定要进到有很多软件的页面)然后在搜索:断网急救箱 ,然后就开始诊断,在最下面一项就会显示网络不通,你就点修复,一般修复之后,网络还不

《C++ Primer Plus(第6版)中文版》——第1章 预备知识

第1章 预备知识 C++ Primer Plus(第6版)中文版 本章内容包括: C语言和C++的发展历史和基本原理. 过程性编程和面向对象编程. C++是如何在C语言的基础上添加面向对象概念的. C++是如何在C语言的基础上添加泛型编程概念的. 编程语言标准. 创建程序的技巧. 欢迎进入C++世界!这是一种令人兴奋的语言,它在C语言的基础上添加了对面向对象编程和泛型编程的支持,在20世纪90年代便是最重要的编程语言之一,并在21世纪仍保持强劲势头.C++继承了C语言高效.简洁.快速和可移植性的

《面向机器智能的TensorFlow实践》一2.5 源码构建及安装实例:在64位Ubuntu Linux上安装GPU版TensorFlow

2.5 源码构建及安装实例:在64位Ubuntu Linux上安装GPU版TensorFlow 如果希望使用带有GPU支持的TensorFlow,那么最可能的选择是从源码构建和安装.本节给出了一个完整的安装参考实例,详细介绍了安装和运行TensorFlow所需的每一具体步骤.请注意,本示例中的操作系统为64位Ubuntu Linux发行版,因此如果你使用的是其他Linux发行版,则可能需要对某些命令进行修改(如apt-get).如果希望在Mac OS X上从源码构建TensorFlow,笔者推荐