资料详情

Linux下基于Netfilter的包过滤防火墙的研究与实现

头像

Linux

编号:2843
1.本课题所涉及的问题在国内(外)的研究现状综述
   随着互联网的普及,全球任 意网络节点之间的联通成为可能,方便人们交流的同时,随之而来的公共通信网络传输中的数据安全问题日益成为关注的焦点。一方面,网络化的信息系统提供了资源的共享性、用户使用的方便性,通过分布式处理提高了系统效率和可靠性,并且还具备可扩充性。另一方面,也正是由于具有这些特点增加了网络信息系统的不安全性。
  开放性的网络,导致网络所面临的破坏和攻击可能是多方面的,国际性互联的网络,意味着网络的攻击不仅仅来自本地网络的用户,也可以来自互联网上的任何一台机器,也就是说,网络安全所面临的是一个国际化的挑战。
  而防火墙技术很好的解决了网络连接中访问控制的问题,它对两个或多个网络之间传输的数据包和链接方式按照一定的安全策略进行检查,来决定网络之间的通信是否被允许,其中被保护的网络称为内部网络,另一方则成为外部网络或公用网络。Linux环境下防火墙技术经历了若干代的沿革,形成了一个通用化的可扩展的防火墙核心框架――Netfilter。在此框架基础之上,可以实现对数据包的过滤和管理工作。
2.本人对课题任务书提出的任务要求及实现预期目标的可行性分析
    本课题通过利用Linux内核环境提供的Netfilter框架,在Netfilter框架结构的基础上,详细讨论动态包过滤技术基于Netfilter结构的实现方法和实现细节,并最终完成Linux下动态包过滤防火墙的设计和实现。。
  一、技术要求:
1.熟悉C/C++语言
2.熟悉Linux编程
3.熟悉软件工程的开发流程。
4.防火墙原理与技术的掌握与应用
5.主机防火墙设计技术
  二、可行性分析:
A. 技术条件方面的可行性
1.学习过《软件工程》,熟悉软件工程的开发流程
2.学习过《C/C++语言》具有系统编程的基本能力
3.学习过《Linux网络编程》和《Linux防火墙》, 熟悉Linux下的防火墙iptables
4.Linux下提供有完整的Netfilter框架,可在次框架基础上完成扩展功能
B. 硬件条件方面的可行性
 Linux内核提供 Netfilter框架,而且是自由软件,但其功能、稳定性和安全性、扩展性等方面都丝毫不逊于其他的商业防火墙。拥有一台装有Linux环境的电脑即可实现编程。 
C. 社会因素方面的可行性
     网络安全的问题日益突出,为了阻断攻击,一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。
3.本课题需要重点研究的、关键的问题及解决的思路
    包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作。工作于网络层,能对IP数据报进行首部检查。例如:IP源地址,目的地址,源端口和目的端口等。
重点研究的、关键的问题是如何实现防火墙的包过滤策略:  
  *允许、拒绝来自某主机或某网段的所有连接。
  *允许、拒绝来自某主机或某网段的指定端口的连接。
  *允许、拒绝本地主机或本地网络与其它主机或其它网络的所有连接。
  *允许、拒绝本地主机或本地网络与其它主机或其它网络的指定端口的连接。
解决的思路:
数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,主要信息有:
* IP源地址
* IP目标地址
* 协议(TCP包、UDP包和ICMP包)
* TCP或UDP包的源端口
* TCP或UDP包的目标端口
* ICMP消息类型
* TCP包头中的ACK位
* 数据包到达的端口
* 数据包出去的端口
在TCP/IP中,存在着一些标准的服务端口号,例如,HTTP的端口号为80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接。
内核模块可以注册一个新的规则表(table),并要求数据包流经指定的规则表。这种数据包选择用于实现数据报过滤(filter 表),网络地址转换(NAT 表)及数据报处理(mangle 表)。Linux 内核提供的这三种数据报处理功能都基于 netfilter 的钩子函数和 IP 表,都是相互间独立的模块,完美地集成到了由 netfilter 提供的框架中。
因此,我们就可以在Netfilter框架基础之上设计实现包过滤防火墙。
4.完成本课题所必须的工作条件(如工具书、实验设备或实验环境条件、某类市场调研、计算机辅助设计条件等等)及解决的办法
 一、 必须的工作条件:
  1.完成本课题所用到的操作系统环境是Linux(内核含Netfilter框架),编译工具用到GCC
  2.Linux网络编程的相关书籍
  3.与课题相关的学位、学术论文
二、解决办法:
  1.安装Linux操作系统,GCC编译环境。
  2.充分利用学校图书馆及阅览室内丰富的数据文献资料或期刊资料。
  3.充分利用学校网上图书馆资源。
  4.积极查找网上资源。可借鉴开源的项目,但绝不照搬。