认识防火墙与NAT服务

来源:互联网 发布:八度网络空间 编辑:程序博客网 时间:2024/06/03 13:50

防火墙是用来保护网络安全的,这个大家都知道,但是具体它是怎么样保护的呢?

首先,要从防火墙的分类说起。
根据保护目标的不同,防火墙可以分为用来保护一块区域的和用来保护单一主机的。
在保护单一主机方面,包括通过数据包过滤来保护的Netfilter和通过监控服务来保护的TCP Wrapper。
在保护一块区域方面,包括通过数据包过滤来保护的Netfilter和专用的Proxy Server ,代理服务器。

那么,防火墙是怎么实行保护的呢?
防火墙具有自己的“规则”,通过这些规则来筛选网络的消息,决定是否放行这些消息对防火墙内的访问,这些规则包括对MAC、IP、端口、程序等的筛选,例如,我们知道了某个IP段是黑客攻击的高发段,就可以设置防火墙对拒绝放行来自这些IP的数据,从而达到保护系统的目的。
所以,防火墙是根据报头数据来对消息进行筛选的,这也就是说,它并不能够识别数据包内的恶意文件,所以一些病毒、木马之类的攻击并不能靠防火墙来保护,除非他们的来源是已知的。

这里简单介绍一下TCP Wrapper和Proxy Server,因为我看的书也没有详细讲这两个。
TCP Wrapper通过监控客户端想要链接的程序文件名,然后将客户端的IP与监控规则比对以决定是否放行的方法来进行保护的,其监控规则由/etc里的hosts.allow和hosts.deny来指定,比对顺序是先比对allow,再比对deny,而对于没有规定的,则直接予以放行。

与其他两个不同,Proxy Server其实是一个实体的服务器,它是在子网和外网中的一道屏障,所有子网内的服务请求都是由Proxy Server代理的,外部网络无法看到子网的情况,如果外部网络要攻击子网内的主机,就必须先攻破Proxy Server。

接着就是Netfilter了,2.6内核版本之后的Linux都是采用iptables这个软件来提供Netfilter功能。
iptable的功能除了提供数据包过滤之外,还会提供NAT(Network Address Translation,网络地址转换)功能,后面会一起讲,所以先介绍NAT。

简单来说,NAT是内部网络的一种IP分享器,实现Private IP和Public IP的转换。Private IP就是我们常见的局域网的192.198.xxx.xxx,而Public IP就是能被Internet上的服务器识别的IP。
举个例子,现在你家里有3台电脑,但是你只开通了一条网线,只申请到一个Public IP 171.68.1.1,那么怎么让3台电脑同时上网呢?这时就要用到NAT了,一个NAT路由器会给你的三台电脑各自分配一个Private IP,当某一台电脑192.168.1.212需要发送数据包给外部网络时,这个数据包会首先到达NAT路由器,NAT路由器会将这个数据包的IP修改为自己的Public IP 171.68.1.1再发送出去,而同样的,收到的数据包也会先达到NAT,由NAT将IP修改为对应的Private IP后再发到目标主机上,以此完成IP通信。

下面正式开始讲iptables的筛选规则。
之所以叫iptables,是因为它将这些规则按照适用的情况分为了filters、NAT、Mangle和Options这几个table(表),而每个table又有各自的chain(链),对于不同的数据包,会采取不同的table和chain来进行筛选。每个table含有的chain如下:
filter:chain INPUT 、chain OUTPUT 、chain FORWARD
NAT:chain PREROUTING 、chain OUTPUT 、chain POSTROUTING
Mangle:chain INPUT 、chain OUTPUT
Options:这个table由用户自定义

Mangle和Options较为少用,所以只讲讲 table filter和table NAT。

数据包对于本机而言包括三种:要传入到本机的,要从本机传出的,要由经过本机进行转发的。而对于这几种数据包,应用table和chain的顺序如下:
对于要传入本机的(进站规则):
1、先经过 table NAT 的 chain PREROUTING,把数据包的目标IP从Public IP修改为Private IP.
2、再经过 table chain 的 chain INPUT,筛选出允许进入本机的数据包,进行放行

对于要从本机传出的(出站规则):
1、先经过 table NAT 的 chain OUTPUT,筛选出允许发送出去的数据包,进行放行
2、再经过 table filter 的 chain OUTPUT。
3、最后经过 table NAT 的 chain POSTROUTING,把数据包目标IP改成Public IP,然后发送出去。

对于要经过本机进行转发的(转发规则):
1、先经过 table NAT 的 chain PREROUTING,把数据包的目标IP从Public IP修改为Private IP.
2、再经过 table chain 的 chain FORWARD,筛选出允许转发的数据包。
3、最后经过 table NAT 的 chain POSTROUTING,把数据包目标IP改回成Public IP,然后发送出去。

0 0
原创粉丝点击