linux操作系统常用的两种防火墙如何开放端口

我是深水的猫 / 2023-08-10 / 原文

在Linux系统中,防火墙是用于保护计算机安全的重要组成部分。默认情况下,大多数Linux发行版都会自带一个防火墙,如iptables、firewalld等。当我们需要运行特定的应用程序或服务时,需要在防火墙中开放相应的端口。

iptablesfirewalld 都是用于配置和管理 Linux 系统防火墙规则的工具,但它们在功能和使用上有一些区别。下面是它们之间的主要区别以及目前系统常用的情况:

iptables:

  • iptables 是一个传统的 Linux 防火墙管理工具,用于配置基于网络包的防火墙规则。
  • 它使用一系列规则来决定是否允许或拒绝数据包通过网络接口。
  • 配置复杂,需要手动编写规则。
  • 每次更新规则后,需要重新加载整个防火墙规则集。

firewalld:

  • firewalld 是一个相对新的动态防火墙管理工具,旨在简化防火墙配置。
  • 它使用服务、区域和端口等抽象概念,使配置更易于理解和管理。
  • 可以实时添加、修改和删除规则,而无需重新加载整个规则集。
  • 支持网络接口的动态变化,适用于移动设备或虚拟化环境。

目前,firewalld 在一些 Linux 发行版中已经成为默认的防火墙管理工具,比如 CentOS 7 及其衍生发行版。这是因为 firewalld 的动态特性和相对易用性,特别适用于那些需要在运行时进行网络配置变化的环境。

但是,在一些情况下,仍然可以选择使用 iptables,特别是在需要更精细的网络包控制时,或者在您更习惯使用传统的规则配置方法时。

总之,firewalld 目前在许多现代 Linux 系统中是常用的防火墙管理工具,但具体的选择取决于您的需求和个人偏好。无论选择哪种工具,都需要对防火墙规则和安全策略有基本的了解。

下面就是Linux系统下如何在防火墙开放指定端口的详细步骤。
  1. 确认防火墙状态

在开始操作之前,首先需要确认防火墙的状态。可以使用以下命令检查当前防火墙是否开启:

sudo systemctl status firewalld    # 检查firewalld状态
sudo systemctl status iptables    # 检查iptables状态

 

  1. 开放指定端口

假设我们需要在防火墙中开放80端口,可以使用以下命令:

对于firewalld:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent    # 将80端口添加到public区域
sudo firewall-cmd --reload    # 重新载入firewalld配置

 

对于iptables:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT    # 开放80端口
sudo service iptables save    # 保存iptables配置
sudo service iptables restart    # 重启iptables服务

 

在这里,--zone=public 表示添加到公共区域,--add-port=80/tcp 表示添加TCP协议的80端口,--permanent 表示将该规则持久化保存。

  1. 检查端口状态

使用以下命令检查特定端口的状态:

对于firewalld:

sudo firewall-cmd --zone=public --query-port=80/tcp

对于iptables:

sudo iptables -L -n | grep 80

 

如果端口已成功开放,则会返回相应的信息。

需要注意,如果使用了多个防火墙,需要在所有防火墙中开放相应端口。