firewalld 详解

 一,firewalld 概念

Firewalld 是一个针对 Linux 系统的动态防火墙管理工具,用于管理和配置网络防火墙。它是 Red Hat 和 CentOS 操作系统中默认的防火墙解决方案。

Firewalld 通过使用网络区域(zones)和服务(services)的概念来简化防火墙规则的管理。以下是一些 Firewalld 的关键概念:

- 区域(Zones):Firewalld 将网络划分为不同的区域,每个区域可以有自己的安全策略和防火墙规则。例如,public、internal、dmz 等都是常见的区域名称。每个区域都有默认的防火墙规则集。
- 服务(Services):Firewalld 使用服务来表示特定的应用程序或服务的网络需求。每个服务定义了一组端口和协议,以及与之关联的防火墙规则。例如,http、ssh、ftp 等都是常见的服务名称。服务可以属于特定的区域。
- 防火墙规则(Rules):Firewalld 使用规则来定义允许或拒绝流量的匹配条件。规则可以根据源 IP、目标 IP、协议、端口等参数进行配置。Firewalld 允许根据区域和服务自动设置预定义的规则,也允许用户自定义规则。
- 运行时和永久性配置:Firewalld 的配置可以分为运行时配置和永久性配置。运行时配置仅在当前会话中生效,并且在重新启动后会被重置为永久性配置。永久性配置则在系统重新启动后保持不变。

除了上述概念之外,Firewalld 还提供了一些命令行工具和图形界面工具,用于管理防火墙的配置。例如,firewall-cmd 命令用于通过命令行操作 Firewalld,而 firewall-config 工具提供了一个图形界面来简化配置过程。

Firewalld 提供了更加灵活和动态的方式来管理防火墙规则,使管理员能够根据实际需求轻松调整和更新防火墙策略,同时保持系统的安全性。

二,firewalld 命令

Firewalld 是 Linux 系统中的一个动态防火墙管理工具,提供了一系列的命令来方便地控制防火墙的配置和策略。

以下是关于 Firewalld 命令的详细解释:

  •  `firewall-cmd`:Firewalld 的主要命令行工具,用于配置和管理防火墙。
  •    - `--get-default-zone`:查看默认区域。
  •    - `--get-active-zone`:查看活动区域。
  •    - `--set-default-zone=<zone>`:设置默认区域为 `<zone>`。
  •    - `--reload`:重新加载防火墙配置。
  •    - `--add-service=<service> [--zone=<zone>]`:将 `<service>` 添加到指定区域(默认为 public)的服务列表中。
  •    - `--remove-service=<service> [--zone=<zone>]`:从指定区域(默认为 public)的服务列表中删除 `<service>`。
  •    - `--list-services [--zone=<zone>]`:列出指定区域(默认为 public)的所有服务。
  •    - `--add-port=<port>/[<protocol>] [--zone=<zone>]`:在指定区域(默认为 public)打开指定端口和协议的防火墙。
  •    - `--remove-port=<port>/[<protocol>] [--zone=<zone>]`:关闭指定区域(默认为 public)的指定端口和协议的防火墙。
  •    - `--list-ports [--zone=<zone>]`:列出指定区域(默认为 public)的所有开放端口。
  •    - `--add-source=<source> [--zone=<zone>]`:将 `<source>` 添加到指定区域(默认为 public)的源地址列表中。
  •    - `--remove-source=<source> [--zone=<zone>]`:从指定区域(默认为 public)的源地址列表中删除 `<source>`。
  •    - `--list-sources [--zone=<zone>]`:列出指定区域(默认为 public)的所有源地址。
  •    - `--query-service=<service> [--zone=<zone>]`:查询指定区域(默认为 public)是否允许访问 `<service>`。
  •    - `--query-port=<port>/[<protocol>] [--zone=<zone>]`:查询指定区域(默认为 public)是否允许访问指定端口和协议。
  •    - `--query-source=<source> [--zone=<zone>]`:查询指定区域(默认为 public)是否允许 `<source>` 访问。
  • `firewall-config`:Firewalld 的图形界面工具,用于更方便地配置防火墙。可以在终端中输入 `sudo firewall-config` 来启动。
  •  `firewall-cmd.service`:Firewalld 的服务文件,负责在系统启动时加载防火墙配置。可以使用以下命令控制该服务的状态:
  •    - `systemctl start firewall-cmd.service`:启动服务。
  •    - `systemctl stop firewall-cmd.service`:停止服务。
  •    - `systemctl enable firewall-cmd.service`:设置服务在系统启动时自动启动。
  •    - `systemctl disable firewall-cmd.service`:禁止服务在系统启动时自动启动。

