当前位置: 首页 > news >正文

零基础从头教学Linux(Day 33)

Linux防火墙-Iptables

Iptables 防火墙指南

一、 Iptables 概述

Iptables 是一个用户空间工具,用于配置 Linux 内核级防火墙。它采用表、链和规则的层级结构,能够根据不同需求进行灵活配置。

主要特点:

  • 作为内核级防火墙,具备高效、稳定、安全的特性
  • 表链规则结构灵活,适应各种网络环境和应用场景
  • 相比其他防火墙工具更易学易用,扩展性强

二、 Iptables 组成

Iptables 由表(table)、链(chain)和规则(rule)三个核心组件构成。

表(Table)

表是规则集合,包含若干链和相关规则。常用五种表:

表名功能包含链
raw决定是否进行状态跟踪OUTPUT, PREROUTING
mangle修改数据包内容,用于流量整形INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING
nat网络地址转换,修改源/目标IP或端口OUTPUT, PREROUTING, POSTROUTING
filter数据包过滤,决定是否放行INPUT, FORWARD, OUTPUT

表优先级顺序:raw > mangle > nat > filter

链(Chain)

链是相关联的规则集合:

链名功能
INPUT处理目的地址为本机的入站数据包
OUTPUT处理本机发出的出站数据包
FORWARD处理需要转发的数据包
PREROUTING路由选择前处理,如DNAT
POSTROUTING路由选择后处理,如SNAT

数据包处理流程

  1. 入站流程: PREROUTING链(raw→mangle→nat)→路由选择→INPUT链(mangle→filter)→应用程序

  2. 转发流程: PREROUTING链→路由选择→FORWARD链→POSTROUTING链

  3. 出站流程: 应用程序→路由选择→OUTPUT链(raw→mangle→nat→filter)→POSTROUTING链(mangle→nat)

规则匹配策略

  • 自上而下顺序匹配
  • 匹配到规则即停止
  • 根据规则动作(ACCEPT/DROP/REJECT等)处理数据包

三、 Iptables 配置

基本语法

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

注意:

  • 链名必须大写
  • 控制类型必须大写

常用管理选项

选项作用
-A链末追加规则
-I链首插入规则(默认)或指定位置插入
-R替换指定规则
-P设置链的默认策略
-D删除指定规则
-F清空链中所有规则
-L列出规则
-n数字形式显示
-v显示详细信息
--line-numbers显示规则序号

常用控制类型

类型作用
ACCEPT允许通过
DROP静默丢弃
REJECT拒绝并返回响应
SNAT源地址转换
DNAT目的地址转换
MASQUERADE动态IP伪装
LOG记录日志

常用匹配条件

条件说明
-p协议类型
-s源地址
-d目的地址
-i入站网卡
-o出站网卡
--sport源端口
--dport目的端口

配置示例

添加规则
# 拒绝ICMP
iptables -t filter -A INPUT -p icmp -j REJECT# 允许SSH(22端口)
iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT# 指定位置插入规则
iptables -t filter -I INPUT 2 -p tcp --dport 22 -j ACCEPT
查看规则
# 查看filter表所有规则
iptables -t filter -L# 数字形式显示详细信息
iptables -t filter -nvL# 显示INPUT链规则及序号
iptables -t filter -nvL INPUT --line-numbers
删除规则
# 按序号删除
iptables -D INPUT 3# 按内容删除
iptables -D INPUT -p icmp -j REJECT
清空规则
# 清空OUTPUT链
iptables -F OUTPUT# 清空所有规则
iptables -F
修改规则
# 修改已有规则
iptables -t filter -R INPUT 1 -p icmp -j ACCEPT# 修改默认策略
iptables -P FORWARD DROP

四、 规则匹配

1. 通用匹配

可直接使用,不依赖其他条件:

类型选项
协议匹配-p 协议名
地址匹配-s 源地址 -d 目的地址
接口匹配-i 入站网卡 -o 出站网卡

示例:

