Netfilter简介
Linux下的包过滤防火墙,可以运行在2.4,2.6内核上;集成在内核中,不是系统的一个守护进程;对OSI模型中2,3,4层进行处理;只能对数据包头进行处理;可以用iptables命令来进行规则的配置;代替了ipchains;可以从http://www.netfilter.org查到更多资源。
基本的Netfilter编译选项
为了运行iptables,需要在内核配置期间,选择以下一些选项,不管你用make config或其他命令。
在内核配置文件中要启用一些较重要的选项包括Netfilter连接跟踪、日志记录和包过滤。(请记住iptables通过用由Netfilter提供的内核中框架来建立一个策略)。
在Network Packet Filtering Framework(Netfilter)中还有两个额外的配置选项――Core Netfilter Configuration(核心Netfilter配置)和IP:Netfilter Configuration(IP:Netfilter配置)。
核心Netfilter配置
核心Netfilter配置选项中包含的一些得要选项都应该被启用:
Comment match support(comment匹配支持);
FTP support(FTP协议支持);
Length match support(数据包长度匹配支持);
Limit match support(Limit匹配支持);
MAC address match support(MAC地址匹配支持);
MARK target support(MARK目标支持);
Netfilter connection tracking support(Netfilter连接跟踪支持);
Netfilter LOG over NFNETLINK interface(Netfilter通过NFNETLINK接口记录日志);
Netfilter netlink interface(Netfilter netlink接口);
Netfilter Xtables support(Netfilter Xtables支持);
State match support(state匹配支持);
String match support(string匹配支持);
IP:Netfilter配置
ECN target support(ECN目标支持);
Full NAT(完整NAT支持);
IP address range match support(ip地址范围匹配支持);
IP tables support(IP tables支持,filtering/masq/NAT需要);
IPv4 connection tracking support(IPv4连接跟踪支持,NAT需要);
LOG target support(LOG目标支持);
MASQUERAD target support(MASQUERAD目标支持);
Owner match support(owner匹配支持);
Packet filtering(包过滤支持);
Packet mangling(包修改支持,常用于改变包的路由);
Raw table support(RAW表支持,NOTRACK/TRACE需要);
Recent match support(recent匹配支持);
REJECT target support(REJECT目标支持);
TOS match support(TOS匹配支持);
TOS target support(TOS目标支持);
TTL match support(TTL匹配支持);
TTL target support(TTL目标支持);
ULOG target support(ULOG目标支持);
Netfilter工作的位置
Netfilter是以模块的方式存在于Linux中,每当Linux多一个Netfilter的模块就代表着Linux防火墙的功能多了一项,当然其功能也随之增加。其中/lib/modules/2.6.18-164.el5/kernel/net/ipv4/netfilter目录下所存放的模块只能工作在IPv4的网络环境下;如下图所示:
/lib/modules/2.6.18-164.el5/kernel/net/ipv6/netfilter目录下所存放的模块只能工作在IPv6的网络环境下,如下图所示:
以上的两个目录的模块有个共同的特性, 都与“协议”有关, 因此,在使用这些模块时,必须特别留意哪些模块只能使用在哪个协议下。Linux自2.6.14版本开始, 其内含的Netfilter模块在设计上有了重大的改变,Netfilter组织希望模块与“协议”无关,所以就目前情况看来已有部份模块可以达到这样的要求其路径为/lib/modules/2.6.18-164.el5/kernel/net/netfilter如下图所示:
Netfilter的命令结构
了解了Netfilter的结构后应该清楚以上的模块只是提供了某些过滤匹配的功能而已,如果我们希望Netfilter能为我们做些事,那我们就需给Netfilter执行“规则”,有了规则后,Netfilter才会知道哪些封包是可以被接受的,哪些封包是必须除掉的, 又有哪些封包是必须以特殊方式来处理的。而给予Netfilter规则的方式则是将规则填入到一块有结构性的内存中,这样,Netfilter就会依照防火墙管理人员所给的命令来执行。该内存就是俗称的表,表是防火墙的最大集合,包含链和规则;表包括filter table过滤表;nat用于地址转换;mangle俗称矫正表和RAW表。链则是规则的集合。
匹配:满足的条件,如源地址,端口等。
方法:对条件做出处理,accept,drop等。
Filter表是Netfilter内最为重要的机制,其任务为执行数据包的过滤动作,也就是防火墙的功能;包含INPUT、OUTPUT和FORWARD链,用于处理输入、输出和转发包。filter表是缺省的表。
NAT(Network Address Translation)也是防火墙上一个不可或缺的重要机制,它的功能类似于IP分享器,只是相应功能更加强大。用于处理网络地址翻译。(包含与masquerading 相关的功能);包含PREROUTING(路由前);POSTROUTING(路由后)OUTPUT 输出(很少用到)共3个链。
Mangle表用于处理特殊包的矫正,包含两个链PREROUTING (路由前),POSTROUTING(路由后)。在流量控制和Qos应用中,经常会用到mangle表。
RAW表负责加快数据包穿越防火墙机制的速度,借此提高防火墙的性能。
Netfilter的Filter机制
Filter作为Netfilter中的防火墙分类,首先需明确“数据包的分类”,以下图所示,假设在计算机上装有两片网卡,并且在计算机上分别执行Httpd及Firefox两个程序。
INPUT类型:所谓INPUT类型是指网络上其它主机送给本机处理(Local Process)的数据包,例如当网络上的其它使用都来访问本的的HTTPD服务时就会产生这种类型的数据包。
OUTPUT类型:如果是本机Process所产生的数据包,即为OUTPUT类型的数据包。例如,当使用者在本机上启用Firefox去访问网络上的其它主机时就会产生这种类型的封包。
FORWARD类型:如果数据包对本机而言只是“路过”,那么这就属于FORWARD类型的数据包。当本机执行Router的角色就会有FORWARD类型的数据包。
亿恩科技地址(ADD):郑州市黄河路129号天一大厦608室 邮编(ZIP):450008 传真(FAX):0371-60123888
联系:亿恩小凡
QQ:89317007
电话:0371-63322206
本文出自:亿恩科技【www.enkj.com】
服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]
|