千家信息网

Linux防火墙iptables中mark模块分析及怎么进行编写

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关Linux防火墙iptables中mark模块分析及怎么进行编写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在linux
千家信息网最后更新 2025年02月01日Linux防火墙iptables中mark模块分析及怎么进行编写

这篇文章将为大家详细讲解有关Linux防火墙iptables中mark模块分析及怎么进行编写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在linux系统中为了更好的实现网络流量的管理,使用了内核的mark来标识网络流量。这样造成了用户层再使用mark来标记多线负载,两种mark会互相覆盖,达不到想要的结果。在此种情况下,通过研究发现可以扩展mark模块来解决这种冲突。
  1 Iptables的结构和命令格式分析
  1.1 Iptables的结构分析
  Iptables是linux系统为用户提供的一个配置防火墙的工具。它提供一个命名规则集。在linux中iptables防火墙实现的核心模块是netfilter,它负责维护防火墙的规则链表,实现防火墙安全防御能力。Netfilter主要有三种功能:数据包过滤、网络地址转换(nat)以及数据包处理(mangle)。数据包过滤模块的功能是过滤报文,不作任何修改,或者接受,或者拒绝。Nat是网络地址转换,该模块以connection tracking模块为基础,仅对每个连接的第一个报文进行匹配和处理,然后交由connection tracking模块将处理结果应用到该连接之后的所有报文。Mangle是属于可以进行报文内容修改的ip tables,可供修改的报文内容包括mark、tos、ttl等。同时该模块带有用户空间和内核交流的接口。
  1.2 Iptables命令格式分析
  一个最简单的规则可以描述为拒绝所有转发报文,用iptables命令表示就是:iptables -A FORWORD -j DROP。Iptables应用程序将命令行输入转换为程序可读的格式,然后再调用libiptc库提供的iptc_commit()函数向核心提交该操作请求。它根据请求设置了一个struct ipt_replace结构,用来描述规则所涉及的表和HOOK点等信息,并在其后附接当前这条规则,一个struct ipt_entry结构。组织好这些数据后,iptc_commit()调用setsockopt()系统调用来启动核心处理这一请求。
  2 Netfilter的结构分析
  Netfilter是linux系统中的内核防火墙框架,主要进行包过滤,连接跟踪,地址转换的功能,是防火墙的基础。其主要通过表、链实现。在netfilter中,每种网络协议都有自己的一套hook函数。数据报经过协议栈的几个关键点时调用hook函数,hook函数标号和协议栈数据报作为参数,传递给netfilter框架。其主要框架如图1所示:
  3 Netfilter和 Iptables相关模块属性分析
  3.1 与netfilter有关的结构
  Netfilter一个重大修正思想就是将netfilter作为一个协议无关的框架,表现在内核结构树中单独建立net/netfilter目录,在net/netfilter下的匹配和目标模块文件名称以"xt_"开头。
  为了和iptables兼容,这些文件中增加了一个新的宏定义:module_alias,来表示模块的别名。所有扩展程序的名称也是以xt开头。
  Netfilter扩展的程序框架:
  Xt_kzmark.c:
  Static unsigned int kzmark_tg(struct sk_buff *skb, const struct xt_action_param *par)
  Static int kzmark_tg_check(const struct xt_tgchk_param *par)
  Static void kzmark_tg_destroy(const struct xt_tgdtor_param *par)
  Static boool kzmark_mt(const struct sk_buff *skb, struct xt_action_param *par)
  Static int kzmark_mt_check(const struct xt_mtchk_param *par)
  Static void kzmark_mt_destroy(const struct xt_mtdtor_param *par)
  Static struct xt_target kzmark_tg_reg __read_mostly = {}
  Static struct xt_match kzmark_mt_reg __read_mostly = {}
  Static int __init kzmark_mt_init(void)
  {Int ret;
  Need_ipv4_conntrack();
  Ret = xt_register_target(&kzmark_tg_reg);
  Ret = xt_register_match(&kzmark_mt_reg);}
  Static void_exit kzmark_mt_exit(void)
  {Xt_unregister_match(&kzmark_mt_reg);
  Xt_unregister_target(&kzmark_tg_reg);}   Module_init(kzmark_mt_init);
  Module_exit(kzmark_mt_exit);
  3.2 与Iptables有关的扩展
  Iptables是一个用户可自行配置状态防火墙的应用程序,其实现由extension来完成,其机制类似于插件,可以有效的扩展iptables功能。Iptables是由模块化集成的,它所有的功能都在模块中实现。如一个很简单的配置项:-m state,-m是一个match,而state是match的一个模块,对于-m这个match,其它可选的模块许多。在iptables结构中,模块和模块名称是相关的。此次扩展的iptables代码libxt_kzmark.c,libxt_KZMARK.c要放入extension文件夹中。
  匹配模块的程序框架:
  Libxt_kzmark.c:
  Static const struct option kzmark_opts[] = {};
  Static void parse_range(const char *arg, struct xt_kzmark_mtinfo *si)
  Static int kzmark_parse(int c, char **argv, int invert, unsigned int *flags, const void *entry, struct xt_entry_match **match)
  Static void kzmark_print(const void *ip, const struct xt_entry_match *match, int numeric)
  Static void kzmark_save(const void *ip, const struct xt_entry_match *match)
  Static struct xtables_match kzmark_match = {//Todo something};
  Void _init(void)
  {Xtables_register_match(&kzmark_match);}
  4 程序使用及效果
  Kzmark的使用:
  Iptables -A INPUT -d 192.168.1.11/32 -m kzmark -j DROP
  KZMARK的使用:
  Iptables -A INPUT -d 192.168.1.11/32 -j KZMARK --set-mark 3000
  通过对以上模块的测试,使用效果良好。Netfilter/iptables可以很好地扩展新的匹配模块,但需要使用者按照一定的方式编写程序,使其注意力集中在功能的具体实现上,而不再考虑其他因素。在具体程序的实现上以现成的匹配模块为基础进行修改,不需要了解内部结构的定义就可以完成编码,因此netfilter/iptables是一个程序模块化实现很好的实例,可以推广应用。

关于Linux防火墙iptables中mark模块分析及怎么进行编写就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

模块 程序 防火墙 防火 结构 分析 功能 报文 数据 框架 网络 规则 内容 内核 函数 命令 用户 系统 处理 应用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库安全管理三层结构 现代网络安全是指 数据库三个表连接代码 4月16日网络安全 高二网络技术应用第六章总结 车速拍网络技术北京有限公司 在一个主机上开多个魔兽服务器 物联网时代数据库选择 网络安全工程师需要掌握的技能 王家庄附近桥桥通仙桃数据库 青少年网络安全会议 中央 处理器连接服务器异常 铁路网络安全教育宣传片视频 服务器正在运行中操作无法完成 甘南市网络安全知识 和平精英怎么改回原来的服务器 2019年的网络安全事件 襄阳东鑫致强网络技术有限公司 小苹果服务器安全性怎样 服务器啸声 快云服务器管理 网络安全防范基础知识 滨州联想服务器零售商 安全的服务器地址 公安网络安全开展情况 腾讯云服务器挂脚本 数据库的安全性指什么区别 江苏综合软件开发哪里好 电子表格批量添加数据库 王建华 空军 网络安全
0