概要
このドキュメントでは、Secure Firewall ASAおよびFTDを使用してCisco Secure Clientのスクリプトを設定する方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco Secure Firewall Management Center(FMC)で管理されるSecure Firewall ASAおよびSecure Firewall Threat Defenseを介したSSL Cisco Secure Clientの設定
- ASDMアクセス
- FTD SSHアクセス
- OnConnectおよびOnDisconnectスクリプト
使用するコンポーネント
- セキュアなファイアウォールASA
- セキュアなファイアウォール脅威防御
- Cisco Secure Firewall Management Center
- Cisco Secureクライアント5.0.03072
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
ここでは、2つの異なる設定例について説明します。
- ASDMで管理されるSecure Firewall ASAを使用したSecure Clientスクリプトの設定
- Cisco Secure Firewall Management Centerで管理されるSecure Firewall Threat Defenseを使用したSecure Clientスクリプトのセットアップ
FMCによって管理されるFTDでは、これはFMCによって公式にはサポートされていないため、拡張要求Cisco Bug IDに対する回避策を実装します
設定
コンフィギュレーション
ASDMによって管理されるSecure Firewall ASAを使用したSecure Clientスクリプトの設定例:
ステップ 1:セキュアクライアントプロファイルを作成し、環境設定でスクリプトを有効にします(パート2)。
AnyConnect XMLプロファイルエディタ
xmlプロファイルの追加オプション:
- オン 次のイベントでスクリプトを終了 別のスクリプト可能なイベントへの移行が発生した場合に、クライアントが実行中のスクリプトプロセスを終了できるようにする。たとえば、クライアントはVPNセッションが終了した場合に実行中のOnConnectスクリプトを終了し、次の場合に実行中のOnDisconnectスクリプトを終了します Cisco Secureクライアント 新しいVPNセッションを開始します。Microsoft Windowsでは、クライアントはOn ConnectまたはOnDisconnectスクリプトが起動したすべてのスクリプトと、そのスクリプトのすべての子孫も終了します。macOSおよびLinuxでは、クライアントはOn ConnectまたはOnDisconnectスクリプトのみを終了し、子スクリプトは終了しません。
- SBLがVPNセッションを確立する場合、クライアントがOn Connectスクリプト(存在する場合)を起動できるようにするには、Enable Post SBL On Connect Script(デフォルトで有効)にチェックマークを付けます。
AnyConnectプロファイルが適切なグループポリシーに割り当てられていることを確認します。
XMLグループポリシーの割り当て
ステップ 2:スクリプトを設定します。
シスコはサンプルスクリプトまたはお客様が作成したスクリプトをサポートしていないため、ニーズに応じてテストできる例がいくつかあります。
Windowsスクリプト
注意:32ビットのcmd.exeでサポートされているコマンドを使用してください。
1.ドライブをマップするスクリプト:
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
接続解除.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. Windowsグループポリシーを更新するスクリプト:
OnConnect.vbsまたは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.複数のスクリプトの起動:
スクリプト1.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 1."
WScript.Quit
スクリプト2.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 2."
WScript.Quit 5
スクリプト3.vbs
ON ERROR RESUME NEXT
Err.Clear
Set objShell = CreateObject("WScript.Shell")
objShell.LogEvent 0, "Sample script 3."
WScript.Quit
OnConnect.vbsまたは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
注:このサンプルは現状のまま提供され、黙示的な保証やサポートは提供されません。Cisco AnyConnectスクリプト機能の使用を支援するように設計されています。ここでは、このサンプルを単なる参考資料として言及していることを前提としています。
Linuxスクリプト
1.複数のスクリプトの起動:
スクリプト1.sh
#!/bin/sh
logger "Sample script 1."
スクリプト2.sh
#!/bin/sh
logger "Sample script 2."
スクリプト3.sh
#!/bin/sh
logger "Sample script 3."
OnConnect.shまたは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 = $?"
注:このサンプルは現状のまま提供され、黙示的な保証やサポートは提供されません。Cisco AnyConnectスクリプト機能の使用を支援するように設計されています。ここでは、このサンプルを単なる参考資料として言及していることを前提としています。
MacOSスクリプト
1. AppleScriptの起動:
スクリプト1.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.複数のスクリプトの起動
スクリプト1.sh
#!/bin/sh
logger "Sample script 1."
スクリプト2.sh
#!/bin/sh
logger "Sample script 2."
スクリプト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 = $?"
注:このサンプルは現状のまま提供され、黙示的な保証やサポートは提供されません。Cisco AnyConnectスクリプト機能の使用を支援するように設計されています。ここでは、このサンプルを単なる参考資料として言及していることを前提としています。
ステップ 3ASDMを使用したスクリプトのインポート
AnyConnectスクリプトの設定ASDM
FMCによって管理されるFTDを使用したセキュアクライアントスクリプティングの設定
現在、FMCではセキュアクライアントスクリプティングの設定はサポートされていません。拡張要求Cisco Bug ID CSCvt58044があります サポートしますそれに基づいて、スクリプトの設定と導入を可能にする回避策があります。
ステップ 1:VPNプロファイルエディタを使用して、セキュアクライアントプロファイルを作成し、環境設定(パート2)でスクリプトを有効にします。
VPNプロファイルエディタアイコン
Secure Client 5プロファイルエディタ
ステップ 2:スクリプトを作成します(上記と同じスクリプト例)。
ステップ 3ファイルのサイズをバイト単位でメモします
スクリプトプロパティを右クリックして開き、[一般]タブで[サイズ]を確認して書き留めます。
スクリプトプロパティ
ステップ 4スクリプトをインポートします。
SSHからFTDアプライアンスに接続し、system support diagnostic-cliに入ります。
コマンド
ファイル名の前にscripts_OnConnect_というプレフィックスを付ける必要がある
import webvpn anyConnect-customization type binary platform win name scripts_OnConnect_login.vbs stdin 943
注:stdinはステップ2のスクリプトのバイト単位のサイズです。
importコマンドを入力した後、実際のスクリプトをCLIに貼り付ける必要があります。この出力が表示されない場合でも、CLIに戻るまで少し時間を入力するだけです。
次のコマンドを実行すると、スクリプトが正しくインポートされたことを確認できます。
more <scriptname>.vbs
ステップ 5セキュアクライアントVPNプロファイルをFMCにアップロードし、グループポリシーに適用します。
Devices > Remote Access > Select the Connection Profile and Edit > Advanced > Group Policies > edit the Group Policy> Secure Client> Profile>に移動し、すでにFMCにアップロードされている場合はプロファイルを選択できます。また、プラス記号のオプションをクリックして、そこからプロファイルをアップロードすることもできます。
FMCグループポリシーの設定
確認
VPN経由で接続した後、OSに応じて次のパスをチェックすることで、スクリプトが正常に展開されたことを確認できます。
Microsoft Windows |
%ALLUSERSPROFILE%\Cisco\Cisco Secure Client\VPN\Script |
Linux (Linuxでは、ファイルにユーザー、グループ、およびその他の実行権限を割り当てます)。 |
/opt/cisco/secureclient/vpn/script |
MacOS |
/opt/cisco/secureclient/vpn/script |
トラブルシュート
1.スクリプトにOnConnect
またはOnDisconnect
プレフィックス名があることを確認します。ASDMバージョン6.3以降を使用している場合、セキュアファイアウォールASAはファイル名にプレフィックスscripts_とプレフィックスOnConnectまたはOnDisconnectを追加して、スクリプトとしてファイルを識別します。クライアントが接続すると、セキュリティアプライアンスはリモートコンピュータの適切なターゲットディレクトリにスクリプトをダウンロードし、scripts_プレフィックスを削除して、OnConnectまたはOnDisconnectプレフィックスを残します。たとえば、スクリプトmyscript.batをインポートすると、スクリプトはscripts_OnConnect_myscript.batとしてセキュリティアプライアンスに表示されます。リモートコンピュータでは、スクリプトはOnConnect_myscript.batとして表示されます。
2. コマンドラインからスクリプトを実行してみてください。クライアントは、コマンドラインから実行できない場合、スクリプトを実行できません。コマンドラインでスクリプトの実行に失敗した場合は、スクリプトを実行するアプリケーションがインストールされていることを確認し、そのオペレーティングシステムでスクリプトを書き換えます。
3. VPNエンドポイントのscriptsディレクトリにOnConnectスクリプトが1つとOnDisconnectスクリプトが1つだけあることを確認します。クライアントがセキュアファイアウォールASAからOnConnectスクリプトをダウンロードした後、別のセキュアファイアウォールASA用の異なるファイル名サフィックスを持つ2つ目のOnConnectスクリプトをダウンロードした場合、クライアントは実行しようとしていたスクリプトを実行できません。スクリプトパスに複数のOnConnectスクリプトまたはOnDisconnectスクリプトが含まれており、スクリプトの展開にセキュアファイアウォールASAを使用している場合は、スクリプトディレクトリの内容を削除し、VPNセッションを再確立します。スクリプトパスに複数のOnConnectスクリプトまたはOnDisconnectスクリプトが含まれていて、手動展開方法を使用している場合は、不要なスクリプトを削除し、VPNセッションを再確立します。
4.オペレーティング・システムがLinuxまたはMacOSの場合、スクリプト・ファイルの権限が「実行」に設定されていることを確認します。権限が「実行」に設定されていない場合は、次のコマンドを実行してスクリプトを実行可能にできます。
$ cd YourScriptDirectory
$ sudo chmod +755 <スクリプト名>
5.クライアントプロファイルでスクリプトが有効になっていることを確認します。
6.スクリプトの記述方法に応じて、スクリプトの進行状況をログに記録するオプションが必要です。たとえば、.vbsを使用してobjShell.LogEventを使用し、Windowsのイベントビューアに移動して、これが成功したか失敗したかを確認できます。
例として、スクリプトの例「Script to refresh a windows group policy」を使用します
イベントビューアのログ