VMware最近釋出了一個新的安全公告(VMSA-2024-0003),它影響了已棄用(vCenter Server 7.0 U2版本)的VMware 增強身份驗證外掛(EAP)。
根據官方說明,可根據VMware KB 96442刪除安裝在桌面系統中的EAP外掛,其中EAP外掛包含瀏覽器內外掛/客戶端和Windows服務外掛。
不過,除了刪除桌面系統中已安裝的EAP外掛以外,有人提出如何禁用EAP外掛下載本身的問題,該EAP外掛預設作為vSphere UI登入頁面中的超連結提供,如下圖所示(位於底部):
我知道有幾種方法可以同時阻止和/或刪除這個URL下載連結,因此,我將這幾種方法列出來,使用者可以根據習慣自行選擇哪種方式進行使用。
一、禁用vSphere UI上的“使用 Windows 會話身份驗證”
EAP外掛與vSphere UI中提供的“使用 Windows 會話身份驗證”核取方塊結合使用。如果您希望同時禁用該功能,感謝Reddit 使用者 r/always_salty,他早些時候透過使用 sso-config.sh 實用程式在vCenter Server Appliance (VCSA)上SHELL執行以下命令來完全禁用 Windows 身份驗證:
sso-config.sh -set_authn_policy -winAuthn false -t vsphere.local
執行後,重新重新整理vSphere UI登入介面,“使用 Windows 會話身份驗證”核取方塊已經不存在。
二、將EAP的URL下載連結重定向到localhost
雖然您可以解除安裝EAP外掛並完全禁用 Windows 身份驗證,但透過Windows桌面訪問vSphere UI的任何人仍可以看到下載 URL連結(如果您使用的是Linux或macOS系統,則在開啟vSphere UI時不會顯示)。
如果您仔細檢視,您會發現EAP外掛的URL實際上並不託管在VCSA上,而是託管在VMware的網站上。您可以使用一個簡單的技巧,更新VCSA上的/etc/hosts檔案,將主機名vsphereclient.vmware.com重定向到localhost (127.0.0.1),這樣當使用者單擊連結時,它就不會跳轉去任何地方。為此,請登入VCSA並將以下條目新增到/etc/hosts檔案中:
127.0.0.1 vsphereclient.vmware.com
新增到hosts檔案後,您再點選“下載增強型身份驗證外掛”將不會跳轉到任何地方。
注意:如果您組織內能夠有辦法阻止特定 URL,比如透過網路防火牆進行訪問控制,這是一個可擴充套件性選項,而不侷限於對單個VCSA進行更改。
三、修改EAP的URL下載連結
將EAP下載URL重定向到localhost是一個很好的技巧,但它實際上並不會更改 URL 字串本身,當您懸停或右鍵單擊連結時,該字串依然可見。
如果您想要更改URL連結,則需要修改VCSA中/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/resources/js/websso.js的以下部分:
// builds a complete url for the CIP plugin
var createCompleteUrl = function createCompleteUrl() {
var url = 'http://vsphereclient.vmware.com/vsphereclient/' +
'VMware-EnhancedAuthenticationPlugin-' +
cipBuildVersion +
'.exe';
return url ;
};
var isVCLogin = function isVCLogin() {
if (tenant_brandname == null || tenant_brandname == '') {
return true;
} else {
return false;
}
};
修改成你想要的URL連結:
// builds a complete url for the CIP plugin
var createCompleteUrl = function createCompleteUrl() {
var url = 'http://no.eap.download.for.you';
return url ;
};
var isVCLogin = function isVCLogin() {
if (tenant_brandname == null || tenant_brandname == '') {
return true;
} else {
return false;
}
};
登入vSphere UI,重新整理一下網頁,將滑鼠懸停或右鍵單擊連結時,該URL下載連結已經改變。
如果環境是vCenter 8.0版本,VCSA路徑沒有/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/resources/js/websso.js檔案,只有/usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war檔案,下面是vCenter 8.0版本的修改過程,僅供參考:
cp /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war.bak
mkdir /root/ROOT
cp /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war /root/ROOT/
cd /root/ROOT
unzip ROOT.war
rm ROOT.war
vim resources/js/websso.js //第321-324行,同上述中的修改方式一樣
zip -r /root/ROOT.war index.jsp META-INF resources WEB-INF
cp /root/ROOT.war /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war
cd /root/
rm /root/ROOT -rf
rm /root/ROOT.war
reboot
注意:更新或者升級VCSA時不會保留對預設websso.js條目的修改,如果更新VCSA後,則需要重新修改此項。
四、刪除EAP的URL下載連結
如果我們還想更進一步,阻止EAP的URL下載連結顯示,那麼我們同樣可以基於現有的程式碼,在當它檢測到您使用的是Linux或macOS系統時阻止URL顯示的這個地方,對/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/resources/js/websso.js進行小小的調整:
// if CIP is installed, writes to browser localStorage to set var "vmwCIPInstalled" to "true"
// if CIP is not installed, set var to "false"
var setCSDInstalled = function setCSDInstalled(){
var sspiCheckboxEle = document.getElementById('sspiCheckbox');
if (this._VersionStr != null || !isVCLogin()) {
if (sspiCheckboxEle != null && windows_auth == "true" && !isMac && !isLinux) {
sspiCheckboxEle.disabled = false;
checkboxDisableChange(sspiCheckboxEle);
}
$('#footer').html('');
$('#footer').css('display', 'none');
} else {
if (!isMac && !isLinux) {
if (sspiCheckboxEle != null) {
sspiCheckboxEle.disabled = true;
checkboxDisableChange(sspiCheckboxEle);
}
var cspDownloadLink = createCompleteUrl();
$('#footer').css('display', 'block');
$('#downloadCIPlink').attr('href', cspDownloadLink);
$('#downloadCIPlinkBox').show();
}
}
};
將if (!isMac && !isLinux)這行程式碼中的感嘆號"!"去掉
// if CIP is installed, writes to browser localStorage to set var "vmwCIPInstalled" to "true"
// if CIP is not installed, set var to "false"
var setCSDInstalled = function setCSDInstalled(){
var sspiCheckboxEle = document.getElementById('sspiCheckbox');
if (this._VersionStr != null || !isVCLogin()) {
if (sspiCheckboxEle != null && windows_auth == "true" && !isMac && !isLinux) {
sspiCheckboxEle.disabled = false;
checkboxDisableChange(sspiCheckboxEle);
}
$('#footer').html('');
$('#footer').css('display', 'none');
} else {
if (isMac && isLinux) {
if (sspiCheckboxEle != null) {
sspiCheckboxEle.disabled = true;
checkboxDisableChange(sspiCheckboxEle);
}
var cspDownloadLink = createCompleteUrl();
$('#footer').css('display', 'block');
$('#downloadCIPlink').attr('href', cspDownloadLink);
$('#downloadCIPlinkBox').show();
}
}
};
登入vSphere UI,重新整理一下網頁,可以發現“下載增強型身份驗證外掛”已經不顯示了,無論客戶端的作業系統是哪種。
如果環境是vCenter 8.0版本,VCSA路徑沒有/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/resources/js/websso.js檔案,只有/usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war檔案,下面是vCenter 8.0版本的修改過程,僅供參考:
cp /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war.bak
mkdir /root/ROOT
cp /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war /root/ROOT/
cd /root/ROOT
unzip ROOT.war
rm ROOT.war
vim resources/js/websso.js //第306行,同上述中的修改方式一樣
zip -r /root/ROOT.war index.jsp META-INF resources WEB-INF
cp /root/ROOT.war /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war
cd /root/
rm /root/ROOT -rf
rm /root/ROOT.war
reboot
注意:更新或者升級VCSA時不會保留對預設websso.js條目的修改,如果更新VCSA後,則需要重新修改此項。
參考:Quick Tip - Block or remove download URL for VMware Enhanced Authentication Plug-in (EAP)