Introduzione
In questo documento viene descritto come configurare Cisco Secure Client scripting con Secure Firewall ASA e FTD.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Configurazione SSL di Cisco Secure Client tramite Secure Firewall ASA e Secure Firewall Threat Defense gestita da Cisco Secure Firewall Management Center (FMC)
- Accesso ASDM
- Accesso SSH FTD
- Script OnConnect e OnDisconnect
Componenti usati
- Secure Firewall ASA
- Protezione dalle minacce del firewall
- Cisco Secure Firewall Management Center
- Cisco Secure Client 5.0.03072
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
Sono riportati due esempi di configurazione:
- Impostazione di script client sicuri con ASA Secure Firewall gestita da ASDM.
- Configurazione di script client sicuri con Secure Firewall Threat Defense gestita da Cisco Secure Firewall Management Center.
Poiché FTD gestito da FMC non è ancora ufficialmente supportato da FMC, verrà implementata una soluzione per la richiesta di miglioramento dell'ID bug Cisco
Configurazione
Configurazioni
Impostazione di script client sicuri con ASA Secure Firewall gestita da ASDM Esempio di configurazione:
Passaggio 1. Creare un profilo client sicuro e abilitare lo scripting nelle preferenze (Parte 2).
Editor profili XML AnyConnect
Opzioni aggiuntive dal profilo xml:
- Selezionare Termina script sull'evento successivo per consentire al client di terminare un processo di script in esecuzione se si verifica una transizione a un altro evento di script. Ad esempio, il client termina uno script On Connect in esecuzione se la sessione VPN termina e uno script OnDisconnect in esecuzione se Cisco Secure Client avvia una nuova sessione VPN. In Microsoft Windows, il client termina anche gli script avviati dallo script On Connect o OnDisconnect e tutti i relativi discendenti. In macOS e Linux, il client termina solo lo script On Connect o OnDisconnect, non gli script secondari.
- Selezionare Abilita script Post SBL su connessione (abilitato per impostazione predefinita) per consentire al client di avviare lo script On Connect (se presente) se SBL stabilisce la sessione VPN.
Accertarsi di assegnare il profilo AnyConnect ai Criteri di gruppo appropriati:
Assegnazione di Criteri di gruppo XML
Passaggio 2. Configurare lo script.
Poiché Cisco non supporta gli script di esempio o quelli scritti dal cliente, sono disponibili alcuni esempi che è possibile verificare in base alle esigenze:
script di Windows
Attenzione: assicurarsi di utilizzare i comandi supportati da cmd.exe a 32 bit.
1. Script per mappare un'unità:
OnConnect.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample AnyConnect OnConnect script."
Dim strDriveLetter, strRemotePath
strDriveLetter = "REPLACE_WITH_DRIVE_LETTER:"
strRemotePath = "\\REPLACE_WITH_SERVER_NAME\REPLACE_WITH_SHARE"
Set objNetwork = CreateObject("WScript.Network")
' remove old mapping (if any)
objNetwork.RemoveNetworkDrive strDriveLetter
' add new mapping
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
If Err.Number <> 0 Then
objShell.LogEvent 0, "Failed to map network drive." & vbCrLf & Err.Number & ": " & Err.Description
End If
WScript.Quit
OnDisconnect.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample AnyConnect OnDisconnect script."
Dim strDriveLetter
strDriveLetter = "REPLACE_WITH_DRIVE_LETTER:"
Set objNetwork = CreateObject("WScript.Network")
' remove old mapping (if any)
objNetwork.RemoveNetworkDrive strDriveLetter
WScript.Quit
2. Script per aggiornare un criterio di gruppo di Windows:
OnConnect.vbs o OnDisconnect.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample AnyConnect OnConnect script."
' refreshes local and Active Directory-based Group Policy settings, including security settings
returnCode = objShell.Run("gpupdate.exe /force", 0, True)
If returnCode <> 0 Then
objShell.LogEvent 0, "Failed to update Group Policy settings." & vbCrLf & Err.Number & ": " & Err.Description
End If
objShell.LogEvent 0, "User's Group Policy settings have been updated."
WScript.Quit
3. Avvio di più script:
Script1.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 1."
WScript.Quit
Script 2.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 2."
WScript.Quit 5
Script 3.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 3."
WScript.Quit
OnConnect.vbs o OnDisconnect.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample AnyConnect OnConnect script."
' launch each script after the previous has completed
returnCode = objShell.Run("wscript.exe Script1.vbs", 0, True)
objShell.LogEvent 0, "Script1.vbs returned = " & returnCode
returnCode = objShell.Run("wscript.exe Script2.vbs", 0, True)
objShell.LogEvent 0, "Script2.vbs returned = " & returnCode
returnCode = objShell.Run("wscript.exe Script3.vbs", 0, True)
objShell.LogEvent 0, "Script3.vbs returned = " & returnCode
WScript.Quit
Nota: questi esempi vengono forniti così come sono senza alcuna garanzia o supporto impliciti. È progettato per assistere l'utente nell'uso della funzione di script Cisco AnyConnect. Si presume che il riferimento a questo esempio sia puramente indicativo.
Script Linux
1. Avvio di più script:
Script1.sh
#!/bin/sh
logger "Sample script 1."
Script 2.sh
#!/bin/sh
logger "Sample script 2."
Script 3.sh
#!/bin/sh
logger "Sample script 3."
OnConnect.sh o OnDisconnect.sh
#!/bin/sh
logger "Sample AnyConnect OnConnect script."
# launch each script after the previous has completed
./Script1.sh
logger "Script1.sh returned = $?"
./Script2.sh
logger "Script2.sh returned = $?"
./Script3.sh
logger "Script3.sh returned = $?"
Nota: questi esempi vengono forniti così come sono senza alcuna garanzia o supporto impliciti. È progettato per assistere l'utente nell'uso della funzione di script Cisco AnyConnect. Si presume che il riferimento a questo esempio sia puramente indicativo.
Script MacOS
1. Avvio di AppleScript:
Script1.scpt
#!/bin/sh
say "This is a Sample AppleScript"
OnConnect.sh
#!/bin/sh
logger "Sample AnyConnect OnConnect script."
# launch the AppleScript script
/usr/bin/osascript Script1.scpt
2. Avvio di più script
Script1.sh
#!/bin/sh
logger "Sample script 1."
Script 2.sh
#!/bin/sh
logger "Sample script 2."
Script 3.sh
#!/bin/sh
logger "Sample script 3."
OnConnect.sh
#!/bin/sh
logger "Sample AnyConnect OnConnect script."
# launch each script after the previous has completed
./Script1.sh
logger "Script1.sh returned = $?"
./Script2.sh
logger "Script2.sh returned = $?"
./Script3.sh
logger "Script3.sh returned = $?"
Nota: questi esempi vengono forniti così come sono senza alcuna garanzia o supporto impliciti. È progettato per assistere l'utente nell'uso della funzione di script Cisco AnyConnect. Si presume che il riferimento a questo esempio sia puramente indicativo.
Passaggio 3. Importare lo script tramite ASDM
Impostazioni script AnyConnect ASDM
Impostazione di script client sicuri con FTD gestito da FMC
Al momento la configurazione dello scripting client sicuro non è supportata dalla console Gestione risorse, è richiesta una versione migliorata dell'ID bug Cisco CSCvt58044 per il supporto. In base a ciò, abbiamo a disposizione una soluzione per consentire la configurazione e la distribuzione degli script.
Passaggio 1. Creare un profilo client sicuro e abilitare lo scripting nelle preferenze (Parte 2) con l'editor dei profili VPN.
Icona Editor profili VPN
Editor di profili Secure Client 5
Passaggio 2. Creare lo script (gli stessi esempi di script riportati sopra)
Passaggio 3. Annotare le dimensioni del file in byte
Aprire le proprietà dello script facendo clic con il pulsante destro del mouse su di esso, nella scheda Generale controllare la Dimensione e annotarlo.
Proprietà script
Passaggio 4. Importare lo script:
Opzione 1. Trasferimento TFTP/FTP:
Appliance SSH-FTD e accesso al supporto del sistema diagnostic-cli
Copiare lo script dal server TFTP/FTP alla memoria flash:
TFTP:
>system support diagnostic-cli
FTD#copy tftp:/<serverip>/<filename> flash:/<filename>
FTP:
>system support diagnostic-cli
FTD#copy ftp:<username>:<password>@<serverip>/<filename> flash:/<filename>
Importare la personalizzazione AnyConnect di webvpn:
Il nome del file deve essere preceduto da scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs flash:/scripts_OnConnect_login.vbs
Opzione2. Copiare lo script direttamente nella CLI:
Appliance SSH-FTD e accesso al supporto del sistema diagnostic-cli
Immettere questo comando:
Il nome del file deve essere preceduto da scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs stdin 943
Note: stdin indica le dimensioni in byte dello script dal passaggio 2.
Dopo aver immesso il comando import, è necessario incollare lo script effettivo sulla CLI e, anche se questo non mostra l'output, è sufficiente immettere un paio di volte fino a quando non si torna alla CLI.
Nota: l'operazione di incollamento dello script nella CLI potrebbe richiedere alcuni minuti, a seconda delle dimensioni dello script.
È possibile verificare che lo script sia stato importato correttamente eseguendo il comando:
FTD#export webvpn AnyConnect-customization type binary platform win name <scriptname>.vbs flash:/<scriptname>.vbs
FTD#more flash:/<scriptname>.vbs
Se è necessario rimuovere lo script, è possibile eseguire il seguente comando dalla CLI:
FTD#revert webvpn AnyConnect-customization type binary platform win name <scriptname>
Passaggio 5. Caricare il profilo VPN Secure Client nel FMC e applicarlo ai Criteri di gruppo:
Selezionare Dispositivi> Accesso remoto> selezionare Profilo connessione e Modifica> Avanzate> Criteri di gruppo> modificare Criteri di gruppo> Secure Client> Profilo> è possibile selezionare il profilo se è già caricato in FMC oppure fare clic sull'opzione più e caricare il profilo da qui.
Configurazione di Criteri di gruppo FMC
Verifica
Dopo la connessione tramite la VPN, è possibile verificare che lo script sia stato distribuito correttamente verificando questo percorso a seconda del sistema operativo:
Microsoft Windows |
%ALLUSERSPROFILE%\Cisco\Cisco Secure Client\VPN\Script |
Linux In Linux, assegnare le autorizzazioni di esecuzione al file per Utente, Gruppo e Altro. |
/opt/cisco/secureclient/vpn/script |
macOS |
/opt/cisco/secureclient/vpn/script |
Risoluzione dei problemi
1. Verificare che lo script abbia un nome con prefisso OnConnect
o OnDisconnect
. Se si usa ASDM versione 6.3 o successive, l'appliance ASA Secure Firewall aggiunge il prefisso scripts_ e il prefisso OnConnect o OnDisconnect al nome del file per identificare il file come script. Quando il client si connette, l'accessorio di protezione scarica lo script nella directory di destinazione appropriata nel computer remoto, rimuove il prefisso scripts_ e lascia il prefisso OnConnect o OnDisconnect. Se ad esempio si importa lo script myscript.bat, lo script verrà visualizzato nell'accessorio di protezione come scripts_OnConnect_myscript.bat. Sul computer remoto, lo script viene visualizzato come OnConnect_myscript.bat.
2. Provare ad eseguire lo script dalla riga di comando. Il client non può eseguire lo script se non può essere eseguito dalla riga di comando. Se l'esecuzione dello script sulla riga di comando non riesce, verificare che l'applicazione che esegue lo script sia installata e provare a riscrivere lo script in tale sistema operativo.
3. Verificare che vi sia un solo script OnConnect e un solo script OnDisconnect nella directory degli script sull'endpoint VPN. Se il client scarica uno script OnConnect dall'appliance ASA Secure Firewall, quindi scarica un secondo script OnConnect con un suffisso di nome file diverso per un'altra appliance ASA Secure Firewall, il client non può eseguire lo script desiderato. Se il percorso dello script contiene più script OnConnect o OnDisconnect e si utilizza l'appliance ASA Secure Firewall per distribuire gli script, rimuovere il contenuto della directory degli script e ristabilire una sessione VPN. Se il percorso dello script contiene più script OnConnect o OnDisconnect e si utilizza il metodo di distribuzione manuale, rimuovere gli script indesiderati e ristabilire una sessione VPN.
4. Se il sistema operativo è Linux o MacOS, assicurarsi che le autorizzazioni del file di script siano impostate per l'esecuzione. Se l'autorizzazione non è impostata per l'esecuzione, è possibile eseguire questo comando per renderlo eseguibile:
$ cd DirectoryScript
$ sudo chmod +755 <nomescript>
5. Verificare che lo scripting sia abilitato per il profilo client.
6. A seconda del modo in cui si scrive lo script, è necessario disporre di un'opzione per registrare l'avanzamento dello script, ad esempio con il file .vbs è possibile utilizzare objShell.LogEvent, quindi passare al visualizzatore eventi di Windows e verificare se questa operazione ha avuto esito positivo o negativo:
Utilizzo come esempio dello script di esempio Script per aggiornare un criterio di gruppo di Windows
Registri del Visualizzatore eventi