0

0

如何设置Linux防火墙规则?ufw与firewalld配置教程

P粉602998670

P粉602998670

发布时间:2025-07-07 09:57:02

|

799人浏览过

|

来源于php中文网

原创

linux防火墙规则设置的核心在于选择合适的工具并正确配置允许或阻止的流量。1.首选工具为ufw或firewalld,前者适用于debian/ubuntu系统,后者多用于centos/rhel系统;2.ufw默认阻止所有入站流量、允许出站流量,启用后需手动开放ssh端口(如22/tcp)及其他服务端口(如80/tcp、443/tcp),也可通过命令删除特定规则;3.firewalld需手动启动并设置开机自启,使用--permanent参数添加或移除服务或端口,并通过重新加载使配置生效;4.高级配置如基于ip的访问控制,ufw可通过allow/deny from指定源地址,firewalld则需创建zone并绑定网段与接口;5.常见错误包括误封ssh端口导致无法连接及更改未生效,应确保ssh开放且配置重载。

如何设置Linux防火墙规则?ufw与firewalld配置教程

Linux防火墙规则的设置,核心在于允许或阻止特定的网络流量进出你的系统。这可以通过 ufwfirewalld 这两个工具来实现,选择哪个取决于你的发行版和个人偏好。ufw 通常更简单易用,而 firewalld 提供了更丰富的功能。

如何设置Linux防火墙规则?ufw与firewalld配置教程

解决方案

如何设置Linux防火墙规则?ufw与firewalld配置教程

首先,你需要选择使用 ufw 还是 firewalld。大多数 Debian/Ubuntu 系统默认安装了 ufw,而 CentOS/RHEL 系统则通常使用 firewalld

使用 UFW (Uncomplicated Firewall)

如何设置Linux防火墙规则?ufw与firewalld配置教程
  1. 安装 UFW (如果未安装):

    sudo apt update
    sudo apt install ufw
  2. 启用 UFW:

    sudo ufw enable

    默认情况下,ufw 会阻止所有传入连接,允许所有传出连接。

  3. 允许 SSH 连接 (重要!):

    sudo ufw allow ssh
    # 或者,更明确地指定端口:
    sudo ufw allow 22/tcp

    如果你使用非标准 SSH 端口,请将 22 替换为你的端口号。否则,你可能会把自己锁在服务器之外。

  4. 允许其他服务 (例如 HTTP/HTTPS):

    Warp
    Warp

    新一代的终端工具(内置AI命令搜索)

    下载
    sudo ufw allow http
    sudo ufw allow https
    # 或者,使用端口:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
  5. 阻止特定端口:

    sudo ufw deny 21/tcp  # 阻止 FTP
  6. 查看 UFW 状态:

    sudo ufw status
    sudo ufw status verbose # 显示更详细的信息
  7. 删除规则:

    sudo ufw delete allow 80/tcp # 删除允许 80 端口的规则

使用 Firewalld

  1. 安装 Firewalld (如果未安装):

    sudo yum install firewalld  # CentOS/RHEL
    sudo apt install firewalld  # Debian/Ubuntu (可能需要手动启动)
  2. 启动 Firewalld 并设置为开机启动:

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
  3. 允许 SSH 连接:

    sudo firewall-cmd --permanent --add-service=ssh
  4. 允许其他服务 (例如 HTTP/HTTPS):

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
  5. 允许特定端口:

    sudo firewall-cmd --permanent --add-port=8080/tcp  # 允许 8080 端口
  6. 阻止特定端口:

    sudo firewall-cmd --permanent --remove-port=21/tcp  # 阻止 FTP
  7. 查看 Firewalld 状态:

    sudo firewall-cmd --state
    sudo firewall-cmd --list-all # 显示所有规则
  8. 重新加载 Firewalld 配置 (使更改生效):

    sudo firewall-cmd --reload

为什么要设置防火墙规则?

设置防火墙规则是为了保护你的 Linux 系统免受未经授权的访问和潜在的网络攻击。没有防火墙,你的系统就像一扇敞开的大门,任何人都可能进入。

UFW 和 Firewalld 的区别是什么?我应该选择哪个?

ufw 相对简单,易于学习和使用,适合个人用户或对防火墙配置要求不高的场景。firewalld 更加灵活,功能更强大,适合服务器环境或需要更细粒度控制的场景。firewalld 使用区域 (zones) 的概念,可以针对不同的网络环境应用不同的规则。如果你刚开始接触 Linux 防火墙,建议先从 ufw 入手。

如何配置更复杂的防火墙规则,例如基于源 IP 地址的访问控制?

UFW:

sudo ufw allow from 192.168.1.100 to any port 22  # 允许特定 IP 地址访问 SSH
sudo ufw deny from 10.0.0.0/24 to any port 80  # 阻止特定 IP 地址段访问 HTTP

Firewalld:

首先,你需要创建一个新的 zone (如果需要):

sudo firewall-cmd --permanent --new-zone=internal
sudo firewall-cmd --permanent --zone=internal --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=internal --add-service=ssh
sudo firewall-cmd --reload

然后,你可以将网络接口分配到该 zone:

sudo firewall-cmd --zone=internal --change-interface=eth0 --permanent
sudo firewall-cmd --reload

这些命令允许 192.168.1.0/24 网段的设备访问 SSH 服务,并将 eth0 网卡关联到 internal zone。

防火墙配置错误可能导致什么问题?如何避免?

最常见的问题是意外地阻止了 SSH 访问,导致无法远程连接到服务器。为了避免这种情况,务必在启用防火墙之前允许 SSH 连接。另一个常见问题是忘记重新加载防火墙配置,导致更改没有生效。

在进行任何防火墙配置更改之前,最好先备份当前的配置。对于 ufw,没有直接的备份命令,但你可以手动复制 /etc/ufw 目录。对于 firewalld,配置文件位于 /etc/firewalld 目录下。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1072

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

148

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1017

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1072

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

148

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1017

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux网络安全之防火墙技术汇总
Linux网络安全之防火墙技术汇总

共31课时 | 3.1万人学习

小皮面板使用视频教程
小皮面板使用视频教程

共30课时 | 20.3万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号