003 Apache+PHP+MySQL基于Linux的应用层网关系统设计
                    联系方式 Email: lw510@qq.com      QQ: 497053418       MSN: lw510@qq.com
以下仅为该设计的基本说明介绍,若需要完整的设计和论文,建议您购买本设计.
003 Apache+PHP+MySQL基于Linux的应用层网关系统设计样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
 

本设计包含内容:源代码+毕业论文
论文大概:
 
 
 

2 基于Linux的应用层网关系统设计
 
2.1.1 摘要
应用层的网络管理是很多中小型企业在信息化的过程中所面临的难题之一。企业的管理者要保证企业的网络资源用于正常的工作而不是被滥用,除了从制度方面进行限制之外,一个应用层网络管理系统是不可缺少的。本文在对用户需求进行分析的基础上,设计和实现了一个基于GNU/Linux和自由软件的应用层网关系统,并制作了一套基于B/S结构的网关管理软件对网关过滤规则进行管理和维护。本文力求在理论研究的基础上对应用层的网络管理问题给出一种灵活、有效、可靠且低成本的解决方案。

关键词:应用层网关,GNU/Linux,iptables,layer7
 

2.1.2 Abstract
Network management of application layer is one of the difficult problems for the medium and minor enterprise informatization. The administrators of enterprises want to make sure the network resources of enterprises are used in the work instead of abusing, so they must limit from the institution, and a network management system of application layer is indispensable. This text has designed and realized an application layer gateway that based on GNU/Linux and other free software, make network gateway management software, which based on B/S structure to manage and maintain filter rule. This text tries to provide a flexible, valid, reliable and low cost solution for resolve the problem of application layer network management based on theoretical research.

Keywords: Network gateway of application layer, GNU/Linux、iptables、layer7
 
2.1.3 目录
绪论 1
1系统目标 2
2系统分析和设计 3
2.1系统分析 3
2.2系统设计 4
2.2.1国内外研究综述 4
2.2.2原型系统 4
3所涉及的技术介绍: 6
4系统具体实现 13
4.1系统原理解析 13
4.2安装配置步骤 14
4.2.1安装GNU/Linux操作系统 14
4.2.2获取软件包 14
4.2.3给内核和netfilter打补丁 15
4.2.4编译、并测试netfilter模块 17
4.2.5编译安装MySQL 18
4.2.6编译安装Apache 21
4.2.7编译安装PHP 22
4.2.8测试安装结果 24
4.3核心代码及分析 25
4.3.1代码功能概述 25
4.3.2登陆模块及验证码 26
4.3.3主界面 30
4.3.4各模块界面 32
4.3.5连接数据库的公用文件代码 35
4.3.6规则数据库结构 36
4.3.7关于文件操作 39
5系统测试 41
5.1测试环境 41
5.2测试用例 41
5.3测试结果 44
5.4存在的问题 44
6总结 46
致谢 47
参考文献 48
附录 49
 
 
2.1.4 绪论
一直以来,计算机网络中的防火墙(firewall)或者网关(gateway)对于网络信息的过滤和控制主要体现在对来自或者发往特定端口或者特定IP地址的信息进行匹配。这样的基于网络层的控制在过去很长一段时间是有效的,因为在这个时期出现的大多数的网络应用程序是使用固定端口的,并且服务器的IP地址常常是固定而且明显的。随着网络的发展,很多新的应用程序不再使用固定的端口,服务器和客户机的角色逐渐混淆,服务器的IP地址常常有多个而不是固定在一个地址上。这时候原来的基于网络层的控制就显得不够灵活,甚至完全无法工作。本文通过对NetFilter及相关程序的二次开发,实现了一个快速的、有效的、易管理的应用层网关系统,力求给应用层网络管理提供一种比较好的解决方案。
 
2.1.5 1系统目标
可以对客户端能否使用各种网络软件(例如QQ,BT等)进行控制。
可以对客户端访问的网址(URL)进行基于字符匹配的过滤。
控制的方法是简单的,规则是容易维护的,而且具有很好的灵活性。无论使用者是否有专业知识都能进行基本的维护。
系统应具有良好的可扩展性,可以通过添加新模块的方式来进行功能扩展。
提供身份鉴别功能,进行规则维护需要提供适当的身份信息。
整个系统有效、安全、易管理。
 
