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包过滤在此点进行。

时间: 2024-12-21 11:41:28

Linux系统中防火墙的框架及简单分析的相关文章

3-8 Linux系统中防火墙的框架简单分析_网络冲浪

    Netfilter提供了一个抽象.通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统.Netfilter框架包含以下五部分: 1. 为每种网络协议(IPv4.IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 这些钩子函数在数据报流过协议栈的几个关键点被调用.在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用netfilter框架. 2. 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包被传递给netfilter框架时,内核能检测是

Linux系统中防火墙的框架分析_unix linux

Netfilter提供了一个抽象.通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统.Netfilter框架包含以下五部分: 1. 为每种网络协议(IPv4.IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 这些钩子函数在数据报流过协议栈的几个关键点被调用.在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用netfilter框架. 2. 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包被传递给netfilter框架时,内核能检测是否有任何

Linux系统防火墙的框架及简单分析

Netfilter提供了一个抽象.通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统框架包含以下五部分: 1. 为每种网络协议(IPv4.IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 这些钩子函数在数据报流过协议栈的几个关键点被调用.在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用Netfilter框架. 2. 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包被传递给Netfilter框架时,内核能检测是否有任何模块对该协议和钩子函

深入解析Linux系统中的SELinux访问控制功能

  SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件.SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到. SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制

由安装两块网卡的linux系统中引起网络不通想到的

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/69543 由安装两块网卡的linux系统中引起网络不通想到的    一天,小王突然急匆匆的来找我,他说:"我在机子上刚装的redhat怎么老也ping不通服务器,我网卡的驱动都安装了,ping 自己的两块网卡的IP都能通,可就时访问不了服务器.我输入[url]http://172.31.0.101[/url]就提示

Linux系统中的Device Mapper学习

在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. 其实dm是Device Mapper的缩写,Device Mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volum

linux系统中的安全常规优化

关于服务器本地终端上的安全控制,可以从以下几个方面着手: 1.即时禁止普通用户登录 当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统,这时候,只需要简单的建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在则拒绝普通用户登录系统(root用户不受限制),删除该文件或者重启系统后就可恢复. touch /etc/nologin 2.控制服务器开放的tty终端 linux系统默认开放了tty1-6共六个本地终端(控制台),如果

MySQL在Linux系统中隐藏命令行中的密码的方法

  这篇文章主要介绍了MySQL在Linux系统中隐藏命令行中的密码的方法,作者利用简单的C程序实现,需要的朋友可以参考下 在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?,类似MySQL在ps命令下隐藏密码. 假设我这里系统里两个用户,一个是root ,一个是dabu .测试系统为centos 6.5在按照下面的步骤做: ? 1 2 3 4 [r

Linux系统中如何查看和修改DNS配置

DNS是指计算机域名系统,它由域名解析器和域名服务器组成,提供DNS服务的就是DNS服务器.一般运作中的域名最好有两台或以上的DNS服务器,分别称为主域名服务器和从域名服务器,其中第二个DNS服务器往往用于故障转移.不少用户都不知道该怎么查看和修改DNS,因此小编接下来就给大家介绍下Linux系统中查看和修改DNS配置的方法. 查看服务器的DNS信息: 1:查看/etc/resolv.con文件 [root@localhost ~]# cat /etc/resolv.conf nameserve