点赞
评论
收藏
分享
举报
使用 NGINX App Protect 实现敏捷边界防护
发表于2025-07-22 18:15

浏览 2.2k

原文作者:Isaac Noumba- F5 产品经理(安全防护)
原文链接:使用 NGINX App Protect 实现敏捷边界防护
转载来源:NGINX 中文官网

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

   


 

在计算机安全领域,“边界”是概念意义上的一条线,线的内部是应用及其他基础设施组件的“信任区”。


在采用“城堡护城河”方法的传统基础设施环境中,边界将内网(内部网络)与外网或互联网分隔开来,并且假定内网是安全的,威胁仅来自外部。安全态势是静态的,通过数据包检查和访问控制措施在内网周围建立防御。


然而,久而久之,外部攻击者找到了绕开安全控制措施和破坏内网组件的方法,或者制造外部攻击,使请求看起来像来自默认安全的边界内部。这促使人们转向了零信任安全模型,在建立信任之前所有实体(内部和外部)都会被持续评估。人们不再认为内网是安全的。


与此同时,数字化转型和微服务等新型应用架构也带来了新的安全挑战。许多企业应用都托管在公有云中,或者分布在云和本地拓扑中,这意味着保护应用的安全基础设施不再完全由本地管理员控制。因此,许多组织现在都围绕单个应用(或者在结构上具有直接依赖关系的一小组应用)建立边界。在下图中,绿色虚线表示边界。



无论采用哪种架构模型,边界上都有一个“门卫”来检查入站流量并实施保护内部应用的安全策略。我们将这个“门卫”称为“边缘”。在下图所示的三种常见部署模式中,红框(保护 PROTECT)表示“边缘”。



念同样适用于 Kubernetes 框架等容器化架构。Ingress controller(Ingress 控制器)充当整个 Kubernetes 集群的边缘,管理来自外部客户端的访问,并将请求路由到集群中的 Kubernetes 服务。但安全策略也可在集群内按 Pod 和 Service 进行更细粒度的实施(如下图所示):

    • 在按 Pod 提供保护(如左图所示)的模式中,Pod 定义了一个或多个容器中应用或应用组件的边界。
    • 在按 Service 提供保护(如右图所示)的模式中,Service 通过一个或多个 Pod 公开应用部署的实例,并沿 Service 背后的 Pod 建立边界。


     

使用 NGINX App Protect 保护边界安全

NGINX App Protect 是基于 F5 市场领先的 Web 应用防火墙 (WAF) 技术构建的现代应用安全解决方案。无论采用哪种部署环境和应用架构(本地、云、混合、微服务化或容器化),NGINX App Protect 都能确保边界安全,为您的应用提供敏捷保护。更多信息,请参阅《NGINX App Protect 简介:面向 NGINX Plus 的 F5 高级应用安全解决方案》


使用 NGINX App Protect 实施边缘安全的一大优势是能够在边界之外执行安全措施。本质上,流量检查和访问控制都发生在边缘,可防止威胁越过边界。作为访问应用前的最后一站,边缘是最能清楚查看应用威胁的类型和数量的地方。


以下代码配置 NGINX App Protect 为边界内单独访问的三个应用(app1、app2 和 app3)提供保护:


load_module modules/ngx_http_app_protect_module.so; 
error_log /var/log/nginx/error.log debug;

http {
    # Enable NGINX App Protect in 'http' context
    app_protect_enable on;  

    # Enable remote logging        
    app_protect_security_log_enable on; 

    # Default JSON security policy
    app_protect_policy_file "/etc/nginx/NginxDefaultPolicy.json";  

    # Set remote logging options (in referenced file) and log server IP address/port
    app_protect_security_log "/etc/nginx/log-default.json" syslog:server=127.0.0.1:515;

    server { 
        listen 80;
        server_name app1.com;
        app_protect_policy_file "/etc/nginx/NginxApp1Policy.json"; # JSON policy for app1

        location / {
            proxy_pass http://www.app1.com:8080$request_uri;
        }
    }

    server {
        listen 80;
        server_name app2.com;
        app_protect_policy_file "/etc/nginx/NginxApp2Policy.json"; # JSON policy for app2

        location / {
            proxy_pass http://www.app2.com:8080$request_uri;
        }
    }

    server {
        listen 80;
        server_name app3.com;
        app_protect_policy_file "/etc/nginx/NginxApp3Policy.json"; # JSON policy for app3

        location / {
            proxy_pass http://www.app3.com:8080$request_uri;
        }
    }
}


以下代码配置 NGINX App Protect 为边界内以单个应用的形式嵌入和呈现的 app1、app2 和 app3 提供保护:


