소개
이 문서에서는 Cisco Secure Client 스크립팅을 Secure Firewall ASA 및 FTD와 함께 구성하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Cisco FMC(Secure Firewall Management Center)에서 관리되는 보안 방화벽 ASA 및 보안 방화벽 위협 방어를 통한 SSL Cisco 보안 클라이언트 구성
- ASDM 액세스
- FTD SSH 액세스
- OnConnect 및 OnDisconnect 스크립트
사용되는 구성 요소
- 보안 방화벽 ASA
- 보안 방화벽 위협 방어
- Cisco Secure Firewall 관리 센터
- Cisco Secure Client 5.0.03072
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
여기서는 두 가지 컨피그레이션 예를 다룹니다.
- ASDM에서 관리하는 보안 방화벽 ASA를 사용하여 보안 클라이언트 스크립팅 설정
- Cisco Secure Firewall Management Center에서 관리하는 보안 방화벽 위협 방어 기능으로 보안 클라이언트 스크립팅 설정
FMC에서 관리하는 FTD의 경우 FMC에서 아직 공식적으로 지원하지 않으므로 개선 요청 Cisco 버그 ID CSCvt58044에 대한 해결 방법을
구성
설정
ASDM에서 관리하는 보안 방화벽 ASA로 보안 클라이언트 스크립팅 설정 구성 예:
1단계. 보안 클라이언트 프로파일을 생성하고 기본 설정에서 스크립팅을 활성화합니다(2부).
AnyConnect XML 프로파일 편집기
xml 프로필의 추가 옵션:
- 스크립팅 가능한 다른 이벤트로의 전환이 발생하는 경우 클라이언트가 실행 중인 스크립트 프로세스를 종료할 수 있도록 하려면 Terminate Script On Next Event를 선택합니다. 예를 들어, VPN 세션이 종료되면 클라이언트는 실행 중인 On Connect 스크립트를 종료하며 Cisco Secure Client가 새 VPN 세션을 시작하면 실행 중인 OnDisconnect 스크립트를 종료합니다. 또한 Microsoft Windows에서 클라이언트는 On Connect 또는 OnDisconnect 스크립트가 시작한 스크립트와 해당 스크립트의 모든 하위 스크립트도 종료합니다. macOS 및 Linux에서 클라이언트는 On Connect 또는 OnDisconnect 스크립트만 종료하며 자식 스크립트는 종료하지 않습니다.
- SBL이 VPN 세션을 설정하는 경우 클라이언트가 On Connect 스크립트를 시작할 수 있도록 하려면 Enable Post SBL On Connect Script(기본적으로 활성화됨)(Enable Post SBL On Connect 스크립트 활성화)를 선택합니다.
적절한 그룹 정책에 AnyConnect 프로파일을 할당해야 합니다.
XML 그룹 정책 할당
2단계. 스크립트를 구성합니다.
Cisco는 예제 스크립트나 고객 작성 스크립트를 지원하지 않으므로 요구 사항에 따라 테스트할 수 있는 몇 가지 예제가 있습니다.
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
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. 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 스크립팅 기능 사용을 지원하도록 설계되었습니다. 이 샘플은 참조용으로만 참조한다고 가정합니다.
3단계. ASDM을 통해 스크립트 가져오기
AnyConnect 스크립팅 설정 ASDM
FMC에서 관리하는 FTD를 사용하여 보안 클라이언트 스크립팅 설정
현재 FMC에서 Secure Client 스크립팅을 설정할 수 없습니다. 이를 지원하기 위한 개선 요청 Cisco 버그 ID CSCvt58044가 있습니다. 이를 기반으로 스크립트의 구성 및 구축을 허용할 수 있습니다.
1단계. VPN 프로파일 편집기를 사용하여 보안 클라이언트 프로파일을 생성하고 기본 설정(2부)에서 스크립팅을 활성화합니다.
VPN 프로파일 편집기 아이콘
Secure Client 5 프로파일 편집기
2단계. 스크립트를 만듭니다(위의 동일한 스크립트 예).
3단계. 파일의 크기를 바이트 단위로 확인합니다.
스크립트 속성을 마우스 오른쪽 버튼으로 클릭하여 열고 General(일반) 탭에서 Size(크기)를 선택한 후 기록해 둡니다.
스크립트 속성
4단계. 스크립트를 가져옵니다.
옵션 1. TFTP/FTP 전송:
FTD 어플라이언스에 대한 SSH를 입력하고 시스템 지원 진단-cli를 입력합니다.
TFTP/FTP 서버에서 플래시로 스크립트를 복사합니다.
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>
webvpn AnyConnect 사용자 지정을 가져옵니다.
파일 이름 앞에는 scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs flash:/scripts_OnConnect_login.vbs
옵션 2. CLI에서 스크립트를 직접 복사합니다.
FTD 어플라이언스에 대한 SSH를 입력하고 시스템 지원 진단-cli를 입력합니다.
다음 명령을 입력합니다.
파일 이름 앞에는 scripts_OnConnect_
FTD#import webvpn AnyConnect-customization type binary platform win name scripts_OnConnect_login.vbs stdin 943
참고: stdin은 2단계의 스크립트 크기입니다(바이트 단위).
import 명령을 입력한 후 CLI에 실제 스크립트를 붙여넣어야 합니다. 출력이 표시되지 않더라도 CLI로 돌아갈 때까지 몇 시간을 입력하기만 하면 됩니다.
참고: 스크립트 크기에 따라 CLI에서 스크립트를 붙여넣는 데 시간이 걸릴 수 있습니다.
다음 명령을 실행하여 스크립트를 제대로 가져왔는지 확인할 수 있습니다.
FTD#export webvpn AnyConnect-customization type binary platform win name <scriptname>.vbs flash:/<scriptname>.vbs
FTD#more flash:/<scriptname>.vbs
스크립트를 제거해야 하는 경우 CLI에서 다음 명령을 실행할 수 있습니다.
FTD#revert webvpn AnyConnect-customization type binary platform win name <scriptname>
5단계. 보안 클라이언트 VPN 프로필을 FMC에 업로드하고 그룹 정책에 적용합니다.
Devices(디바이스) > Remote Access(원격 액세스) > Connection Profile(연결 프로파일)을 선택하고 Edit(편집) > Advanced(고급) > Group Policies(그룹 정책) > edit(편집) > Group Policy(그룹 정책) > Secure Client(보안 클라이언트) > Profile(프로파일)로 이동합니다. FMC에 이미 업로드된 경우 프로파일을 선택하거나, 더하기 옵션을 클릭하고 여기에서 프로파일을 업로드할 수 있습니다.
FMC 그룹 정책 컨피그레이션
다음을 확인합니다.
VPN을 통해 연결한 후 OS에 따라 이 경로를 확인하여 스크립트가 성공적으로 구축되었는지 확인할 수 있습니다.
Microsoft Windows |
%ALLUSERSPROFILE%\Cisco\Cisco Secure Client\VPN\스크립트 |
Linux (Linux에서는 파일에 사용자, 그룹 및 기타 실행 권한을 할당합니다.) |
/opt/cisco/secureclient/vpn/script |
맥OS |
/opt/cisco/secureclient/vpn/script |
문제 해결
1. 스크립트에 OnConnect 또
는 OnDisconnect 접두사 이름이 있는지 확인합니다. ASDM 버전 6.3 이상을 사용하는 경우 Secure Firewall ASA는 파일 이름에 접두사 scripts_ 및 접두사 OnConnect 또는 OnDisconnect를 추가하여 파일을 스크립트로 식별합니다. 클라이언트가 연결되면 보안 어플라이언스는 원격 컴퓨터의 적절한 대상 디렉토리에 스크립트를 다운로드하고 scripts_ 접두사를 제거한 다음 OnConnect 또는 OnDisconnect 접두사를 그대로 둡니다. 예를 들어, 스크립트 myscript.bat를 가져오면 스크립트는 보안 어플라이언스에 scripts_OnConnect_myscript.bat로 나타납니다. 원격 컴퓨터에서 스크립트는 OnConnect_myscript.bat로 나타납니다.
2. 명령줄에서 스크립트를 실행해 봅니다. 명령줄에서 실행할 수 없는 스크립트는 클라이언트에서 실행할 수 없습니다. 스크립트가 명령줄에서 실행되지 않는 경우 스크립트를 실행하는 응용 프로그램이 설치되어 있는지 확인하고 해당 운영 체제에서 스크립트를 다시 작성해 보십시오.
3. VPN 엔드포인트의 scripts 디렉터리에 OnConnect 스크립트가 하나뿐이고 OnDisconnect 스크립트도 하나인지 확인합니다. 클라이언트가 Secure Firewall ASA에서 OnConnect 스크립트를 다운로드한 다음 다른 Secure Firewall ASA에 대해 파일 이름 접미사가 다른 두 번째 OnConnect 스크립트를 다운로드하면 클라이언트가 실행하려는 스크립트를 실행할 수 없습니다. 스크립트 경로에 둘 이상의 OnConnect 또는 OnDisconnect 스크립트가 포함되어 있고 Secure Firewall ASA를 사용하여 스크립트를 배포하는 경우 scripts 디렉토리의 내용을 제거하고 VPN 세션을 다시 설정합니다. 스크립트 경로에 둘 이상의 OnConnect 또는 OnDisconnect 스크립트가 포함되어 있고 수동 배포 방법을 사용하는 경우, 원치 않는 스크립트를 제거하고 VPN 세션을 다시 설정합니다.
4. 운영 체제가 Linux 또는 MacOS인 경우 스크립트 파일 권한이 실행되도록 설정되어 있는지 확인하고, 권한이 실행되도록 설정되어 있지 않은 경우 이 명령을 실행하여 실행할 수 있도록 합니다.
$ cd 사용자 스크립트 디렉터리
$ sudo chmod +755 <scriptname>
5. 클라이언트 프로파일에 스크립팅이 활성화되어 있는지 확인합니다.
6. 스크립트를 작성하는 방법에 따라 스크립트의 진행률을 기록할 수 있는 옵션이 필요합니다. 예를 들어, .vbs를 사용하면 objShell.LogEvent를 사용할 수 있으며, 그런 다음 Windows의 이벤트 뷰어로 이동하여 이 기능이 작동했는지 또는 실패했는지 확인할 수 있습니다.
예제 스크립트를 예로 사용하여 Windows 그룹 정책을 새로 고칩니다
이벤트 뷰어 로그