Introduction
Ce document décrit comment configurer les scripts Cisco Secure Client avec Secure Firewall ASA et FTD.
Conditions préalables
Exigences
Cisco vous recommande de prendre connaissance des rubriques suivantes :
- Configuration SSL du client sécurisé Cisco via Secure Firewall ASA et Secure Firewall Threat Defense gérés par Cisco Secure Firewall Management Center (FMC)
- accès ASDM
- Accès FTD SSH
- scripts OnConnect et OnDisconnect
Composants utilisés
- Pare-feu sécurisé ASA
- Protection pare-feu sécurisée
- Cisco Secure Firewall Management Center
- Cisco Secure Client 5.0.03072
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Informations générales
Nous abordons 2 exemples de configuration différents :
- Configuration du script client sécurisé avec Secure Firewall ASA géré par ASDM.
- Configuration de scripts clients sécurisés avec Secure Firewall Threat Defense géré par Cisco Secure Firewall Management Center.
Avec FTD géré par FMC, cela n'est toujours pas officiellement pris en charge par le FMC. Nous allons donc mettre en oeuvre une solution de contournement à la demande d'amélioration ID de bogue Cisco
Configurer
Configurations
Exemple de configuration de la configuration de script client sécurisé avec Secure Firewall ASA géré par ASDM :
Étape 1. Créer un profil client sécurisé et activer le script dans les préférences (Partie 2).
Éditeur de profil XML AnyConnect
Options supplémentaires du profil xml :
- Cochez la case Terminate Script On Next Event pour permettre au client de mettre fin à un processus de script en cours d'exécution si une transition vers un autre événement scriptable se produit. Par exemple, le client met fin à un script On Connect en cours d'exécution si la session VPN se termine et met fin à un script OnDisconnect en cours d'exécution si Cisco Secure Client démarre une nouvelle session VPN. Sous Microsoft Windows, le client met également fin à tous les scripts lancés par le script On Connect ou OnDisconnect, ainsi qu'à tous leurs descendants. Sur macOS et Linux, le client met fin uniquement au script On Connect ou OnDisconnect ; il ne met pas fin aux scripts enfants.
- Cochez la case Enable Post SBL On Connect Script (Activer le script SBL On Connect) (activé par défaut) pour permettre au client de lancer le script On Connect (s'il est présent) si SBL établit la session VPN.
Veillez à attribuer le profil AnyConnect à la stratégie de groupe appropriée :
Affectation de stratégie de groupe XML
Étape 2. Configurez votre script.
Puisque Cisco ne prend pas en charge les scripts d'exemple ou les scripts écrits par le client, nous avons quelques exemples que vous pouvez tester en fonction de vos besoins :
scripts Windows
Attention : veillez à utiliser les commandes prises en charge par cmd.exe 32 bits.
1. Script de mappage d'un lecteur :
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 d'actualisation d'une stratégie de groupe Windows :
OnConnect.vbs ou 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. Lancement de plusieurs 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
Script 3.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 3."
WScript.Quit
OnConnect.vbs ou 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
Remarque : ces échantillons sont fournis tels quels, sans garantie ni assistance implicite. Il est conçu pour vous aider à utiliser la fonctionnalité de script Cisco AnyConnect. Nous supposons que vous faites référence à cet exemple uniquement à titre de référence.
Script Linux
1. Lancement de plusieurs scripts :
Script1.sh
#!/bin/sh
logger "Sample script 1."
Script2.sh
#!/bin/sh
logger "Sample script 2."
Script 3.sh
#!/bin/sh
logger "Sample script 3."
OnConnect.sh ou 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 = $?"
Remarque : ces échantillons sont fournis tels quels, sans garantie ni assistance implicite. Il est conçu pour vous aider à utiliser la fonctionnalité de script Cisco AnyConnect. Nous supposons que vous faites référence à cet exemple uniquement à titre de référence.
scripts MacOS
1. Lancement d'AppleScript :
Script1.script
#!/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. Lancement de plusieurs scripts
Script1.sh
#!/bin/sh
logger "Sample script 1."
Script2.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 = $?"
Remarque : ces échantillons sont fournis tels quels, sans garantie ni assistance implicite. Il est conçu pour vous aider à utiliser la fonctionnalité de script Cisco AnyConnect. Nous supposons que vous faites référence à cet exemple uniquement à titre de référence.
Étape 3. Importer le script via ASDM
Paramètres de script AnyConnect ASDM
Configuration du script client sécurisé avec FTD géré par FMC
La configuration actuelle du script de client sécurisé n'est pas prise en charge par le FMC, il y a une demande d'amélioration ID de bogue Cisco CSCvt58044 pour la prendre en charge. Sur cette base, nous avons une solution de contournement pour permettre la configuration et le déploiement des scripts.
Étape 1. Créez un profil client sécurisé et activez le script dans les préférences (Partie 2) avec l'éditeur de profil VPN.
Icône de l'Éditeur de profil VPN
Éditeur de profil Secure Client 5
Étape 2. Créer le script (mêmes exemples de script ci-dessus)
Étape 3. Notez la taille du fichier en octets
Ouvrez les propriétés du script en cliquant dessus avec le bouton droit, dans l'onglet Général, vérifiez la taille et notez-la.
Propriétés du script
Étape 4. Importez le script :
Option 1. Transfert TFTP/FTP :
SSH à FTD Appliance et entrer dans le diagnostic de prise en charge du système-cli
Copiez le script de votre serveur TFTP/FTP vers la mémoire 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>
Importez la personnalisation AnyConnect webvpn :
Le nom du fichier doit être précédé du préfixe scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs flash:/scripts_OnConnect_login.vbs
Option 2. Copiez le script directement dans la CLI :
SSH à FTD Appliance et entrer dans le diagnostic de prise en charge du système-cli
Entrez cette commande :
Le nom du fichier doit être précédé du préfixe scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs stdin 943
Remarques : le stdin est la taille en octets du script de l'étape 2.
Après avoir entré la commande d'importation, vous devez coller le script réel sur la CLI et même si cela ne va pas afficher le résultat, vous devez juste entrer un couple de temps jusqu'à ce que vous revenez à la CLI.
Remarque : le collage du script dans l'interface de ligne de commande peut prendre un certain temps, selon sa taille.
Vous pouvez vérifier que le script a été importé correctement en exécutant la commande suivante :
FTD#export webvpn AnyConnect-customization type binary platform win name <scriptname>.vbs flash:/<scriptname>.vbs
FTD#more flash:/<scriptname>.vbs
Si vous devez supprimer le script, vous pouvez exécuter la commande suivante à partir de l'interface de ligne de commande :
FTD#revert webvpn AnyConnect-customization type binary platform win name <scriptname>
Étape 5. Téléchargez le profil VPN du client sécurisé sur le FMC et appliquez-le à la stratégie de groupe :
Accédez à Périphériques> Accès à distance> sélectionnez le profil de connexion et Modifier> Avancé> Stratégies de groupe> modifiez la Stratégie de groupe> Client sécurisé> Profil> vous pouvez sélectionner le profil s'il est déjà téléchargé sur le FMC ou vous pouvez cliquer sur l'option plus et télécharger le profil à partir de là.
Configuration de la stratégie de groupe FMC
Vérifier
Après vous être connecté via le VPN, vous pouvez confirmer que le script a été correctement déployé en vérifiant ce chemin en fonction du système d'exploitation :
Microsoft Windows |
%ALLUSERSPROFILE%\Cisco\Cisco Secure Client\VPN\Script |
Linux (Sous Linux, attribuez des autorisations d'exécution au fichier pour Utilisateur, Groupe et Autre.) |
/opt/cisco/secureclient/vpn/script |
macOS |
/opt/cisco/secureclient/vpn/script |
Dépannage
1. Assurez-vous que le script a un nom de préfixe OnConnect
ou OnDisconnect
, Si vous utilisez ASDM version 6.3 ou ultérieure, l'ASA de pare-feu sécurisé ajoute le préfixe scripts_ et le préfixe OnConnect ou OnDisconnect à votre nom de fichier pour identifier le fichier en tant que script. Lorsque le client se connecte, l'appliance de sécurité télécharge le script dans le répertoire cible approprié sur l'ordinateur distant, supprime le préfixe scripts_ et laisse le préfixe OnConnect ou OnDisconnect. Par exemple, si vous importez le script myscript.bat, celui-ci apparaît sur l'appliance de sécurité sous le nom scripts_OnConnect_myscript.bat. Sur l'ordinateur distant, le script apparaît sous la forme OnConnect_myscript.bat.
2. Essayez d'exécuter le script à partir de la ligne de commande. Le client ne peut pas exécuter le script s'il ne peut pas s'exécuter à partir de la ligne de commande. Si l'exécution du script échoue sur la ligne de commande, assurez-vous que l'application qui exécute le script est installée et essayez de réécrire le script sur ce système d'exploitation.
3. Vérifiez qu'il n'y a qu'un script OnConnect et qu'un seul script OnDisconnect dans le répertoire des scripts sur le point d'extrémité VPN. Si le client télécharge un script OnConnect à partir du pare-feu ASA sécurisé, puis un second script OnConnect avec un suffixe de nom de fichier différent pour un autre pare-feu ASA sécurisé, le client ne peut pas exécuter le script que vous avez prévu d'exécuter. Si le chemin d'accès du script contient plusieurs scripts OnConnect ou OnDisconnect et que vous utilisez l'ASA Secure Firewall pour déployer des scripts, supprimez le contenu du répertoire des scripts et rétablissez une session VPN. Si le chemin d'accès du script contient plusieurs scripts OnConnect ou OnDisconnect et que vous utilisez la méthode de déploiement manuel, supprimez les scripts indésirables et rétablissez une session VPN.
4. Si le système d'exploitation est Linux ou MacOS, assurez-vous que les autorisations du fichier de script sont définies pour s'exécuter, si l'autorisation n'est pas définie pour s'exécuter, vous pouvez exécuter cette commande pour la rendre exécutable :
$ cd YourScriptDirectory
$ sudo chmod +755 <scriptname>
5. Assurez-vous que le script est activé sur le profil client.
6. Selon la façon dont vous écrivez votre script, vous devez avoir une option pour enregistrer la progression du script, par exemple avec le .vbs, vous pouvez utiliser objShell.LogEvent, puis vous pouvez accéder à l'observateur d'événements de Windows et vérifier si cela a fonctionné ou échoué :
Utilisation, à titre d'exemple, de l'exemple de script Script pour actualiser une stratégie de groupe Windows
Journaux de l'Observateur