修改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)
酷番叔酷番叔
上一篇 2025年8月8日 08:29
下一篇 2025年8月8日 08:45

相关推荐

  • Linux帮助文档如何高效阅读?新手必学man/info命令技巧

    Linux作为一款开源的操作系统,其强大的功能很大程度上依赖于命令行工具的使用,而帮助文档则是掌握这些工具的核心资源,无论是系统管理员还是开发者,熟练阅读Linux帮助文档都是提升效率的关键,本文将详细介绍Linux中常见的帮助文档类型及其阅读方法,帮助用户快速定位信息、理解命令用法,Linux帮助文档主要分为……

    2025年9月8日
    12400
  • 如何硬盘的linux删除

    Linux 中,可使用 sudo fdisk /dev/sdX(X

    2025年8月19日
    10500
  • Linux下删除软件有哪些方法?彻底删除及残留清理怎么操作?

    Linux系统以其高度的可定制性和灵活性受到广泛欢迎,而软件管理是日常使用中的重要环节,与Windows系统的“控制面板卸载”不同,Linux通过包管理器或手动操作来删除软件,具体方法取决于软件的安装方式和系统使用的发行版,本文将详细介绍Linux下删除软件的多种方法,涵盖主流包管理器命令、源码编译安装软件的清……

    2025年8月29日
    13400
  • Linux系统如何快速返回桌面?操作步骤与方法有哪些?

    在Linux系统中,“返回桌面”的操作因桌面环境的不同而存在差异,常见的桌面环境包括GNOME、KDE Plasma、XFCE、MATE、Cinnamon等,每种环境都有其独特的交互逻辑和快捷方式,下面将详细介绍主流桌面环境下返回桌面的方法,并辅以通用技巧和特殊情况处理,主流桌面环境的具体操作方法GNOME(U……

    2025年9月10日
    13000
  • 自研Linux程序如何实现版本升级?

    自己编写的Linux程序升级是一个涉及版本管理、代码更新、编译构建、部署策略、回滚机制等多环节的系统工程,合理的升级流程能确保程序稳定性并减少服务中断风险,以下从实际操作角度详细拆解升级全流程,版本规划与代码管理升级前需明确版本规则,通常采用“主版本号.次版本号.修订号”(如1.2.3),主版本号表示重大功能变……

    2025年9月29日
    13100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信