iptables基础

简介: iptables基础

简介

Linux防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和限制。iptables是linux防火墙的管理程序,为包过滤机制的实现制定规则,并告诉内核空间的netfilter如何处理这些网络数据包。

在centos7中,默认的防火墙管理程序是firewalld,通过yum install -y iptables-services安装iptables。firewalld可以通过systemctl stop firewalld && systemctl disable firewalld停止。

iptables的四表五链

如何对网络数据包进行过滤和处理成为规则,规则的集合成为规则集。按照规则集的不同用途,可以划分为四个规则表。处理数据包的不同时机分为五种规则链,每个规则表中含有不同的规则链。

规则表

  • filter表:用于数据包过滤,具体的规则要求决定如何处理数据包。
  • 表中有inputoutputforward三个链。
  • nat表:网络地址转换,主要用来修改数据包的IP、端口号等信息。
  • 表中有outputpreroutingpostrouting三个链。
  • managle表:主要用来修改数据包的服务类型、生存周期,为数据包设置标记、实现流量整形、策略路由等。
  • 表中有inputoutputforwardpreroutingpostrouting五个链
  • raw表:主要用来决定是否对数据包进行状态跟踪。
  • 表中有outputprerouting两个链。

当数据包到达防火墙时,如果对应的链中有规则,将按照 raw -> mangle -> nat -> filter的顺序通过各个规则表。

规则链

  • input:当收到访问本机的数据包时,将应用此链中的规则。主要用于针对本机的防火墙规则。
  • output:当本机向外发送数据包时,将应用此链中的规则。主要用于针对本机的防火墙规则。
  • forward:当收到需要通过本机转发到其它地址的数据包时,将应用此链中的规则。
  • prerouting:在对数据包做路由选择之前,将应用此链中的规则。
  • postrouting:在对数据包做路由选择之后,将应用此链中的规则。

外部数据包到达防火墙时,要先通过prerouting链进行路由选择。如果该数据包访问的是本机,则交给input规则链处理。如果是其它地址,则交给forward链处理,再交给postrouting链处理。

内部数据包到达防火墙时,首先被output链处理,然后选择路由,交给postrouting处理。

数据包进入规则链时按照顺序依次匹配处理。如果找到匹配数据包的处理规则,将不再执行当前规则链之后的其它规则。如果整个链都没有相应规则,将按照默认策略进行处理。

iptables命令基本语法

# iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
  • 未显式指定表名时,默认使用filter表。
  • 管理选项:iptables操作方式,比如:
  • -A : 在链尾增加一条规则
  • -D : 删除链中某一条规则,可指定序号或具体内容
  • -I : 指定序号插入规则,未指定序号时,在链首插入
  • -R : 修改链中某一条规则,可指定序号或具体内容
  • -L : 列出链中所有规则,未指定链名时,列出表中所有规则链的规则
  • -F : 清空指定链中的所有规则,未指定链名时,清空表中所有规则链的规则
  • -P : 设置指定链的默认规则
  • -n : 使用数字形式显示输出结果
  • -v : 查看规则列表时显示详细信息
  • --line-numbers : 查看规则列表时,同时显示规则在链中的序号
  • 控制类型
  • accept : 允许数据包
  • drop : 丢弃数据包,且不给回应消息
  • reject : 拒绝数据包,必要时会给数据发送方回应
  • log : 在/var/log/meesages文件中记录日志信息

简单示例(入站防护示例)