2.1.6 2系统分析和设计
2.1.6.1 2.1系统分析
系统目标1和2中的要求实际上就是对于应用层数据流的监控。对于数据流的监控一般有两种方式:网关监控和旁路监控。旁路监控多用于监测,很少用于控制。本系统使用的是前者。也就是说,我们的系统是以网关形式存在的。如果需要,它也可以提供DHCP,NAT等服务。现在市场上出售的主流防火墙和路由器等设备,通常只支持网络层的监控,也就是基于IP地址和端口的监控。对于应用层的监控,现有的几种产品的核心技术都是一样的,就是使用基于Linux系统的netfilter/iptables模块,外加上它的layer-7补丁和其他一些补丁。我们这里也是一样的。这个基本架构完全可以实现目标1和2的要求。
系统目标3则提出了一个新的问题,即对规则列表的维护。Iptables规则对于非专业人员来说是很晦涩难懂的,更不要说熟练的编写整个规则列表了。所以我们需要编写一个简单明了而又灵活的规则维护和管理系统。市场上的产品对于这个问题的解决有两种模式:C/S和B/S,即使用客户端软件与网关通讯,或者在网关上安装web服务器和相应的脚本解释器,编写web系统来实现对规则的管理。这两种方法各有千秋,一般来说,使用C/S模式的系统安全性和效率都要好一些,但是灵活性不够好。而web系统的灵活性则是非常好的,只要注意编码规范,一样可以保证系统的安全性和效率。本系统中我们使用B/S模式。
 系统目标4要求了系统的可扩展性,实际上这个特点是由netfilter模块来保证的,它本身是个开放的系统,可以自己编写并添加模块进去。而且网上有很多模块提供下载,保证了系统是可以根据需求被扩展的。
 系统目标5可以通过web系统的认证模块来实现。
 如果严格做到1~5,那么系统目标6也就实现了。
2.1.6.2 2.2系统设计
2.1.6.2.1 2.2.1国内外研究综述
国内的应用层网关,其实也包括世界上95%的同类产品的确是用Linux内核,用NetFilter模块作为核心处理模块。但多数不是用iptables来管理。很多著名的产品都是自已写的用户态程序,目的是适应基于对象的管理。而web管理部分,通常不使用apache因为它太了,也不能用PHP,需要专门的解释器,所以web上一般用的是securehttpd,界面用的是C或者JAVA写的CGI。
但是我们这里由于条件的限制,所以只能选择iptables、apache、php。本系统的意义在于实验和小规模的应用,距离市场要求还是有相当程度的距离的。
2.1.6.2.2 2.2.2原型系统
通过对系统目标的分析,我们可以获得一个如下的原型系统。
a. 使用GNU/Linux作为操作系统平台;
b. 使用NetFilter作为核心处理模块;
c. 使用iptables作为用户态软件对NetFilter进行管理;
d. 使用一种CGI提供用户管理界面;
e. 使用一种数据库存储规则和系统日志;
系统的基本结构如下图所示:
 
 
 

    本系统的基础是Linux的内核模块NetFilter。当有用户请求抵达内核模块时,NetFilter会根据预先的策略定义对用户请求进行分拣,阻止非法请求,并且允许合法请求。
而NetFilter的策略是依靠iptables命令来进行维护的,在本系统中,我们使用一个shell脚本将所有的iptables命令集合起来进行执行。
而该shell脚本是如何产生的呢?系统提供了一个基于PHP+MySQL的规则维护模块来产生该shell脚本。值得注意的是,这里的规则不同于NetFilter的策略,这里的规则非常简单而容易理解,不需要任何专业的知识也可以对规则进行维护。
2.1.7 3所涉及的技术介绍:
2.1.7.1 3.1 linux
简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x8 6系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有 Unix操作系统的全部功能,因而开始了Linux雏形的设计。
Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。
Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix操作系统或想要学习Unix操作系统的人都可以从Linux中获益。
2.1.7.2 3.2 netfilter/iptables
netfilter是一种内核中用于扩展各种网络服务的结构化底层框架。netfilter的设计思想是生成一个模块结构使之能够比较容易的扩展。新的特性加入到内核中并不需要从新启动内核。这样,可以通过简单的构造一个内核模块来实现网络新特性的扩展。给底层的网络特性扩展带来了极大的便利,使更多从事网络底层研发的开发人员能够集中精力实现新的网络特性。
netfilter有4大特性:
1. 每一个协议定义"hooks"(钩子),IPv4定义了5个钩子,他们遍布协议栈中包传输的整个过程。在每一个点上,协议将使用包和钩子号来调用netfilter框架。
2. 部分内核可注册后可以为每一个协议监听不同的钩子。因此,当有包通过netfilter框架时,它检查看是否有模块为协议和钩子注册;如果有,他们每一个都有机会按顺序检验(也可能是更改)包,抛弃包,允许包通过,或者请求netfilter为用户空间排队包。
3. 排队了的包可以被收集送往用户空间;这些包是被异步的处理的。
4.有非常良好的代码和文档。这一点对于一个拥有良好扩展性的开放式框架具有极其深远的意义。离开了这一特性,netfilter结构将大为逊色甚至是难以操作的。
Netfilter整体结构如下图所示,netfilter仅仅只是协议栈中多个点上一系列钩子。IPv4的整个流程如下:
包进入内核空间后:通过简单的"santity"校验(例如,无截断,IP校验和正确,有区别的接收),包通过netfilter框架的NF_IP_PRE_ROUTING[1]钩子。
接下来它们进入路由代码模块,这一模块决定是将包送到其他接口还是将包送到本地进程。路由进程可以丢掉不可路由的包。
如果包的目的地是本机,netfilter框架会在包通过这一处理之前再次调用于NF_IP_LOCAL_IN[2]钩子。
如果预计包要通过其他接口,netfilter框架被调用于NF_IP_FORWARD[3]钩子。
接下来在再次传送包到线路上之前,包通过最后的netfilter钩子,NF_IP_POST_ROUTING[4]钩子。
NF_IP_LOCAL_OUT[5]钩子在包被本地创建时调用。这里你可以看到这个钩子调用后路由发生:事实上,路由代码先被调用(以配置源IP和一些IP选项),如果包被改动了,将再次调用它。
现在举一个IPv4的netfilter的例子,可以看到每一个钩子是怎样被激活的。这是netfilter的本质基础。
内核模块可以被注册以监听这些钩子中的任意一个。接着当netfilter钩子被来自域网络代码的核心调用,每一个在那一处注册了的模块就可以自由的操作处理包。接下来模块可以告知netfilter做下列五件事中的一件:
1.NF_ACCEPT:继续传递,保持和原来传输的一致;
2.NF_DROP:丢弃包;不再继续传递;
3.NF_STOLEN:接管包;不再继续传递;
4.NF_QUERE:队列化包(通常是为用户空间处理做准备);
5. NF_REPEAT:再次调用这一个钩子。
有了这五个功能,netfilter开发者可以构件相当复杂得包操作。
Iptables 是用来指定Netfilter规则的用户工具。
当用Iptables来构造防火墙规则时,认清表、链和规则的区别很重要。
表提供特定的功能. 缺省表是filter, nat, 和mangle (除非你打了实验性的drop 表的补丁)。
链是包传播的路径。不同的表包含了不同的内置链。用户自定义链能指向内置链。如果一个包通过用户链中没有匹配,它将返回调用的链。如果一个包通过内置链中没有匹配,那么将由此链的缺省方针来确定是丢弃或接受。
规则就是在链中用来实现某个特定匹配。
包传播在实施规则之前,必须知道包是如何在Netfilter的表和链中传播的。
 
