Linux防火墙的设计与实现.docx
- 文档编号:17850048
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:30
- 大小:113.98KB
Linux防火墙的设计与实现.docx
《Linux防火墙的设计与实现.docx》由会员分享,可在线阅读,更多相关《Linux防火墙的设计与实现.docx(30页珍藏版)》请在冰点文库上搜索。
Linux防火墙的设计与实现
摘要
目前防火墙的产品很多,而且其功能都十分强大,但是对于个人的小型应用来说价格都是很高,而在这一应用规模上可以选择的防火墙产品并不多。
因此,设计一个适合于个人的具有包过滤功能的防火墙是很有必要的。
本设计首先对netfilter的框架进行了整体的了解,然后在这个框架中构造自己的一个过滤规则,其次对基于netfilter中的个人防火墙进行了详细的规划,讨论了个人防火墙在目前网络中的重要性,与研究的意义。
对于本次设计,提出了三项功能,第一,要实现过滤规则;第二,与数据库结合,对历史信息进行分析。
第三,与日志进行结合,可以对当前问题进行分析。
目前这个阶段只是解决了第一个目标,另外两个目标正有待继续进行。
第一个目标的实现过程是:
首先是自己设置过滤规则,在这个过滤规则中,用到钩子函数,来钩取外部的数据包与自己所设置的过滤规则相比对;其次通过注册函数把自己设置的过滤规则注册到系统内核中,从新启动网卡就可以开始实现自己的过滤规则了。
通过对过滤规则的详细设计,与一些数据库与日志相结合,来让这个个人防火墙更完美,功能更强大。
通过对个人防火墙的设计,达到了过滤一些内容信息的目的。
关键词防火墙过滤
Abstract
Manyofthecurrentfirewallproducts,anditsfeaturesareverystrong,butforsmallapplications,individualpricesarehigh,andinthesizeofthepplicationfirewallproductscanchoosenotmany.Therefore,todesignasuitableersonalfirewallwithpacketfilteringisnecessary.
Thedesignisfirstcarriedoutonthenetfilterframeworkofoverallunderstanding,andthenconstructtheirownintheframeworkofafilterrule,followedinthenetfilterbasedpersonalfirewallforthedetailedplanning,disCussedthepersonalfirewallintheimportanceofthecurrentnetwork,andresearchsignificance.Forthisdesign,madethreefeatures:
Firstly,toachievethefilterrules;II:
combinationwithadatabaseofhistoricalinformationforanalysis.Third:
tocombinewiththelog,youcananalyzethecurrentproblems.Resolvedatthisstageonlythefirsttarget,theothertwogoalsaretobecontinued.Thefirstobjectiveoftheimplementationprocessis:
First,setuptheirownfilteringrules,inthisfilterrule,usethehookfunctiontohooktotakeanexternalpacketfilterrulessetbytheirownthanon;followedupfunctionbytheirownsetupfilteringrulestothesystemkernel,therestistostartfiltering.Throughthedetaileddesignoffilterrules,withsomecombinationofdatabasesandlogstomakethispersonalfirewallismoreperfect,morepowerful.Throughthedesignofpersonalfirewall,reachingsomeofthecontentfilteringinformationpurposes.
KeywordssharedLANVPNfield
目录
引言8
第一章Linux系统9
1.1Linux系统简介9
1.2Linux的特点9
第二章常用防火墙简介9
2.1防火墙原理9
2.2防火墙的分类10
2.2.1包过滤防火墙10
2.2.2应用网关防火墙10
2.2.3状态检测防火墙10
2.2.4复合型防火墙11
第三章LINUX防火墙11
3.1Linux防火墙配置命令简介11
3.1.1概述11
3.1.2表(table)12
3.1.3命令(command)12
3.1.4匹配(match)12
3.1.5目标(target)12
3.2Netfilter/Iptables介绍13
3.2.1配置防火墙的filter表13
3.2.2配置防火墙的NAT表14
3.2.3Iptables的结构15
3.2.4Iptables的规则要素16
3.2.5Iptables工具的调用语法17
3.2.6Iptables的优点17
第四章防火墙的设计和实现18
4.1设计思路18
4.2配置规则18
4.3实验环境19
4.4实验目的19
4.5实验详细设计19
4.6LINUX防火墙测试29
结束语31
参考文献32
引言
对于因特网上的系统,不管是什么情况,首先我们要明确一点:
网络是不安全的。
虽然创建一个防火墙并不能保证系统100%安全[7],但却是绝对有必要的。
防火墙的目的就是将破坏网络安全的人挡在你的网络之外,使你可以顺利完成自己的工作。
LINUX是近几年突出的一种操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。
LINUX防火墙其实是操作系统本身所自带的一个功能模块。
通过安装特定的防火墙内核,LINUX操作系统会对接收到的数据包按一定的策略进行处理。
随着Linux系统被越来越多地使用,安全问题成了关键。
Linux防火墙技术也在不断的发展,经历了Ipfw、Ipchains等过程。
Iptables作为Linux防火墙的新一代继承人,当然也针对骇客不断推陈出新的探测技术拟出一些因应之道,那就是对封包的联机状态,作出更详细的分析,透过这样的分析能对一些可能被骇客利用的弱点加以阻隔,另外也开发出真正的封包改写能力,不需要透过其它程序的协助来仿真网址转译,除此之外,Iptables也获得系统核心的直接支持,不需要像Ipchains那样需要自行重新编译核心。
Iptables优越的性能使它取代了Ipchains,成为网络防火墙的主流,而Ipchains并未被淘汰,目前Ipchains已经转型成单机防火墙,在安装新版Linux时,会自动被安装启用,以保护单机上未被使用的通讯端口[1]。
总之,目前大部分国内金融、商业等企业都采用Linux系统,因此在Linux上配置防火墙有极其重要的意义,同时可以学习这一先进的技术与熟悉一个优秀的操作平台。
第1章Linux系统
1.1Linux系统简介
Linux是一套免费使用和自由传播的类Unix操作系统。
我们通常所说的Linux,指的是GNU/Linux,即采用Linux内核的GNU操作系统。
GNU代表GNU’sNotUnix。
它既是一个操作系统,也是一种规范。
Linux最早由LinusTorvalds在1991年开始编写。
在这之前,RichardStallman创建了FreeSoftwareFoundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(程序的许可方式均为GPL:
GeneralPublicLicense)。
在不断的有程序员和开发者加入到GNU组织中后,变造就了今天我们所看到的Linux!
Linux是一个内核。
然而一个完整的操作系统不仅仅是内核而已。
所以许多个人、组织和企业开发了基于GNU/Linux的Linux发行版。
今天有不计其数的发行版可供人们选择使用,虽然不够统一的标准给不同版本的使用者在技术上的相互沟通带来了一定的麻烦,但归根结底“自由、开源、团结互助”的理念是Linux爱好者们共同的向往。
1.2Linux的特点
有很多人现在都在学习和研究Linux。
作为当今一种新兴和流行的操作系统的前身来源与强大的UNIX。
而那个芬兰小伙子一开始就没把它定位成一种操作系统。
但是Linux的作用在今天已越来越重要了。
想接触和学习它,就要先了解它的特点。
Linux可以说是作为开放源码的自由软件的代表,作为自由软件,它有如下两个特点:
一是它开放源码并对外免费提供,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上,因此Linux操作系统可以从互联网上很方便地免费下载得到,这样你还可以省下购买Windows操作系统的一笔不小的资金。
第2章常用防火墙简介
2.1防火墙原理
防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。
其是不同网络或网络安全域之间信息的唯一出入口,通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,有选择地接受外部访问,对内部强化设备监管、控制对服务器与外部网络的访问,在被保护网络和外部网络之间架起一道屏障,以防止发生不可预测的、潜在的破坏性侵入。
防火墙有两种,硬件防火墙和软件防火墙,这些都能起到保护作用并筛选出网络上的攻击者。
2.2防火墙的分类
包过滤防火墙、应用网关防火墙、状态检测防火墙、复合型防火墙
2.2.1包过滤防火墙
包过滤防火墙:
包过滤防火墙不检查数据区,包过滤防火墙不建立连接状态表,前后报文无关,应用层控制很弱。
包过滤防火墙一般在路由器上实现,用以过滤用户定义的内容,如IP地址。
包过滤防火墙的工作原理是:
系统在网络层检查数据包,与应用层无关。
这样系统就具有很好的传输性能,可扩展能力强。
但是,包过滤防火墙的安全性有一定的缺陷,因为系统对应用层信息无感知,也就是说,防火墙不理解通信的内容,所以可能被黑客所攻破。
2.2.2应用网关防火墙
应用网关防火墙:
不检查IP、TCP报头,不建立连接状态表,网络层保护比较弱。
应用网关防火墙检查所有应用层的信息包,并将检查的内容信息放入决策过程,从而提高网络的安全性。
然而,应用网关防火墙是通过打破客户机/服务器模式实现的。
每个客户机/服务器通信需要两个连接:
一个是从客户端到防火墙,另一个是从防火墙到服务器。
另外,每个代理需要一个不同的应用进程,或一个后台运行的服务程序,对每个新的应用必须添加针对此应用的服务程序,否则不能使用该服务。
所以,应用网关防火墙具有可伸缩性差的缺点。
2.2.3状态检测防火墙
状态检测防火墙:
不检查数据区,建立连接状态表,前后报文相关,应用层控制很弱。
状态检测防火墙基本保持了包过滤防火墙的优点,性能比较好,同时对应用是透明的,在此基础上,对于安全性有了大幅提升。
这种防火墙摒弃了包过滤防火墙仅仅考察进出网络的数据包,不关心数据包状态的缺点,在防火墙的核心部分建立状态连接表,维护了连接,将进出网络的数据当成一个个的事件来处理。
可以这样说,状态检测包过滤防火墙规范了网络层和传输层行为,而应用代理型防火墙则是规范了特定的应用协议上的行为。
2.2.4复合型防火墙
复合型防火墙:
可以检查整个数据包内容,根据需要建立连接状态表,网络层保护强,应用层控制细,会话控制较弱。
复合型防火墙是指综合了状态检测与透明代理的新一代的防火墙,进一步基于ASIC架构,把防病毒、内容过滤整合到防火墙里,其中还包括VPN、IDS功能,多单元融为一体,是一种新突破。
常规的防火墙并不能防止隐蔽在网络流量里的攻击,在网络界面对应用层扫描,把防病毒、内容过滤与防火墙结合起来,这体现了网络与信息安全的新思路。
防火墙在网络边界实施OSI第七层的内容扫描,实现了实时在网络边缘布署病毒防护、内容过滤等应用层服务措施。
第3章LINUX防火墙
3.1Linux防火墙配置命令简介
3.1.1概述
Linux防火墙通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。
关于添加、去除、编辑规则的命令,一般语法如下:
iptables[-ttable]command[match][target]
3.1.2表(table)
[-ttable]选项允许使用标准表之外的任何表。
表是包含仅处理特定类型信息包的规则和链的信息包过滤表。
有三个可用的表选项:
filter、nat和mangle。
该选项不是必需的,如果未指定,则filter作为缺省表。
filter用于一般信息包过滤,nat用于转发信息包,mangle标记用于高级路由的信息包。
3.1.3命令(command)
command部分是iptables命令最重要的部分。
它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则。
用以下几个常用命令-A或--append,-D或--delete,-P或--polocy,-N或--newchain,-F或--flush,-L或--list。
3.1.4匹配(match)
iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。
匹配分为通用匹配和特定于协议的匹配两大类。
有一下几个参数-P或--protocol,-S或--source,-D或--destination。
3.1.5目标(target)
目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。
除了允许用户定义的目标之外,还有许多可用的目标选项。
常用的有accept,drop,reject,return。
还有许多用于建立高级规则的其它目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。
3.2Netfilter/Iptables介绍
3.2.1配置防火墙的filter表
(1)查看本机关于IPTABLES的设置情况
[root@localhostroot]#iptables-L–n
(2)清除原有规则
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter[8]的所有规则。
[root@localhostroot]#iptables-F 清除预设表filter中的所有规则链的规则。
[root@localhostroot]#iptables-X 清除预设表filter中使用者自定链中的规则。
(3)设定预设规则
[root@localhostroot]#iptables-pINPUTDROP
[root@localhostroot]#iptables-pOUTPUTACCEPT
[root@localhostroot]#iptables-pFORWARDDROP
(4)添加规则
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。
为了能采用远程SSH登陆,我们要开启22端口
[root@localhostroot]#iptables-AINPUT-ptcp--dport22-jACCEPT
[root@localhostroot]#iptables-AOUTPUT-ptcp--sport22-jACCEPT
如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
[root@localhostroot]#iptables-AOUTPUT-ptcp--sport80-jACCEPT
如果做了WEB服务器,开启80端口
[root@localhostroot]#iptables-AINPUT-ptcp--dport80-jACCEPT
如果做了邮件服务器,开启25110端口
[root@localhostroot]#iptables-AINPUT-ptcp--dport110-jACCEPT
[root@localhostroot]#iptables-AINPUT-ptcp--dport25-jACCEPT
如果做了FTP服务器,开启21端口
[root@localhostroot]#iptables-AINPUT-ptcp--dport21-jACCEPT
[root@localhostroot]#iptables-AINPUT-ptcp--dport20-jACCEPT
如果做了DNS服务器,开启53端口
[root@localhostroot]#iptables-AINPUT-ptcp--dport53-jACCEPT
3.2.2配置防火墙的NAT表
(1)查看本机关于NAT的设置情况
[root@localhostroot]#iptables-tnat–L
(2)添加规则
添加基本的NAT[8]地址转换,我们只添加DROP链.因为默认链全是ACCEPT。
防止外网用内网IP欺骗
[root@tpsysconfig]#iptables-tnat-APREROUTING-ieth0-s10.0.0.0/8-jDROP
[root@tpsysconfig]#iptables-tnat-APREROUTING-ieth0-s172.16.0.0/12-jDROP
[root@tpsysconfig]#iptables-tnat-APREROUTING-ieth0-s192.168.0.0/16-jDROP
DROP非法连接
[root@localhostroot]#iptables-AINPUT -mstate--stateINVALID-jDROP
[root@localhostroot]#iptables-AOUTPUT -mstate--stateINVALID-jDROP
[root@localhostroot]#iptables-AFORWARD-mstate--stateINVALID-jDROP
允许所有已经建立的和相关的连接
[root@localhostroot]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
[root@localhostroot]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
[root@localhostroot]#iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
[root@localhostroot]#/etc/rc.d/init.d/iptablessave
这样就可以写到/etc/sysconfig/iptables文件里,写入后把防火墙重起一下,才能起作用。
[root@localhostroot]#serviceiptablesrestart
3.2.3Iptables的结构
Iptables一般由指定表(table)、指定链(chains)、指定操作命令(command)、指定规则匹配器(matcher)、指定目标动作(target)等构成,如图1所示。
图1Iptables结构图
Iptables的指令结构如图2所示。
图2.2Iptables的指令结构图
3.2.4Iptables的规则要素
一条Iptables规则基本上应该包含5个要素:
1、指定表(table)
2、指定操作命令(command)
3、指定链(chains)
4、指定规则匹配器(matcher)
5、指定目标动作(target)
3.2.5Iptables工具的调用语法
Iptables的语法通常可以简化为下面的形式:
Iptables[-ttable]CMD[chain][rule-matcher][-jtarget]
其中:
tables为表名,CMD为操作命令,chain为链名,rule-matcher为规则匹配器,target为目标动作。
Iptables软件包提供了两个命令分别用于保存和恢复规则集。
可以使用下在的命令转储在内存中的内核规则集。
其中/etc/sysconfig/Iptables是Iptables守护进程调用的默认规则集文件:
#/sbin/Iptables-save>;/etc/sysconfig/Iptables
要恢复原来的规则库,需使用命令:
#/sbin/Iptables-restore
为了使得用Iptables命令配置的规则在下次启动机器时还能被使用,有两种方法:
1、使用Iptables的启动脚本实现。
Iptables的启动脚/etc/rc.d/init.d/Iptables每次启动时都使用/etc/sysconfig/Iptables所提供的规则进行规则恢复,并可以使用如下的命令保存规则:
#serviceIptablessave
2、在自定义脚本中用Iptables命令直接创建规则集。
可以直接用Iptables命令编写一个规则脚本,并在启动时执行这个脚本。
例如:
若规则脚本的文件名为/etc/fw/rules,则可以在启动脚本/etc/rd.d/init.d/rc.local中加入下面的代码:
if[-x/etc/fw/rules];then/etc/fw/rules;fi;这样,机器每次启动时即可执行该规则脚本。
如果使用此种方式,建议使用ntsysv命令关闭系统的Iptables守护进程。
3.2.6Iptables的优点
1、Iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。
这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。
2、Iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。
3、系统日志比ipchains更容易配置,扩展性也更好。
4、对于网络地址转换(NetworkAddressTranslation)和透明代理的支持,Netfilter更为强大和易于使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 防火墙 设计 实现