- 防火墙的基本概念
防火墙是指设置在不同网络或者网络安全域之间的一系列组件的组合,通常它能够用来增加防火墙一侧内部网络的安全性。它一般是通过访问控制机制(ACL),来确定哪些内部服务可以允许外部访问和外部请求可以访问内部服务。
防火墙通常的实现机制是审查经过防火墙的每一个数据包,根据一定的规则,按照这些规则的先后顺序进行一一比较,如果满足,则按照规则规定的行为对数据包进行处理。
防火墙目前最著名的就是中国的长城国家防火墙GFW。
防火墙的基本功能:
可以保护易受攻击的服务,控制内外网之间网络系统,集中管理内网的安全性,提高网络的保密性和私有性,记录网络的使用状态,为安全规划和网络维护提供依据。
防火墙技术类型:
有很多种分法,这里重点只在于软件防火墙,基本可以分为包过滤防火墙和代理服务器(比喻squid)两种。
包过滤防火墙原理:
代理服务型防火墙原理:
在应用层实现,能提供部分与传输有关状态信息,但可以完全提供与应用相关的状态。通常使用软件如squid来搭建。
linux平台提供了一个免费的包过滤防火墙netfilter/iptables,它可以代替昂贵的商业产品,用来完全包过滤,包重定向及网络地址(NAT)等功能。
iptables 的基本概念:
规则(Rules)
是网管员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则通常需要指定源地址、目的地址、传输协议(TCP、UDP、ICMP)和服务类型(HTTP、FTP、SMTP)等。当数据包与规则相符时,iptables就根据规则所定义的方法(ACCEPT、REJECT、 DROP、JUMP)来处理这些数据包。所以配置防火墙的主要功能就是针对编写和优化这些规则,以便于在保证安全的前提下尽量提高性能。
链(chains)
是数据包传播的路径,第一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或条规则。当一个数据包到达一个链时,iptables就会从链的第一条规则进行检查,看这个数据包是否满足规则所定义的条件,如果满足,系统会根据这规则所定义的方法处理数据包,否则继续下一条规则,如果这包不符合所有规则,则根据一个预定义的默认策略来处理。
表(tables)
是提供特别的功能表。目前IPTALBES内置了4个类别表,filter、nat、mangle和raw表,分别用于实现包过滤、网络地址转换、包重构(修改)和数据跟踪处理。通常用得最多的是filter 表。
这四张表是专表专用相互独立,每种表负责一大类功能。每种表包含一些特定的链。
我们来分析一下iptables分析数据包的过程:
1)当一个数据包进入网卡时,它首先进入PREROUTING链,这个链分别在三个表中。内核根据数据包的目的地址判断是否是路过还是进入本机。
2)如果数据包需要进入本机,它会沿着下图进入到INPUT链。
3)如果数据包不需要进入本机,它会转发到FORWARD链,然后到POSTROUTING链,发送出去
4)本机向外发送数据,先进入OUTPUT链,然后到POSTROUTING链,发送出去。
Iptables基本操作命令:
iptables [-t table] 命令 【chain】【rules】【-j target】
1)表选项,用于指定命令应用于哪个iptables内置表,如果不指定,默认是filter表
2)命令选项,用于对自定义链、策略、规则、计算器等进行增、删、替换及归零处理操作,以下列出一些常用的操作命令(对自定义链的操作命令,如N,X请参考手册)
3)规则选项,也就是parameter选项,通常是用来设置详细数据包的匹配规则。
这些规则后面可跟的参数说明如下:
其中!指的是取反,eth+是针对多网卡时,指所有网卡。
4)动作选项,用于当这条规则满足是如何处理数据包(注意下图中REDIRECT说明错误,它是REJECT)
Iptables常用操作:
1)定义默认策略,为什么要定义默认策略呢?是因为当数据包不符合链中任一条规则时,需要根据这个默认策略来处理数据包。格式:iptables 【-t 表名】-P 链名 动作(ACCEPT/DROP)。这里选项不能是用户自动链名,也不能是其它一些选项,需要参照手册使用。
2)查看规则,iptables 【-t 表名】-L
3)编辑规则(追加、插入、删除、替换) (A,I,D,R)
4)清除规则及计数器: iptables 【-t 表名】 –F –Z
5)编辑用户自定义链(新建、删除)(N,X)
Iptables 常用规则:
【1】禁止用户访问域名www.sexy.com iptables –I FORWARD –d www.sexy.com –j DROP
【2】禁止用户访问地址20.20.20.20 iptables –I FORWARD –d 20.20.20.20 –j DROP
【3】禁止地址为192.168.1.X的机器上网 iptables –I FORWARD –s 192.168.1.X –j DROP
【4】禁止地址192.168.1.0子网内所有机器上网 iptables –I FORWARD –s 192.168.1.0/24 –j DROP
【5】禁止地址为192.168.1.0子网内所有机器使用FTP下载 iptables –I FORWARD –s 192.168.1.0/24 –p tcp –dport 21 –j DROP
【6】强制访问WEB访问经过192.168.1.X iptables -t nat –I PREROUTING –i eth0 –p tcp –dport 80 –j DNAT –to-destination 192.168.1.x:80
Iptables 基本操作演示:
NAT 是指Network address translation,中文称为网络地址转换,它是一个IETF标准,允许公有地址与私有地址进行转换。有三种类型:
1)静态NAT,内网中的每个主机被永远映射成外部的合法地址。
2)动态NAT,在外网中定义一系统合法地址,采用动态分配的方法映射到内网。主要用于拨号。
3)网络地址端口转换(NAPT),内部地址映射到外部的一个地址的不同端品上。,普遍用于接入设备中,可以将中小型网络隐藏在一个合法的IP地址后面。