news 2026/10/24 4:13:48

防火墙命令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
防火墙命令

Linux:iptables(老版本,考试最爱考)、firewalld(centos7+)

Windows:netsh advfirewall(高级防火墙,cmd),还有 powershell 的 Set-NetFirewallRule


1. 黑名单(拒绝列表,deny 模式)

  • 规则逻辑:默认所有流量都允许通过,只把坏人写进名单,拒绝名单里的

  • 流程:

    1. 防火墙先放行所有访问

    2. 匹配黑名单:如果源 IP / 目的端口在黑名单里 → 拦住丢弃

    3. 不在黑名单 → 直接允许通行

  • 优点:配置简单,不用大量添加允许规则

  • 缺点:不安全!新的攻击者不在黑名单里,就能直接进来

例子:我只拉黑 192.168.1.100,别的任何人都可以访问

简答背诵:黑名单策略默认允许所有流量,仅禁止列表中指定对象访问。

2. 白名单(允许列表,allow 模式)

  • 规则逻辑:默认全部流量都拒绝,只有写在名单里的才允许放行

  • 流程:

    1. 防火墙默认全部拦住

    2. 匹配白名单:IP / 端口在白名单 → 放行

    3. 不在白名单 → 丢弃

  • 优点:安全性高,未知来源一律进不来(政府、等保核心推荐)

  • 缺点:维护麻烦,新增合法业务,就要手动加到白名单

例子:只允许 192.168.11.2 访问网站服务器,其他 IP 全部拒绝

简答背诵:白名单策略默认拒绝所有流量,仅允许列表中指定对象访问。


Linux iptables 防火墙

Netfilter 是 Linux 内核里的数据包处理框架(内核态),是 Linux 防火墙、NAT 的底层核心,从 Linux 2.4 内核开始正式集成netfilter/...。 简单一句话区分:Netfilter 是内核底层机制;iptables /nftables 是用户态工具,用来给 Netfilter 下发规则。

Netfilter = Linux 内核里面,安在网络通道上的 5 个检查站电脑收包、发包、转发包的时候,数据包一定会路过这几个检查站,检查站可以决定:放行、扔掉、改 IP。

iptables 四表五链,考试只考 filter 表(默认,包过滤),INPUT 链(访问本机)

数据包经过一个检查站(钩子)的时候,如果这个钩子上有多个表的链,固定顺序:mangle 先跑 → nat 再跑 → filter 最后跑

  1. mangle(修改包头、打标记)优先级最高,最先处理

  2. nat(改 IP、端口)中间

  3. filter(放行 / 丢弃,防火墙过滤)最后

核心原理:5 个钩子(Hook)

它在 Linux 网络栈数据包流转的关键位置预埋了 5 个挂载点(Hook),内核模块可以在这些点注册回调函数;数据包经过钩子时,就会执行注册的处理逻辑(放行、丢弃、修改地址等):

  1. PREROUTING:数据包刚进入网卡、路由决策之前(常用于 DNAT,修改目标 IP)

  2. INPUT:路由判断包发给本机,送到本机应用前(入站防火墙过滤)

  3. FORWARD:路由判断需要转发到别的机器(转发包过滤)

  4. OUTPUT:本机程序向外发出的包、路由决策前(出站过滤)

  5. POSTROUTING:包即将离开网卡、路由之后(常用于 SNAT / 地址伪装)

  1. PREROUTING:快递刚送到中转站大门,还没决定送给谁✅ 在这里可以改快递收件地址(DNAT、端口映射)

  2. INPUT:查完,发现这个快递是给中转站自己的,送到这里检查 ✅ 防火墙拦外面连本机的请求,比如别人连你 ssh

  3. FORWARD:快递不是给本机的,要中转,继续送到别的地方✅ 路由器、虚拟机、Docker 转发流量就在这过滤

  4. OUTPUT:中转站自己往外发快递,出发前检查 ✅ 控制本机程序往外联网,比如不让某个软件访问外网

  5. POSTROUTING:快递马上要送出大门了,最后一关 ✅ 改寄件人地址(SNAT,家用电脑共享上网靠这个)

