iptables的表、链结构

  • 规则链
  • 规则的作用:对数据包进行过滤或处理
  • 链的作用:容纳各种防火墙规则
  • 链的分类依据:处理数据包的不同时机
  • 默认包括5种规则链
  • INPUT:处理入站数据包
  • OUTPUT:处理出站数据包
  • FORWARD:处理转发数据包
  • POSTROUTING链: 在进行路由选择后处理数据包
  • PREROUTING链:在进行路由选择前处理数据包
  • 规则表
  • 表的作用:容纳各种规则链
  • 表的划分依据:防火墙规则的作用相似
  • 默认包括4个规则表
  • raw表:确定是否对该数据包进行状态跟踪
  • mangle表:为数据包设置标记
  • nat表:修改数据包中的源、目标IP地址或端口
  • filter表:确定是否放行该数据包(过滤)
  • 默认的表、链结构示意图

iptables 防火墙双机配置 iptables防火墙规则顺序_iptables

数据包过滤的匹配流程

  • 规则表之间的顺序
  • raw- > mangle >nat > filter
  • 规则链之间的顺序
  • 入站: PREROUTING→INPUT
  • 出站: OUTPUT→POSTROUTING
  • 转发: PREROUTING> FORWARD>POSTROUTING
  • 规则链内的匹配顺序
  • 按顺序依次检查,匹配即停止(LOG策略例外)
  • 若找不到相匹配的规则,则按该链的默认策略处理

匹配流程示意图

iptables 防火墙双机配置 iptables防火墙规则顺序_linux_02

**注意:**CentOS 7默认使用firewalld防火墙,若想使用iptables防火墙, 必须先关闭firewalld防火墙

iptables安装

  • 关闭firewalld防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
  • 安装iptables防火墙
[root@localhost ~]# yum -y install iptables iptables-services
  • 设置iptables开机启动
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service

iptables的基本语法

  • 语法构成
  • iptables -t 表名 选项 链名 条件 -j 控制类型
[root@localhost ~]# iptables -t filter -I INPUT -p icmp-j REJECT
  • 注意事项
  • 不指定表名时,默认指filter表
  • 不指定链名时,默认指表内的所有链
  • 除非设置链的默认策略,否则必须指定匹配条件
  • 选项、链名、控制类型使用大写字母,其余均为小写
  • 数据包的常见控制类型
  • ACCEPT:允许通过
  • DROP:直接丢弃,不给出任何回应
  • REJECT:拒绝通过,必要时会给出提示
  • LOG:记录日志信息,然后传给下一条规则继续匹配
  • 常用管理选项汇总

类别

选项

用途

添加新的规则

-A

在链的末尾加一条规则

添加新的规则

-I

在链的开头(或指定序号)插入一条规则

查看规则列表

-L

列出所有的规则条目

查看规则列表

-n

以数字形式显示地址、端口等信息

查看规则列表

-v

以更详细的方式显示规则信息

查看规则列表

–line-numbers

查看规则时,显示规则的序号

删除、清空规则

-D

删除链内指定序号(或内容)的一条规则

删除、清空规则

-F

删除所有的规则

设置默认策略

-P

为指定的链设置默认规则

规则的匹配条件

常见的通用匹配条件

  • 协议匹配:-p 协议名
  • 地址匹配:-s 源地址 -d 目的地址
  • 接口匹配:-i 入站网卡 -o出站网卡

常用的隐含匹配条件

  • 端口匹配:–sport 源端口 --dport 目的端口
  • ICMP类型匹配: --icmp-type ICMP 类型

示例:

iptables -I INPURT -p icmp -j DROP
iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j DROP

注释: 8:请求 、 0:回显 、3:不可达

常用的显示匹配条件

多端口匹配:

  • -m multiport --sports 源端口列表
  • -m multiport --dports 目的端口列表

IP范围匹配:

  • -m iprange --src-range IP范围

MAC地址匹配:

  • -m mac -mac-source MAC地址

状态匹配:

  • -m state --state 连接状态

示例

iptable -A INPUT -p tcp -m multiport --dports 25,80,110 -j ACCEPT
iptable -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
iptable -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j ACCEPT
iptable -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

常见的连接状态:

NEW ------------ 与任何连接无关的
ESTABLISHED ------------ 响应请求或者已建立连接的
RELATED ------------ 与已有连接有相关性的,如FTP数据连接

总结:
iptables防火墙默认包括4个表,5种链

iptables的基本语法

iptables常用管理选项

  • A、I、L、n、v、 --line-numbers、D、F、P

iptables规则匹配条件

  • 通用匹配、隐含匹配、显示匹配