# 接受非ICMP协议数据包
iptables -A INPUT ! -p icmp -j ACCEPT# 丢弃特定主机数据包
iptables -A INPUT -s 192.168.116.20 -j DROP# 拒绝网段从指定网卡进入
iptables -I INPUT -i ens33 -s 192.168.110.0/24 -j REJECT

2. 隐含匹配

需配合特定协议使用,如端口、TCP标记、ICMP类型等。

注意事项:

  • --sport--dport必须与-p参数指定的协议配合使用

端口匹配类型

参数作用
--sport 1000匹配源端口为1000的数据包
--sport 1000:3000匹配源端口在1000-3000范围内的数据包
--dport :3000匹配目标端口≤3000的数据包
--dport 1000:匹配目标端口≥1000的数据包

应用示例:

# 允许TCP 20和21端口通过(FTP数据包)
iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT# 丢弃192.168.11.0网段转发的TCP 24000-24500端口数据
iptables -I FORWARD -d 192.168.11.0/24 -p tcp --dport 24000:24500 -j DROP

TCP标记匹配

需配合-p tcp使用,指定TCP标记(SYN/ACK/RST/URG/PSH/FIN)

# 允许SYN请求包,拒绝其他
iptables -A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT# 拒绝22端口的SYN包
iptables -I INPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT# 拒绝输出22端口的SYN/ACK包
iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT

ICMP类型匹配

需配合-p icmp使用,指定ICMP类型(可通过iptables -p icmp -h查看)

类型代码含义
Echo-Request8请求
Echo-Reply0回显
Destination-Unreachable3目标不可达
# 丢弃ICMP请求包(禁止ping本机)
iptables -A INPUT -p icmp --icmp-type 8 -j DROP# 丢弃ICMP回显包(禁止本机ping通他人)
iptables -A INPUT -p icmp --icmp-type 0 -j DROP# 允许显示目标不可达
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

3. 显式匹配

需使用-m参数指定扩展模块类型,包括多端口、MAC地址、IP范围等。

多端口匹配

# 允许TCP 20,21,22,53端口
iptables -A INPUT -p tcp -m multiport --dport 20,21,22,53 -j ACCEPT# 允许UDP 53,67,68端口
iptables -A INPUT -p udp -m multiport --dport 53,67,68 -j ACCEPT

IP范围匹配

# 禁止转发源IP为192.168.10.100-200的UDP数据
iptables -A FORWARD -p udp -m iprange --src-range 192.168.10.100-192.168.10.200 -j DROP# 禁止发送目的IP为192.168.10.100-200的UDP数据
iptables -A INPUT -p udp -m iprange --dst-range 192.168.10.100-192.168.10.200 -j DROP

MAC地址匹配

iptables -A INPUT -m mac --mac-source 00:0C:29:XX:XX:XX -j DROP

状态匹配

常见连接状态:

  • NEW:首次连接请求
  • ESTABLISHED:已建立连接
  • RELATED:相关连接
  • INVALID:无效包
# 允许新建22端口连接
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT# 允许已建立和相关连接通过
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT# 设置默认策略为DROP(创建白名单)
iptables -P INPUT DROP

五、NAT地址转换配置

1. SNAT配置

应用场景:局域网共享公网IP访问Internet

配置示例

# 固定公网IP转换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to 10.0.0.100# IP范围转换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10# 动态IP转换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

2. DNAT配置

应用场景:公网访问内网服务器

配置示例

iptables -t nat -A PREROUTING -i ens33 -d 10.0.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2

六、策略备份与恢复

# 备份策略
iptables-save > /opt/iptables.bak# 恢复策略
iptables-restore < /opt/iptables.bak# 重启服务
systemctl restart iptables
##查看配置文件中的默认策略
[root@localhost opt]#cat /etc/sysconfig/iptables-config
##使用iptables -nL查看修改过的策略
[root@localhost opt]#iptables -nL
##对自定义的iptables策略做备份(将命令导入一个备份文件iptables.bak)
[root@localhost opt]# iptables-save > /opt/iptables.bak
[root@localhost opt]# cd /opt
[root@localhost opt]# cat iptables.bak
##重启服务(用作模拟未保留修改的策略),再查看发现策略又恢复成了配置文件中的默认策略
[root@localhost opt]# systemctl restart iptables.service
[root@localhost opt]# iptables -nL
##将备份文件中的策略恢复到配置文件中,再重启服务就还原成功了
[root@localhost opt]# iptables-restore < /opt/iptables.bak
[root@localhost opt]# systemctl restart iptables.service
[root@localhost opt]# iptables -nL


