防火墙,通俗地打个比方就相当于城池周围的护城河,开放和管理服务的提供

一般电脑系统的安全主要取决于:

1)第三方监控杀毒软件 360杀毒软件

2)系统策略  防火墙规则设定

3)文件的权限设定

 

Linux防火墙体系主要工作在网络层,针对TCP/IP数据包的过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙),Linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率,因此获得广泛的应用。

Netfilter:指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在。

Iptables:用来管理linux防火墙的命令程序

 

Iptables的表,链结构

Iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理。为了更加方便地组织和管理防火墙规则,iptables采用了“表”,“链”的分层结构

根据处理数据包的不同时机划分为五种链

根据规则的不同功能划分为默认的四个表,表和链的结构关系如下图所示,

数据包过滤的匹配流程,

iptables管理着四个默认表和五种链,各种防火墙规则依次存放在链中。当一个数据包到达防火墙以后,以及数据包进出防火墙时的处理,遵从以下的匹配流程

 

 


编写防火墙规则,

主要介绍一下netfilter防火墙的管理工具iptables命令的使用,包括基本的语法格式,数据包控制类型,以及如何管理,编写防火墙规则。

添加,查看,删除规则等基本操作

在熟练编写各种防火墙规则之前,首先需要掌握查看规则,添加规则,删除规则,清空链内规则等基本操作。

 


规则的匹配条件




结合实验,验证一下防火墙iptables的应用

实验环境;

1)vmware workstation虚拟机环境,三台虚拟机。都使用仅主机模式。

2)一台redhat6.5系统的PC充当网关防火墙,设置两个网卡eth0ip192.168.30.1   eth1:  ip12.0.0.1

3)一台Windows7系统的PC充当客户端,ip192.168.30.66

4)一台redhat6.5系统的PC提供web服务,ip12.0.0.12

5)在网关防火墙设置iptables规则,控制客户端访问web服务。

首先准备好实验环境,在网关防火墙PC上再添加一块网卡,修改网卡配置文件内容,设置两个网卡eth0ip192.168.30.1   eth1:  ip12.0.0.1


然后给另外两台也分别设定好ip地址,和默认网关。

内网Windows7主机设定ip为192.168.30.66

外网主机设定ip为12.0.0.12 ,并开启httpd服务提供web服务(redhat6.5系统默认安装httpd,只需开启服务即可),并清空自身的防火墙规则iptables -F.



在本机打开浏览器测试下看是否能够看到apache的欢迎首页



在网关防火墙上ping另外两台主机测试网络是否连通

打开/etc/sysctl.conf文件,开启网关防火墙主机的路由转发功能,首先将iptables规则清空




打开内网客户端主机输入外网ip地址访问外网web页面,在没有设置任何防火墙规则的情况下,可以看到提供的apache欢迎首页


然后我们在网关防火墙主机上设置一条iptables规则:iptables -I FORWARD -s 192.168.30.66 -j DROP (禁止转发内网客户机的数据包)


此时在客户机上再次访问外网web服务,显示的结果是无法访问


SNAT策略及应用

随着互联网在全世界的普及,IPv4协议支持的可用IP地址资源逐渐变少,资源匮乏使得许多企业难以申请更多的公网ip地址,或者只能承受一个或少数几个公网ip地址的费用,而与此同时,大部分企业面临着将局域网内的主机接入公网的需求。因此通过在网关中应用SNAT策略,可以解决局域网共享上网的问题。

SNAT转换原理分析如图所示

SNAT策略的应用实例,还是以刚才的实验环境为基础,进行设置SNAT防火墙规则,在设置SNAT之前将其他iptables规则清空以免干扰实验结果

在客户机访问外网主机的web服务

在外网主机上查看apache网站服务访问日志文件末尾几行,/etc/httpd/logs/access_log,可以看到刚刚访问网页的主机ip为192.168.30.66(我们设定的内网客户端)

在网关防火墙主机上设置SNAT策略,将地址192.168.30.66转换成外网接口网关12.0.0.1

iptables -t nat -I POSTROUTING -s 192.168.30.66 -o eth1 -j SNAT --to-source 12.0.0.1


再次在客户机上重新访问外网主机的web服务

在外网主机上查看apache网站服务访问日志文件末尾几行,/etc/httpd/logs/access_log,可以看到刚刚访问网页的主机ip为12.0.0.1(说明我们设定的内网客户端已经将地址转换成网关地址12.0.0.1)



DNAT策略及应用

DNAT策略与SNAT策略非常相似,只不过应用方向相反。DNAT用来修改目标地址ip和目标端口,SANT只能用在nat表的POSTROUTING链中,而DNAT只能用在nat表中的PREROUTING链和OUTPUT链中

仍以上面的实验环境为基础,现实工作中考虑到应用的安全和稳定性,公司将对外的网站服务器架设在一个内部网络中,除非在网关服务器中正确设置DNAT策略,否则internet中的客户机将无法访问公司内网的服务器。

以刚才的实验环境为基础,让内网的客户端提供web服务,让外网的PC去访问内网的web服务

首先在内网PC上打开IIS功能,搭建网站提供web服务,如下图所示操作;


在网关防火墙主机上设置DNAT策略,发布内网的web服务

iptables -t nat -I PREROUTING -d 12.0.0.1 -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.30.66



在外网的PC浏览器上输入网关的ip地址12.0.0.1就可以访问内网提供的web服务了。



使用DNAT策略的效果如刚才实验所示;当外网中的PC提交http请求到企业的网关防火墙时,网关首先判断数据包的目标地址和目标端口,若发现该数据包需要访问本机的80端口,则将其目标地址(12.0.0.1)修改为内网中真正的网站服务器的ip地址(192.168.30.66),然后才发送给内部的网站服务器。

在上述的DNAT转换地址的过程,网关服务器会根据之前建立的DNAT映射,修改返回的http应答数据包的源ip地址,最后再返回给internet中的PC,internet中的客户机并不知道企业网站服务器的真实局域网地址,中间的转换完全由网关主机完成。

通过设置恰当的DNAT策略,企业内部的服务就可以面向internet提供服务了。