# 禁止192.168.11.0/24的IP访问
iptables -A INPUT -s 192.168.11.0/24 -j DROP
# 允许192.168.12.0/24使用tcp协议访问本机80端口
iptables -A INPUT -s 192.168.12.0/24 -p tcp --dport 80 -j ACCEPT
# 允许192.168.12.0/24使用tcp协议访问本机80和443端口
iptables -A INPUT -s 192.168.12.0/24 -p tcp -m multiport --dport 80,443 -j ACCEPT
# 允许192.168.12.0/24使用udp协议访问本机2000 - 3000端口
iptables -A INPUT -s 192.168.12.0/24 -p udp --dport 2000:3000 -j ACCEPT
# 禁止ICMP
iptables -A INPUT -p icmp -j DROP
# 查看规则列表并显示序号
iptables -L INPUT --line-numbers
# 使用数字形式避免地址解析,提高命令执行速度
iptables -nL INPUT
# 删除INPUT链第3条规则
iptables -D INPUT 3
# 清空INPUT链中所有规则
iptables -F INPUT
# 设置默认禁止入站
iptables -P INPUT DROP

其他命令

  • 导出iptables规则到文件中
iptables-save > /root/backup/iptables_bak20220508.txt
  • 从文件中导入iptables规则
iptables-restore < /root/backup/iptables_bak20220508.txt

参考

  • 杰哥的iptables手册V1.0.pdf
相关文章
|
网络协议 数据安全/隐私保护 网络虚拟化
深入了解OSI模型:计算机网络的七大层次
OSI模型 OSI模型是一个网络通信的概念模型,用于描述计算机网络中各个不同层次之间的通信和功能。它将网络通信分为七个不同的层次,每个层次负责不同的任务,使得网络通信的设计、开发和管理更加模块化和可维护。以下是OSI模型的七个层次以及它们的主要功能: 1、物理层(Physical Layer): 功能:处理物理传输介质上的原始比特流,确保数据在传输媒体上能够以适当的方式传输。 示例设备:集线器、中继器、网线等。 主要任务:比特编码、电压规范、物理拓扑等。 2、数据链路层(Data Link Layer): 功能:负责将原始比特流分割成帧并添加地址信息,以便在直接连接的设备之间传输数据。 示例设
4095 0
|
10月前
|
Web App开发 编解码 vr&ar
Deepseek解读 | UE像素流送与实时云渲染技术的差别
为了实现UE引擎开发的3D/XR程序推流,开发者通常使用像素流送(Pixel Streaming)技术。它通过WebRTC协议将服务器端渲染的画面传输到客户端,适用于短时、少并发场景。然而,在项目落地阶段,其局限性显现,实时云渲染方案成为更好的选择。Deepseek分析表明,实时云渲染具备高性能分布式渲染、低延迟传输、多平台支持等优势,特别适合高复杂度场景和大规模应用。Paraverse平行云的LarkXR产品,作为领先的实时云渲染解决方案,提供高质量、低延迟的渲染体验,支持多种3D引擎和XR内容格式,具备弹性扩展和成本优化等特点,广泛应用于元宇宙、虚拟仿真等领域。
|
Windows
Windows的mklink使用方法
【5月更文挑战第20天】Windows的mklink使用方法
1219 0
|
负载均衡 网络协议 Linux
|
负载均衡 算法 Ubuntu
ipvsadm命令详解
ipvsadm命令详解
1409 4
|
SQL 数据库 Python
sqlmap的安装及使用教程_sqlmap安装使用教程
sqlmap的安装及使用教程_sqlmap安装使用教程
|
存储 缓存 JSON
Go Modules:Go语言依赖管理的新篇章
Go Modules是Go 1.11引入的依赖管理标准,解决`GOPATH`的依赖冲突问题。
315 1
|
网络协议
wireshark过滤条件
wireshark过滤条件
1380 0
|
缓存 监控 网络协议
dpdk课程学习之练习笔记五(kni理解及测试)
dpdk课程学习之练习笔记五(kni理解及测试)
620 0
|
运维 网络协议 Cloud Native
阿里云SDWAN解决方案部署指南
利用阿里云丰富云网络产品,提供完整的SDWAN企业分支互联/企业上云解决方案。本次SDWAN解决方案部署指导场景以解决企业大陆分支机构、亚太IDC及云上VPC构建企业办公组网为例。意在指导客户在项目部署实施阶段可参考本文自助完成业务上线的搭建。本文内容已经对外披露。
2346 1
阿里云SDWAN解决方案部署指南