基于Linux系统的包过滤防火墙
包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作。
第1章、基于由器的包过滤防火墙
1.1包过滤防火墙的一般概念
1.1.1什么是包过滤防火墙
包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作。
在Linux系统下,包过滤功能是内建于核心的(作为一个核心模块,或者直接内建),同时还有一些可以运用于数据包之上的技巧,不过最常用的依然是查看包头以决定包的命运。
1.1.2包过滤防火墙的工作层次
包过滤是一种内置于Linux内核由功能之上的防火墙类型,其防火墙工作在网络层。
1.1.3包过滤防火墙的工作原理
(1)使用过滤器。数据包过滤用在内部主机和外部主机之间,过滤系统是一台由器或是一台主机。过滤系统根据过滤规则来决定是否让数据包通过。用于过滤数据包的由器被称为过滤由器。
数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,主要信息有:
IP目标地址
数据包到达的端口
数据包出去的端口
在TCP/IP中,存在着一些标准的服务端口号,例如,HTTP的端口号为80。通过屏蔽特定的端口可以特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接,例如,可以阻塞一些被视为是有的或不可信的主机或网络连接到内部网络中。
(2)过滤器的实现。数据包过滤一般使用过滤由器来实现,这种由器与普通的由器有所不同。
普通的由器只检查数据包的目标地址,并选择一个达到目的地址的最佳径。它处理数据包是以目标地址为基础的,存在着两种可能性:若由器可以找到一个径到达目标地址则发送出去;若由器不知道如何发送数据包则通知数据包的发送者“数据包不可达”。
过滤由器会更加仔细地检查数据包,除了决定是否有到达目标地址的径外,还要决定是否应该发送数据包。“应该与否”是由由器的过滤策略决定并执行的。
由器的过滤策略主要有:
来自某主机或某网段的所有连接。
允许来自某主机或某网段的所有连接。
来自某主机或某网段的指定端口的连接。
允许来自某主机或某网段的指定端口的连接。
本地主机或本地网络与其它主机或其它网络的所有连接。
允许本地主机或本地网络与其它主机或其它网络的所有连接。
本地主机或本地网络与其它主机或其它网络的指定端口的连接。
允许本地主机或本地网络与其它主机或其它网络的指定端口的连接。