Firewalld 的命令非常丰富,可以实现非常灵活的防火墙策略。但是使用之前,请务必了解规则的含义和影响,并且根据系统需求精确配置。

 三,firewalld 规则持久化

irewalld 提供了一种持久化防火墙规则的方法,以确保在系统重启后仍然生效。可以使用以下步骤来持久化 Firewalld 的规则:

1. 确保 firewalld 服务已经启用,并且正在运行:

   systemctl enable firewalld

   systemctl start firewalld

2. 编辑 Firewalld 规则持久化配置文件 `etc/firewalld/firewalld.conf`:

   sudo vi /etc/firewalld/firewalld.conf

3. 在配置文件中找到并确认 `PersistFirewall=permanent`,确保该行的值设置为 `permanent`,表示启用持久化规则。

4. 保存并关闭配置文件。

5. 对于每个区域(例如 `public`、`trusted`、`home` 等),将当前的防火墙配置保存为永久规则:

   firewall-cmd --zone=<zone> --permanent --add-service=<service>

   firewall-cmd --zone=<zone> --permanent --add-port=<port>/[<protocol>]

   firewall-cmd --zone=<zone> --permanent --add-source=<source>

   注意,`<zone>` 是区域名称,可以是 `public`、`trusted`、`home` 等,`<service>` 是服务名称,`<port>` 是端口号,`<protocol>` 是协议(可选)。

6. 如果需要删除已保存的规则,可以使用相应的 `--remove` 命令:

   firewall-cmd --zone=<zone> --permanent --remove-service=<service>

   firewall-cmd --zone=<zone> --permanent --remove-port=<port>/[<protocol>]

   firewall-cmd --zone=<zone> --permanent --remove-source=<source>

7. 最后,重新加载防火墙配置以使持久化规则生效:

   firewall-cmd --reload

完成以上步骤后,您的 Firewalld 规则将在系统重启后保持不变,并自动应用于防火墙配置。请注意,在修改持久化规则后,需要使用 `firewall-cmd --reload` 命令重新加载配置才能使更改生效。

 四,SElinux 内核防火墙

SELinux 和内核防火墙是 Linux 操作系统中用于增强安全性的两个主要组件。

SELinux 是一个强制访问控制(MAC)系统,它在内核层面实施了一个安全策略来限制进程和用户的访问权限。这种安全策略是基于角色、类型和安全上下文等因素来进行的。与传统的自由访问控制(DAC)系统不同,管理员可以对系统中的每个对象分配一个唯一的安全上下文,并限制其他对象使用这些对象的方式。SELinux 可以保护系统免受许多攻击类型,例如缓冲区溢出、提权攻击、恶意软件等。

内核防火墙是 Linux 内核中的一个网络策略机制,可以限制网络通信的流量。它能够筛选并且修改进出主机的网络数据包。内核防火墙通过规则(或策略)来显式地定义哪些数据包被允许通过,哪些被阻止。例如,您可以配置内核防火墙以仅允许特定 IP 地址的流量通过特定端口,并且拒绝任何来自未授权 IP 地址的流量。内核防火墙旨在控制整个主机的网络通信,而不是仅控制特定应用程序或进程的网络通信。

总之,SELinux 和内核防火墙都是 Linux 操作系统中的关键安全组件,可以帮助保护系统免受未授权的访问和网络攻击。管理员可以根据实际需求选择启用哪个或同时使用两者。

要在Linux系统中持久化关闭 SELinux(setenforce),可以按照以下步骤进行操作:

1. 打开 `selinux` 配置文件以编辑。在大多数发行版中,该文件位于 `/etc/selinux/config`。

   
   sudo vi /etc/selinux/config
 

2. 在打开的文件中,找到并更改 `SELINUX` 的值为 `disabled`,即禁用 SELinux。


   # This file controls the state of SELinux on the system.
  
   SELINUX=disabled
 

3. 保存并关闭文件。

4. 如果您的系统当前正在运行 SELinux,重启系统以使更改生效。


   sudo reboot
 

5. 系统重新启动后,SELinux 将会被持久化关闭。

请注意,禁用 SELinux 可能会降低系统的安全性,因此在执行此操作之前,请确保您对系统的其他安全措施进行了评估和加固,以确保系统的安全性不会受到过大的影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值