【返回博客列表 】

[PSRC-B-20150007] 基于Netfilter的Linux内核数据包处理

编号:
PSRC-B-20150007
来源:
银河实验室
作者:
Smillers
发布日期:
2015-12-31
阅读量:
7735

一、Netfilter介绍

NetfilterLinux操作系统核心层内部的一个数据包处理框架可以在Linux内核中过滤、修改和封装数据包NetfilterIP报文处理流程中插入5个挂载点来,可以在挂载点注册处理数据包的回调函数,当数据包进入Linux内核经过挂载点的时候,会执行回调函数来处理数据包。

二、Netfilter挂载点示意图

 

挂载点

描述

NF_IP_PRE_ROUTING

数据包校验之后路由选择之前

NF_IP_LOCAL_IN 

路由选择之后,数据包的目的是本机

NF_IP_FORWARD 

目的地是其它主机地数据包

NF_IP_LOCAL_OUT

本机数据包其离开本机的过程中

NF_IP_POST_ROUTING

在数据包离开本地主机之前

三、回调函数返回值

注册到挂载点的回调函数,可以获取完整的数据包,对数据包进行操作,回调函数需要一个返回值

NF_ACCEPT:继续正常的报文处理;

NF_DROP 将报文丢弃;

NF_STOLEN:由钩子函数处理了该报文,不要再继续传送;

NF_QUEUE:将报文入队,通常交由用户程序处理;

NF_REPEAT:再次调用该钩子函数。

 

四、基本操作

1、Linux内核中利用Netfilter解析数据包自适应多层VLanPPPoe网络环境

 

2、对特定DNS域名的请求数据包进行过滤;

 

 

3、解析IP层数据头部

 

4、对特定端口的数据包进行过滤;

 

5、解析HTTP请求和返回数据包,对特定HostURI、文件下载的数据包进行过滤;

 

 

6、在以太网环境中,对数据包进行处理

 

7、在网桥环境中,对经过网桥的数据包进行解析;

 

 

 

 

 

 

 

 

欢迎社会各界向我们反馈平安集团所有产品和业务的安全问题,更多信息可见报告漏洞