修改Linux防火墙规则?firewalld/ufw/iptables全指南

修改前的关键准备

  1. 备份现有规则
    sudo iptables-save > ~/iptables_backup.txt  # iptables备份
    sudo cp /etc/ufw/user.rules ~/ufw_backup.rules  # ufw备份
  2. 查看当前规则
    sudo firewall-cmd --list-all          # firewalld
    sudo ufw status verbose               # ufw
    sudo iptables -L -n -v                # iptables
  3. 权限要求
    所有操作需 root 权限,命令前加 sudo

主流工具操作指南

使用 firewalld(推荐用于 CentOS/RHEL/Fedora)

  • 开放端口
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent  # 永久开放TCP 8080
    sudo firewall-cmd --reload  # 重载生效
  • 允许IP访问
    sudo firewall-cmd --zone=public --add-source=192.168.1.100 --permanent
    sudo firewall-cmd --reload
  • 删除规则
    sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    sudo firewall-cmd --reload

使用 ufw(推荐用于 Ubuntu/Debian)

  • 启用防火墙
    sudo ufw enable  # 首次使用需启用
  • 开放SSH端口(避免锁死自己)
    sudo ufw allow 22/tcp
  • 允许特定服务
    sudo ufw allow http  # 等价于端口80
    sudo ufw allow 443/tcp
  • 拒绝IP访问
    sudo ufw deny from 203.0.113.50  # 屏蔽IP
  • 删除规则
    sudo ufw status numbered  # 查看规则编号
    sudo ufw delete 2         # 删除编号2的规则

使用 iptables(通用但需手动保存)

  • 开放端口
    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT  # 允许MySQL端口
  • 允许IP段
    sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT  # 允许整个子网
  • 删除规则
    sudo iptables -L INPUT --line-numbers  # 查看规则行号
    sudo iptables -D INPUT 3               # 删除INPUT链的第3条规则
  • 保存规则(必须操作)
    sudo apt install iptables-persistent   # Debian/Ubuntu
    sudo netfilter-persistent save
    # 或
    sudo service iptables save             # CentOS 6

常见场景示例

  1. 部署Web服务器
    sudo ufw allow 80/tcp && sudo ufw allow 443/tcp  # ufw
    sudo firewall-cmd --add-service={http,https} --permanent  # firewalld
  2. 允许Ping检测
    sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  3. 端口转发(将80转到8080)
    sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

安全注意事项

  1. 避免锁死自己
    • 修改规则前确保已放行当前SSH连接端口(默认22)。
    • 使用nohup执行可能断连的操作:
      nohup sudo ufw enable &  # 后台启用防火墙
  2. 最小权限原则
    • 仅开放必要端口,如非生产环境关闭3306、6379等数据库端口。
    • 使用--permanent(firewalld)或保存规则(iptables)防止重启失效。
  3. 日志监控
    sudo ufw logging on  # 启用日志(路径:/var/log/ufw.log)
    sudo journalctl -u firewalld.service  # 查看firewalld日志

故障排查

  • 规则未生效?
    检查顺序:

    1. 是否重载了配置(firewall-cmd --reloadufw reload)?
    2. 是否保存了规则(iptables需手动保存)?
    3. 是否有冲突规则(如先拒绝所有再允许个别)?
  • 恢复备份
    sudo iptables-restore < ~/iptables_backup.txt  # iptables还原
    sudo ufw reload < ~/ufw_backup.rules           # ufw还原

引用说明

  • 官方文档:
    firewalld.org |
    Ubuntu UFW Guide |
    Netfilter Iptables
  • 安全标准参考:
    NIST SP 800-123《Linux服务器安全指南》
  • 测试环境:
    CentOS 9 / Ubuntu 22.04 LTS / iptables v1.8.8

修改防火墙规则时,始终遵循“先测试后生产”原则,复杂网络环境建议结合tcpdump验证流量,并定期审计规则。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9971.html

(0)
酷番叔酷番叔
上一篇 3小时前
下一篇 2小时前

相关推荐

  • 如何高效用GCC编译Linux C程序?

    准备工作安装GCC终端执行以下命令安装GCC(以Debian/Ubuntu为例):sudo apt update && sudo apt install build-essential验证安装:gcc –version # 输出类似 gcc (Ubuntu 11.4.0) 11.4.0编写测试……

    2025年7月21日
    1500
  • 卸载分区会丢失数据吗

    在Linux系统中为分区扩容是常见的磁盘管理操作,通常发生在数据增长导致存储空间不足时,以下为详细操作指南,请务必在操作前备份重要数据,避免操作失误导致数据丢失,扩容前的关键准备备份数据使用 rsync 或 dd 命令备份目标分区数据,或直接复制到外部存储,rsync -avh /mnt/target_part……

    2025年7月1日
    1900
  • Linux安装Qt的最优方法是什么?

    安装前的准备系统更新打开终端执行:sudo apt update && sudo apt upgrade # Debian/Ubuntusudo dnf update # Fedora安装基础依赖sudo apt install build-essential libgl1-mesa-dev……

    2025年7月24日
    1100
  • Linux如何快速识别未挂载硬盘?

    核心工具:lsblk(推荐首选)作用:列出所有块设备(硬盘、分区),清晰展示挂载状态,命令:lsblk -f输出解读:设备名:如 sda(第一块硬盘)、sdb(第二块硬盘),分区:如 sdb1、sdb2,未挂载标志:若 MOUNTPOINT 列为空,则该分区未挂载, (图示:sdb1已挂载,sdb2未挂载)进阶……

    2025年6月19日
    2300
  • Linux安装SCIM输入法遇问题?

    SCIM(Smart Common Input Method)是一个开源的输入法平台,支持中文、日文、韩文等复杂语言的输入,尽管现代Linux发行版多采用IBus或Fcitx5,但部分传统场景仍需SCIM,以下是专业安装流程:安装前的关键准备系统更新终端执行:sudo apt update &&amp……

    2025年7月26日
    1000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信