当前位置: 首页 > news >正文

利用Microsoft Entra Application Proxy在无公网IP条件下安全访问内网计算机

在现代混合办公环境中,如何让员工能够从任何地方安全访问公司内部资源成为了企业的重要挑战。传统的VPN解决方案虽然可以满足需求,但有时配置复杂,并可能涉及公网IP的问题。为了解决这个问题,Microsoft Entra(原Azure AD)Application Proxy与Remote Desktop Service (RDS) 联合提供了一种更加简洁且安全的解决方案,帮助用户在没有公网IP的情况下从外网访问内部的计算机设备。

Microsoft Entra Application Proxy 简介

Microsoft Entra Application Proxy 是 Azure Active Directory(Azure AD)中的一项功能,它允许用户通过互联网安全地访问本地应用程序,而无需在外网暴露服务器或使用 VPN。其核心功能包括:

无需公网IP:无需在企业的防火墙上暴露应用的IP。

强大的身份验证和访问控制:通过Azure AD的条件访问策略和多重身份验证(MFA)来保护资源。

反向代理架构:外部用户通过Application Proxy访问资源,代理位于网络边界以防止直接访问内部网络。

Remote Desktop Service 简介

Remote Desktop Services(RDS)是Windows服务器提供的远程桌面功能,允许用户通过远程桌面协议(RDP)连接到运行Windows操作系统的计算机。RDS常用于:

  1. 远程工作,访问公司内的资源和应用程序。
  2. 通过集中管理减少客户端设备配置需求。

通过将Microsoft Entra Application Proxy与RDS结合使用,用户可以从互联网安全地访问公司内部的设备,而不需要将RDS服务器暴露在公网中。

解决方案原理与架构

在这套方案中,Microsoft Entra Application Proxy充当了RDS的反向代理。流程如下:

  1. 外部用户请求:用户在外网通过浏览器或RDP客户端访问远程桌面(或其他应用)。
  2. 身份验证:请求首先通过Application Proxy发送到Azure AD,Azure AD要求用户进行身份验证(如用户名密码或多因素认证)。
  3. 反向代理:验证通过后,Application Proxy将用户的请求安全地代理至内部网络中的RDS服务器。
  4. 远程桌面连接:用户通过RDS连接到指定的内部计算机,进行远程操作。

架构图示

部署步骤

步骤 1:准备工作

  1. 确保企业内部已经部署了RDS服务器,并且用户能够在内网正常访问RDS。
  2. 安装并配置Microsoft Entra Application Proxy连接器(在内网服务器上运行,负责代理外部请求)。

步骤 2:配置Microsoft Entra Application Proxy

  1. 登录Microsoft Entra管理中心(原Azure AD)。
  2. 在导航栏中选择“企业应用程序”,然后选择“Application Proxy”。
  3. 选择“添加”,并填写远程桌面服务器的应用信息。
  4. 内部URL:填写RDS服务器的内网地址。
  5. 外部URL:这是用户在外网访问时使用的URL,通常是通过Azure的安全域名生成。
  6. 配置用户访问权限。通过Azure AD,可以为此远程桌面应用程序设置访问权限,配置条件访问策略,要求用户使用多重身份验证(MFA)等。

