服务器测评网
我们一直在努力

Linux 启动防火墙时,不同发行版的命令差异与正确操作方法是什么?

Linux 系统作为服务器和开发环境的核心工具,其安全性至关重要,防火墙作为系统安全的第一道防线,能够有效过滤非法访问、保护网络服务免受攻击,在 Linux 系统中,启动和管理防火墙是系统管理员的基本技能之一,本文将详细介绍 Linux 防火墙的核心类型、主流发行版的启动方法、实用配置技巧以及常见问题排查,帮助读者构建安全可靠的网络防护体系。

Linux防火墙的核心类型

Linux 防火墙技术的发展经历了多个阶段,目前主流的工具主要分为三大类:传统 iptables、现代 nftables 以及发行版定制化的管理工具(如 firewalld、ufw)。

iptables 是 Linux 2.4 内核引入的经典防火墙工具,基于 Netfilter 框架,通过“表(table)—链(chain)—规则(rule)”的层级结构管理网络数据包,它包含 filter(过滤数据包)、nat(网络地址转换)、mangle(修改数据包标记)和 raw(原始数据包处理)四个表,每个表对应不同的处理逻辑,尽管 iptables 功能强大且兼容性极广,但其复杂的语法规则和链式匹配逻辑对新手不够友好。

nftables 是 iptables 的继任者,自 Linux 3.13 内核引入,旨在统一 Netfilter 框架并简化配置语法,nftables 采用“表—集合(set)—规则”的结构,支持更灵活的匹配条件(如集合、字典)和表达式运算,性能和可维护性显著提升,主流发行版如 Debian 10+、Ubuntu 20.04+ 已默认采用 nftables 作为底层防火墙引擎。

发行版定制工具 则是对底层框架的封装,提供更友好的管理接口,RHEL/CentOS 系统的 firewalld 支持动态管理规则,无需重启即可应用更改;Debian/Ubuntu 系统的 ufw(Uncomplicated Firewall) 则以简洁的命令行操作为目标,适合快速配置。

主流发行版的防火墙启动方法

不同 Linux 发行版默认的防火墙工具和管理方式存在差异,以下针对常见系统介绍具体启动步骤。

基于 Debian/Ubuntu 系统:启用 UFW

Ubuntu 和 Debian 等发行版默认使用 UFW 作为防火墙管理工具,其设计目标是简化配置,适合初学者和中小规模服务器。

  1. 检查 UFW 状态
    默认情况下,UFW 处于禁用状态,通过以下命令查看当前状态:

    sudo ufw status

    若返回“Status: inactive”,则表示防火墙未启用。

  2. 启用 UFW
    使用 sudo ufw enable 启用防火墙,首次启用时会提示“Command may disrupt existing ssh connections. Proceed? [y/n]”,输入 y 确认,UFW 默认会允许已建立的 SSH 连接,避免远程服务器被防火墙阻断。

  3. 设置默认策略
    默认情况下,UFW 的入站策略为“deny”(拒绝所有连接),出站策略为“allow”(允许所有连接),可根据需求调整,例如拒绝所有出站连接:

    sudo ufw default deny outgoing
  4. 开放特定端口
    若需开放 Web 服务(80 端口)和 HTTPS 服务(443 端口),执行:

    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp

    或通过服务名开放(如 sudo ufw allow http)。

  5. 开机自启
    UFW 默认已设置为开机启动,可通过 systemctl is-enabled ufw 查看状态,若返回“enabled”则无需额外配置。

基于 RHEL/CentOS 系统:启动 Firewalld

RHEL、CentOS 及其衍生版(如 Rocky Linux)默认使用 firewalld,支持区域(Zone)管理和动态规则更新,适合复杂网络环境。

  1. 检查 firewalld 服务状态
    firewalld 以系统服务形式运行,通过以下命令查看状态:

    sudo systemctl status firewalld

    若显示“inactive (dead)”,则需启动服务。

  2. 启动 firewalld 并设置开机自启

    sudo systemctl start firewalld    # 启动服务
    sudo systemctl enable firewalld  # 设置开机自启
  3. 切换区域与开放端口
    firewalld 通过“区域”定义网络信任级别,默认区域为 “public”(公共区域),查看当前区域:

    sudo firewall-cmd --get-active-zones

    开放 SSH 服务(22 端口)并永久生效(需添加 --permanent 参数):

    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload  # 重新加载规则,使永久配置即时生效

    若需开放自定义端口(如 8080 端口):

    sudo firewall-cmd --permanent --add-port=8080/tcp
  4. 查看已开放规则

    sudo firewall-cmd --list-all