数据包流向简图:

支持的动作(Verdict),钩子回调处理完包之后返回判决:

  1. NF_ACCEPT✅ 放行 这个快递没问题,继续往下一个检查站走,网络流程正常继续。 比如:PREROUTING 放行 → 继续去做路由判断;INPUT 放行 → 交给本机程序。

  2. NF_DROP🗑️ 丢弃 直接扔进垃圾桶,到此结束,流程终止。 不会给对方回任何消息(不像 REJECT 会发拒绝包),对方只会一直等、最后超时。

  3. NF_QUEUE📤 交给用户态程序 内核先把这个包 “暂停、打包放到队列里”,不自己决定放行还是丢弃, 扔到用户空间(我们写的 C 程序、一些入侵检测软件),由外面的程序判断怎么处理。

例子:Snort、一些流量审计、自定义风控程序就是用 NF_QUEUE 拿包

  1. NF_STOLEN✋ 内核模块扣下包 这个包归当前这个内核模块接管了,原来的网络栈直接不管这个包了。 和 DROP 不一样:不是丢掉,是模块自己拿去用(比如自己构造回复包),主线流程不再走。

通俗说:包被 “抢走”,网络栈后续所有步骤全部跳过。

  1. NF_REPEAT🔁 再来一遍在当前这个检查站,再重新跑一次这个钩子的处理函数很少用。相当于:刚检查完一遍,现在回头再重新执行一遍当前这个检查逻辑。 ⚠️ 用不好直接死循环,一般开发内核模块才会碰到,日常写 iptables 基本见不到。

一条链里面,可以写很多条规则,规则是从上到下按顺序比对举个例子:filter 表的 INPUT 链,里面写了 3 条规则

规则1:源IP 192.168.1.10 放行 规则2:tcp 22端口 记录日志(LOG) 规则3:tcp 22端口 丢弃(DROP) 默认策略:全部放行(ACCEPT)

匹配流程(重点区分【终结动作】和【非终结动作】)

  1. 数据包进来,先拿包对比规则 1

    • 匹配上,且动作是 ACCEPT:停止!这条链不再往下看别的规则,包直接放行

    • 匹配上,动作是 LOG:LOG 只是打日志,不是结束!做完日志,继续往下匹配规则 2、3

  2. 和规则 1 不匹配 → 去对比规则 2

  3. 和规则 2 不匹配 → 对比规则 3

  4. 如果全部规则都不匹配→ 执行这条链的【默认策略 POLICY】

✅ 终结动作(匹配到就停止本链后续规则): ACCEPT、DROP、REJECT ✅ 非终结动作(做完继续往下匹配): LOG、MARK、TOS(mangle 里常用)

最容易踩坑一句话:LOG 只是打印日志,不会拦包,不会停止匹配!


第四层:iptables 完整语法拆解

iptables [-t 表名] 命令 [链名] [匹配条件] -j 动作