文章转载自:

http://btCJOy8I.mfsjn.cn
http://rZy0essL.mfsjn.cn
http://7CB4xc04.mfsjn.cn
http://pYCCm0Ub.mfsjn.cn
http://5avolL7B.mfsjn.cn
http://Bcz4V8uL.mfsjn.cn
http://AYHDBPx7.mfsjn.cn
http://YsEQC6bb.mfsjn.cn
http://qShZOCWG.mfsjn.cn
http://3X9TNjyn.mfsjn.cn
http://f36QBm4y.mfsjn.cn
http://m5sI49x0.mfsjn.cn
http://1xmsgbMg.mfsjn.cn
http://pLtjkSp8.mfsjn.cn
http://rmWK3pW5.mfsjn.cn
http://0lsKhchR.mfsjn.cn
http://48186fE8.mfsjn.cn
http://f2KQIGNP.mfsjn.cn
http://X5t2PxUU.mfsjn.cn
http://yklnfhqy.mfsjn.cn
http://yNlf9itr.mfsjn.cn
http://NBzfnvfz.mfsjn.cn
http://15fB6VNQ.mfsjn.cn
http://lVoOlW0C.mfsjn.cn
http://vphuX9k2.mfsjn.cn
http://wPBixzde.mfsjn.cn
http://G93HtYdm.mfsjn.cn
http://tRSKEOS6.mfsjn.cn
http://s4mr74OX.mfsjn.cn
http://Hcbyzpp2.mfsjn.cn
http://www.dtcms.com/a/383539.html

相关文章:

  • collections模块
  • 【前端】【高德地图WebJs】【知识体系搭建】图层知识点——>热力图,瓦片图层,自定义图层
  • 关系模型的数据结构
  • Spring Boot 与前端文件上传跨域问题:Multipart、CORS 与网关配置
  • MySQL的事务特性和高可用架构
  • AI重构车载测试:从人工到智能的跨越
  • 前端梳理体系从常问问题去完善-基础篇(html,css,js,ts)
  • 文件查找 find
  • LeetCode 2110.股票平滑下跌阶段的数目
  • 解锁仓储智能调度、运输路径优化、数据实时追踪,全功能降本提效的智慧物流开源了
  • FPGA学习篇——Verilog学习MUX的实现
  • hadoop单机伪分布环境配置
  • Vue3 响应式失效 debug:Proxy 陷阱导致数据更新异常的深度排查
  • el-table的隔行变色不影响row-class-name的背景色
  • 【深度学习新浪潮】游戏中的agents技术研发进展一览
  • Condor 安装
  • 类和对象 (中)
  • [数据结构——lesson10.2堆的应用以及TopK问题]
  • 可可图片编辑 HarmonyOS(6)水印效果
  • 机器学习(四):支持向量机
  • 给定一个有序的正数数组arr和一个正数range,如果可以自由选择arr中的数字,想累加得 到 1~range 范围上所有的数,返回arr最少还缺几个数。
  • 《C++ 容器适配器:stack、queue 与 priority_queue 的设计》
  • Java 黑马程序员学习笔记(进阶篇8)
  • 无需标注的视觉模型 dinov3 自监督学习ssl
  • 多语言编码Agent解决方案(2)-后端服务实现
  • STM32F103C8T6通过SPI协议驱动74HC595数码管完全指南:从硬件原理到级联实现
  • 【系列文章】Linux中的并发与竞争[05]-互斥量
  • 海岛奇兵声纳活动的数学解答
  • 大模型入门实践指南
  • CSS 编码规范