Linux——iptables防火墙(iptables的表、 链结构、iptables语法格式与常用参数)

iptables的表、 链结构

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它

四表五链

  • 链就是位置:共有五个

    • 进路由(PREROUTING)
    • 进系统(INPUT)
    • 转发(FORWARN)
    • 出系统(OUTPUT)
    • 出路由(POSTROUTING)
  • 表就是存储的规则

    • 数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行,丢弃,转发还是修改等操作

四表

  • 规则表
    • 表的作用:容纳各种规则链
    • 表的划分依据:防火墙规则的作用相似
  • 默认包括4个规则表
    • raw表:确定是否对该数据包进行状态跟踪
    • mangle表:为数据包设置标记
    • nat表:修改数据包中的源、目标IP地址或端口
    • filter表:确定是否放行该数据包(过滤)

五链

  • 规则链
    • 规则的作用:对数据包进行过滤或处理
    • 链的作用:容纳各种防火墙规则
    • 链的分类依据:处理数据包的不同时机
  • 默认包括5种规则链
    • INPUT:处理入站数据包
    • OUTPUT:处理出站数据包
    • FORWARD:处理转发数据包
    • POSTROUTING链:在进行路由选择后处理数据包
    • PREROUTING链:在进行路由选择前处理数据包

四表五链之间的关系

表包含链

链包含规则
在这里插入图片描述

数据包控制的匹配流程

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

iptables语法格式与常用参数

 iptables安装
 CentOS 7默认使用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 控制类型]
如果不指定表名,则会默认指定filter表
iptables常用参数
-P 设置默认策略:iptables
-P INPUT(DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加感叹号“!”表示除了这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
查看规则列表
[root@localhost ~]# iptables -n -L INPUT					#-n -L可合写为nL
删除、清空规则
[root@localhost ~]# iptables -D INPUT 3
设置默认策略
[root@localhost ~]# iptables -t filter -P FORWARD DROP
[root@localhost ~]# iptables -P OutPUT ACCEPT				#清空所有默认策略要么是ACCEPT、要么是DROP表的所有链
iptables命令使用总结
所有链名必须大写
INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
所有表名必须小写
filter/nat/mangle
所有动作必须大写
ACCEPT/DROP/SNAT/DNAT/MASQUERADE
所有匹配必须小写
-s/-d/-m <module_name>/-p

规则的匹配条件

  • 通用匹配

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

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

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

    • 协议匹配: -p 协议名
    • 地址匹配: -s 源地址、-d 目的地址
    • 接口匹配: -i入站网卡、-0 出站网卡
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP
[root@localhost ~]# iptables -A FORWARD ! -p icmp -j ACCEPT			#叹号!表示条件取反
[root@localhost ~]# iptables -A FORWARD -S 192.168.1.11 -j REJECT
[root@localhost ~]# iptables I INPUT -S 10.20.30.0/24 -j DROP
[root@localhost ~]# iptables -A INPUT -i ens33 -S 192.168.0.0/16 -j DROP
[root@localhost ~]# iptables -A INPUT -i ens33 -S 10.0.0.0/8 -j DROP
[root@localhost ~]# iptables -A INPUT -i ens33 -S 172.16.0.0/12 -j DROP
  • 常用的隐含匹配条件
    • 端口匹配: --sport源端口、–dport目的端口
    • ICMP类型匹配: --icmp-type ICMP类型
[root@localhost ~]# iptables -A FORWARD -S 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -P tcp --dport 20:21 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -icmp-type 8 -j DROP
[root@localhost ~]# iptables -A INPUT -P icmp --icmp-type 0- j ACCEPT
[root@localhost ~]# iptables -A INPUT -P icmp --icmp-type 3 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -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连接状态
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport -port 25,80,110,143 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -P tcp -m iprange --r-range 192.168.4.21-192.168.4.28 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables 4 INPUT -P tcp -m multiport --dport 80 -j ACCEPT
[root@localhost ~]# iptables | INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

常用管理选项汇总

类别 条件类型 用法
通用匹配 协议匹配 -p协议名
地址匹配 -S源地址、-d目的地址
接口匹配 -i入站网卡、-0出站网卡
隐含匹配 端口匹配 –sport源端口、–dport 目的端口
ICMP类型匹配 –icmp-type ICMP类型
显式匹配 多端口匹配 -m multiport --sports
IP范围匹配 -m iprange --src-range IP范围
MAC地址匹配 -m mac --mac-source MAC地址
状态匹配 -m state --state连接状态

猜你喜欢

转载自blog.csdn.net/CN_PanHao/article/details/107699624
今日推荐