2.1.7.3 3.3 Layer-7补丁及其他
patch-o-matic帮助你给内核打上一些增强或实验性的功能。
比如使你的netfilter具有字符过滤以及按照时间进行控制的特性。
layer-7是一个linux内核包分类器,和其他的分类器不同,l7不仅仅看上去是对协议的端口定义,他的表达式和应用层协议匹配,以此检验包使用的何种协议。
因为layer-7对于处理器和内存很敏感,我们建议当您存在下列情况时才考虑使用l7。
*你需要匹配一些使用未预先定义的协议端口(主要见于p2p文件共享应用)
*你相信一些有意义的通讯使用了非标准的端口(例如http协议使用1111端口)
layer-7可以比较容易的实现对应用层软件的过滤。
2.1.7.3.1 
2.1.7.3.2 
2.1.7.3.3 4.3.2登陆模块及验证码
登陆界面如下图:
 
其中的验证码是利用PHP的GD模块生成的图片,其中还加入了干扰象素。相关主要代码如下:
2.1.7.3.4 
2.1.7.3.5 
2.1.7.3.6 4.3.3主界面
登陆成功后的界面如下:
 
下面摘录操作指南来对各个项目进行说明:
1、修改密码
在提供了原密码和适当的新密码的情况下,可以修改密码。
2、规则维护
这是系统的核心部分,页面上部的表显示了目前数据库中所存放的规则的内容。中间是3个链接:
“写入规则文件”就是把数据库中存放的规则按照iptables的语法写入脚本文件,系统会按照预先设定的时间间隔去执行这个脚本文件。
“手工编辑规则文件”则是提供一个浏览并且编辑程序所产生的脚本文件的平台,使我们的程序具有比较好的灵活性。
“立即执行规则文件”可以使当前的规则文件立即执行一次,以便立即查看执行效果。
 3、高级维护
其实就是“手工编辑规则文件”。如果在这里把文件内容编辑乱了,还可以回到规则维护界面重新“写入规则文件”。
4、日志分析
根据访问记录,生成简单的统计图表。
5、系统选项
可以在这里设定一些系统参数。这些参数在程序中被广泛使用。
6、退出
清空登陆信息,推出系统。
2.1.7.3.7 4.3.4各模块界面
修改密码:
 
规则维护:
 
高级维护:
 
日志分析:
 
系统选项:
 
003 Apache+PHP+MySQL基于Linux的应用层网关系统设计
 

关闭窗口

与本站联系的时候,为了提高效率,请告诉本站您需要的设计编号与题目。如:001VBAC人事管理系统
编码说明:001VBAC人事管理系统,其中001VBAC 为该毕业设计的编号,VB代表开发语言,AC代表数据库(ACCESS)
版权所有:510计算机论文网:http://www.lw510.com/程序制作:510论文
Email: LW510@QQ.COM  QQ: 497053418   MSN: LW510@QQ.COM