开启或关闭Linux实例中的系统防火墙

防火墙是可以帮助计算机在内部网络和外部网络之间构建一道相对隔绝的保护屏障,从而保护数据信息的一种技术。如果服务器开启了防火墙,并设置了屏蔽外界访问的规则,那么在远程连接该服务器时,可能会导致访问失败。本文主要介绍在Linux操作系统中,如何开启或关闭系统防火墙。

操作说明

Linux系统存在不同的发行版本,不同发行版本中开启或关闭系统防火墙的命令不同,请根据现场环境匹配下列发行版本的操作命令。

重要

为避免因使用管理员权限不当造成不可预期的风险,建议您使用ecs-user用户或普通用户操作。如果普通用户没有sudo权限,具体操作,请参见如何为普通用户添加sudo权限

CentOS 7/CentOS Stream 8/Red Hat 7、8/Alibaba Cloud Linux2、3

  • 查看防火墙运行状态

    系统防火墙默认为关闭状态,您可以使用此命令确认防火墙当前状态。

    sudo firewall-cmd --state
    说明
    • not running:系统防火墙为关闭状态。

    • running:系统防火墙为开启状态。

    • 出现报错-bash: firewall-cmd: command not found:表示未安装系统防火墙,若您需开启防火墙,请执行命令sudo yum install firewalld -y安装防火墙,再参考下方操作开启。

  • 开启防火墙

    sudo systemctl start firewalld

    注意:如果您希望实现在每次重开机时自动启动服务,执行如下命令,开启开机自动启动防火墙服务。

    sudo systemctl enable firewalld
  • 关闭防火墙

    sudo systemctl stop firewalld

    注意:如果您不希望实现在每次重开机时自动启动服务,执行如下命令,关闭开机自动启动防火墙服务。

    sudo systemctl disable firewalld

Ubuntu

  • 查看防火墙运行状态

    系统防火墙默认为关闭状态,您可以使用此命令确认防火墙当前状态。

    sudo ufw status
    说明

    Status: inactive:系统防火墙为关闭状态。

    Status: active:系统防火墙为开启状态。

  • 开启防火墙

    执行如下命令开启防火墙,如果Linux实例重启,防火墙仍会自动开启。

    sudo ufw enable
  • 关闭防火墙

    执行如下命令关闭防火墙,如果Linux实例重启,防火墙仍为关闭状态。

    sudo ufw disable

Debian

在Debian系统中,默认没有安装防火墙,可以通过清空防火墙策略,删除相关屏蔽规则。清空策略前,请务必备份防火墙策略。若需恢复规则,可以使用备份文件恢复防火墙策略。

  • 查看防火墙策略

    sudo iptables -L
  • 关闭防火墙:清空防火墙策略

    您可以通过清空防火墙策略,删除相关屏蔽规则,实现关闭防火墙功能。

    说明

    请替换[$Iptables]为实际防火墙策略的备份文件地址。

    1. 创建备份文件

      sudo touch [$Iptables]
    2. 备份防火墙策略

      sudo sh -c "iptables-save > [$Iptables]"
    3. 清空防火墙策略

      sudo iptables -F
  • 开启防火墙:根据备份文件恢复防火墙策略

    您可以通过恢复防火墙策略或者添加新的防护规则开启防火墙功能。

    说明

    请替换[$Iptables]为实际防火墙策略的备份文件地址。

    sudo iptables-restore < [$Iptables]

常见问题

如何为普通用户添加sudo权限?

CentOS 7/CentOS Stream 8/Red Hat 7、8/Alibaba Cloud Linux2、3

  1. 使用root用户远程连接Linux服务器。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 运行以下命令,新建一个普通用户test并设置密码。

    useradd test
    passwd test
  3. 运行以下命令,为/etc/sudoers文件赋予权限。

    chmod 750 /etc/sudoers
  4. 运行以下命令,编辑/etc/sudoers文件。

    vim /etc/sudoers

    i键进入编辑模式并添加以下配置:

    test ALL=(ALL)  NOPASSWD: ALL

    sada45Esc键,输入:wq,按Enter键保存并退出文件。

  5. 运行以下命令,切换到test用户。

    su - test
  6. 运行以下命令,测试sudo权限。

    sudo cat /etc/shadow

    如果能看到该文件内容,表示sudo权限已经添加成功。

Ubuntu/Debian

  1. 使用root用户远程连接Linux服务器。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 运行以下命令,新建一个普通用户test并设置密码。

    sudo adduser test
  3. 运行以下命令,为用户增加sudo权限。

    sudo usermod -aG sudo test
  4. 运行以下命令,切换到test用户。

    sudo su - test
  5. 运行以下命令,测试sudo权限。

    sudo cat /etc/shadow

    输入密码验证后,如果能看到该文件内容,表示sudo权限已经添加成功。

关闭系统防火墙后,仍无法访问实例

如果关闭防火墙后,您仍无法远程访问实例,您可以尝试排查其他可能原因,详情请参见无法连接Linux实例的排查方法