防火墙技术论文文档格式.docx
- 文档编号:16662184
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:8
- 大小:58.44KB
防火墙技术论文文档格式.docx
《防火墙技术论文文档格式.docx》由会员分享,可在线阅读,更多相关《防火墙技术论文文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。
2.3、应用层防火墙
应用层防火墙是在TCP/IP堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用FTP时的数据流都是属于这一层。
应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。
理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
3、目前防火墙中的最新技术及发展情况
因为传统的防火墙设置在网络边界,外于内、外部互联网之间,所以称为"
边界防火墙(PerimeterFirewall)"
。
随着人们对网络安全防护要求的提高,边界防火墙明显感觉到力不从心,因为给网络带来安全威胁的不仅是外部网络,更多的是来自内部网络。
但边界防火墙无法对内部网络实现有效地保护,除非对每一台主机都安装防火墙,这是不可能的。
基于此,一种新型的防火墙技术,分布式防火墙(DistributedFirewalls)技术产生了。
由于其优越的安全防护体系,符合未来的发展趋势,所以这一技术一出现便得到许多用户的认可和接受,它具有很好的发展前景。
分布式防火墙的特点:
主机驻留、嵌入操作系统内核、类似于个人防火墙、适用于服务器托管。
分布式防火墙的功能:
Internet访问控制、应用访问控制、网络状态监控、黑客攻击的防御、日志管理、系统工具。
分布式防火墙的优势:
(1)增强的系统安全性:
增加了针对主机的入侵检测和防护功能,加强了对来自内部攻击防范,可以实施全方位的安全策略。
(2)提高了系统性能:
消除了结构性瓶颈问题,提高了系统性能。
(3)系统的扩展性:
分布式防火墙随系统扩充提供了安全防护无限扩充的能力。
(4)实施主机策略:
对网络中的各节点可以起到更安全的防护。
(5)应用更为广泛,支持VPN通信。
4、个人防火墙的设计与实现
4.1、研究内容及其意义
本文提出了一种基于Linux的个人防火墙来保证网络安全的解决方案,该防火墙主要分成3个模块来实现,它们分别是数据包捕获模块、数据处理模块、过滤规则设置和查询模块。
文章首先讲述了数据包进行捕获,提取数据包头信息,然将包头信息传递给数据包处理部分,并与包头信息进行匹配和处理,将处理后的信息写入日志数据库,规则设置模块则对数据库进行添加规则和显示相应的日志信息
包过滤防火墙是实现防火墙基本功能的最重要最基础的原型,是学习防火墙技术的必经之路,也为进一步设计与提高防火墙性能提供了必要的储备。
4.2、数据包处理模块结构与原理分析
本节主要介绍了防火墙的数据处理的原理,叙述了过滤规则、调用数据库数据包否决等的实现,最后对日志数据库的存储进行了简单介绍。
1、数据包处理模块的结构
网络捕获模块负责从网络上截获所有的数据包,而数据包处理模块则是对截获的数据包根据数据包类型的源地址、目的地址、端口等基本信息逐个进行分析比较。
数据包处理模块在对数据包进行分析后,根据数据包的特性,调用特定的过滤匹配规则确定数据包是否可以通过。
其结构如图1所示。
数据包过滤功能的实现是在网络中运行程序对数据包实施有选择的通过,选择的依据就是系统内设置的过滤规则,只要与过滤规则相匹配的的数据包就被否决,其余的数据包则默认允许通过,并将这些过滤信息存入相应的数据库。
其流程图如图2所示。
图1 数据处理模块示意图
图2数据包处理流程图
2、数据包处理模块原理分析
(1)过滤规则
本系统采用的默认过滤规则是:
默认接收所有的进入、外出和转发数据包;
接收所有本地环路接口上的进出包。
当要有选择地接收数据包时,本地的过滤规则需要进行相应的设置。
比如:
现在要拒绝IP地址为192.168.0.161(局域网内的一主机的IP地址)的主机与本地主机通信,在用户相应的选项卡中,填上这一I地址就是表示拒绝此IP地址主机向本机发出的所有数据包,这就是数据包的IP过滤功能。
当然也要实现端口的过滤功能。
想禁止某一服务的业务功能,就可以在相应的IP号下同时设置端口号,就是表示对任一用户的这一服务被禁止。
其实,这只能对某一些常用的端口号进行过滤,如:
对HTTP(端口80)进行过滤,就是禁止外部用户通过防火墙访问内部HTTP服务器;
对FTP(端口20,21)进行过滤,就是禁止外部主机通过防火墙访问内部FTP服务器。
数据处理模块用到的过滤规则将在用户界面中直接对规则数据库操作进而来设置要过滤的规则,而数据处理模块则从数据库中直接调用。
因此,过滤规则是在数据库中定义,由用户在数据库操作界面上输入的,供底层应用程序调用。
(2)调用过滤规则数据库
程序调用过滤规则数据库来判断捕获的数据包头信息是否与过滤规则库中设置的IP以及端口匹配。
因此,它保存的是不被允许通过的IP号或者端口号,在每次数据调用时,都要进行调用规则,如果与捕获到的数据包头信息符合,则丢弃该数据包,否则就允许该数据包通过。
首先要连接并打开过滤规则数据库,从规则库中读取被禁止的IP以及端口号,匹配后根据情况执行拒绝或者允许通过的命令。
MySQL数据库提供了一种数据库接口-CAPIs,MySQL数据库提供的CAPIs函数。
CAPIs包含在mysqlclient库文件当中与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询。
现在假设MySQL已安装,在数据库中的相关用户和数据表已被创造。
MySQL的头文件在/usr/include/mysql目录下,因此你的程序头部必须有以下语句:
include<
mysql/mysql.h>
MySQL的变量类型和函数都包含在这个头文件当中,对数据库的操作基本上都可以在这个头文件里找到相应的实现函数。
为了实现连接,首先必须创建一个连接数据库的变量:
MYSQL*mysql。
MYSQL这个结构表示对一个数据库连接的句柄,它被用于几乎所有的MySQL函数。
这些变量类型在MySQL的库当中已有定义,我们需要这些变量是为了使用MySQL的CAPIs函数。
这些变量在头文件里都有详细的实现代码和解释,但是这些实现代码和解释对于程序编写来说并不重要。
为了连接服务器,调用函数mysql_init()以初始化一个连处理器,初始化这个变量:
Mysql_init(MYSQL*mysql);
然后就用以下函数实现对数据库的连接:
MYSQL*STDCALLmysql_real_connect(MYSQLysql,constchar*host,constchar*user,constchar*passwd,constchar*db,unsignedintport,constchar*unix_socket,unsignedintclientflag)。
此函数是一个非常重要的函数,其功能是连接一个MYSQL数据库服务器。
它试图建立到运行MySQL数据库引擎的HOST的一个连接。
host是MySQL服务器的主机名,是一个现存MySQL软件的主机地址。
它可以是主机名或者是一个IP地址,假定它为NULL或者字符串“localhost”,则是到本地主机的一个连接。
user是登录的用户名,passwd是登录密码,db是要连接的数据库,port是MySQL服务器的TCP/IP端口,unix_socket是连接类型,clientflag是MySQL运行成ODBC数据库的标记。
参数PORT若不是0,对于TCP/IP连接这个值将用作端口号。
参数unix_socket如果不是NULL,字符串指定套接字或应将是被使用的命名管道。
参数clientflag的值通常是0。
连接寻建立成功后,这个函数将返回0。
至此,对数据库连接的功能基本已实现,然后就可以对数据库进行查询和添加等操作了。
这是连接数据库的第一步,也是一个比较关键的地方,此连接返回的数值关系到此程序调用的各种基本信息。
现在,我们可以连接数据库并进行查询。
查询之前,建立个查询语句字符串:
har*query。
这样可以创立任何SQL查询语句进行查询。
查询之后,我们要到一个MYSQL_RES变量来使用查询的结果。
以下这行创立这个变量:
MYSQL_RES*res。
MYSQL_RES这个结构代表返回行的一个查询的(SELECT,SHOW,DESCRIBE,EXPLAIN)的结果,返回的数据称为“数据集”。
然后用mysql_use_result(MYSQL*query)。
函数读出查询结果。
mysql_use_result()的一个优点是客户为结果集合需要较少的内存,因为它一次只是维持一行(并且因为有较少的分配开销,mysql_use_result()能更快些)。
缺点是你必须尽快处理每一行以避免困住服务器,你不必再结果集合中随意存取行(你只能顺序存取行),而且你不知道在结果集合中有多少行,直到你检索全部结果。
还有,你必须检索出所有行,即使你在检索中途确定你已找到了想寻找的信息。
尽管可以很容易地查询了,要用这个查询的结果还要用到其它的函数。
第一个是:
MYSQL_ROWSTDCALLmysql_fetch_row
(MYSQL_RES*result)。
该函数把结果转换成“数组”。
该函数返回的是MYSQL_ROW变量类型。
MYSQL_ROW这个结构是数据行的一个安全表示法。
当前它实现为一个计数字节的字符串数组(如果字段值可能包含二进制数据,不能将这些视为空终止串
因为这样的值可以在内部包含空字节),行通过调用其它函数获得。
无法使用以空字符结束的串,因为数据在这个串可以是二进制,也许没有包括任何字符。
以下语句创立字符串数组变量:
MYSQL_ROWrow。
当我们用mysql_fetch_row的时候,接着变量row会取得结果的下一组数据。
当到了结果的尾部,该函数返回一负值。
最后我们查询完成后就要关闭这个连接了。
mysql_close(MYSQL*mysql)。
另外,还有一些与本程序相关的操作函数:
unsignedintSTDCALLmysql_num_fields(MYSQL*mysql)。
这个函数返回表格里有多少个字段;
取得“数据集”的数目,用到:
my_ulonglongSTDCALLmysql_num_rows(MYSQL_RES*res);
my_ulonglongSTDCALLmysql_affected_rows(MYSQL*mysql)。
这些函数是用来得到受INSERT、DELETE、UPDATE查询语句影响的“数据集”数目。
my_ulonglong该类型用于行数。
这种类型提供0到1。
84e19的一个范围,为了打印出这样的值,将它变换到unsignedlong并且使用一个%lu打印格式。
3、与过滤规则中规则对比
(1)数据包源或目的IP地址过滤
这项任务要检查IP包头,根据其IP源地址和目标地址作出放行/丢弃决定。
如果数据包的源或目的IP地址与我们设定的丢弃数据包的地址匹配,那么该数据包将被丢弃。
首选要检查收到的数据包的源IP(在本程序中只对UDP数据报进行了实验,其它协议的数据包以此类推),若为本地地址则一定丢弃,其他地址则要应用过滤规则。
unsignedchar*deny_ip=“\x7f\x00\x00\x01”;
/*127.0.0.1*/
if(ss==*(unsignedint*)deny_ip){flag=1;
},接着就是检查源IP与设定的禁止的IP地址进行匹配:
if(ss==row[t]){flag=1;
}row[t]是规则数据库中的返回查询值,变量flag则为丢弃行为时的依据。
(2)数据包传送协议过滤
仅仅依靠地址进行数据过滤在实际运用中是不可行的,还有个原因就是目标主机上往往运行着多种通信服务,因此除地址之外还要对服务器的TCP/UDP端口进行过滤。
只要在数据捕获程序的检查出相应的数据包传输协议之后,在其后只要运行拒绝命令就行了。
一般来说最好匹配规则就是IP地址与端口结合起来,这样就是只针对某用户某一服务来拒绝,这样的选择性更加符合实际。
(3)对数据包的否决
通过包过滤,防火墙可以拦截和检查捕获的数据包。
当该数据包不符合过滤规则或者与过滤规则相一致时,防火墙就丢掉该数据包,并存入日志数据库。
由于对数据包的否决是一外部命令,在C语言中可以用execlp()这一函数来执行外部命令。
函数原型为:
intexeclp(constchar*filename,constchar*arg0,.../
*(char*)0*/);
比如,拒绝一IP可以这样:
execlp(“/sbin/iptables”,
“iptables”,
“-A”,“INPUT”,
“-p”,“tcp”,
“-s”,ss,
“-j”,“DROP”);
对端口的过滤则只是外部命令的不一样而已。
常用的否决命令有:
iptables-F//删除已经存在的规则;
iptables-AINPUT-ptcp--dport*-jDROP//关闭某一服务端口为*的tcp协议;
iptables-AINPUT-ptcp-s192.168.0.130--dport22-jACCEPT//关闭某一IP地址为192.1168.0.130这台主机连接本地的SSH服务断口;
iptables-AINPUT-pudp--dport53-jACCEPT//关闭DNS服务端口的udp数据包流入;
iptables-AINPUT-picmp-icmp-typeecho-re-quest-ieth1-jDROP//防止死亡之ping,从接口eth1进入的icmp协议的请求全部丢弃;
根据服务器情况,你也可以自行添加规则。
(4)存入日志数据库
对数据包头分析处理后,可以得到此IP访问的源IP地址、目的IP地址、端口以及被拒绝通过的情况。
数据库的连接与上文所说的一样,因此,此处存入的是被拒绝的数据包头信息。
而且实现一样用到函数:
intmysql_real_query(MYSQL*mysql,constchar*query,unsignedintlength),只是用函数sprintf()将query值改为插入语句即可,如下:
sprintf(query,“insertintologs(remove_ip,local_ip)values(‘%c’,‘%c’”,dd,ss))。
这样就可以将包过滤情况轻易地存入日志数据库,以供用户查询包过滤情况。
4.3总结与展望
本文重点讨论了数据包头分析后与过滤规则的匹配、对数据包的拒绝和日志数据库的存储。
实验证明达到了预期目的。
但该防火墙系统的一些功能还有待提高,主要是如下几个方面:
规则设置规则有待于进一步探讨,这关系数据包过滤的依据;
包头信息提取还过于简单,提取出来供包处理模块的内容有待加强;
应用层信息无法感知,也就是说,防火墙不理解通信的内容,这是状态检测发展方向。
基于以上等原因包过滤防火墙已经逐渐被状态检测防火墙所取代,虽然状态检测防火墙判断允许还是禁止数据包的依据也是源IP地址、目的IP地址、源端口、目的端口和通讯协议等,但状态检测防火墙是基于会话信息做出决策的,判断当前数据包是否符合先前允许的会话。
NAT功能可以使得防火墙受保护一边的IP地址不至于暴露在没有保护的另一边。
新一代的防火墙系统不仅能够更好地保护防火墙后面内部网络的安全,而且应该有更为优良的整体性能。
未来的防火墙将会把最强的性能和最大限度的安全性有机结合在一起,有效地解决网络安全的问题。
当然防火墙只是确保网络安全的一个环节,还需要和其他安全措施一起来确保网络安全,如和IDS、IPS、信息保障等结合起来,在此不作赘述。
结论
随着Internet/Intranet技术的飞速发展,网络安全问题必将愈来愈引起人们的重视。
防火墙技术作为目前用来实现网络安全措施的一种主要手段,它主要是用来拒绝XX用户的访问,阻止XX用户存取敏感数据,同时允许合法用户不受妨碍的访问网络资源。
如果使用得当,可以在很大程度上提高网络安全。
但是没有一种技术可以百分之百地解决网络上的所有问题,比如防火墙虽然能对来自外部网络的攻击进行有效的保护,但对于来自网络内部的攻击却无能为力。
事实上60%以上的网络安全问题来自网络内部。
因此网络安全单靠防火墙是不够的,还需要有其它技术和非技术因素的考虑,如信息加密技术、身份验证技术、制定网络法规、提高网络管理人员的安全意识等等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 防火墙 技术 论文