Microsoft-Forefront
通過 Forefront 保護 Skype 流量
如何讓 Skype 在受限出站埠、HTTPS 檢查和啟用 IE 代理的情況下正常執行?我遇到的所有文件都建議至少禁用其中一項功能。
理想情況下,它應該像在 Skype 中將代理設置為埠 8080 上的最前端伺服器一樣簡單,但由於不斷添加新的目標和源 HTTPS 檢查排除項的管理成本,他們使用自簽名證書使這成為不可能。
我真正希望實現的是允許 Skype 和單獨的 Skype 的所有流量。
最後,我選擇了一種方法來允許所有流量從 Skype 執行檔中流出,但不允許來自其他任何東西。由於 Forefront 無法可靠地確定正在執行的執行檔,因此我選擇創建一個規則,允許特定使用者/使用者組的所有出站流量並強制 Skype 在該使用者/組下執行。以下 AutoIT 腳本提供了可靠地執行此操作所需的函式。
#include <Crypt.au3> ; #RequireAdmin ; only for setting the password Func SetEncrypted($vPassword,$Field) _Crypt_Startup() $path="HKLM\Software\MyORG\Skype" $Key=_Crypt_DeriveKey($vPassword, $CALG_AES_256 ) $FieldValue=InputBox($Field,"") $output=_Crypt_EncryptData($FieldValue,$Key,$CALG_USERKEY) RegWrite($path,$Field,"REG_SZ",$output) _Crypt_DestroyKey($Key) _Crypt_Shutdown() EndFunc Func GetEncrypted($vPassword,$Field) _Crypt_Startup() $path="HKLM\Software\MyORG\Skype" $Key=_Crypt_DeriveKey($vPassword, $CALG_AES_256 ) $input=RegRead($path,$Field) $decrypted=_Crypt_DecryptData($input,$Key,$CALG_USERKEY) $decrypted=BinaryToString($decrypted) _Crypt_DestroyKey($Key) _Crypt_Shutdown() Return $decrypted EndFunc $EncryptionPassword="super password which will be buried in the exe itself, set this yourself " ;SetEncrypted($EncryptionPassword,"Domain") ;SetEncrypted($EncryptionPassword,"User") ;SetEncrypted($EncryptionPassword,"Password") $User=GetEncrypted($EncryptionPassword,"User") $Pass=GetEncrypted($EncryptionPassword,"Password") $Domain=GetEncrypted($EncryptionPassword,"Domain") ; Find the executable name. $Skype = RegRead("HKLM\SOFTWARE\Skype\Phone", "SkypePath") If( $Skype = "" ) Then ; 64 bit support $Skype= RegRead("HKLM\SOFTWARE\Wow6432Node\Skype\Phone", "SkypePath") EndIf MsgBox(0,"",$Skype) ; Run Skype under alternate credentials. RunAs($User,$Domain,$Pass, 4, $Skype, @SystemDir )
通過將 ID 和密碼儲存在系統資料庫中,可以很容易地為與備用憑據關聯的帳戶進行密碼更新 - GPP 系統資料庫項可以解決問題。
編輯 - 對所有出站流量使用身份驗證的出站規則必須位於優先級列表的最底部,直接高於預設規則。如果不這樣做,任何由內而外的未經身份驗證的流量(例如發送給外部各方的電子郵件)都將被終止。