一、Iptables

iptables是防火墙, 它是Netfilter框架的实现, 在报文流经的五个位置设置钩子函数(hook function)对报文进行检查并做出相应处理.

防火墙工作于主机或网络的边界, 对于进出本主机或网络的报文根据事先定义好的检查规则作匹配检查, 对于能够被规则匹配到的报文做出相应处理. 防火墙分为主机防火墙网络防火墙.

iptables命令工作在用户空间.

1.1 iptables的表

iptables根据其具有的功能划分出四个表:

  • filter: 过滤, 因过滤功能被称为防火墙
  • nat(Network Address Translation): 网络地址转换
  • mangle: 拆解报文, 做出修改, 封装报文
  • raw: 关闭nat表上启用的连接追踪机制

1.2 iptables的链(内置)

iptables有五个链(钩子函数):

  • PREROUTING
  • INPUT
  • FORWARD
  • OUTPUT
  • POSTROUTING

1.2.1 流量流入

PREROUTING --> INPUT

1.2.2 流量流出

OUTPUT --> POSTROUTING

1.2.3 转发

PREROUTING --> FORWARD POSTROUTING

1.3 各表实现的位置

  • filter: INPUT, FORWARD, OUTPUT
  • nat: PREROUTING(dnat), OUTPUT(snat), POSTROUTING(snat)
  • mangle: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
  • rwa: PREROUTING, OUTPUT

1.4 路由发生的位置

  • 报文进入本机后, 判断目标主机
  • 报文发出前, 判断仅有哪个接口送往下一条

1.5 iptables的四表五链

  • 添加规则时的考量点
    • 要实现哪种功能: 判断添加在哪张表上
    • 报文流经的路径: 判断添加在哪个链上
  • 链: 链上规则的次序, 即为检查的次序; 因此隐含一定的法则
    • 同类规则(访问同一应用): 匹配范围小的放上面
    • 不同类规则(访问不同应用): 匹配到报文频率较大的放上面
    • 将那些可由一条规则表述的多个规则合并为一个
    • 设置默认策略

功能优先级次序: row --> mangle --> nat --> filter

1.6 iptables的规则

iptables的规则组成部分如下:

  • 报文的匹配条件: 根据协议报文特征指定匹配条件
    • 基本匹配条件
    • 扩展匹配条件
  • 匹配到之后的处理动作
    • 内建处理机制
    • 自定义处理机制

NOTE: 报文不会经过自定义链, 只能在内置链上通过规则进行应用后生效.

1.7 保存及重载规则

  1. 保存

    $ iptables-save > /PATH/TO/SOMEFILE
  2. 重载
    $ iptables-restore < /PATH/TO/SOMEFIE