当前位置:首页 > Linux > 正文

Linux如何配置防火墙?

Linux系统访问防火墙设置通常需root权限,不同发行版使用不同工具:CentOS/RHEL用 firewall-cmd命令,Ubuntu常用 ufw命令,或直接编辑 iptables/nftables规则。

在Linux系统中,防火墙是保护系统安全的核心组件,不同发行版和版本可能使用不同的防火墙管理工具,以下是主流工具的详细访问和配置方法,操作前请确保拥有sudo权限。


主流防火墙工具及访问方法

iptables(传统工具,通用性强)

  • 适用场景:所有Linux发行版(需手动安装)。

  • 访问方法

    # 查看当前规则
    sudo iptables -L -n -v
    # 临时允许端口(示例:允许80端口)
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    # 保存规则(依赖发行版)
    sudo apt-get install iptables-persistent  # Ubuntu/Debian
    sudo netfilter-persistent save
  • 配置文件路径
    /etc/iptables/rules.v4(IPv4规则)
    /etc/iptables/rules.v6(IPv6规则)

    Linux如何配置防火墙?  第1张

firewalld(Red Hat/CentOS/Fedora默认)

  • 核心概念:通过“区域”(zone)管理网络信任级别。

  • 访问方法

    # 启动服务
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    # 查看活动区域
    sudo firewall-cmd --get-active-zones
    # 开放端口(示例:永久开放443端口)
    sudo firewall-cmd --permanent --add-port=443/tcp
    sudo firewall-cmd --reload  # 重载配置
    # 允许服务(示例:SSH)
    sudo firewall-cmd --permanent --add-service=ssh
  • 图形界面(可选)
    安装firewall-config包,运行sudo firewall-config

ufw(Ubuntu/Debian简易工具)

  • 特点:简化iptables操作。

  • 访问方法

    # 启用防火墙
    sudo ufw enable
    # 允许端口或服务
    sudo ufw allow 22/tcp     # 开放SSH端口
    sudo ufw allow http       # 或直接使用服务名
    # 拒绝IP访问
    sudo ufw deny from 192.168.1.100
    # 查看状态
    sudo ufw status verbose
  • 配置文件路径
    /etc/ufw/user.rules(自定义规则)。


通用操作与注意事项

检查防火墙状态

  • 所有工具通用
    sudo systemctl status firewalld  # 检查firewalld
    sudo ufw status                  # 检查ufw

端口管理命令对比

操作 iptables firewalld ufw
开放端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT firewall-cmd --permanent --add-port=80/tcp ufw allow 80/tcp
关闭端口 iptables -D INPUT -p tcp --dport 80 -j ACCEPT firewall-cmd --permanent --remove-port=80/tcp ufw deny 80/tcp
保存规则 需手动保存(见上文) 自动保存,需--reload生效 自动保存

关键安全建议

  • 最小化开放端口:仅允许必要服务(如SSH、HTTP/HTTPS)。
  • 测试后再保存
    使用iptables时,先通过命令临时修改,测试无误后再保存,避免锁死远程连接。
  • 备份配置
    修改前备份配置文件(如cp /etc/ufw/user.rules ~/ufw_backup)。

故障排查

  1. 端口未生效?

    • 检查服务是否监听:ss -tuln | grep <端口号>
    • 确认规则已加载:sudo iptables -Lsudo firewall-cmd --list-all
  2. 误锁自己解决方案

    • 物理机:通过本地终端重启防火墙服务(如sudo systemctl restart firewalld)。
    • 云服务器:使用云平台提供的“救援模式”或控制台恢复。

工具选择指南

  • 初学者:用ufw(Ubuntu/Debian)或firewalld图形界面。
  • 高级用户/跨平台:学习iptables基础语法。
  • 服务器环境:推荐firewalld(动态规则热更新)。

引用说明

  • Red Hat官方文档:Firewalld指南
  • Ubuntu社区Wiki:UFW使用教程
  • Netfilter(iptables)官网:https://netfilter.org/ 基于Linux内核5.4+及主流发行版(Ubuntu 22.04/CentOS 8)验证,操作前请查阅您的系统版本文档。
0