修改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系统如何新建swap交换空间?

    在Linux系统中,swap(交换空间)作为物理内存的补充,当系统内存不足时,会将部分暂时不用的数据写入swap,从而释放内存供其他进程使用,避免系统因内存耗尽而崩溃,本文将详细介绍如何在Linux系统中新建swap文件,包括完整操作步骤、注意事项及验证方法,检查当前swap状态在新建swap前,需先确认系统是……

    2025年10月7日
    2800
  • 解决Linux无法上网问题

    在 Linux 系统中连接互联网是基础操作,但不同发行版和硬件环境可能带来差异,本文提供图形界面与命令行两种方法,涵盖常见问题解决方案,适用于 Ubuntu、CentOS、Debian 等主流发行版,连接前的准备工作检查硬件状态有线网络:确保网线插入网口,指示灯正常闪烁,无线网络:确认 Wi-Fi 开关已开启……

    2025年6月30日
    6500
  • 在Linux操作系统中如何检查RAID硬盘是否存在损坏及如何处理?

    在Linux系统中,RAID(磁盘阵列)通过数据冗余和条带化技术提升存储性能和数据可靠性,但硬盘作为物理设备,仍可能出现损坏或故障,及时检查RAID硬盘状态是保障数据安全的关键,本文将详细介绍Linux环境下检查RAID硬盘损坏的多种方法,涵盖软件RAID(如mdadm)和硬件RAID(如基于RAID卡的阵列……

    2025年9月27日
    4300
  • Linux tar文件如何压缩文件的操作步骤?

    Linux系统中的tar命令是常用的文件归档工具,它能够将多个文件或目录合并成一个单一的文件(称为tar包),同时结合压缩工具(如gzip、bzip2、xz等)实现压缩功能,有效节省存储空间并便于传输,本文将详细介绍tar命令如何压缩文件,包括常用压缩格式、选项参数、实际操作示例及注意事项,tar命令基础结构与……

    2025年9月19日
    4900
  • Linux系统下如何安装Win7?详细步骤与注意事项有哪些?

    在Linux系统下安装Windows 7,可通过双系统安装(与Linux共存于物理硬盘)或虚拟机安装(在Linux环境中运行虚拟化Win7系统)两种主流方式实现,以下是详细步骤、注意事项及问题解决方案,涵盖准备工作、操作流程及常见故障处理,安装前准备工作无论选择双系统还是虚拟机安装,均需完成以下准备工作,确保安……

    2025年8月30日
    4700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信