目录

一.iptables概述

二.netfilter/iptables关系

三.四表五链

四.规则链之间的匹配顺序

五.规则链内的匹配顺序

六.iptables的安装


一.iptables概述

windows iptables 类似 iptables -w_IP

二.netfilter/iptables关系

windows iptables 类似 iptables -w_IP_02

三.四表五链

windows iptables 类似 iptables -w_IP_03

四表

raw表

确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、 PREROUTING

mangle表

修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,NPUT、 OUTPUT、FORWARD、 PREROUTING、 POSTROUTING

nat表

负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,  OUTPUT、PREROUTING、 POSTROUTING

ilter表

负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、            FORWARD、OUTPUTf

注意:在ptables 的四个规则表中,mangle 表和raw表的应用相对较少

五链

INPUT

处理入站数据包,匹配目标IP为本机的数据包

OUTPUT

处理出站数据包,–般不在此链.上做配置

FORWARD

处理转发数据包,匹配流经本机的数据包

PREROUTING

在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于  把内网服务器的IP和端口映射到路由器的外网IP和端口上

POSTROUTING

在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网

数据包到达防火墙时,规则表之间的优先顺序:

raw > mangle > nat > filter

表、链结构示意图:

windows iptables 类似 iptables -w_IP_04

四.规则链之间的匹配顺序

主机型防火墙

windows iptables 类似 iptables -w_centos_05

网络型防火墙:

windows iptables 类似 iptables -w_运维_06

五.规则链内的匹配顺序

• 自上向下按顺序匹配,找到就会停止

• 若在该链内匹配不到规则,则按该链的默认策略处理

匹配流程示意图:

windows iptables 类似 iptables -w_windows iptables 类似_07

六.iptables的安装

Centos 7默认使用firewalld防火墙,没有安装iptables,应先关闭firewalld防火墙,再安装iptables

windows iptables 类似 iptables -w_运维_08

windows iptables 类似 iptables -w_linux_09

iptables防火墙的配置方法

1 .使用iptables 命令行
2. 使用system-config-firewall

iptables 命令行配置方法

命令格式: iptables [-t 表名]管理选项 [链名] [匹配条件] [-j 控制类型]

注意事项:

windows iptables 类似 iptables -w_IP_10

常用的控制类型

windows iptables 类似 iptables -w_windows iptables 类似_11

常用的管理选项

windows iptables 类似 iptables -w_IP_12

添加新的规则

windows iptables 类似 iptables -w_linux_13

windows iptables 类似 iptables -w_centos_14

 

查看规则列表

windows iptables 类似 iptables -w_IP_15

windows iptables 类似 iptables -w_centos_16

设置默认策略

windows iptables 类似 iptables -w_centos_17

windows iptables 类似 iptables -w_运维_18

删除规则

windows iptables 类似 iptables -w_IP_19

windows iptables 类似 iptables -w_windows iptables 类似_20

 清空规则

windows iptables 类似 iptables -w_linux_21

windows iptables 类似 iptables -w_linux_22

规则的匹配

1.通用匹配

可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件

windows iptables 类似 iptables -w_windows iptables 类似_23

2.隐含匹配

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件

windows iptables 类似 iptables -w_运维_24

TCP标记匹配: - - tcp-flags TCP标记

iptables -I INPUT -i erns33 -p tcp --tcp-flags SYN, RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包

CMP类型匹配: – icmp-type ICMP类型           #可以是字符串、数字代码

windows iptables 类似 iptables -w_IP_25

windows iptables 类似 iptables -w_运维_26

3.显式匹配

要求以“-m扩展模块"的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件

多端口匹配: -m multiport --sport 源端口列表
           -m multiport --dport 目的端口列表
           
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT

IP范围匹配: -m iprange --src-range IP范围
iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

MAC地址匹配: -m mac --mac-source MAC地址
iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP
#禁止来自某MAC地址的数据包通过本机转发

状态匹配: -m state --state连接状态
常见的连接状态:
NEW: 与任何连接无关的,还没开始连接
ESTABLISHED: 响应请求或者已建立连接的,连接态
RELATED: 与已有连接有相关性的( 如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED配合使用
INVALID: 不能被识别属于哪个连接或没有任何状态

iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
#禁止转发与正常TCP 连接无关的非--syn请求数据包(如伪造的网络攻击数据包)

iptables -I INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
#对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过。
#比如我和你做生意,我们谈成了生意,到了支付的时候,就可以直接调用与这笔生意相关的支付功能
iptables -P INPUT DROP

windows iptables 类似 iptables -w_linux_27

windows iptables 类似 iptables -w_windows iptables 类似_28