逐个拆开:

  1. [-t 表名]:可选,不写默认-t filter可选:filter /nat/mangle

  2. 【命令】告诉 iptables 你要干什么(增删改查

  3. 【链名】INPUT / OUTPUT / FORWARD / PREROUTING / POSTROUTING

  4. 【匹配条件】用来描述 “是什么样的包”-p tcp/udp/icmp协议--dport 22目标端口--sport源端口-s 源IP源地址-d 目的IP目标地址

  5. -j 动作jump,匹配成功之后执行什么(就是前面说的终结 / 非终结动作)

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

翻译: 在 filter 表,INPUT 链,追加一条规则:匹配 tcp 协议、目标端口 22 的包,匹配成功就放行。


iptables 参数大全

语法总框架:iptables [-t 表名] 命令参数 链名 [匹配条件] -j 动作

默认不写-t就是 filter 表(过滤表,考试最多) 底层是 netfilter,iptables 只是配置工具!

一、表参数-t(必考!4 张表)

参数

表名

作用

考试重点

-t filter

filter 过滤表

包放行 / 丢弃

默认表,INPUT/OUTPUT/FORWARD 链,包过滤防火墙

-t nat

nat 地址转换表

改 IP:SNAT/DNAT

PREROUTING、POSTROUTING、OUTPUT;端口映射、上网共享

-t mangle

mangle 修改表

修改报文头部 TTL、标记

修改数据包,软考偶尔选择题

-t raw

raw 表

关闭连接跟踪

优先级最高,考的最少

二、【命令参数:对链 / 规则做增删改查】(高频考点)

参数

全称

含义

例子 + 考点坑

-A

Append

追加规则,放到这条链最后面

iptables -A INPUT ...⚠️ 坑:追加在末尾,前面命中就不会走这条

-I

Insert

插入规则,默认插到第 1 位(最前面),可指定序号

-I INPUT 3插到第 3 行✅ 优先级最高,新规则优先匹配

-D

Delete

删除规则,两种写法:匹配内容 / 行号

-D INPUT 1删除 INPUT 第一条

-R

Replace

替换指定序号的规则

考得少

-L

List

列出链里所有规则

常搭配-n -v --line-numbers

-F

Flush

清空链所有规则

iptables -F清空 filter 全部链;⚠️ 不改变默认策略 - P!

-P

Policy

设置链默认策略(没有任何规则命中时执行)

-P INPUT DROP默认拒绝所有入站✅ 软考大题高频:默认策略 ACCEPT/DROP

-N

New-chain

新建自定义链

了解即可

-X

Delete-chain

删除空的自定义链

不能删内置 5 条链

-Z

Zero

清零数据包、字节计数器

查看配套参数(和 - L 一起用)

  • -n:numeric,数字显示 IP、端口,不反向解析域名(考试写配置必带)

  • -v:verbose,详细,显示包数量、字节

  • --line-numbers:显示规则行号(删规则要用行号)

标准查看命令:iptables -L -n -v --line-numbers

三、【匹配条件参数:用来匹配数据包】(最重要,下午案例必考)

参数

全称

含义

示例

-s

--source

源 IP / 源网段

-s 192.168.1.0/24! -s 10.0.0.1取反:不是这个源 IP

-d

--destination

目的 IP / 目的网段

-d 10.0.0.10

-i

--in-interface

入网卡(数据包从哪个网卡进来)

-i eth0⚠️ INPUT 链只能用 - i,不能用 - o

-o

--out-interface

出网卡(数据包从哪个网卡出去)

-o eth1⚠️ OUTPUT 链只能用 - o,不能用 - i

-p

--protocol

协议

-p tcp/-p udp/-p icmp/-p all

👉 TCP/UDP 专属扩展匹配(必须 -p tcp 之后才能写!)

参数

含义

--sport

source-port 源端口

--dport

destination-port目的端口(最常考)

--syn

只匹配 TCP SYN 握手包(新建连接)

例子:-p tcp --dport 22匹配目标 22 端口 ssh

👉 扩展模块-m(match,加载匹配模块)

模块

参数

作用

-m multiport

--dports 22,80,443

多端口匹配,逗号分隔

-m state

--state NEW,ESTABLISHED,RELATED,INVALID

连接状态匹配!软考超级高频

状态解释: NEW:新连接;ESTABLISHED:已经建立好的连接;RELATED:关联连接;INVALID:无效包

四、-jjump 动作目标(匹配之后干什么,必考)

-j就是 jump,命中规则跳转执行这个动作

动作

含义

考试说明

ACCEPT

放行、允许通过

允许包继续走

DROP

直接丢弃,不回任何响应

无声丢掉,对方超时

REJECT

拒绝,返回拒绝报文(比如 ICMP 不可达)

告诉对方被拒绝,和 DROP 区分选择题

LOG

记录日志,不拦包,打完日志继续匹配下一条

只是写日志

RETURN

跳出当前自定义链,回到上一级链继续匹配

SNAT / DNAT

nat 表动作,改源 / 目的 IP

只有 nat 表能用

✅ 选择题坑:DROP 和 REJECT 的区别! DROP:悄悄丢包,对方一直等超时;REJECT:明确回复拒绝


拿这条举例:

iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
  1. -A INPUT-A = Append 追加规则;INPUT:这条规则给 INPUT 链(管进本机的包) 👉 意思:把这条规则加到【入站检查清单】末尾

  2. -i eth0-i = input interface 入网卡 👉 包是从 eth0 这块网卡进来的

  3. -p tcp-p = protocol 协议 👉 这个数据包是 TCP 协议(SSH、网页都是 tcp)

  4. -s 192.168.1.0/24-s = source 源 IP 👉 发这个包的机器,IP 属于 192.168.1.0 这个网段

  5. --dport 22--dport = destination port 目标端口 👉 这个包想要访问本机的22 端口(ssh 服务)

  6. -j ACCEPT-j = jump,匹配上就跳转到这个动作 👉 满足上面所有条件:放行

✅ 整句人话:凡是从 eth0 网卡进来、tcp、来自 192.168.1.0/24 网段、想要访问本机 22 端口的包,直接放行。

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT
  1. -A OUTPUT加到 OUTPUT 链,OUTPUT 管本机往外发出去的包

  2. -o eth0-o = output interface 出网卡 👉 包要从 eth0 网卡发出去

  3. -p tcptcp 协议

  4. --sport 22--sport = source port 源端口 👉这个包是本机的 22 端口发出去的(ssh 服务给对方回消息)

  5. -j ACCEPT放行

✅ 整句人话:本机从 22 端口发出、走 eth0 网卡出去的 tcp 包,放行。


最容易混淆一对:--dport 和 --sport(重点!)

客户端(192.168.1.10)连服务器 ssh:

  • 客户端发请求:客户端随便开一个端口 →去找服务器的 22 端口这个包:--dport 22(目标是 22),走 INPUT

  • 服务器回复:服务器从自己的 22 端口往外回信 → 发给客户端随机端口 这个回复包:--sport 22(来源是 22),走 OUTPUT

画图简化: 客户端 →【dport 22】→ Linux 主机(INPUT) 客户端 ←【sport 22】← Linux 主机(OUTPUT)


Windows 防火墙命令

前置要求:所有命令必须【管理员】CMD / PowerShell运行,否则权限不足报错。 两套体系:

  1. netsh advfirewall:CMD 传统命令,运维、批处理脚本最常用(重点)

  2. PowerShell*-NetFirewallRule:面向对象,适合高级脚本、筛选查询 三个配置配置文件(profile)

domain 域:公司加了域的电脑,家用基本不用管

private 专用:连家里 wifi、内网(信任的网络)

public 公网:外面咖啡馆、公共 wifi(危险网络,默认最严格)

netsh advfirewall 整体结构

netsh advfirewall ├─ firewall # ✅ 最常用:出入站端口、程序放行/阻断规则(我们90%操作在这里) ├─ consec # 连接安全规则(IPsec 加密、认证) ├─ mainmode # IKE 主模式协商(IPsec底层) ├─ monitor # 监控:当前连接、安全关联SA ├─ set / show # 全局开关、默认策略、查看状态 ├─ export / import # 备份、恢复防火墙策略 ├─ reset # 重置防火墙到出厂默认 └─ dump # 导出全部配置脚本

1. 全局开关 & 基础状态(set /show)

查看当前状态

:: 查看当前激活的配置文件 netsh advfirewall show currentprofile :: 查看所有3套配置文件防火墙状态、默认策略 netsh advfirewall show allprofiles :: 查看全局设置 netsh advfirewall show global

开启 / 关闭防火墙(按配置文件)

⚠️不推荐直接关公网防火墙,安全风险极高

:: 开启所有配置文件防火墙 netsh advfirewall set allprofiles state on :: 关闭全部(慎用!) netsh advfirewall set allprofiles state off :: 单独关闭公网,内网域、专用保持开启 netsh advfirewall set publicprofile state off

重置防火墙(出问题乱了,一键恢复出厂)

netsh advfirewall reset

👉 意思:删掉你自己加的所有放行 / 拉黑规则,变回刚装系统的样子

设置默认策略(非常重要)

action=allow|block:没有匹配任何规则时,默认怎么处理流量

:: 推荐安全基线:入站默认拒绝,出站默认允许(Windows默认) netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound :: 宽松模式:入站出站全部默认放行(服务器测试临时用,不建议长期) netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound

备份 & 恢复 & 重置

:: 导出全部防火墙策略 netsh advfirewall export "D:\fw.wfw" :: 导入恢复 netsh advfirewall import "D:\fw.wfw" :: 一键重置防火墙(删除所有自定义规则,恢复系统默认,无确认) netsh advfirewall reset

二、核心:netsh advfirewall firewall 规则【增删改查】

通用语法:

netsh advfirewall firewall add rule [参数] netsh advfirewall firewall set rule [参数] netsh advfirewall firewall delete rule [参数] netsh advfirewall firewall show rule [参数]

🔑 核心参数表(必须记熟)

表格

参数

可选值

说明

name=

字符串,带空格要引号

规则唯一名称,删改查全靠这个,建议英文不要中文空格乱码

dir=

in/out

in = 入站(别人连本机);out = 出站(本机往外连)

action=

allow/block/bypass

allow 放行;block 阻断;bypass 绕过(IPsec 认证专用)

protocol=

tcp/udp/icmpv4/any/ 数字

协议号,255=any 全部

localport=

单个端口、范围、逗号分隔

80;1000-2000;80,443,3306

remoteport=

远程端口

出站规则才常用

localip=

IP / 网段

本机绑定 IP,默认 any

remoteip=

IP、网段、localsubnet

允许 / 拒绝哪些远端 IP;192.168.1.0/24

program=

程序完整路径

按程序放行,不是端口

enable=

yes/no

是否启用这条规则

profile=

any,domain,private,public

在哪套网络配置生效,默认 any 全部

description=

备注

注释

✅ 常用 add rule 示例(高频)

  1. 放行入站 TCP 80 端口(web 服务)

netsh advfirewall firewall add rulename="开放80端口" dir=in action=allow protocol=TCP localport=80

  1. 只允许内网 192.168.1.0/24 访问 3389 远程桌面,公网拒绝

netsh advfirewall firewall add rule

name="内网才能连3389"

dir=in

action=allow

protocol=TCP

localport=3389

remoteip=192.168.1.0/24

  1. 阻断本机向外访问某个 IP(出站拉黑)

netsh advfirewall firewall add rule

name="拉黑这个地址"

dir=out

action=block

remote ip=203.0.113.10

  1. 放行某个 exe 程序(不限制端口)

netsh advfirewall firewall add rule name="放行服务端程序" dir=in action=allow program="D:\test\server.exe"

  1. 放行 ICMP(ping,别人能 ping 通本机)

netsh advfirewall firewall add rule name="允许ping" dir=in action=allow protocol=icmpv4

✅ 查询 show rule

:: 列出所有规则(简略)
netsh advfirewall firewall show rule name=all

:: 查看指定规则详情
netsh advfirewall firewall show rule name="Allow_TCP80" verbose

:: 只看启用的规则
netsh advfirewall firewall show rule name=all enabled=yes

✅ 修改 set rule

不能改 name,只能改其他属性;name 用来定位旧规则

:: 把上面RDP规则,改成只允许192.168.1.5访问 netsh advfirewall firewall set rule name="RDP_Only_LAN" new remoteip=192.168.1.5 :: 临时禁用一条规则,不删除 netsh advfirewall firewall set rule name="Allow_TCP80" new enable=no

✅ 删除 delete rule

:: 按名字删单条 netsh advfirewall firewall delete rule name="Allow_TCP80" :: 删除所有名字带RDP的(慎用) netsh advfirewall firewall delete rule name=all | findstr RDP

三、monitor 监控(排查排错)

:: 查看当前活跃的防火墙连接、安全关联 netsh advfirewall monitor show all netsh advfirewall monitor show mmsa netsh advfirewall monitor show qmsa

四、PowerShell 防火墙命令(现代方案,适合自动化)

  • New-NetFirewallRule新建

  • Get-NetFirewallRule查询

  • Set-NetFirewallRule修改

  • Remove-NetFirewallRule删除

  • Get-NetFirewallPortFilter / Get-NetFirewallApplicationFilter过滤端口、程序

# 放行TCP 80入站 New-NetFirewallRule -DisplayName "Allow_TCP80_PS" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow # 查询所有入站允许规则 Get-NetFirewallRule -Direction Inbound -Action Allow # 禁用规则 Set-NetFirewallRule -DisplayName "Allow_TCP80_PS" -Enabled False # 删除 Remove-NetFirewallRule -DisplayName "Allow_TCP80_PS"

PowerShell 优势:可以管道筛选,比如批量找出所有开放 3389 的规则:

Get-NetFirewallPortFilter | Where-Object {$_.LocalPort -eq 3389} | Get-NetFirewallRule

五、consec 连接安全规则(IPsec,网络安全工程师考点)

consec= connection security,做流量加密、身份认证(不是放行端口),配合防火墙规则使用;mainmode 是 IKE 第一阶段协商参数。

:: 新建IPsec规则:两端必须认证 netsh advfirewall consec add rule name="IPsec_Auth" endpoint1=any endpoint2=any action=requireinrequestout

六、重要避坑 & 原理(考试 / 实操必看)

  1. 规则匹配顺序:从上往下匹配,匹配到就停止;block 规则要写在 allow 前面,否则会被放行规则优先命中

  2. 规则名字区分大小写吗?netsh 不区分,但尽量统一命名,中文名字容易乱码,不推荐

  3. remoteip写法:192.168.1.0/24、localsubnet(本网段)、dns、dhcp、wins

  4. 关闭防火墙≠关闭规则;关闭防火墙是整个引擎不工作,所有流量直接放行

  5. 端口放行只是允许流量进入,程序本身必须监听该端口,否则依然连不上

  6. 域环境:可以把规则存储在 GPO:netsh advfirewall set store gpo="域名\GPO名",域下发策略

七、速查口诀(备考软考信息安全工程师)

advfirewall 三配置文件:域、专用、公网 firewall 管端口程序,consec 管 IPsec 加密 add 增 set 改 show 查 delete 删 dir in 入 out 出,allow 放行 block 拦 默认策略:入拒出放是基线 export 备份 reset 重置,管理员权限是前提

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/24 4:12:59

选门窗别只看品牌知名度,得先看你住哪儿

选门窗别把主流品牌当标准答案,得先看你住哪儿。大宅看重综合性能,就盯派雅和罗兰西尼;临街怕吵,皇派和致尚主攻隔音气密;高层或沿海怕台风,新标和亿合的抗风压防坠落更对症。北方重保温看轩尼斯和飞宇的K值…

作者头像 李华
网站建设 2026/10/24 4:11:49

技术解析:知识产权实缴中,专利/软著的权属瑕疵类型与排查

在科技型企业进行无形资产出资增资的实务中,知识产权(专利、软著)的权属状况是会计师事务所验资和工商备案审查的核心。权属存在瑕疵,将直接导致出资无效或评估报告被驳回。本文从技术实务角度,梳理常见的权属瑕疵类型…

作者头像 李华
网站建设 2026/10/24 4:11:07

在哪里可以租到 RTX 4090?渠道、价格与两个规格的区分

4090 大概是租得比较多的一张卡。显存 24GB,一小时一块二。 但很多人不知道一件事:叫 4090 的机器,实际有两种规格——24GB 和 48GB。价格差近一倍,能干的活也不一样。 这篇先说哪里能租,再说这两种规格怎么区分&#…

作者头像 李华
网站建设 2026/10/24 4:11:05

园区运营的一天,卡在哪两个地方

周跟一个园区运营岗的朋友吃饭,他吐槽说每天一半时间不是在干活,是在找数。老板早上问一句本月还有多少空房能租,他得翻三个表、问两个同事,凑到中午才回得上。我听着挺熟的,这几年做园区数字化,见过太多这…

作者头像 李华