什么是Linux系统防火墙框架Linux教程

什么是Linux系统防火墙框架Linux教程
下面是小编辑器精心为您提供的Linux系统防火墙框架。欢迎阅读。
在Linux的Netfilter提供了一个抽象的、普遍的框架。由框架定义的子功能的实现是包过滤子系统。框架包含五个部分。
1、为每个网络协议定义一组钩子函数(IPv4、IPv6等)。(IPv4定义了5个钩子函数)。这些钩子函数调用时的几个关键点数据通过协议栈,在这些点上,协议栈将调用Netfilter框架采用数据报和钩子函数标记作为参数
2的任何模块。内核可以注册每个协议的一个或多个钩子,并实现连接。当一个数据包被传递到内核的Netfilter框架,可以检测任何模块登记协议和钩子函数。如果注册,注册时使用的模块调用回调函数,使这些模块有机会检查修改)的数据包,丢弃该数据包并指导Netfilter进入包到用户空间的队列。
三.排队的数据包的处理异步发送到用户空间,用户进程可以检查数据包,修改数据包,甚至把数据包通过该钩子函数从内核到内核。
4。这是任何IP数据包被丢弃在IP层之前,他们是真的放弃了检查。例如,一个模块可以检查IP欺骗包(找出)。
对5.ip层勾五点的位置如下:
(1)nf_ip_pre_routing:刚进入网络层的数据包是通过这一点(刚刚完成的版本号,校验和等),和源地址转换是在这一点上进行;在ip_input。C的ip_rcv电话。
(2)nf_ip_local_in:在路由查找,通过这个检查点发送到本机,在这一点上的输入数据包过滤,ip_local_deliver呼叫;
(3)nf_ip_forward:分组通过此检测点转发,在这一点上了包过滤;
(4)nf_ip_post_routing:所有的数据包将通过网络设备立即公布将通过这个关卡,和内置的目的地址转换功能,包括地址伪装,将在这一点上进行。
(5)nf_ip_local_out:由本地进程发送数据包通过该检测点,并输出数据包过滤,在这一点上。
这一点已经在内核中定义的,内核模块可以在这些钩子点注册,可以使用nf_register_hook函数指定。数据称为数据报通过这些钩子函数的时候,这样的模块可以修改数据并返回下列值的Netfilter:
nf_accept继续数据的正常传输
nf_drop丢弃该数据报,不再传输
的nf_stolen模块进行数据报不继续发送数据报
nf_queue队列的数据包(通常是用来处理数据到用户空间)。
nf_repeat调用钩子函数了
数据报选择系统基于Netfilter框架,称为防火墙,应用在Linux2.4内核。事实上,这是一个简单的继承人的工具,但它具有更好的可扩展性。内核模块可以登记一个新的规则表(表)和需要的数据流通过指定的规则表。这个数据包选择用来实现数据过滤(filter表),网络地址转换(NAT表)和数据报处理(mangle表)。三数据处理功能的设置是基于Linux2.4内核的Netfilter钩子函数和IP表。他们是独立的模块,相互独立的。他们完全融入了netfileter框架。
包过滤
过滤器表不修改数据,但只有滤波器的数据报。一方面iptables的优于ipchains是更小、更快。它是通过钩子函数nf_ip_local_in,nf_ip_forward连接到Netfilter框架,并nf_ip_local_out.so只有一个地方的任何数量的报纸进行过滤,这是在利用巨大的改进,因为转发数据报在IPchains穿越三链。
NAT
表三Netfilter钩子函数:NAT监控nf_ip_pre_routing,nf_ip_post_routing和nf_ip_local_out。nf_ip_pre_routing实现源地址转发数据报的地址转换和nf_ip_post_routing要转发的数据包的目的地址到地址翻译。对局部数据的目的地址转换NAT的nf_ip_local_out.the形式实现不同的过滤表,因为只有第一个数据报,新连接将导线的形式,和随后的数据报将根据第一数据结果做同样的变换处理。NAT表中使用源地址NAT,目的地址NAT,伪装(这是源地址NAT的一种特殊情况)和透明剂(它的目的地址NAT的一个特例)。
数据处理(数据处理)
mangle表是在nf_ip_pre_routing和nf_ip_local_out钩注册。使用mangle表,您可以修改数据或附加了一些波段数据报文。当前mangle表支持TOS位的修饰和skb的nfmard字段的设置。
源代码分析
如果我们要添加自己的代码,我们使用nf_register_hook函数,其函数原型:
Int nf_register_hook (struct nf_hook_ops *reg)
结构nf_hook_ops
{
结构list_head列表;
用户从这里填写。
Nf_hookfn *hook;
Int pf;
Int hooknum;
挂钩按升序排序
中断优先级;
};
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部