当前位置: 首页 > 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…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...