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(应用层)双层防护

相关推荐
guygg882 小时前
MATLAB实现Bouc-Wen模型动力响应计算
开发语言·matlab
dddaidai1232 小时前
LlamaIndex
python·ai·rag·llamaindex
aini_lovee2 小时前
基于MATLAB实现行人检测
开发语言·matlab
m0_734949792 小时前
golang如何使用expvar暴露运行时指标_golang expvar运行时指标暴露步骤
jvm·数据库·python
所愿ღ2 小时前
SSM框架-Spring1
java·开发语言·笔记·spring
qq_413847402 小时前
开发者工具怎么看HTML_Elements面板使用指南【操作】
jvm·数据库·python
zh路西法2 小时前
【ROS2多激光雷达融合】基于ROS2的双2D激光雷达点云融合与遮挡剔除方案
c++·python·机器人
qq_372906932 小时前
mysql如何设置密码过期策略_mysql default_password_lifetime
jvm·数据库·python
七颗糖很甜2 小时前
开源雷达NEXRAD Level 3 数据完整获取与 Python 处理教程
大数据·python·算法