Linux 内网与公网安全边界划分

发布时间 - 2026-01-27 00:00:00    点击率:
不能按IP段粗暴划分内网/公网边界,因同一IP段混跑多类服务,仅靠地址无法判断流量合法性;必须基于业务角色分区,结合nftables链级隔离、cgroup标记、TLS双向认证、SELinux等实现细粒度控制,并通过Git审计、实时监控确保策略闭环。

为什么不能按IP段粗暴划分内网/公网边界

直接用 192.168.0.0/16 当“内网”、0.0.0.0/0 当“公网”,是企业防火墙配置中最常见的逻辑漏洞。真实业务中,同一IP段可能混跑Web前端、管理后台、数据库代理,甚至容器化服

务;仅靠地址无法区分“该流量是否合法”。比如:DMZ区某台Nginx服务器若被攻陷,它用源IP伪装成应用区IP(如192.168.20.5)直连数据区,传统IP规则完全失效。

  • 分区必须基于业务角色,而非物理位置或子网——DMZ只放API网关,应用区只跑微服务,数据区只响应白名单IP+指定端口的mysqlredis连接
  • 默认策略必须是drop,不是accept;漏一条规则 = 隐式放行全部
  • 禁止跨区绕行:不允许DMZ主机通过SNAT把源IP改成应用区地址再访问数据区

nftables 实现分区间单向控制(非iptables兼容写法)

现代Linux发行版(如RHEL 9+/Ubuntu 22.04+)推荐用nftables替代iptables,语法更清晰、链级隔离更强。关键不是“加允许规则”,而是“建专用链+显式拒绝”。

  • 先创建链:nft add chain inet filter dmz_to_app { type filter hook forward priority 0 \; }
  • 只允许可信流量:nft add rule inet filter dmz_to_app ip saddr 192.168.10.0/24 ip daddr 192.168.20.0/24 tcp dport 8080 accept
  • 记录越权尝试:nft add rule inet filter dmz_to_app log prefix "BLOCKED_CROSS_ZONE" drop
  • 确保无旁路:检查nft list ruleset中没有jumpgoto跳转到其他链绕过该策略

光靠IP+端口不够:如何识别“真实服务身份”

容器环境里,192.168.20.10这台宿主机上可能同时运行订单服务、风控服务、日志采集器,它们共用同一个IP和端口范围。此时必须结合进程上下文做控制。

  • 用cgroup标记容器:nft add rule inet filter app_to_data meta cgroup /order tcp dport 3306 accept
  • 数据库连接启用TLS双向认证后,防火墙可配合conntrack识别已验证会话,只对ct state established且带有效证书DN字段的连接放行
  • SELinux限制进程网络能力:semanage port -a -t http_port_t -p tcp 8080,再配合allow httpd_t database_port_t:tcp_socket name_connect策略,让Web进程根本无法发起数据库连接

规则不是写完就上线:必须闭环审计

生产环境中,一条没走Git评审的nft add rule命令,可能让核心数据库暴露在公网扫描下。策略变更必须可追溯、可回滚、可验证。

  • 所有规则变更提交到Git仓库,提交信息强制包含:原因(如“开放支付回调端口”)、影响范围(app区10台Pod)、回滚命令(nft delete rule inet filter app_to_dmz handle 123)
  • nft monitor trace实时捕获匹配路径,验证规则是否真正在FORWARD链生效,而非被更早的raw/mangle链提前处理
  • 定期执行nft list ruleset | grep -E "(drop|reject)"确认无隐式放行,尤其检查OUTPUT链是否误开了accept导致内部横向渗透

真正难的不是写几条nft命令,而是让每条规则背后都有明确的业务归属、责任人和失效时间——否则再严密的分区设计,也会在一次临时调试中被绕过。


# mysql  # linux  # redis  # 前端  # git  # go  # nginx  # 防火墙  # app  # 端口  # ubuntu  # ai  # 防火墙配置  # Filter  # goto  # delete  # 数据库  # 闭环  # 内网  # 而非  # 子网  # 仅靠  # 都有  # 也会  # 隐式  # 开了  # 能让 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  如何在万网自助建站平台快速创建网站?  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何实现javascript表单验证_正则表达式有哪些实用技巧  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Python高阶函数应用_函数作为参数说明【指导】  如何为不同团队 ID 动态生成多个非值班状态按钮  简单实现Android文件上传  如何在阿里云香港服务器快速搭建网站?  微信公众帐号开发教程之图文消息全攻略  Laravel如何生成API文档?(Swagger/OpenAPI教程)  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  如何安全更换建站之星模板并保留数据?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  浅析上传头像示例及其注意事项  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  如何在建站宝盒中设置产品搜索功能?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  制作公司内部网站有哪些,内网如何建网站?  图册素材网站设计制作软件,图册的导出方式有几种?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Linux安全能力提升路径_长期防护思维说明【指导】  Python文件操作最佳实践_稳定性说明【指导】  如何在云主机上快速搭建网站?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  js实现获取鼠标当前的位置  什么是javascript作用域_全局和局部作用域有什么区别?  使用C语言编写圣诞表白程序  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何在VPS电脑上快速搭建网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  深圳网站制作培训,深圳哪些招聘网站比较好?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  音响网站制作视频教程,隆霸音响官方网站?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何配置和使用缓存?(Redis代码示例)  java中使用zxing批量生成二维码立牌  网站图片在线制作软件,怎么在图片上做链接?  利用 Google AI 进行 YouTube 视频 SEO 描述优化