首页主机资讯Linux防火墙规则如何设置才有效

Linux防火墙规则如何设置才有效

时间2025-12-16 21:30:04发布访客分类主机资讯浏览501
导读:Linux防火墙规则有效设置指南 一、先明确生效链路与最小可行配置 在云环境(如ECS)中,流量先经安全组过滤,再由操作系统防火墙处理,二者是“与”关系,必须同时放行;若安全组未放行端口(如 SSH 22),系统防火墙规则再正确也不会到达...

Linux防火墙规则有效设置指南

一、先明确生效链路与最小可行配置

  • 在云环境(如ECS)中,流量先经安全组过滤,再由操作系统防火墙处理,二者是“”关系,必须同时放行;若安全组未放行端口(如 SSH 22),系统防火墙规则再正确也不会到达应用。操作前务必先检查安全组与网络 ACL。
  • 坚持“先放行,后启用”与“最小权限”原则:仅开放业务必需端口;对数据库等核心服务仅对内网网段开放;变更前准备备用通道(如已建立的 SSH 会话)以便回滚。
  • 变更流程建议:备份当前规则 → 预置放行规则(如 SSH)→ 重载/启用防火墙 → 验证连通 → 观察日志与监控。

二、按工具的快速配置范式

  • firewalld(CentOS/RHEL、Fedora、Ubuntu 常见)
    • 状态与启停:查看状态 sudo firewall-cmd --state;启动/开机自启 sudo systemctl start|enable firewalld;临时关闭 sudo systemctl stop firewalld(不建议生产)。
    • 放行与持久化:放行 SSH sudo firewall-cmd --permanent --add-service=ssh;放行端口 sudo firewall-cmd --permanent --add-port=8080/tcp;使配置生效 sudo firewall-cmd --reload;查看 sudo firewall-cmd --list-all
    • 进阶:按源地址细控 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port protocol="tcp" port="22" accept';开启拒绝日志 sudo firewall-cmd --set-log-denied=all 并用 journalctl -u firewalld 查看。
  • ufw(Debian/Ubuntu 常见)
    • 启用与放行:sudo ufw allow sshsudo ufw allow 3306/tcp;启用 sudo ufw enable(会自动加载已允许的条目并开机自启);查看 sudo ufw status
  • nftables/iptables(底层与兼容性)
    • 现代发行版默认集成 nftables;如需沿用 iptables 规则,可用 iptables-translate 平滑转换。
    • 最小化示例(iptables):允许回环与已建立连接 sudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT;放行 SSH 22 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT;默认拒绝入站 sudo iptables -P INPUT DROP(务必先放行 SSH 再设默认 DROP)。
    • 持久化:Debian/Ubuntu sudo iptables-save > /etc/iptables/rules.v4;RHEL/CentOS sudo service iptables savesudo iptables-save > /etc/sysconfig/iptables

三、让规则真正“有效”的关键细节

  • 规则顺序与默认策略:iptables 按序匹配,务必把“放行已建立连接”“关键业务放行”放在前面,最后再设默认 DROP/REJECT;firewalld 用区域与“富规则”实现精细化与优先级控制。
  • 连接状态与回退路径:放行 ESTABLISHED,RELATED 可确保已建立的会话与关联流量(如 FTP 数据通道)不被中断,避免因策略过严导致“能连上但没数据”。
  • 高并发与资源调优:提升连接跟踪容量 sudo sysctl -w net.nf_conntrack_max=1048576;适度调整 nf_conntrack_tcp_timeout_established;必要时清理过期连接 conntrack -D -p tcp --dport 80
  • 日志、监控与告警:启用拒绝日志(firewalld --set-log-denied=all 或 iptables ULOG/LOG 前缀),结合 journalctliftopiptables -L -v -n 观察命中与异常;对关键端口设置速率限制与自动化封禁(如 Fail2Ban)。

四、常见场景与命令清单

场景 关键动作 命令示例
云上 Web 服务器 安全组放行 80/443/TCP;系统防火墙放行 http/https sudo firewall-cmd --permanent --add-service=http --add-service=https & & sudo firewall-cmd --reload
仅内网访问数据库 安全组与系统防火墙均仅对内网网段放行 3306/TCP sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="3306" accept' & & sudo firewall-cmd --reload
端口转发/NAT 将外网 80 转发到内网 8080;开启 SNAT sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 destination port port=80 protocol=tcp redirect port=8080' & & sudo firewall-cmd --permanent --add-masquerade & & sudo firewall-cmd --reload
限制暴力破解 限制 SSH 频率并自动封禁 配置 Fail2Ban[sshd] enabled=true port=ssh maxretry=3 bantime=86400
容器环境 允许已建立连接出站,限制容器外发 sudo iptables -A FORWARD -o docker0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTsudo iptables -A FORWARD -o docker0 -j DROP
规则备份与恢复 持久化与回滚 firewalld:sudo firewall-cmd --runtime-to-permanent 并备份 /etc/firewalld;iptables:sudo iptables-save > /etc/iptables/rules.v4 / sudo iptables-restore < /etc/iptables/rules.v4

五、排障与风险控制清单

  • 排查顺序:先看云侧安全组/网络 ACL → 再看系统防火墙(firewall-cmd --list-allufw status/iptables -L -v -n)→ 确认服务监听(ss -tunlp | grep < 端口> )→ 检查日志(journalctl -u firewalld/var/log/ufw.log)。
  • 变更风险控制:远程变更前保留已建立的 SSH 会话;先加“放行规则”再启用/重载;生产环境避免直接关闭防火墙;变更后及时验证与回滚预案。
  • 容器与第三方组件:注意 Docker 会自动操作 iptables,可能覆盖策略;必要时为容器单独规划链与规则,或在变更前冻结容器网络变更窗口。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux防火墙规则如何设置才有效
本文地址: https://pptw.com/jishu/773235.html
Linux防火墙如何管理端口开放 Ubuntu Jenkins如何权限设置

游客 回复需填写必要信息