Introducción
Este documento describe cómo configurar Cisco Secure Client scripting con Secure Firewall ASA y FTD.
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
- Configuración de Cisco Secure Client SSL a través de Secure Firewall ASA y Secure Firewall Threat Defense gestionada por Cisco Secure Firewall Management Center (FMC)
- acceso ASDM
- acceso SSH FTD
- Scripts OnConnect y OnDisconnect
Componentes Utilizados
- ASA de firewall seguro
- Firewall seguro Threat Defence
- Cisco Secure Firewall Management Center
- Cisco Secure Client 5.0.03072
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
Tratamos dos ejemplos de configuración diferentes:
- Configuración de scripts de Secure Client con Secure Firewall ASA administrado por ASDM.
- Configuración de secuencias de comandos de Secure Client con Secure Firewall Threat Defence gestionado por Cisco Secure Firewall Management Center.
Con FTD administrado por FMC, este aún no es oficialmente compatible con FMC, por lo que vamos a implementar una solución alternativa a la solicitud de mejora Cisco bug ID
Configurar
Configuraciones
Ejemplo de configuración de configuración de la configuración de Secure Client scripting con Secure Firewall ASA administrado por ASDM:
Paso 1. Cree un perfil de cliente seguro y habilite las secuencias de comandos en las preferencias (parte 2).
Editor de perfiles XML de AnyConnect
Opciones adicionales del perfil xml:
- Marque Terminate Script On Next Event para permitir que el cliente termine un proceso de script en ejecución si se produce una transición a otro evento de script. Por ejemplo, el cliente termina una secuencia de comandos On Connect en ejecución si la sesión VPN finaliza y termina una secuencia de comandos OnDisconnect en ejecución si Cisco Secure Client inicia una nueva sesión VPN. En Microsoft Windows, el cliente también finaliza cualquier secuencia de comandos que se haya iniciado con On Connect u OnDisconnect, así como todas sus secuencias de comandos descendientes. En macOS y Linux, el cliente finaliza solamente el script On Connect u OnDisconnect; no finaliza los scripts secundarios.
- Marque Enable Post SBL On Connect Script (Habilitar script de conexión posterior a SBL) (habilitado de forma predeterminada) para permitir que el cliente inicie el script de conexión (si está presente) si SBL establece la sesión VPN.
Asegúrese de asignar el perfil de AnyConnect a la política de grupo adecuada:
Asignación de directiva de grupo XML
Paso 2. Configure el script.
Dado que Cisco no admite scripts de ejemplo ni scripts escritos por el cliente, tenemos algunos ejemplos que puede probar según sus necesidades:
Scripts de Windows
Precaución: Asegúrese de utilizar los comandos admitidos por cmd.exe de 32 bits.
1. Script para asignar una unidad:
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 para actualizar una política de grupo de ventanas:
OnConnect.vbs u 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. Inicio de varios scripts:
Script1.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 1."
WScript.Quit
Script2.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 2."
WScript.Quit 5
Script3.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 3."
WScript.Quit
OnConnect.vbs u 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: estos ejemplos se suministran tal cual, sin garantía ni asistencia implícitas. Se ha diseñado para ayudarle a utilizar la función de scripting de Cisco AnyConnect. Se supone que se está refiriendo a este ejemplo sólo como referencia.
Script Linux
1. Inicio de varios scripts:
Script1.sh
#!/bin/sh
logger "Sample script 1."
Script2.sh
#!/bin/sh
logger "Sample script 2."
Script3.sh
#!/bin/sh
logger "Sample script 3."
OnConnect.sh u 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: estos ejemplos se suministran tal cual, sin garantía ni asistencia implícitas. Se ha diseñado para ayudarle a utilizar la función de scripting de Cisco AnyConnect. Se supone que se está refiriendo a este ejemplo sólo como referencia.
Scripts de MacOS
1. Inicio de 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. Inicio de varios scripts
Script1.sh
#!/bin/sh
logger "Sample script 1."
Script2.sh
#!/bin/sh
logger "Sample script 2."
Script3.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: estos ejemplos se suministran tal cual, sin garantía ni asistencia implícitas. Se ha diseñado para ayudarle a utilizar la función de scripting de Cisco AnyConnect. Se supone que se está refiriendo a este ejemplo sólo como referencia.
Paso 3. Importar el script mediante ASDM
Configuración de scripts ASDM de AnyConnect
Configuración de secuencias de comandos de Secure Client con FTD gestionado por FMC
El FMC no admite la configuración actual de secuencias de comandos de Secure Client; existe una solicitud de mejora del ID de error de Cisco CSCvt58044 para que sea compatible. En función de esto, contamos con una solución alternativa para permitir la configuración e implementación de los scripts.
Paso 1. Cree un perfil de cliente seguro y habilite las secuencias de comandos en las preferencias (parte 2) con el editor de perfiles de VPN.
Icono del Editor de perfiles VPN
Editor de perfiles de Secure Client 5
Paso 2. Crear el script (los mismos ejemplos de script anteriores)
Paso 3. Observe el tamaño del archivo en bytes
Abra las propiedades del script haciendo clic con el botón derecho del ratón en él, en la ficha General marque el Tamaño y anótelo.
Propiedades del script
Paso 4. Importar el script:
Opción 1. Transferencia TFTP/FTP:
SSH a dispositivo FTD e introduzca la cli de diagnóstico de soporte del sistema
Copie la secuencia de comandos de su servidor TFTP/FTP a la 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>
Importe la personalización de webvpn AnyConnect:
El nombre de archivo debe ir precedido de scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs flash:/scripts_OnConnect_login.vbs
Opción 2. Copie la secuencia de comandos directamente en la CLI:
SSH a dispositivo FTD e introduzca la cli de diagnóstico de soporte del sistema
Ingrese este comando:
El nombre de archivo debe ir precedido de scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs stdin 943
Notas: El stdin es el tamaño en bytes del script del paso 2.
Después de ingresar el comando de importación, debe pegar la secuencia de comandos real en la CLI y, aunque esto no va a mostrar la salida, solo debe ingresar un par de veces hasta que regrese a la CLI.
Nota: Pegar la secuencia de comandos en la CLI puede tardar un tiempo, dependiendo del tamaño de la secuencia de comandos.
Puede verificar que la secuencia de comandos se importó correctamente ejecutando el comando:
FTD#export webvpn AnyConnect-customization type binary platform win name <scriptname>.vbs flash:/<scriptname>.vbs
FTD#more flash:/<scriptname>.vbs
Si necesita quitar la secuencia de comandos, puede ejecutar el siguiente comando desde la CLI:
FTD#revert webvpn AnyConnect-customization type binary platform win name <scriptname>
Paso 5. Cargue el perfil VPN de Secure Client en el FMC y aplíquelo a la política de grupo:
Vaya a Devices> Remote Access> select the Connection Profile and Edit> Advanced> Group Policies> edit the Group Policy> Secure Client> Profile> puede seleccionar el perfil si ya está cargado en el FMC o puede hacer clic en la opción más y cargar el perfil desde allí.
Configuración de la política de grupo FMC
Verificación
Después de conectarse a través de la VPN, puede confirmar que la secuencia de comandos se implementó correctamente marcando esta ruta en función del sistema operativo:
Microsoft Windows |
%ALLUSERSPROFILE%\Cisco\Cisco Secure Client\VPN\Script |
Linux (En Linux, asigne permisos de ejecución al archivo para Usuario, Grupo y Otros.) |
/opt/cisco/secureclient/vpn/script |
macOS |
/opt/cisco/secureclient/vpn/script |
Troubleshoot
1. Asegúrese de que la secuencia de comandos tenga un nombre de prefijo OnConnect
o OnDisconnect
. Si utiliza ASDM versión 6.3 o posterior, Secure Firewall ASA agrega el prefijo scripts_ y el prefijo OnConnect u OnDisconnect al nombre de archivo para identificar el archivo como secuencia de comandos. Cuando el cliente se conecta, el dispositivo de seguridad descarga la secuencia de comandos en el directorio de destino adecuado del equipo remoto, quita el prefijo scripts_ y deja el prefijo OnConnect u OnDisconnect. Por ejemplo, si importa la secuencia de comandos myscript.bat, la secuencia de comandos aparecerá en el dispositivo de seguridad como scripts_OnConnect_myscript.bat. En el equipo remoto, el script aparece como OnConnect_myscript.bat.
2. Intente ejecutar la secuencia de comandos desde la línea de comandos. El cliente no puede ejecutar la secuencia de comandos si no se puede ejecutar desde la línea de comandos. Si la secuencia de comandos no se puede ejecutar en la línea de comandos, asegúrese de que la aplicación que ejecuta la secuencia de comandos está instalada e intente volver a escribir la secuencia de comandos en ese sistema operativo.
3. Compruebe que sólo hay una secuencia de comandos OnConnect y una secuencia de comandos OnDisconnect en el directorio de secuencias de comandos del extremo VPN. Si el cliente descarga una secuencia de comandos de OnConnect desde Secure Firewall ASA, descarga una segunda secuencia de comandos de OnConnect con un sufijo de nombre de archivo diferente para otro ASA de Secure Firewall, el cliente no podrá ejecutar la secuencia de comandos que pretendía ejecutar. Si la ruta de acceso de la secuencia de comandos contiene más de una secuencia de comandos OnConnect u OnDisconnect y está utilizando Secure Firewall ASA para implementar secuencias de comandos, quite el contenido del directorio de secuencias de comandos y restablezca una sesión VPN. Si la ruta de acceso de la secuencia de comandos contiene más de una secuencia de comandos OnConnect u OnDisconnect y está utilizando el método de implementación manual, quite las secuencias de comandos no deseadas y restablezca una sesión VPN.
4. Si el sistema operativo es Linux o MacOS, asegúrese de que los permisos del archivo de script están configurados para ejecutarse; si el permiso no está configurado para ejecutarse, puede ejecutar este comando para que sea ejecutable:
$ cd YourScriptDirectory
$ sudo chmod +755 <scriptname>
5. Asegúrese de que el perfil de cliente tiene habilitada la secuencia de comandos.
6. Dependiendo de cómo esté escribiendo el script, necesita tener una opción para registrar el progreso del script, por ejemplo, con el .vbs puede utilizar objShell.LogEvent y, a continuación, puede ir al visor de eventos de Windows y comprobar si funcionó o no:
Utilizar como ejemplo el ejemplo de script Script para actualizar una directiva de grupo de Windows
Registros del Visor de eventos