nat iptables.docx
- 文档编号:22989545
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:51
- 大小:403.59KB
nat iptables.docx
《nat iptables.docx》由会员分享,可在线阅读,更多相关《nat iptables.docx(51页珍藏版)》请在冰豆网上搜索。
natiptables
Linux防火墙与NAT主机
切换分辨率为800x600
最近更新日期:
2006/11/08
在谈完了基本的网络安全观念之后,这个章节主要就要针对『防火墙』来进行介绍了!
目前的防火墙机制主要是以LinuxKernel2.6版的iptables为主的,而iptables可以使用指令来下达,也可以透过编写shellscript来进行指令的整合。
鸟哥本人比较习惯使用scripts来进行iptables的机制规划呢!
除了iptables之外,事实上,比较简单的还有TCPWrappers这个玩意儿,他则主要是针对某些服务来进行管理的吶!
本章的内容主要就是在介绍这两个重要的防火墙软件了!
1.本章的行前准备工作
2.认识防火墙
2.1为何需要防火墙
2.2Linux系统上防火墙的主要类别
2.3防火墙的一般线路布线与抵挡技巧
2.4防火墙的使用限制
3.Linux的封包过滤机制:
iptables
3.1不同Linux核心版本的防火墙软件
3.2iptables的表格与封包进入流程
3.3本机的iptables语法
规则的清除与观察
定义预设政策(policy)
封包的基础比对IP/netmaskI/O装置
TCP,UDP的规则比对
状态模块:
MAC与RELATED
ICMP封包规则的比对
3.4防火墙的记录、回复与测试
3.5IPv4的核心管理功能:
/proc/sys/net/ipv4/*
4.本机防火墙的一个实例
4.1规则草拟
4.2实际设定
5.NAT主机的设定
5.1什么是NAT?
SNAT?
DNAT?
5.2最阳春NAT主机:
IP分享功能
5.3iptables的额外核心模块功能
5.4在防火墙后端之网络服务器DNAT设定
6.重点回顾
7.课后练习
8.参考数据
9.针对本文的建议:
http:
//phorum.vbird.org/viewtopic.php?
p=114475
本章的行前准备工作
由于这个章节里面谈到非常多的封包概念,包括MAC,IP,TCP,UDP,ICMP等协议,以及如何抵挡外部IP来源的防火墙基础,还有IP/netmask的整体网域写法等等。
而鸟哥对于您学习防火墙的建议是希望你可以使用shellscript来撰写脚本,如此一来可以让你的防火墙规则比较清晰一点。
所以在您开始了解底下的资料之前,希望你可以先阅读过相关的数据了:
∙已经认识Shell以及Shellscript;
∙已经阅读过网络基础那一个章节的内容;
∙已经阅读过前一篇认识网络安全;
∙已经阅读过路由器那一章节的内容,了解路由的概念;
∙最好拥有两部主机以上的小型局域网络环境,以方便测试防火墙;
∙Linux主机上最好有两张网卡,可以进行多种测试,并架设NAT主机;
∙使用uname-r确认你的核心是2.4或2.6版;
若准备妥当了,赶紧来开始进行吧!
认识防火墙
网络安全除了随时注意套件的漏洞,以及网络上的安全通报之外,你最好能够依据自己的环境来订定防火墙机制,这样对于你的网络环境,会比较有保障一点喔!
那么什么是防火墙呢?
其实防火墙就是在管制进入到我们网域内的主机(或者可以说是网域)的资料封包的一种机制,例如我们在前一章节认识网络安全当中提到的iptables就是一种防火墙机制了。
当然了,更广义的来说,只要能够分析与过滤进出我们管理之网域的封包数据,就可以称为防火墙。
而这个防火墙又可以分为硬件防火墙与本机的软件防火墙。
硬件防火墙是由厂商设计好的主机硬件,这部硬件防火墙内的操作系统主要以提供封包数据的过滤机制为主,并将其它的功能拿掉。
因为单纯作为防火墙功能而已,因此封包过滤的速度与效率较佳。
至于软件防火墙呢?
那就是我们这个章节要来谈论的啊!
软件防火墙本身就是在保护系统网络安全的一套软件(或称为机制),例如iptables与TCPWrappers都可以称为软件防火墙。
无论怎么分,反正防火墙就是用来保护我们网络安全的咚咚就对啦!
呵呵!
我们这个章节主要在介绍Linux系统本身提供的软件防火墙的功能,那就是iptables。
至于TCPWrappers请前往基础篇的认识系统服务参考参考喔!
为何需要防火墙
基本上,如果你的系统
(1)已经关闭不需要而且危险的服务;
(2)已经将整个系统的所有套件都保持在最新的状态;(3)权限设定妥当且定时进行备份工作;(4)已经教育使用者具有良好的网络、系统操作习惯。
那么你的系统实际上已经颇为安全了!
要不要架设防火墙?
那就见仁见智啰!
不过,毕竟网络的世界是很复杂的,而Linux主机也不是一个简单的东西,说不定哪一天你在进行某个软件的测试时,主机突然间就启动了一个网络服务,如果你没有管制该服务的使用范围,那么该服务就等于对所有Internet开放,那就麻烦了!
因为该服务可能可以允许任何人登入你的系统,那不是挺危险?
所以啰,防火墙能作什么呢?
防火墙最大的功能就是帮助你『限制某些服务的存取来源』!
举例来说:
(1)你可以限制档案传输服务(FTP)只在子网域内的主机才能够使用,而不对整个Internet开放;
(2)你可以限制整部Linux主机仅可以接受客户端的WWW要求,其它的服务都关闭;(3)你还可以限制整部主机仅能主动对外联机,对我们主机主动联机的封包状态(TCP封包的SYNflag)就予以抵挡等等。
这些就是最主要的防火墙功能了!
所以鸟哥认为,防火墙最重要的任务就是在规划出:
∙切割被信任(如子网域)与不被信任(如Internet)的网段;
∙划分出可提供Internet的服务与必须受保护的服务;
∙分析出可接受与不可接受的封包状态;
当然啦,咱们Linux的iptables防火墙软件还可以进行更细部深入的NAT(NetworkAddressTranslation)的设定,并进行更弹性的IP封包伪装功能,不过,对于单一主机的防火墙来说,最简单的任务还是上面那三项就是了!
所以,你需不需要防火墙呢?
理论上,当然需要!
而且你必须要知道『你的系统哪些数据与服务需要保护』,针对需要受保护的服务来设定防火墙的规则吧!
底下我们先来谈一谈,那在Linux上头常见的防火墙类型有哪些?
Linux系统上防火墙的主要类别
除了以软件及硬件作为防火墙的分类之外,我们也可以使用防火墙对于数据封包的取得方式来进行分类。
主要可以分为两大类,分别是代理服务器(Proxy)以及IPFilter。
在代理服务器方面,由名称我们就可以知道,代理服务器仅是代理Client端去向Internet要求数据,所以Proxy其实已经将可代理的协议限制的很少很少,并且由于内部与外部计算机的并不能直接互通,所以可以达到良好的保护效果;另一种则是上面提到的IPfileter啦!
利用封包过滤的方式来达到防火墙的目的!
IPfilter(封包过滤机制)
直接使用进入本机的TCP/IP上面的封包协议来进行过滤分析,例如利用TCP/IP封包表头的IP来源、Portnumber等数据进行过滤,以判断该封包是否能够进入本机取得本机资源。
由于这种方式可以直接分析最底层的封包表头数据,所以包括硬件地址(MAC),软件地址(IP),TCP,UDP,ICMP等封包的信息都可以进行过滤分析的功能,因此用途非常的广泛。
在Linux上面我们使用核心内建的iptables软件来作为防火墙封包过滤的机制,由于iptables是核心内建的功能,因此他的效率非常的高!
非常适合于一般小型环境的设定呢!
他利用一些封包过滤的规则设定,来定义出什么数据可以接收,什么数据需要剔除,以达到保护主机的目的喔!
Proxy(代理服务器)
其实代理服务器是一种网络服务(service,daemon),他可以『代理』使用者的需求,而代为前往服务器取得相关的资料。
就有点像底下这个图示吧:
图一、ProxyServer的运作原理简介
以上图为例,当Client端想要前往Internet取得WWW的数据时,他取得数据的流程是这样的:
1.他会向proxyserver要求数据,请proxy帮忙处理;
2.Proxy可以分析使用者的IP来源是否合法?
使用者想要去的WWW服务器是否合法?
如果这个client的要求都合法的话,那么Proxy就会主动的帮忙client前往WWW服务器取得数据;
3.Internet所回传的数据是传给Proxyserver的喔,所以WWW服务器上面看到的是ProxyServer的IP啰;
4.最后Proxy将client的要求传回给client。
这样了解了吗?
没错,client并没有直接连上Internet,所以在实线部分(步骤1,4)只要Proxy与Client可以联机就可以了!
此时client甚至不需要拥有publicIP哩!
而当有人想要攻击client端的主机时,除非他能够攻破Proxyserver,否则是无法与client联机的啦!
另外,一般proxy主机通常仅开放port80,21,20等WWW与FTP的埠口而已,而且通常Proxy就架设在Router上面,因此可以完整的掌控局域网络内的对外联机!
让你的LAN变的更安全啊!
更详细的Proxy设定我们会在后续的代理服务器章节当中提及的!
在这个章节中,我们先不谈Proxy这个东西,而是介绍过滤机制的iptables啰!
防火墙的一般线路布线与抵挡技巧
由前面的说明当中,您应该可以了解到一件事,那就是防火墙除了可以『保护防火墙机制(iptables)本身所在的那部主机』之外,还可以『保护防火墙后面的主机或PC』。
呵呵!
也就是说,防火墙除了可以防备主机被入侵之外,他还可以架设在路由器上面藉以控管进出本地端网域(LAN)的网络封包。
这种规划对于内部私有网域的安全也有一定程度的保护作用呢!
底下我们稍微谈一谈目前常见的防火墙配置吧:
单一Linux主机兼任防火墙功能:
防火墙除了可以作为Linux本机的基本防护之外,他还可以架设在路由器上面以管控整个局域网络的封包进出。
因此,在这类的防火墙上头通常至少需要有两个接口,将可信任的内部与不可信任的Internet分开,所以可以分别设定两块网络接口的防火墙规则啦!
整个环境如同下列图二所示。
在图二中,由于防火墙是设定在所有网络封包都会经过的路由器上头,因此这个防火墙可以很轻易的就掌控到局域网络内的所有封包,而且你只要管理这部防火墙主机,就可以很轻易的将来自Internet的不良网络封包抵挡掉吶。
只要管理一部主机就能够造福整的LAN里面的PC,很划算的啦。
如果你想要将局域网络控管的更严格的话,那你甚至可以在这部Linux防火墙上面架设更严格的代理服务器,让客户端仅能连上你所开放的WWW服务器而已,而且还可以透过代理服务器的登录文件分析功能,明确的查出来那个使用者在某个时间点曾经连上哪些WWW服务器,您瞧瞧!
厉害吧!
如果在这个防火墙上面再加装类似MRTG的流量监控软件,还能针对整个网域的流量进行监测。
这样配置的优点是:
∙因为内外网域已经分开,所以安全维护在内部可以开放的权限较大!
∙安全机制的设定可以针对Linux主机来维护即可!
∙对外只看的到Linux主机,所以对于内部可以达到有效的安全防护!
图二、单一Linux防火墙主机
单一Linux防火墙,但LAN内另设防火墙
一般来说,我们的防火墙对于LAN的防备都不会设定的很严格,因为是我们自己的LAN嘛!
所以是信任网域之一啰!
不过,最常听到的入侵方法也是使用这样的一个信任漏洞!
因为您不能保证所有使用企业内部计算机的使用者都是公司的员工,也无法保证您的员工不会『搞破坏!
』更多时候是由于某些外来访客利用移动式装置(笔记型计算机)连接到公司内部的无线网络来加以窃取企业内部的重要信息。
呵呵!
所以,如果您有特别重要的部门需要更安全的保护网络环境,那么将LAN里面再加设一个防火墙,将安全等级分类,那么将会让您的重要数据获得更佳的保护喔!
整个架构有点像下图三所示。
图三、单一Linux防火墙主机,但LAN内另设防火墙
在防火墙后端的主机设定
还有一种更有趣的设定,那就是将提供网络服务的服务器放在防火墙后面,这有什么好处呢?
如下图四所示,Web,Mail与FTP都是透过防火墙连到Internet上面去,所以,底下这四部主机在Internet上面的PublicIP都是一样的!
(这个观念我们会在本章底下的NAT主机的时候再次的强调)。
只是透过防火墙的封包分析后,将WWW的要求封包转送到Web主机,将Mail送给MailServer去处理而已(透过port的不同来转递)。
好了,因为四部主机在Internet上面看到的IP都相同,但是事实上却是四部不同的主机,而当有攻击者想要入侵您的FTP主机好了,他使用各种分析方法去进攻的主机,其实是『防火墙』那一部,攻击者想要攻击您内部的主机,除非他能够成功的搞定您的防火墙,否则就很难入侵您的内部主机呢!
而且,由于主机放置在两部防火墙中间,内部网络如果发生状况时(例如某些使用者不良操作导致中毒啊、被社交工程攻陷导致内部主机被绑架啊等等的),是不会影响到网络主机的正常运作的。
这种方式适用在比较大型的企业当中,因为对这些企业来说,网络主机能否提供正常稳定的服务是很重要的!
不过,这种架构下所进行的设定就得包含port的转递,而且要有很强的逻辑概念,可以厘清封包双向沟通时的流动方式。
对于新手来说,设定上有一定的难度,鸟哥个人不太建议新手这么做,还是等以后有经验之后再来玩这种架构吧!
图四、架设在防火墙后端的主机服务器
通常像上图四的环境中,将网络服务器独立放置在两个防火墙中间的网络,我们称之为非军事区域(DMZ)。
DMZ的目的就如同前面提到的,重点在保护服务器本身,所以将Internet与LAN都隔离开来,如此一来不论是服务器本身,或者是LAN被攻陷时,另一个区块还是完好无缺的!
好了,那么我们Linux防火墙软件iptables是可以进行封包过滤的,他可以分析网络封包的socketpair,还可以分析不同网络协议的状态,例如TCP封包的旗标(flags),甚至可以分析网络卡的卡号呢!
经由分析这些数据后,咱们的iptables至少可以有底下这几种抵挡封包的方式:
∙拒绝让Internet的封包进入Linux主机的某些port
这个应该不难了解吧!
例如您的port20-21这个FTP相关的port,您只要开放给内部网络的话,所以不对Internet开放,那么当Internet来的封包想要进入您的port20-21的话,就可以将该数据封包丢掉!
因为我们可以分析的到该封包所带有的port号码呀!
∙拒绝让某些来源IP的封包进入
例如您已经发现某个IP主要都是来自攻击行为的主机,那么只要来自该IP的数据封包,就将他丢弃!
这样也可以达到基础的安全呦!
∙拒绝让带有某些特殊旗标(flag)的封包进入
最常拒绝的就是带有SYN的主动联机的旗标了!
只要一经发现,嘿嘿!
您就可以将该封包丢弃呀!
∙分析硬件地址(MAC)来提供服务
如果您的局域网络里面有比较捣蛋的但是又具有比较高强的网络功力的高手时,如果您使用IP来抵挡他使用网络的权限,而他却懂得反正换一个IP就好了,都在同一个网域内嘛!
同样还是在搞破坏~怎么办?
没关系,我们可以死锁他的网络卡硬件地址啊!
因为MAC是焊在网络卡上面的,所以您只要分析到该使用者所使用的MAC之后,可以利用防火墙将该MAC锁住,呵呵!
除非他能够一换再换他的网络卡来取得新的MAC,否则换IP是没有用的啦!
当然还有更多的使用技巧,你可以参考本章最后列出的参考数据,里头有更多可用的小技巧喔。
我们这里仅会真对简单的本机防火墙,以及作为类似IP分享器的NAT主机作简单的介绍而已啦!
^_^!
好了,开始来玩一玩那个iptables吧!
防火墙的使用限制
什么?
!
设定防火墙之后还不安全啊?
!
那当然啦!
谁说设定了防火墙之后您的系统就一定安全?
防火墙虽然可以防止不受欢迎的封包进入我们的网络当中,不过,某些情况下,他并不能保证我们的网络一定就很安全。
举几个例子来谈一谈:
∙防火墙并不能很有效的抵挡病毒或木马程序
假设您已经开放了WWW的服务,那么您的WWW主机上面,防火墙一定得要将WWW服务的port开放给Client端登入才行吧!
否则您的WWW主机设定了等于没有用对吧!
也就是说,只要进入您的主机的封包是要求WWW数据的,就可以通过您的防火墙。
那好了,『万一您的WWW服务器软件有漏洞,或者本身向您要求WWW服务的该封包就是病毒在侦测您的系统』时,您的防火墙可是一点办法也没有啊!
因为本来设定的规则就是会让他通过啊。
∙防火墙对于来自内部LAN的攻击较无承受力
一般来说,我们对于LAN里面的主机都没有什么防火墙的设定,因为是我们自己的LAN啊,所以当然就设定为信任网域了!
不过,LAN里面总是可能有些网络小白啊,虽然他们不是故意要搞破坏,但是他们就是不懂嘛!
所以就乱用网络了。
这个时候就很糟糕,因为防火墙对于内部的规则设定通常比较少,所以就容易造成内部员工对于网络误用或滥用的情况。
所以啦,在您的Linux主机实地上网之前,还是得先:
∙关闭几个不安全的服务;
∙升级几个可能有问题的套件;
∙架设好最起码的安全防护--防火墙--
其它相关的讯息请到认识网络安全里面去看一看怎么增加自身的安全吧!
Linux的封包过滤机制:
iptables
上面谈了这么多,主要还是希望您能了解到防火墙是什么这个议题!
而且也希望您知道防火墙并非万能的。
好了,那么底下我们终于可以来瞧一瞧,那目前我们的2.6版这个Linux核心到底使用什么核心功能来进行防火墙设定?
不同Linux核心版本的防火墙软件
Linux的防火墙为什么功能这么好?
这是因为他本身就是由Linuxkernel所提供,由于直接经过核心来处理,因此效能非常好!
不过,不同核心版本所使用的防火墙软件是不一样的!
因为核心支持的防火墙是逐渐演进来的嘛!
∙Version2.0:
使用ipfwadm这个防火墙机制;
∙Version2.2:
使用的是ipchains这个防火墙机制;
∙Version2.4与2.6:
主要是使用iptables这个防火墙机制,不过在某些早期的Version2.4版本的distributions当中,亦同时支持ipchains(编译成为模块),好让使用者仍然可以使用来自2.2版的ipchains的防火墙规划。
不过,不建议在2.4以上的核心版本使用ipchains喔!
因为不同的核心使用的防火墙机制不同,且支持的软件指令与语法也不相同,所以在Linux上头设定属于你自己的防火墙规则时,要注意啊,先用uname-r追踪一下你的核心版本再说!
如果你是安装2004年以后推出的distributions,那就不需要担心了,因为这些distributions几乎都使用kernel2.6版的核心啊!
^_^
iptables的表格与封包进入流程
前面的几个小节里面我们一直谈到:
『防火墙规则』,咦!
啥是规则啊?
因为iptables是利用封包过滤的机制,所以他会分析封包的表头数据。
根据表头数据与定义的『规则』来决定该封包是否可以进入主机或者是被丢弃。
意思就是说:
『根据封包的分析资料"比对"你预先定义的规则内容,若封包数据与规则内容相同则进行动作,否则就继续下一条规则的比对!
』重点在那个『比对与分析顺序』上。
举个简单的例子,假设我预先定义10条防火墙规则好了,那么当Internet来了一个封包想要进入我的主机,那么防火墙是如何分析这个封包的呢?
我们以底下的图示来说明好了:
图五、封包过滤的规则动作及分析流程
当一个网络封包要进入到主机之前,会先经由NetFilter进行检查,那就是iptables的规则了。
检查通过则接受(ACCEPT)进入本机取得资源,如果检查不通过,则可能予以丢弃(DROP)!
上图五主要的目的在告知您:
『规则是有顺序的』!
例如当网络封包进入Rule1的比对时,如果比对结果符合Rule1,此时这个网络封包就会进行Action1的动作,而不会理会后续的Rule2,Rule3....等规则的分析了。
而如果这个封包并不符合Rule1的比对,那就会进入Rule2的比对了!
如此一个一个规则去进行比对就是了。
那如果所有的规则都不符合怎办?
此时就会透过预设动作(封包政策,Policy)来决定这个封包的去向。
所以啦,当您的规则顺序排列错误时,就会产生很严重的错误了。
怎么说呢?
让我们看看底下这个例子:
假设您的Linux主机提供了WWW的服务,那么自然就要针对port80来启用通过的封包规则,但是您发现IP来源为192.168.100.100老是恶意的尝试入侵您的系统,所以您想要将该IP拒绝往来,最后,所有的非WWW的封包都给他丢弃,就这三个规则来说,您要如何设定防火墙检验顺序呢?
1.Rule1先抵挡192.168.100.100;
2.Rule2再让要求WWW服务的封包通过;
3.Rule3将所有的封包丢弃。
这样的排列顺序就能符合您的需求,不过,万一您的顺序排错了,变成:
1.Rule1先让要求WWW服务的封包通过;
2.Rule2再抵挡192.168.100.100;
3.Rule3将所有的封包丢弃。
此时,那个192.168.100.100『可以使用您的WWW服务』喔!
因为只要他对您的主机送出WWW要求封包,就可以使用您的WWW主机功能了,因为您的规则顺序定义第一条就会让他通过,而不去考虑第二条规则!
这样可以理解规则顺序的意义了吗!
现在再来想一想,如果Rule1变成了『将所有的封包丢弃』,Rule2才设定『WWW服务封包通过』,请问,我的client可以使用我的WWW服务吗?
呵呵!
答案是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nat iptables