load_module modules/ngx_http_app_protect_module.so; 
error_log /var/log/nginx/error.log debug;

http {
    server {
        listen      80;
        server_name app.com;

        # Enable NGINX App Protect in 'http' context
        app_protect_enable on;  

        # Enable remote logging        
        app_protect_security_log_enable on; 

        # Default JSON security policy
        app_protect_policy_file "/etc/nginx/NginxDefaultPolicy.json";  

        # Set remote logging options (in referenced file) and log server IP address/port 
        app_protect_security_log "/etc/nginx/log-default.json" 
                                 syslog:server=10.1.20.6:5144;

        location / {
            # Main JSON policy file
            app_protect_policy_file "/etc/nginx/policy/policy_main.json";
            proxy_pass http://app.com$request_uri;
        }

        location /app1 {
            # JSON policy file for app1
            app_protect_policy_file "/etc/nginx/policy/policy_app1.json"; 
            proxy_pass http://app.com$request_uri;
        }

        location /app2 {
            # JSON policy file for app2
            app_protect_policy_file "/etc/nginx/policy/policy_app2.json"; 
            proxy_pass http://app.com$request_uri;
        }

        location /app3 {
            # JSON policy file for app3
            app_protect_policy_file "/etc/nginx/policy/policy_app3.json"; 
            proxy_pass http://app.com$request_uri;
        }
    }
}


这两种配置均针对每个应用提供了单独的 app_protect_policy_file 指令,并为每个应用分配了一个不同的安全策略,以满足其不同的安全要求。

   

使用 NGINX App Protect 实现 CI/CD 流水线中的边界安全

NGINX App Protect 解决了现代应用面临的可扩展性和自动化安全挑战。通过将 NGINX App Protect 直接插入 CI/CD 流水线中的多个集成点,您可以在更接近代码的地方保护应用、Pod 和 Service,从而弥合开发、运营和安全之间的鸿沟。


通过直接将安全防护集成到应用开发周期中,您可以自动执行安全测试,以发现应用和应用组件存在的安全风险。您还可以定义安全策略,如果不满足安全合规要求,则可撤回已发布的应用。通过在新版应用发布之前将 NGINX App Protect 集成于其中,您可以始终确保交付安全的应用。

       


   

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号 | B 站    

已修改于2025-07-22 18:15
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
331
文章
21
问答
201
粉丝
相关文章
介绍nginx网页配置工具QQ技术交流群1:1106758598QQ技术交流群2:560797506邮箱: cym1102@qq.com官网地址: http://www.nginxwebui.cn码云: https://gitee.com/cym1102/nginxWebUIgithub: https://github.com/cym1102/nginxWebUI功能特点nginxWebUI也可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理.部署此项目后,配置nginx再也不用上网各种搜索配置代码,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置和启动nginx。技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库项目启动时会释放一个.sqlite.db到系统用户文件夹中,注意进行备份本系统通过Let'sencrypt申请证书,使用acme.sh脚本
点赞 6
浏览 23.4k
  前三周学习了陶辉老师的“NGINX基础培训系列课程”,感觉受益良多,在这里想把一些知识点记录一下,和大家分享一下知识点,也方便日后的随手查看,温故知新。  首先,我们了解到了Nginx的版本,Nginx发布版本分为主线版本和稳定版本,区分两个版本也非常简单,主线版本版本号为单数,比如1.19,稳定版本为双数,比如1.18,今天我要说的是稳定版本,这个版本会尽量少的减少Nginx的bug问题,适用于生产环境,这里我不建议使用Nginx和其他软件一样在生产环境中落后一个或多个大版本使用,之前生产环境做过漏扫,发现我们编译自带的Nginx版本为:nginx/1.13.3(查询命令为nginx-V),结果出现了多个漏洞,四个高危和一个中危漏洞:        通过升级Nginx到稳定版最新版本后修复!  其次,是Nginx发行版本的选择,目前比较流行的有:nginx、nginxplus、Tengine、openresty、ope
点赞 1
浏览 16.8k
感谢您参加“NGINX从入门到精通进阶系列培训”!以下为培训的问答、课件和录像,希望您能通过此培训学有所得,祝学习进步!>问与答:- 基础篇+高级篇 - 应用篇+实战篇(New)>课件(PPT):基础篇:-NGINX概要、安装、配置:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-Setup.pdf-NGINX日志、运维:https://interact.f5.com/rs/653-SMC-783/images/cnfeb22-nginxcorecourse-maintenance.pdf高级篇:-NGINX变量、API:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-API.pdf-NGINXSSL、NJS:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-SSL.pdf
点赞 10
浏览 19.3k