通用方法:直接操作 iptables/nftables

对于需要精细控制或使用旧版系统的场景,可直接操作底层防火墙框架。

  1. iptables 启动步骤

    • 启动 iptables 服务(适用于旧版系统):
      sudo systemctl start iptables
      sudo systemctl enable iptables
    • 设置默认策略(拒绝所有入站,允许所有出站):
      sudo iptables -P INPUT DROP
      sudo iptables -P OUTPUT ACCEPT
    • 开放回环接口(避免本地服务异常):
      sudo iptables -A INPUT -i lo -j ACCEPT
    • 开放 SSH 端口:
      sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • 保存规则(不同发行版命令不同,如 RHEL 用 service iptables save,Ubuntu 用 iptables-save > /etc/iptables/rules.v4)。
  2. nftables 基础配置
    nftables 的配置文件通常位于 /etc/nftables/,或通过 nft 命令直接操作:

    sudo nft add table inet filter  # 创建名为 filter 的表(inet 协议族,适用于 IPv4/IPv6)
    sudo nft add chain inet filter input { type filter hook input priority 0 \; }  # 添加 input 链
    sudo nft add rule inet filter input tcp dport 22 accept  # 开放 22 端口
    sudo nft add rule inet filter input drop  # 拒绝其他入站连接

    保存规则:sudo nft list ruleset > /etc/nftables.conf,并设置开机自启 sudo systemctl enable nftables

实用配置示例

限制特定 IP 访问

通过 UFW 拒绝恶意 IP(如 192.168.1.100):

sudo ufw deny from 192.168.1.100

端口转发(以 firewalld 为例)

将 80 端口流量转发至 8080 端口:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
sudo firewall-cmd --reload

日志记录(iptables)

开启 INPUT 链的日志记录,并限制日志速率(避免日志占满磁盘):

sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: "
sudo iptables -A INPUT -j DROP

常见问题排查

  1. 防火墙启动后无法访问服务
    检查目标端口是否已开放,

    sudo ufw status  # UFW
    sudo firewall-cmd --list-all  # firewalld
    sudo iptables -L -n -v  # iptables(-n 显示 IP,-v 显示详细信息)

    若端口未开放,添加规则后重新加载防火墙(如 firewalld 需执行 --reload)。

  2. 规则冲突导致服务异常
    防火墙规则按顺序匹配,若某条规则已阻断数据包,后续规则不会生效,可通过 iptables -L INPUT --line-numbers 查看规则编号,使用 iptables -D INPUT 编号 删除冲突规则。

  3. 防火墙日志分析

    • UFW 日志:默认位于 /var/log/ufw.log,可通过 sudo grep "DENY" /var/log/ufw.log 查看拒绝记录。
    • iptables 日志:默认通过系统日志(如 /var/log/messages)记录,可通过 sudo grep "iptables" /var/log/messages 查询。

安全强化建议

  1. 最小权限原则:仅开放业务必需的端口,避免全端口开放。
  2. 定期更新规则:根据业务变化及时调整防火墙策略,清理过期规则。
  3. 启用日志审计:记录防火墙日志,定期分析异常访问行为。
  4. 结合其他安全措施:如 fail2ban(自动封禁恶意 IP)、SELinux(强制访问控制),构建多层次防护体系。

通过合理配置和管理 Linux 防火墙,可有效提升系统安全性,防范常见网络攻击,无论是新手还是管理员,掌握防火墙的启动与配置都是保障系统稳定运行的重要技能。

赞(0)
未经允许不得转载:好主机测评网 » Linux 启动防火墙时,不同发行版的命令差异与正确操作方法是什么?