Firewalld 防火墙实战指南 + TCPWrapper 七层访问控制

前言

在 CentOS/RHEL 7/8/9 系列系统中,firewalld 已成为默认的动态防火墙管理工具。相比 iptables,firewalld 支持区域化管理、热重载、服务化配置,使用更简单、更安全,同时也能完整实现端口放行、NAT 转发、端口映射等企业常用功能。

为了让你更全面掌握 Linux 防火墙体系,本文在 firewalld 基础上,额外补充 TCPWrapper 七层访问控制 ,形成二层+七层完整防护体系,所有命令均为生产环境可直接使用的标准指令。

一、firewalld 防火墙基础

1. 核心介绍

  • 依赖:firewalld系统服务

  • 管理工具:

    • firewall-cmd

      命令行(最常用)

    • firewall-config

      图形工具

  • 特点:动态更新、支持热重载、区域隔离、简单易用


二、数据过滤(常用操作)

1. 启动并启用 firewalld

复制代码
systemctl unmask firewalld
systemctl start firewalld
systemctl enable firewalld

2. 查看所有区域

复制代码
firewall-cmd --get-zones

常用区域说明:

  • drop

    :直接丢弃(黑名单)

  • block

    :拒绝并返回拒绝包

  • public

    :默认公共区域

  • trusted

    :信任所有(白名单)

3. 查看/设置默认区域

复制代码
firewall-cmd --get-default-zone

4. 查看区域详细规则

复制代码
firewall-cmd --list-all --zone=public

5. 放行服务(永久生效)

复制代码
# 放行 http
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

# 放行 ftp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

6. 放行自定义端口

复制代码
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

7. 禁止 Ping(禁 ICMP 请求)

复制代码
firewall-cmd --permanent --add-icmp-block=echo-request
firewall-cmd --reload

三、NAT 地址转换与端口转发

1. SNAT / 源地址转换(内网共享上网)

开启 IP 伪装(相当于 iptables MASQUERADE):

复制代码
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

查看是否开启:

复制代码
firewall-cmd --list-all
# 看到 masquerade: yes 表示成功

2. DNAT / 端口转发(发布内网服务)

(1)本地端口映射

将本机 8888 → 22 端口:

复制代码
firewall-cmd --permanent --add-forward-port=port=8888:proto=tcp:toport=22
firewall-cmd --reload

(2)远程端口转发(发布内网服务器)

访问本机 6666 → 转发到内网 172.16.100.10:80

复制代码
firewall-cmd --permanent --add-forward-port=port=6666:proto=tcp:toport=80:toaddr=172.16.100.10
firewall-cmd --reload

四、TCPWrapper 七层访问控制

1. 介绍

TCPWrapper 是应用层(七层)防火墙,通过控制"谁能访问哪个服务"实现精细化权限管理。

2. 配置文件

  • /etc/hosts.allow允许规则
  • /etc/hosts.deny拒绝规则

匹配顺序:allow 优先 → 再匹配 deny

3. 配置格式

复制代码
服务名: 客户端IP/网段

示例:

复制代码
# 允许 100 访问 ftp
vsftpd: 192.168.177.100

# 允许整个网段
vsftpd: 192.168.177.0/255.255.255.0

# 允许网段,但排除 10
vsftpd: 192.168.177.0/255.255.255.0 EXCEPT 192.168.177.10

4. 使用前提

服务必须依赖 libwrap.so.0库。

查看命令:

复制代码
ldd /usr/sbin/vsftpd | grep -i wrap

出现 libwrap.so.0表示支持 TCPWrapper。


五、核心要点总结

  1. firewalld 是 CentOS 7+ 默认防火墙

    ,基于区域管理,支持热重载。

  2. 所有永久配置必须加 --permanent,并执行 --reload。

  3. --add-service

    适合标准服务,--add-port适合自定义端口。

  4. NAT 转发只需开启 --add-masquerade,端口转发用 --add-forward-port。

  5. TCPWrapper 是七层访问控制

    ,比防火墙更细粒度,适合 SSH/FTP/Telnet 等服务。

  6. TCPWrapper 生效前提:服务必须加载 libwrap库。

  7. Linux 安全最佳实践:firewalld(网络层)+ TCPWrapper(应用层)双层防护。

相关推荐
栈帧之外3 小时前
【C++】STL之set
开发语言·c++
GHN19878883 小时前
开源小工具按一下空格,什么都看见了
windows
霸道流氓气质3 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
catchadmin3 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
开发语言·php
jimy15 小时前
c++的 Type Traits (二、更详细版本)
开发语言·c++
狗凯之家源码网5 小时前
纯 PHP+MySQL 应用市场系统源码实测!
开发语言·mysql·php
ch6235 小时前
《AI 辅助编程实战:从零跑通一个 Excel 报表生成脚本的踩坑与复盘》
人工智能·python
dishugj5 小时前
系统架构风险点、敏感点和权衡点的概念和区分
java·开发语言
geovindu5 小时前
rust:Memento Pattern(续)
开发语言·后端·设计模式·rust·行为模式·备忘录模
围炉聊科技5 小时前
Windows-MCP 拆解与实测:AI 操作 Windows 这件事——智能体基建系列
windows·llm·dom