一篇搞懂 Linux 交换空间、Firewalld 区域规则、端口转发与安全加固
📅 2026/8/4 3:25:06
👁️ 阅读次数
📝 编程学习
Linux交换空间+Firewalld防火墙 知识点整理精简版
一、存储器层级与虚拟内存、Swap交换空间
1. 存储器金字塔(速度从上到下递减、成本递减、容量递增)
- CPU寄存器:CPU内置,速度最快,临时存放运算数据;
- CPU高速缓存Cache:SRAM制作在CPU内部,分为L1/L2/L3,缓存常用数据,缓解CPU与内存速度差;
- 物理内存(RAM):程序运行主空间,最小单位页Page,标准4KiB;带宽公式:
带宽=频率×位宽÷8; - 磁盘等外存:永久存储,速度最慢、容量最大。
2. MMU与虚拟地址核心作用
MMU(内存管理单元)硬件完成虚拟地址→物理地址映射。
CPU不直接访问物理地址原因:
- 进程频繁创建销毁会产生大量内存碎片,无法保证物理地址连续;
- 每个进程独享连续虚拟地址,MMU做映射,进程隔离、内存利用率更高;
- 虚拟内存 = 物理内存 + Swap交换空间。
3. Linux Swap交换空间
核心作用
物理内存不足时,将长期闲置内存页写入磁盘Swap,腾出物理内存给活跃进程;缺页时再把Swap数据换回内存,等同于Windows虚拟内存pagefile.sys。
⚠️ 磁盘速度远低于内存,Swap仅应急,扩容物理内存才是最优方案。
标准Swap规划参考
| 物理内存 | 常规Swap大小 | 休眠Swap大小 |
|---|---|---|
| ≤2GiB | 2倍内存 | 3倍内存 |
| 2~8GiB | 等于内存 | 2倍内存 |
| 8~64GiB | ≥4GiB | 1.5倍内存 |
| >64GiB | ≥4GiB | 不建议休眠 |
常用Swap实操命令
- 查看内存与Swap:
free -m(-m以MB显示) - 分区创建Swap
# 1.新建swap分区parted/dev/sdb mklabel gptparted/dev/sdb unit MiB mkpart swap01 linux-swap12049# 2.格式化swapmkswap/dev/sdb1# 3.临时激活,-p指定优先级(数值越大优先级越高)swapon-p4/dev/sdb1# 4.查看swap设备swapon-s# 5.卸载swapswapoff /dev/sdb1# 6.永久挂载/etc/fstabUUID=xxx swap swappri=400swapon-a#加载fstab所有swapswapoff-a#卸载所有swap二、防火墙基础与Netfilter架构
1. 防火墙分类
- 保护范围:主机防火墙、局域网网络防火墙;
- 实现方式:硬件防火墙、软件防火墙(iptables/firewalld);
- 协议层级:网络层包过滤防火墙、应用层WAF防火墙。
2. Netfilter内核子系统
Linux内核底层数据包过滤框架,上层工具:
iptables:IPv4包过滤;ip6tables:IPv6;arptables:ARP防护;ebtables:二层链路过滤;nftables:新一代统一框架,firewalld默认后端。
3. 静态防火墙vs动态防火墙
- 静态(iptables):修改规则需全量重载,断连接;
- 动态(firewalld):增量更新规则,不中断已有TCP连接,CentOS7+默认防火墙。
4. firewalld基础认知
- 底层依赖Netfilter/nftables,只是规则管理工具;
- Runtime临时模式:不加
--permanent,立即生效,重启失效; - Permanent永久模式:加
--permanent,写入配置,需--reload生效; --complete-reload:全量重载,断开所有现有连接,故障急救使用;--runtime-to-permanent:将当前临时规则固化为永久规则。
三、Firewalld区域Zone
1. 9大常用Zone(优先级从严到松)
| 区域 | 策略 | 适用场景 |
|---|---|---|
| drop | 丢弃所有入站包,无响应 | 最高安全防护 |
| block | 拒绝入站,返回不可达提示 | 服务器防扫描 |
| dmz/external | 仅放行SSH,外网边界 | 外网服务器 |
| public | 默认区域,放行ssh、dhcpv6-client | 绝大多数服务器默认 |
| work/home/internal | 放行ssh、samba、mdns | 内网办公、家庭局域网 |
| trusted | 放行所有流量 | 本机lo回环网卡 |
2. 数据包匹配Zone顺序
- 源IP绑定Zone → 2. 网卡绑定Zone → 3. 默认public区域。
3. Zone基础管理命令
firewall-cmd --get-zones#查看所有区域firewall-cmd --get-default-zone#查看默认区域firewall-cmd --set-default-zone=public#修改默认区域firewall-cmd --get-active-zones#查看正在使用的区域firewall-cmd --list-all#查看默认区域完整规则firewall-cmd --list-all--zone=home#查看指定区域规则四、firewalld常用规则管理
1. 源地址source、网卡interface绑定
#网段绑定home区域firewall-cmd --add-source=10.1.1.0/24--zone=home#网卡绑定区域firewall-cmd --add-interface=ens32--zone=public2. 服务service管理(推荐,比端口更易维护)
firewall-cmd --add-service=http--permanent#永久放行80firewall-cmd --remove-service=ssh#临时关闭sshfirewall-cmd --list-services#查看放行服务firewall-cmd--reload3. 端口port管理
firewall-cmd --add-port=8080/tcp--permanentfirewall-cmd --remove-port=5900/tcp firewall-cmd --list-ports4. 地址伪装masquerade(SNAT内网共享上网)
内网主机以网关公网IP访问外网,开启后才能做端口转发:
firewall-cmd --add-masquerade firewall-cmd --query-masquerade5. 端口转发forward-port(DNAT)
语法:port=源端口:proto=协议:toport=目标端口:toaddr=目标IP
#本机8000转发到本机80firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80#本机1022转发到内网10.1.1.11:22firewall-cmd --add-forward-port=port=1022:proto=tcp:toport=22:toaddr=10.1.1.116. ICMP(ping)管控
- icmp-block:全局禁用echo-request,所有人无法ping,无白名单;
firewall-cmd --add-icmp-block echo-request--permanent- icmp-block-inversion:默认禁止所有ping,富规则添加IP白名单。
7. 富规则rich-rule(最高优先级,精细化自定义)
通用语法:rule [源地址] [目的地址] 服务/端口/icmp 日志/审计 accept/reject/drop
常用模板:
#1. 禁止所有pingfirewall-cmd --add-rich-rule='rule protocol value=icmp drop'#2. 仅允许10.1.8.10 ping本机firewall-cmd --add-rich-rule='rule family=ipv4 source address="10.1.8.10" icmp-type echo-request accept'#3. 限速:10.1.8.0/24访问http每秒最多3次并记录日志firewall-cmd --add-rich-rule'rule family="ipv4" source address="10.1.8.0/24" service name="http" log prefix="http-limit" limit value="3/s" accept'8. direct直接规则
兼容iptables语法,优先级高于所有firewalld规则,用于底层深度管控。
9. panic紧急模式
firewall-cmd --panic-on#全网断流,防黑客攻击firewall-cmd --panic-off#恢复网络五、实战案例完整脚本
案例1:禁止10.1.8.10 ping本机
#恢复默认icmp模式firewall-cmd--permanent--remove-icmp-block-inversion firewall-cmd--permanent--remove-icmp-block echo-request#添加拒绝规则firewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="10.1.8.10" icmp-type echo-request reject'firewall-cmd --complete-reload案例2:仅允许10.1.8.10 ping本机
#开启ICMP反转,默认拒绝所有pingfirewall-cmd--permanent--add-icmp-block-inversion#添加白名单放行firewall-cmd--permanent--add-rich-rule='rule family=ipv4 source address="10.1.8.10" icmp-type name="echo-request" accept'firewall-cmd --complete-reload六、运维常用速记
- 防火墙永久配置标准写法:
--permanent添加规则 + firewall-cmd --reload; - 规则冲突优先级:富规则 > direct规则 > 区域普通规则;
- Swap过高使用率优先排查内存泄漏,不要盲目扩容Swap;
- 公网服务器常规加固:默认drop不必要端口、限制SSH白名单、禁ping、开启日志审计。
编程学习
技术分享
实战经验