Proteger o tráfego do Skype por meio do Forefront

1

Como posso permitir que o Skype funcione corretamente com portas de saída restritas, inspeção HTTPS e proxy do IE ativado? Toda a documentação que encontrei sugere a desativação de pelo menos um desses recursos.

Idealmente, deve ser tão simples quanto configurar o proxy no Skype para o servidor de vanguarda na porta 8080, mas o uso de certificados auto-assinados torna isso impossível devido à sobrecarga administrativa de adicionar constantemente novas exclusões de inspeção de HTTPS de destino e origem.

O que eu realmente espero alcançar é permitir todo o tráfego do Skype e do Skype sozinho.

    
por Tim Brigham 29.09.2011 / 20:01

1 resposta

1

No final, optei por um método para permitir todo o tráfego fora do executável do Skype, mas não de qualquer outra coisa. Como o Forefront não pode determinar com segurança o executável que está sendo executado, optei por criar uma regra que permita a saída de todo o tráfego de um usuário / grupo de usuários específico e force o Skype a executar esse usuário / grupo. O seguinte script AutoIT fornece as funções necessárias para fazê-lo de forma confiável.

#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 )

Ao armazenar o ID e a senha no registro, é muito fácil fazer uma atualização de senha para as contas associadas às credenciais alternativas - um item de registro GPP faz o truque.

EDIT - A regra de saída que utiliza autenticação para todo o tráfego de saída deve estar bem no final da lista de prioridades, diretamente acima da regra padrão. Se isso não for feito, qualquer tráfego não autenticado de dentro para fora (como e-mail para terceiros) será eliminado.

    
por 29.09.2011 / 21:03