最近接触到 Ivanti EndPoint Management
这个桌面终端管理软件,需要快速了解其核心功能和使用,心累~
# Ivanti Management 控制台
安装过程就不写了,傻瓜化安装,安装完 EPM核心服务器
后,在开始菜单找到 Ivanti Management 控制台
,点击打开,输入安装核心服务器时的账号和密码
如果是使用安装用户登录系统,可以不需要输入密码直接登录
# 核心服务器证书备份
安装核心服务器后,备份安装目录下的证书文件,防止服务器故障后无法恢复数据,证书路径在安装目录下的 LANDesk\Shared Files\keys 文件夹里,只需要备份 4 个证书相关文件,其它文件不需要备份
# EndPoint Management 用户管理
选择控制台中的工具箱管理,点击用户管理,在此处可以将本地的用户添加到 LANDesk 的组,赋予其对应的管理权限,如果将用户添加到 LANDesk Administrators
组,该用户则拥有控制台所有的权限(不推荐),默认是将用户添加到 LANDesk Management Suite
组里,然后再对其分配具体的权限
- Example:
在本地添加一个本地用户,并将其添加到 LANDesk Management Suite
组
然后在控制台的工具箱管理,点击用户管理,右键选择新建用户或组,将用户添加到 EMP 的用户管理
右键选择该用户属性,对其添加对应的角色和管理范围
可以在有效权限查看该角色拥有的具体权限,或者在用户管理下的角色查看每个角色具体拥有那些权限
如果这些系统自带的角色无法满足需求,还可以单击角色右键选择新建角色,新建一个自定义权限的角色
简单说一下这里角色权限的区别:
-
查看
可以在控制台看到这个配置,但是无法对其更改 -
编辑
可以在控制台对配置或计划进行创建和修改 -
部署
可以把已经创建好的配置或计划部署到客户端 -
公共编辑
可以编辑别人创建的配置,前提是这个配置是放在公共配置里
# 查询
在网络视图里,可以查询一些系统自带的查询模板,也可以自己添加一个自定义的查询,并且这个查询结果为动态
- Example:
添加一个服务器的查询
# 代理配置
代理配置是是生成客户端 Agent 的一些相关配置, 开始是对 Agent 的一些组件进行定义
# 标准 Ivanti 代理
这是针对 Agent 客户端一些策略,可以定义安装完 Agent 客户端是否需要重启,客户端在安装 Agent 后,不重启会有部分 Agent 组件不能正常工作,但是不会影响客户端的使用
# 客户端连通性
客户端连通性是 Agent 向服务器发起连接的配置,首先是核心服务器证书,然后是核心服务器的地址,如果服务器的 IP 地址是固定不变,这里建议设置成 IP 地址而不是计算机名,避免跨网段的客户端 DNS 服务器无法解析服务器计算名,配置完可以点击测试当前配置是否正常
云服务设置和远程控制隧道这两个一般不需要设置,下载可以定义文件在客户端缓存中保留的时间,也可以修改缓存文件的路径
首先服务器一般不需要设置,自我选择子网服务一般不需要所有的客户端都开启这个功能,当服务器发布程序的时候,安装了开启这个功能客户端在下载服务器的程序后,其它相同网段的客户端则会找这台客户端去下载对应的程序,而不需要去找服务器,这样可以减轻服务器的负担,所有同一个网段只需要有 1~2 台客户端安装这个服务即可
清单设置这个是针对资产的策略,常规设置可以定义客户端数据库保留天数和安装完软件是否启用自动扫描,软件使用情况监视一般可以取消掉,计划可以定义什么时候扫描
警报可以自定义一些报警功能,根据需求定义
重新启动设置,这个可以前面的一样,一般选择不重启
# 自定义数据表单
这里可以选择自定义数据表单的运行方式,一般选择启动时,这样用户开机登录时表单就会自动弹出让用户填写
与代理一起发送的表单,这里可以选择自定义好的数据表单,可以在工具箱的配置里的自定义数据表单点击添加新表单创建
# 分发和修补程序
门户管理器可以定义门户管理器添加到客户端的哪些位置,也可以通过设置自定义门户管理器的显示的信息和外观样式
Ivanti Workspaces 现在已经没有使用了,可以取消掉
# 安全和遵从性
如果代理程序勾选上端点安全,则可以在这来定义一些策略限制客户端的一些行为,例如 USB 控制,程序黑白名单等
其它的策略只有购买的对应的产品才可以使用
# 远程支持
常规设置一般勾选上允许 HTML 访问和以管理员身份允许
指示器设置可以保持默认,权限设置一般选择 2 或者 3,还可以自定义信息显示在远程的用户终端,另外勾选上一次请求使用全部功能的权限
安全设置可以选择管理远程支持用户和组,会话设置需要修改空闲时间后关闭远程,默认 10 分钟,建议修改成 30~60 分钟
如果客户端支持 HTML5 远程,则可以在浏览器对客户端进行远程,远程地址为:https://IP:4343
可以添加一个拥有 IT 支持的角色权限用户,用于运维人员远程维护客户端
# 电源管理
一般不配置,可以根据用户需要定义
承租人和自适应设置一般也用得少
# 分发程序
下面通过一个实例下发 Chrome 浏览器的程序了解分发程序的功能
首先把安装程序丢到 IIS 的虚拟目录,然后选择工具箱里的分发,选择分发程序,新建一个 Windows 的 MSI 程序包
填写一个分发名称,然后选择主文件
安装选项一般仅需要修改命令参数,将其设置成静默安装和安装完后不重启计算机
附加文件一般是类似于 office 这类软件安装,除了主安装程序外,还有其它的一些组件和调用文件,就需要在这里把其它的文件和文件夹添加进去
从属程序包一般是安装这个程序前,可能需要先安装其它的程序,例如这个程序需要先安装 .Net Famework
,就可以在这个地方把 .Net Famework
安装包添加进来
必要条件可以指定这个安装包在什么条件下才安装,例如这个安装包只在 Windows 10
的操作系统里安装,就可以添加一个 Win10
的条件进去
后面的一般都不需要设置了,保存后选中这个程序包,右键选择创建计划任务
在任务里把刚刚的查询条件拖动到所有设备
然后选中该任务,右键选择属性,因为是测试,我就直接在任务设置里选择推送
支持策略的推送表示这个任务会在门户创建一个任务,然后再推送这个安装包,如果推送失败,则由客户端下次触发该任务
策略表示这个任务会在门户创建一个任务,由客户端主动查看任务,如果有未完成任务,则执行
推送则表示这个任务由服务器直接推送给客户端,不管客户端是否在线,一般大批量推送不建议
代理设置一般选择不重启,这个需要自己提前在代理设置定义
代理设置里的分发和修补程序设置,一般核心服务器的带宽不要设置太大,避免服务器负载过高,对等连接的带宽可以设置大一点,这个在勾选了尝试对等下载的功能后,客户端会优先在其他已经下载好的客户端下载安装包,而不会去找服务器下载
一般第一台客户端机器下载安装后,会把安装包缓存在本地客户端安装目录下的 LDClient\sdmcache 目录中,并生成一个和安装包对应的 info 文件,里面包含的安装包的 hash 值,相同网段的客户端就会直接找这台客户端下载该安装包
其它的选项根据自己的实际需求去修改,然后我们保存,选择开始任务即可
# 安全和遵从性
# 安全活动
安全活动可以查看病毒库的状态、受感染的设备、应用程序的活动、权限控制已经设备管理等信息,直接点击安全活动可以直接查看各种活动的图形化报告
# 修补程序和遵从性
下载漏洞定义,这里可以定义操作系统类型、漏洞类型、驱动和软件等等、还可以对这些定义进行进一步的筛选,通过定义下载设置筛选严重性,也可以通过筛选器定义选择操作系统版本、软件产品漏洞和严重性
不重要的漏洞可以拖拽到不执行扫描列表,可以通过产品或供应商快速查看对应的漏洞和更新
可以设置一个计划任务定期对补丁进行扫描和自动修补
也可以在客户端上执行安全扫描,然后在服务器上查看扫描结果
# 部署
- PXE 部署
在工具箱配置里找到代理设置,点击客户端连通性,新建一个 PXE 的连接,启动自我选择子网服务,勾选启用 PXE 服务,然后创建一个计划任务,将该任务推送到指定的设备安装 PXE 服务
安装完后,在工具箱配置里找到自我选择子网服务,查看 PXE 是否有 PXE 主机的网段,如果有则代表安装成功,选中子网右键将其启用
查看 PXE 主机的 C:\Program Files (x86)\LANDesk 路径下的 PXE 文件夹大小是否在 800MB 左右,默认是 17MB,进入 C:\Program Files (x86)\LANDesk\PXE\System\images\Boot 目录,把目录下的 boot.wim 和 boot_x64.wim 备份一次,将来引导有问题可以直接覆盖还原
如果安装完 PXE 服务后,PXE 主机的 PEX 文件夹等待十多分钟还是没有变化,可以尝试重启 PXE 主机,还是不行的话,可以把 EPM 服务器下 C:\Program Files\LANDesk\ManagementSuite\LANDesk\files 的 Setup_PXEProxy.exe 程序直接拷贝到 PXE 主机安装
接下来可以找一台客户机用 PXE 启动看看是否能正常 PXE 主机提供的 WinPE 服务
如果无法访问,请检查 EPM 服务器的自我选择子网服务是否启用,PXE 主机的 69 端口是否处于监听状态,LANDESK (R) PXE MTFTP Service 和 LANDESK (R) PXE Service 服务是否启用,虚拟服务器是否已添加
如果不希望网卡启动的时候按 F8 选择,可以搭建 DHCP 服务器,在 DHCP 服务器指定启动文件,然后把 PXE 主机的 LANDESK (R) PXE Service 停掉
- 添加首选服务器
PXE 主机部署完成后,需要配置一个首选服务器,在工具箱部署里找到内容复制 / 首选服务器,点击首选服务器新建一个,填写号服务器用户名和密码,并测试一下凭证是否正常
这里的服务器名称必须和 HII 驱动程序管理的构建库一致,如果是计算名就填计算机名,IP 地址就填 IP 地址
设置 IP 地址范围,然后保存
- 驱动管理
在工具箱部署里找到 HII 驱动程序管理,默认构建库路径为 \IVT-SVR\ldmain\landesk\files\drivers,这个可以自行修改
如果是 DELL 或者 LENOVO 的机器,可以在工具箱安全和遵从性选择修补程序和遵从性,点击驱动程序,然后点下载,在更新选择 HII 驱动器对应的型号,然后在筛选器选择操作系统的版本
- 捕获镜像
先部署一台干净的系统,可以提前安装好常用软件,最后运行 C:\Windows\System32\Sysprep 下的 sysprep.exe
,勾选上通用配置,然后选择关机
在 EPM 服务器新建一个空白模板,在操作列表里的操作系统安装添加操作,先建立一个共享文件夹的映射盘,然后把镜像备份到映射盘
如果只是备份 C 盘,可以改成 /rb:0@0x1,表示只备份第一个分区
完成后开启刚刚准备好的系统,选择 PXE 启动,进入 ivanti PE 启动界面,输入服务器用户名和密码登录
可以通过 PXE 启动选项允许匿名用户登录,这样就不需要用户输入管理员账号和密码了,但是这样必须把模板创建在公共模板里面
这里如果出现中文乱码的情况,去微软官网下载对应的 ADK,然后挂载 boot.wim 镜像,添加对应 PE 版本的中文语言包和 lp.cab 包即可
Tisp:
如果用 LANDESK ImageW
方式捕获失败的话,可以选择其它,然后把 imagew.exe
程序拷贝到共享目录再试试
- 部署镜像
捕获好模板之后,就可以把这个模板部署到其它的终端设备,在操作系统部署这里选择新建部署模板
这里默认的脚本文件是 Win10 的,如果部署的是 Win7,需要自行在网上下载 Win7 的应答文件
模板设置一般如下,其它可以保持默认,请根据自己的需求配置
安装 LANDESK 代理建议使用独立客户端安装包安装,使用默认配置安装有时会安装失败
在系统配置这里还可以添加软件分发等操作,这个看需求
部署模板配置好之后,就可以打开客户机测试部署模板是否正常,如果部署过程中出现问题,可以在模板中的历史记录查看是哪一步出了错
# EPM 常用设置
# 自动删除长时间与服务器失去连接的客户端
打开配置 -- 服务,在清单设置里设置保留天数,超过这个天数服务器未扫描到的客户端会在执行维护时间后自动删除
如果需要手动删除,可以在工具箱 -- 数据分析 -- 数据库医生 -- 删除旧的计算机 里操作
# 客户端状态查看
遥控器图标代表可以远程,望眼镜图标代表 CBA 状态 (基本的客户端程序,必须存在这个客户端才能正常控制),5 表示支持 HTML5 远程
还可以在配置里选择代理状态选项,启用刷新频率,让服务器自动刷新当前客户端状态
# 设置清单历史记录
在配置里选择清单历史记录,勾选上需要监控的更改设置即可
例如监控客户端内存的变动,如果需要写入 windows 日志和警报,勾选上 NT 日志和警报即可
还可以在报告 / 监视中选择报告,在清单里选择自己关注的报告,右键可以创建一个计划,定时发送邮件通知收件人
# 建立卸载软件脚本
需要得到卸载软件的 GUID 值,可以通过控制台扫描软件清单,然后在软件授权监视里找个软件的 GUID
在分发找到管理脚本,新建一个脚本,把下面代码复制进去
[MACHINES_WIN] | |
REMEXEC1=<qt/>%SYSTEMROOT%\SYSTEM32\MSIEXEC.EXE<qt/> /X{软件GUID} /QN /noreboot |
然后保存到安装目录下的 ManagementSuite\scripts
目录下即可
# 卸载客户端代理
核心服务器安装目录下 ManagementSuite\ldmain
有个 UninstallWinClient.exe
程序,把这程序推送到客户端运行即可卸载客户端代理
# 批量增加资产字段
有的时候,资产清单自带的字段无法满足我们的要求,这时我们可以通过数据分析批量增加修改字段
首先在网络视图里的设备,随便选中一台设备,右键查看清单,在清单界面左上角选择新建字符串值,然后添加需要增加的字段名称和值
然后把设备导出为 CSV 格式
然后用 Excel 打开编辑该表格,可以保留一个主的匹配名称,把其它的数据删除掉,然后再添加刚刚添加的字段
编辑后另存为逗号分隔的 CSV 文件
然后选择工具箱里的数据分析,选择数据转换服务,在所有类型中选择导入数据下的所有规则,右键新建规则
先设置一个主键,然后选择编辑,选择列名对应的属性值,主键需要选择不覆盖现有值,避免修改了原有的数据
后面默认即可
完成后我们便可以在所有规则里找到刚刚新建好的规则,然后右键选择立即运行即可
# Agent 推送失败
在 EPM 控制台推送一台 Win7 的时候一直失败,用 WireShark
抓包查看结果,发现是在连接 Admin$
默认共享的时候被拒绝了,然后会话便注销了
经测试发现服务器访问客户端正常共享没有问题,但是访问 C$和Admin$
这些默认共享提示拒绝访问,最后发现是 UAC
策略的问题,在客户端上把 UAC
权限关闭并重启客户端,然后重新推送成功
如果是 win10 的话,关闭 UAC 之后依然是提示拒绝访问,需要在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
添加一个 LocalAccountTokenFilterPolicy
的 DWORD32值
,把值设置成 1,重启 Explorer
即可
# 未管理设备搜寻
客户端防火墙必须开启 ICMPv4协议
和 UDP 137
端口允许 NetBIOS
名称解析,否则无法发现客户端
# 分成程序任务报错日志路径
在分发程序包的时候,经常会遇到一些错误,可以通过系统日志查看具体的报错信息,日志默认保存路径为 C:\Users\Administrator\AppData\Local\Temp
,以 tmp
开头 tmp.txt
结尾的文件就是分发程序包的日志文件
# 查询注册表值
在工具栏找到管理软件列表,选择清单下面的注册表项目,右键新建
填写需要查询的注册表值,添加后点击在客户端上使用,然后对客户端进行一次清单扫描,执行完后这个信息就被添加到清单里面了
# 添加自定义 CMD 命令
在工具栏找到控制台扩展工具,选择添加命令控件添加自定义的命令即可
命令行需要添加变量 <Computer.Device.Nane>,否则默认返回本机执行结果
# 删除客户端自定义表单
在分发中找到管理脚本,添加自定义脚本,执行脚本即可
# EPM2021 开启实时监控功能
在 2020 版本中,/ldclient/ldprov.cgi 文件能让攻击者可以不需要身份验证就可以公开服务器操作系统、本地路径名和环境变量的信息
因此 2021 版本开始更改了实时库存和监控功能的默认行为
详情参考 CVE-2020-13772
CVE 被列为中等风险,对于某些设备或某些组织来说可能是可以接受的,通过设置以下注册表项 (DWORD),可以在客户端计算机上重新启用 Ldprov.cgi 及其功能:
在 32 位系统上:
HKEY_LOCAL_MACHINE\SOFTWARE\LANDesk\ManagementSuite\WinClient\EnableLDProvCGI = 1
在 64 位系统上:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\LANDesk\ManagementSuite\WinClient\EnableLDProvCGI = 1
# linux 代理脚本
linux 代理安装起来不像 windows 那么简单,安装需要拷贝多个文件,因此为了偷懒写了个脚本,对 shell 不是很熟,感觉有些地方可能会有问题,因为我仅在 centos7、8 和 Ubuntu 20.04 上测试过,后续有能力再优化
#!/bin/bash | |
# This script is ivanti agent installation script | |
USERNAME=user # 访问核心服务器共享账号 (拥有只读权限即可) | |
PASSWORD=password # 访问核心服务器共享账号密码 | |
SER_IP=192.168.1.1 # 核心服务器 IP 地址 | |
AGENT=Linux # Linux 代理配置名称 | |
# 判断操作系统版本,只判断 Redhat、CentOS 和 Ubuntu | |
OS=`cat /proc/version` | |
if [[ $OS == *"Red"* ]] ; then | |
DOWNLOAD=yum | |
PACKAGE='rpm -qa' | |
elif [[ $OS == *"ubuntu"* ]] ; then | |
DOWNLOAD=apt | |
PACKAGE='dpkg -l' | |
else | |
echo "This script only supports Redhat or CentOS and Ubuntu." | |
exit | |
fi | |
# 判断是否能够访问核心 | |
ping -c 2 $SER_IP >/dev/null 2>&1 || curl $SER_IP >/dev/null 2>&1 | |
if [ $? -ne 0 ] ; then | |
echo "the core server cannot be accessed, please chack the network!" | |
exit | |
fi | |
# 判断系统是否有安装 cifs-utils | |
$PACKAGE | grep cifs-utils >/dev/null 2>&1 | |
# When trying to mount a Windows / cifs / samba share it would give the following error: | |
# mount error(5): Input/output error | |
# Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) | |
# Add "sec=ntlm" to the options in the mount command. | |
if [ $? -ne 0 ] ; then | |
sudo $DOWNLOAD install cifs-utils -y 2>/dev/null | |
if [ $? -ne 0 ] ; then | |
echo "Install cifs-utils failed, Please chack the error info." | |
exit | |
# 挂载核心服务器 ldlogon 目录到本地 /mnt | |
sudo mount -t cifs -o username=$USERNAME,password=$PASSWORD //$SER_IP/ldlogon /mnt 2>/tmp/err.log | |
fi | |
# 判断挂载失败错误信息,如果是错误代码是 13、5、112 提示对应解决方案,其它错误代码请查看 err 信息 | |
if [ $? -ne 0 ] ; then | |
NUM=$(cat /tmp/err.log |grep "error(" |tr -cd "[0-9]") | |
if [ $NUM -eq 13 ] ; then | |
echo "mount error(13): Permission denied." | |
echo "Check whether the user name or password or core server are valid." | |
exit | |
elif [ $NUM -eq 5 ] ; then | |
echo "mount error(5): Input/output error." | |
echo "please add \"sec=ntlm\" to the options in the mount command." | |
# sudo mount -t cifs -o username=$USERNAME,password=$PASSWORD,sec=ntlm //$SER_IP/ldlogon /mnt 2>/tmp/err.log | |
exit | |
elif [ $NUM -eq 112 ] ; then | |
echo "mount error(112): Host is down." | |
echo "please add \"vers=2.0\" to the options in the mount command." | |
# sudo mount -t cifs -o username=$USERNAME,password=$PASSWORD,vers=2.0 //$SER_IP/ldlogon /mnt 2>/tmp/err.log | |
exit | |
else | |
cat /tmp/err.log | |
exit | |
fi | |
fi | |
# 复制核心代理相关文件到 /tmp 目录 | |
cp /mnt/*.0 /mnt/$AGENR.sh /mnt/$AGENT.ini /tmp | |
cp /mnt/unix/nixconfig.sh /mnt/unix/linux/baseclient64.tar.gz /mnt/unix/linux/vulscan64.tar.gz /tmp | |
# 断开核心共享 | |
umount /mnt | |
# 执行代理安装脚本 | |
/tmp/nixconfig.sh -a $SER_IP -c $AGENT.ini -i all -p | |
# 判断是否安装成功 | |
if [ $? -eq 0 ] ; then | |
添加landesk权限 | |
echo 'landesk ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers | |
echo "Ivanti Agent has been installed succeed." | |
# 安装成功删除自身 | |
#rm $0 | |
else | |
echo "install failed!" | |
fi | |
# run this command to uninstall the agent: /tmp/nixconfig.sh -r all |