一 防火墙的概念
1、 防火墙指(firewall)的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
防火墙是一种隔离工具,工作于主机和网络边缘,对于出入本机或网络的报文,根据事先定义的检查规则左匹配检验,对于能被匹配的报文做出处理的组件。
2、 Firewall 分主机防火墙和网络防火墙,从实现方式分软件防火墙和硬件防火墙;防火墙是对报文的过滤和处理,首先我得知道报文的发送是单向的,这就涉及到源和目标的问题,如何理解什么是源,什么是目标,
A —————发送报文—————〉B A:源主机,源IP, B:目标主机,目标IP
A<—————收到报文响应———B A:目标主机,目标IP, B:源主机,源IP
3、 ipfw(firewall framwork)
ipchains (firewall framwork)
防火墙的每条规则都是自上而下逐条匹配规则,从linux2.4之后称iptables(netfilter):kernel、
netfilter :kernel
iptables:rules until
4、hook function (钩子功能):对没一个流过的报文,先钩住,对其匹配。
内置链: INPUT
OUTPUT
RORWARD
PREROUTING (不做过滤)
POSTROUTING(不做过滤)
5、按功能分:
filter :过滤
nat: natwork address translation 网络地址转换,可以修改源IP和目标IP,也可以修改端口
mangle:拆解报文,做出修改,并重新封装起来
raw:关闭nat表上启用的链接追踪功能
6、功能和链的对应关系:
raw : PREROUTING OUTPUT
mangle: PREROUTING INPUT FORWORD OUTPUT POSTROUTING
nat : PREROUTING OUTPUT POSTROUTING
filter: INPUT FORWORD OUTPUT
报文流向:流入本机:PREROUTING---->INPUT
本机流出:OUPUT---->POSTROUTING
转 发:PREROUTING---->FORWORD---->POSTROUTING
7、路由功能发生的时刻:
报文流入本机后:判断目标主机是?
报文离开本机前:判断经由那个端口送往下一站?
二、iptables 的基本应用
1、iptables的应用基本有2种规则,filter / nat
如何写规则:包过滤防火墙的应用(iptables 基础应用)
iptables、netfilter:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作做出处理。
2、规则组成部分:
匹配条件:分基本匹配条件和扩展匹配条件(需要模块)
处理动作:基本处理动作、扩展处理动作、自定义机制
3、 iptables的链(内置链和自定义链)
内置链:对应hook function
自定义链:用于内置链的扩展和补充,可实现更灵活规则管理机制,自定义链必须和内置链关联才能使用
4、添加规则时的考量点:
(1)要时间那种功能,filter nat mangle raw
判断添加到哪个表
(2) 报文流经的路径:
判断添加到哪个链
链上的规则次序,即为检查的次序,因此隐含一定的应用法规
(1)同类规则(访问同一应用)匹配范围小德放上面
(2)不同规则(访问不同应用)匹配到报文的频率较大的放上面
(3)将那些可以一条规则描述多个规则的合并起来
(4)设置默认策略
5、如何使用ipatables命令,man iptables
规则格式:
iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
解析: -t table :raw mangle nat filter
COMMAND: 1、管理链
-N new 自定义一条新规则链,
-X 删除一条自定义规则链
-P policy 设置默认策略,对filter表中的链而言,其默认策略省
accept 接收,drop 丢弃, reget 决绝
-E 重命名自定义链,被引用的链不能重命名,也不能删除
2、 规则管理:
-A append 追加
-I insert,插入,需指明位置,省略时表示第一条
-D delete,删除 ,1,指明规则号,2,指明规则本事
-R replace 替换链上的指定规则,通常指明规则号
-F flush ,清空指定的规则链
-Z zero 置0 iptables的每条规则都有2个计算器
1、本规则匹配到的报文个数
2、匹配到的所有报文的大小之和(字节数)
3、查看
-l list 查看
-n number 以数字的个数显示地址和端口号
-v verbose 详细信息
-x exactly 显示计算机结果的精确值
--line-numbers 显示规则的序号
chain :PREROUTING INPUT FORWORD OUTPUT POSTROUTING
处理动作; -J targetname [per-target-options]
Accept,Drop ,Reject,return(返回调用链) ,redudect(重定向),log(日志状态),MARK ,DNAT,SNAT,MASQUERADE
6、条件匹配
基本匹配条件:iptables自带的功能
[!] -s,--source address [/mask] 检查报文源IP地址是否符合此处指定的地址范围
[!] -s,--source address [/mask] 检查报文目标IP地址是否符合此处指定的地址范围
[!] -p,--protocal protocal (tcp udp icmp all)
[!] -i,--in-interface name 数据报文流入的接口,只应用于数据报文流入的环节,只应用于PREROUTING\ INPUT\ FORWORD链
[!] -o,--out-interface name 数据报文流出的接口,只应用于数据报文流出的环节,只应用于OUTPUT\ FORWORD\POSTROUTING链