步骤 3:发布 RD 主机终结点

  1. 使用以下值发布新的应用程序代理应用程序。
  1. 内部 URL:https://<rdhost>.com/,其中,<rdhost> 是 RD Web 和 RD 网关共享的共用根。
  2. 外部 URL:系统会根据应用程序的名称自动填充此字段,但可以修改它。 用户在访问 RDS 时会转到此 URL。
  3. 预身份验证方法:Microsoft Entra ID。
  4. 转换 URL 标头:否。
  5. 使用仅限 HTTP 的 Cookie:否。
  1. 将用户分配到已发布的 RD 应用程序。 确保这些用户也都有权访问 RDS。
  2. 将应用程序的单一登录方法保留为“已禁用 Microsoft Entra 单一登录”。
  3. 浏览到“标识”>“应用程序”>“应用注册”。 从列表中选择应用。
  4. 在“管理”下,选择“品牌打造” 。
  5. 更新“主页 URL”字段以指向你的 RD Web 终结点(如 https://<rdhost>.com/RDWeb)。

步骤 4:将 RDS 流量定向到应用程序代理

以管理员身份连接到 RDS 部署,并更改部署的 RD 网关服务器名称。 此配置可确保连接通过 Microsoft Entra 应用程序代理服务。

  1. 连接到运行 RD 连接代理角色的 RDS 服务器。
  2. 启动“服务器管理器”。
  3. 在左侧窗格中选择“远程桌面服务”。
  4. 选择“概述”。
  5. 在“部署概述”部分中,选择下拉菜单并选择“编辑部署属性”。
  6. 在“RD 网关”选项卡中,将“服务器名称”字段更改为针对应用程序代理中的 RD 主机终结点设置的外部 URL。
  7. 将“登录方法”字段更改为“密码身份验证”。

  1. 为所有集合运行此命令。 用自己的信息替换 <yourcollectionname> 和 <proxyfrontendurl>。 此命令在 RD Web 与 RD 网关之间启用单一登录,并优化性能。

Set-RDSessionCollectionConfiguration -CollectionName "<yourcollectionname>" -CustomRdpProperty "pre-authentication server address:s:<proxyfrontendurl>`nrequire pre-authentication:i:1"

  1. 若要验证对自定义 RDP 属性的修改并查看从此集合的 RDWeb 下载的 RDP 文件内容,请运行以下命令。

(get-wmiobject -Namespace root\cimv2\terminalservices -Class Win32_RDCentralPublishedRemoteDesktop).RDPFileContents

配置远程桌面后,Microsoft Entra 应用程序代理会充当 RDS 的面向 Internet 的组件。 请在 RD Web 和 RD 网关计算机上删除其他面向 Internet 的公共终结点。

步骤 5:启用 RD Web 客户端

如果希望用户使用 RD Web 客户端,请按照为用户设置远程桌面 Web 客户端中的步骤操作。

远程桌面 Web 客户端提供对组织的远程桌面基础结构的访问。 需要与 HTML5 兼容的 Web 浏览器,例如 Microsoft Edge、Google Chrome、Safari 或 Mozilla Firefox(v55.0 及更高版本)。

总结

通过将Microsoft Entra Application Proxy与Remote Desktop Service集成,企业无需公网IP即可提供一个安全的远程访问解决方案。这个架构不仅简化了网络配置,还利用了Azure AD的强大安全功能,有效降低了外网暴露风险,同时提升了用户体验。企业在部署后,可以灵活应用Azure的条件访问策略,进一步增强远程访问的安全性。

参考资料

https://learn.microsoft.com/zh-cn/entra/identity/app-proxy/application-proxy-integrate-with-remote-desktop-services

相关文章:

利用Microsoft Entra Application Proxy在无公网IP条件下安全访问内网计算机

在现代混合办公环境中&#xff0c;如何让员工能够从任何地方安全访问公司内部资源成为了企业的重要挑战。传统的VPN解决方案虽然可以满足需求&#xff0c;但有时配置复杂&#xff0c;并可能涉及公网IP的问题。为了解决这个问题&#xff0c;Microsoft Entra&#xff08;原Azure …...

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)

【IEEE独立出版 | 厦门大学主办】 第四届人工智能、机器人和通信国际会议&#xff08;ICAIRC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 2024年12月27-29日 | 中国厦门 >>往届均已成功见刊检索…...

C++ 内存布局 - Part5: 继承关系中 构造析构与vptr的调整

这里以单继承为例&#xff0c;汇编采用AT&T格式&#xff0c;先看示例代码&#xff1a; #include <iostream>class Base { public:Base() {std::cout << "Base Constructor, this ptr: " << this << std::endl;printVptr();}virtual ~Ba…...

BUG-AttributeError: ‘EnforcedForest‘ object has no attribute ‘node‘

File “/home/adt/miniconda3/envs/bevdet/lib/python3.7/site-packages/trimesh/scene/transforms.py”, line 224, in nodes_geometry ‘geometry’ in self.transforms.node[n]): AttributeError: ‘EnforcedForest’ object has no attribute ‘node’ networkx 2.6.3 pyp…...

Spring Boot 3 配置 Redis 兼容单例和集群

配置项 Spring Boot 3.x 的 redis 配置和 Spring Boot 2.x 是不一样的, 路径多了一个data spring:...data:redis:host: redis.hostport: redis.portpassword: redis.passworddatabase: redis.database兼容单例和集群的配置 开发时一般用一个Redis单例就足够, 测试和生产环境…...

unsat钱包签名算法解析

unsat钱包签名算法解析 在数字货币领域&#xff0c;安全性是至关重要的&#xff0c;而签名算法则是确保交易和信息不可伪造的基础。本文将深入解析 unsat 钱包中使用的签名算法&#xff0c;重点关注如何生成和验证消息签名。 1. 签名算法概述 unsat 钱包使用 ECDSA&#xff…...

mysql删除唯一索引

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

学习之面试题:偏函数

偏函数&#xff08;Partial Function&#xff09;是 Python 中的一个实用工具&#xff0c;通常用于函数式编程中&#xff0c;可以固定一个函数的部分参数&#xff0c;从而生成一个新的函数。偏函数在 Python 中通常通过 functools.partial 实现。在面试中&#xff0c;考察偏函数…...

