linux-Firewalld使用指南

Posted on 2024-11-11 14:37  私有运维  阅读(1203)  评论(0)    收藏  举报

本指南提供了 Firewalld 的核心功能和使用方法涵盖其核心概念、使用方法以及高级技巧。  更高级的功能和更复杂的配置需要参考官方文档和更深入的学习。

1. Firewalld 简介

Firewalld 不是一个独立的防火墙软件,而是 Linux 内核 Netfilter/iptables 系统的一个前端管理工具。它提供了一个更用户友好的界面来管理防火墙规则,简化了直接使用 iptables 的复杂性。Firewalld 支持动态更新,修改规则无需重启服务,并引入了“区域”和“服务”的概念,方便快速切换不同场景的策略和设置服务规则。

2. Firewalld 的安装与管理

Firewalld 通常预装在许多现代 Linux 发行版中(例如 CentOS 7+ 和 Fedora 18+)。可以使用以下命令进行安装和管理:

  • 安装:
sudo yum install firewalld firewall-config firewall-applet  # firewall-config 和 firewall-applet 提供图形界面

  • 启动和启用:
sudo systemctl start firewalld
sudo systemctl enable firewalld

  • 状态检查:
sudo systemctl status firewalld

3. Firewalld 区域 (Zones)

Firewalld 使用“区域”的概念来定义不同的安全策略。每个区域代表一个网络环境,并具有预定义的规则集,控制进出该区域的网络流量。默认区域为 public,其他常用区域包括:

区域名称 描述 默认策略
public 公共区域,不信任外部网络,仅允许选定的入站连接。 drop
drop 最低信任级别,所有入站连接都被丢弃。 drop
block drop 类似,但会返回 ICMP 错误消息。 drop
external 通常用于启用 NAT 伪装的外部网络,不信任外部网络,仅允许选定的入站连接。 drop
internal 内部网络,信任内部网络中的其他计算机,仅允许选定的入站连接。 accept
home 家庭网络,信任家庭网络中的其他计算机,仅允许选定的入站连接。 accept
work 工作网络,信任工作网络中的其他计算机,仅允许选定的入站连接。 accept
dmz 隔离区,允许有限的外部访问。 drop
trusted 最高信任级别,允许所有网络连接。 accept

4.  查看区域信息:

可以使用 firewall-cmd 命令查看区域信息:

  • 查看默认区域:
firewall-cmd --get-default-zone

  • 查看所有区域:
firewall-cmd --get-zones

  • 查看特定区域的详细信息:
firewall-cmd --info-zone=public -v

  • 查看已允许的服务:
firewall-cmd --list-services

  • 查看已允许的端口:
firewall-cmd --list-ports

5.  添加和修改区域:

  • 创建新的区域:
sudo firewall-cmd --permanent --new-zone=myzone

  • 设置默认区域:
sudo firewall-cmd --permanent --set-default-zone=myzone
sudo firewall-cmd --reload  # 重新加载配置

  • 添加服务到区域:
sudo firewall-cmd --permanent --zone=myzone --add-service=http
sudo firewall-cmd --reload

  • 添加端口到区域:
sudo firewall-cmd --permanent --zone=myzone --add-port=8080/tcp
sudo firewall-cmd --reload

  • 移除服务或端口:  使用 --remove-service--remove-port 命令,语法与添加类似。

6.  服务 (Services)

Firewalld 使用“服务”的概念来表示特定的网络服务(例如 HTTP, SSH, DNS)。每个服务都有一个预定义的端口和协议。可以使用 firewall-cmd --get-services 命令查看所有可用的服务。

7.  添加自定义服务:

自定义服务需要创建 XML 文件,通常放在 /etc/firewalld/services 目录下。  一个简单的例子:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>myservice</short>
  <description>My custom service</description>
  <port protocol="tcp" port="1234"/>
</service>

创建文件后,需要重新加载 Firewalld 配置才能生效。

8.  临时规则:

可以使用 --timeout 选项设置临时规则,例如:

sudo firewall-cmd --add-port=22/tcp --timeout=300  # 临时开放端口 22,持续 5 分钟

9.  高级功能:

  • rich rules:  允许创建更复杂的规则,例如基于源 IP 地址、目标 IP 地址、端口、协议等条件进行过滤。

  • Masquerading:  用于实现 NAT 伪装,将内部网络的 IP 地址转换为外部网络的 IP 地址。

  • Forwarding:  允许转发数据包到其他网络。

10. 常用命令总结:

命令 功能
firewall-cmd --help 显示帮助信息
firewall-cmd --version 显示版本信息
firewall-cmd --reload 重新加载配置
firewall-cmd --list-all 列出所有区域的详细信息
firewall-cmd --get-zones 列出所有区域
firewall-cmd --get-services 列出所有已注册的服务

11.  安全注意事项:

  • 谨慎修改防火墙规则,错误的配置可能导致网络中断。

  • 在生产环境中测试规则,避免意外情况。

  • 定期备份配置。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3