简单解析Linux系统防火墙框架
来源:asp之家 发布时间:2009-07-12 09:26:00
Linux系统中的Netfilter提供了一个抽象、通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统,框架包含以下五部分:
1. 为每种网络协议(IPv4、IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 这些钩子函数在数据报流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用Netfilter框架。
2. 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包被传递给Netfilter框架时,内核能检测是否有任何模块对该协议和钩子函数进行了注册。若注册了,则调用该模块的注册时使用的回调函数,这样这些模块就有机会检查(可能还会修改)该数据包、丢弃该数据包及指示Netfilter将该数据包传入用户空间的队列。
3 .那些排队的数据包是被传递给用户空间的异步地进行处理。一个用户进程能检查数据包,修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩子函数中注入到内核中。
4. 任何在IP层要被抛弃的IP数据包在真正抛弃之前都要进行检查。例如允许模块检查IP-Spoofed包(被路由抛弃)。
5.IP层的五个HOOK点的位置如下所示:
(1)NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验 和等检测),源地址转换在此点进行;IP_Input.c中IP_Rcv调用;
(2)NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行,IP_local_deliver中调用;
(3)NF_IP_FORWARD:要转发的包通过此检测点,FORWORD包过滤在此点进行;
(4)NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的目的地址转换功能(包括地址伪装)在此点进行;
(5)NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。
这些点是已经在内核中定义好的,内核模块能够注册在这些HOOK点进行的处理,可使用nf_register_hook函数指定。在数据报经过这些钩子函数时被调用,从而模块可以修改这些数据报,并向Netfilter返回如下值:
NF_ACCEPT 继续正常传输数据报
NF_DROP 丢弃该数据报,不再传输
NF_STOLEN 模块接管该数据报,不要继续传输该数据报
NF_QUEUE 对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理)
NF_REPEAT 再次调用该钩子函数
一个基于Netfilter框架的、称为IPtables的数据报选择系统在Linux2.4内核中被应用,其实它就是IPchains的后继工具,但却有更强的可扩展性。内核模块可以注册一个新的规则表(table),并要求数据报流经指定的规则表。这种数据报选择用于实现数据报过滤(filter表),网络地址转换(Nat表)及数据报处理(Mangle表)。 Linux2.4内核提供的这三种数据报处理功能都基于Netfilter的钩子函数和IP表。它们是独立的模块,相互之间是独立的。它们都完美的集成到由Netfileter提供的框架中。
包过滤
Filter表格不会对数据报进行修改,而只对数据报进行过滤。IPtables优于IPchains的一个方面就是它更为小巧和快速。它是通过钩子函数NF_IP_LOCAL_IN、NF_IP_FORWARD及NF_IP_LOCAL_OUT接入Netfilter框架的。因此对于任何一个数 报只有一个地方对其进行过滤。这相对IPchains来说是一个巨大的改进,因为在IPchains中一个被转发的数据报会遍历三条链。
NAT
NAT表格监听三个Netfilter钩子函数:NF_IP_PRE_ROUTING、NF_IP_POST_ROUTING及NF_IP_LOCAL_OUT。 NF_IP_PRE_ROUTING实现对需要转发的数据报的源地址进行地址转换而NF_IP_POST_ROUTING则对需要转发的数据包的目的地址进行地址转换。对于本地数据报的目的地址的转换则由NF_IP_LOCAL_OUT来实现。NAT表格不同于filter表格,因为只有新连接的第一个数据报将遍历表格,而随后的数据报将根据第一个数据报的结果进行同样的转换处理。NAT表格被用在源NAT、目的NAT,伪装(其是源NAT的一个特例)及透明代理(其是目的NAT的一个特例)。
猜你喜欢
- 男子刘某利用系统漏洞,骗购近10万元物品。昨天上午,他在朝阳法院少年审判庭受审时,面对检察官出示的口供和书证,坚称不认罪。检方指控称,去年4
- VMware虚拟机系统无法使用桥接联网的解决方法,供大家参考,具体内容如下1、环境VMware 14.1.1虚拟系统:Windows Ser
- 无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便
- 很多时候我们都是通过SSH 服务 来对 Linux 进行操作,而不是直接来操作Linux机器,包括对Linux服务器的操作,因此,设置SSH
- 时逢祖国60华诞,小编看完庄严隆重的国庆阅兵式后仍然激动不已,于是就将家里的老照片翻了出来“忆苦思甜&rdquo
- 做了一年的网站,技术提升了不少,但对我来说,收获最多的还是做网站的经验和感触…… 前阵子研究了国外的几个CMS,发现了他们有一个共同点:他们
- 非主流闪图一直是“美图秀秀[点击下载]”软件的重点功能之一,操作简单,动感十足,深受非主流一族的喜爱
- 面对用户提出的需求,有时候经常感觉到千头万绪、无从下手,有时候又感觉需求本身就是答案、没有必要下手。面对需求分析这种事儿,就没有一个模式化的
- 11月11日消息,国内领先权威调研机构艾瑞集团鼎力支持中国第一视频网站优酷在京正式发布优酷指数,以1.7亿全站优酷用户为样本基础,基于视频技
- SupeSite 7.0是康盛创想(Comsenz)公司于2009年3月推出的一款社区CMS产品,作为Comsenz旗下的社区产品SupeS
- 在centos7中,/etc/rc.d/rc.local文件的权限被降低了,没有执行权限,需要给它添加可执行权限。chmod +x /etc
- 对两个虚拟SMTP服务器防止垃圾邮件中转的总结我对两个虚拟SMTP服务器防止垃圾邮件中转的总结:在论坛上看到了很多高手的发言,结合自己在实践
- 通过网上免费发布信息的方式,除了可以发布二手,易物之类的生活信息之外,还可以通过免费信息平台进行产品宣传推广,也会收到意想不到的好效果。以来
- 今天在《未来是湿的》书里看到一段很精彩的话。“群体能够施加一种迥异于个体的力量。共享的认识使得本来互不协调的群体开始以更
- 大家都知道老谢的软文水平吧,我是他的第子,呵呵,一些他的语录我用自己的话描述下,说说如何通过软文的杀伤力!一、要素好的文章首先取决于题目的好
- IIS6.0有个导出配置的功能,但你却找不到界面上的直接导入配置功能,需要用到操作系统自带的iiscnfg.vbs脚本。(图片小点击看大图)
- 很多发布商可能已经阅读了我们之前发布的有关AdSense 推介计划更新的文章。在发布这一消息以后,我们收到了很多发布商的反馈意见,在慎重考虑
- Ubuntu apt-get指令下面总结一下有关apt-get的常用但容易混淆的指令:apt-get autoclean: &nb
- 10月13日是世博倒计时200天,“星耀世博——首批世博城市之星颁奖典礼&
- 在很早之前,麦田老师抛出“博客过时论”之后,就真的再也没有见麦田老师更新过博客,似乎是从本身的行动来证明自己的言论。从那时起或者是更早之前,