面试技术点

Java 一、jvm模块 jvm是什么? 是一用用于计算设备的规范,虚构出来的计算机,在计算机上仿真模拟各种计算机功能来实现 jvm 作用是什么? java中所有类必须装载jvm中才能运行,这个装载工作有jvm装载器完成,.class类型文件能在jvm虚拟器中运行,但不能直接在系统中运行,需要…...

基础sql

在执行删除操作之前&#xff0c;建议先运行一个 SELECT 查询来确认你要删除的记录。这可以帮助你避免误删数据。 删除字段id默认值为空字符串的所有数据 delete from users where id ; 删除字段id默认值为null的所有数据 delete from users where id is null; 删除字段upd…...

Jenkins整合Docker实现CICD自动化部署(若依项目)

前期准备 提前准备好jenkins环境 并且jenkins能使用docker命令&#xff0c;并且已经配置好了jdk、node、maven环境&#xff0c;我之前写了安装jenkins的博客&#xff0c;里面讲得比较详细&#xff0c;推荐用我这种方式安装 docker安装jenkins&#xff0c;并配置jdk、node和m…...

kali chrome 安装 hackbar

HackBar 是一个用于在 Kali Linux 中快速测试 SQL 注入和 XSS 漏洞的 Chrome 扩展程序。以下是如何在 Kali Linux 上安装 HackBar 的步骤&#xff1a; 首先&#xff0c;你需要确保你的系统已经安装了 Google Chrome 或 Chromium。如果没有安装&#xff0c;你可以使用以下命令安…...

一文了解 Linux 系统的文件权限管理

文章目录 引入Linux文件权限模型查看文件权限权限信息解析修改文件权限符号模式八进制数字模式 引入 在Linux操作系统中&#xff0c;我们想查看我们对文件拥有哪些权限时&#xff0c;可以在终端键入ls -l或ll命令&#xff0c;终端会输出当前路径下的文件信息&#xff0c;如文件…...

Spark:DataFrame介绍及使用

1. DataFrame详解 DataFrame是基于RDD进行封装的结构化数据类型&#xff0c;增加了schema元数据&#xff0c;最终DataFrame类型在计算时&#xff0c;还是转为rdd计算。DataFrame的结构化数据有Row&#xff08;行数据&#xff09;和schema元数据构成。 Row 类型 表示一行数据 …...

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案

学习目标&#xff1a; 提示&#xff1a;本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统&#xff1a;Ubuntu 23.04&#xff1b; 文中提到的“本机”&#xff1a;代表&#xff0c;宿主机&#xff0c;物理主机&#xff1b; 首先&#xff0c…...

望繁信科技成功签约国显科技 流程挖掘助力制造业智造未来

近日&#xff0c;上海望繁信科技有限公司&#xff08;简称“望繁信科技”&#xff09;成功与深圳市国显科技有限公司&#xff08;简称“国显科技”&#xff09;达成合作。国显科技作为全球领先的TFT-LCD液晶显示及Mini/Micro LED显示产品供应商&#xff0c;致力于为笔记本、手机…...

枚举在Java体系中的作用

1. 枚举 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; //用public static final修饰常量 public static final int RED 1; public static final int GREEN 2; public static f…...

『气泡水』Web官网 案例赏析

前言 Schweppes&#xff0c;作为一家享誉全球的气泡水品牌&#xff0c;致力于与年轻消费者建立更紧密的联系&#xff0c;并提升品牌影响力。为此&#xff0c;其打造了一个充满创意和高度互动性的官网&#xff0c;利用前端技术和动画效果&#xff0c;将产品特性与用户浏览体验完…...

【前端】制作一个简单的网页(2)

单标签组成的元素 这类标签不需要内容产生效果&#xff0c;通常表示对网页的某种行为&#xff0c;它们不用标记任何内容&#xff0c;开始即是结束。 比如&#xff0c;<hr>标签的作用是在网页中添加一条分割线&#xff0c;它仅包含开始标签&#xff0c;是一个单标签元素。…...

OpenAI Canvas:提升编程与写作效率的全新工作界面

随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;LLM&#xff09;不仅限于生成文本&#xff0c;还能逐步扩展至编程、设计等任务的支持。近期&#xff0c;OpenAI 推出了一个名为 Canvas 的全新功能&#xff0c;专门用于协助用户进行编程和写作。这一功能与 Claud…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数&#xff0c;如果我们没有定义实现某个中断函数&#xff0c;那么当stm32产生了该中断时&#xff0c;就会默认跑这里来了&#xff0c;所以我们打开了什么中断&#xff0c;一定要记得实现对应的系统中断函数&#xff0c;否则会进来一直循环…...