소개
이 문서에서는 SWA(Secure Web Appliance)의 로그를 다른 서버에 자동으로 복사하도록 SCP(Secure Copy)를 구성하는 단계에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- SCP 작동 방식
- SWA 관리.
- Microsoft Windows 또는 Linux 운영 체제의 관리.
Cisco에서는 다음과 같은 작업을 수행할 것을 권장합니다.
- 물리적 또는 가상 SWA가 설치되었습니다.
- 라이센스가 활성화되었거나 설치되었습니다.
- 설치 마법사가 완료되었습니다.
- SWA GUI(Graphical User Interface)에 대한 관리 액세스
- Microsoft Windows(최소 Windows Server 2019 또는 Windows 10(빌드 1809)) 또는 Linux 시스템 설치됨
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
SCP
SCP(Secure Copy)의 동작은 RCP(Remote Copy)와 유사합니다. RCP는 Berkeley r-tools 제품군(Berkeley 대학교 자체 네트워킹 애플리케이션 세트)에서 제공되지만, SCP는 보안을 위해 SSH(Secure Shell)를 사용한다는 점이 다릅니다. 또한 SCP에서는 디바이스에서 사용자에게 올바른 권한 레벨이 있는지 확인할 수 있도록 AAA(Authentication, Authorization, and Accounting) 권한 부여를 구성해야 합니다
원격 서버의 SCP 방법(SCP 푸시와 동일)은 보안 복사 프로토콜에 의해 로그 파일을 원격 SCP 서버로 주기적으로 푸시합니다. 이 방법을 사용하려면 SSH2 프로토콜을 사용하는 원격 컴퓨터에 SSH SCP 서버가 있어야 합니다. 서브스크립션에는 원격 컴퓨터의 사용자 이름, SSH 키 및 대상 디렉토리가 필요합니다. 로그 파일은 사용자가 설정한 롤오버 일정을 기반으로 전송됩니다.
SWA 로그 서브스크립션
각 로그 파일 유형에 대해 여러 로그 서브스크립션을 생성할 수 있습니다. 서브스크립션에는 다음과 같은 아카이빙 및 스토리지 구성 세부 정보가 포함됩니다.
- 로그 파일이 아카이브되는 시기를 결정하는 롤오버 설정
- 아카이브된 로그에 대한 압축 설정
- 로그가 원격 서버에 아카이브되는지 아니면 어플라이언스에 저장되는지를 지정하는 아카이브된 로그에 대한 검색 설정입니다.
로그 파일 보관
AsyncOS는 현재 로그 파일이 사용자가 지정한 최대 파일 크기 또는 마지막 롤오버 이후 최대 시간 제한에 도달하면 로그 서브스크립션을 아카이브(롤오버)합니다.
이러한 아카이브 설정은 로그 서브스크립션에 포함됩니다.
- 파일 크기별 롤오버
- 시간별 롤오버
- 로그 압축
- 검색 방법
로그 파일을 수동으로 보관(롤오버)할 수도 있습니다.
1단계. System Administration(시스템 관리) > Log Subscriptions(로그 서브스크립션)를 선택합니다.
2단계. 아카이브할 로그 서브스크립션의 Rollover(롤오버) 열에서 확인란을 선택하거나 All(모두) 확인란을 선택하여 모든 서브스크립션을 선택합니다.
3단계.Rollover Now(지금 롤오버)를 클릭하여 선택한 로그를 보관합니다.
이미지 - 지금 롤오버 GUI
원격 서버의 SCP를 통한 로그 검색 구성
SWA에서 SCP를 사용하여 원격 서버에 로그를 검색하는 두 가지 주요 단계는 다음과 같습니다.
- 로그를 푸시하도록 SWA를 구성합니다.
- 로그를 수신하도록 원격 서버를 구성합니다.
GUI에서 SCP 원격 서버로 로그를 전송하도록 SWA 구성
1단계. SWA에 로그인하고 System Administration(시스템 관리)에서 Log Subscriptions(로그 서브스크립션)를 선택합니다.
이미지 - Log Subscriptions(로그 서브스크립션)를 선택합니다.
2단계. Log Subscriptions(로그 서브스크립션) 페이지에서 Add Log Subscription(로그 서브스크립션 추가)을 선택합니다.
이미지 - Add Log Subscription(로그 서브스크립션 추가)을 선택합니다.
3단계. Log type(로그 유형)을 선택합니다. 이 예에서는 액세스 로그를 선택했습니다
4단계. 로그 서브스크립션의 이름 입력
5단계. (선택 사항) Rollover by File Size(파일 크기별 롤오버)를 변경할 수 있습니다
6단계. Retrieval(검색) 방법에서 Remote Server(원격 서버)의 SCP를 선택합니다
7단계. 원격 서버에 대한 정보를 입력합니다.
- SCP 호스트 이름 또는 IP 주소
- SSH를 수신하는 원격 서버의 수신 포트 번호(기본값은 TCP/22)
- 디렉토리 이름
- 원격 서버에 연결할 사용자 이름
이미지 - 로그 매개변수 구성
참고: 이 예에서 사용자 이름은 wsascp이고 원격 서버는 Microsoft Windows 운영 체제입니다. c:\users\wccpscp 폴더(Microsoft의 사용자 프로필 폴더)에 wsa01 폴더를 생성했습니다.
팁: 폴더 이름을 입력하면 됩니다. 이 예에서는 wsa01입니다.
8단계. 변경 사항을 제출합니다.
9단계. SSH 키를 텍스트 파일에 저장하여 원격 SCP 서버 컨피그레이션 섹션에서 추가로 사용할 수 있도록 합니다.
참고: ssh로 시작하고 root-<SWA hostname>으로 끝나는 두 줄을 모두 복사해야 합니다.
Image(이미지) - 추가 사용을 위해 SSH 키를 저장합니다.
10단계. 변경 사항을 커밋합니다.
Microsoft Windows를 SCP 원격 서버로 구성
10단계. SCP 서비스에 대한 사용자를 생성하려면 Computer Management(컴퓨터 관리)로 이동합니다.
참고: 이미 SCP 사용자가 있는 경우 16단계로 건너뜁니다.
11단계. Local Users and group(로컬 사용자 및 그룹)을 선택하고 왼쪽 창에서 Users(사용자)를 선택합니다.
12단계. 기본 페이지를 마우스 오른쪽 단추로 클릭하고 새 사용자를 선택합니다.
Image(이미지) - SCP 서비스용 사용자를 생성합니다.
13단계. 사용자 이름 및 원하는 비밀번호를 입력합니다.
14단계. Password Never Expired를 선택합니다.
15단계. Create(생성)를 클릭한 다음 창을 닫습니다.
이미지 - 새 사용자 정보를 입력합니다.
16단계. 새로 생성한 사용자로 원격 SCP 서버에 로그인하여 프로파일 디렉토리를 생성합니다.
참고: 원격 SCP 서버에 OpenSSL이 설치되어 있는 경우 19단계로 건너뜁니다.
17단계. 관리자 권한으로 PowerShell을 열고( Run as Administrator ) 다음 명령을 실행하여 전제 조건을 확인합니다.
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
출력이 True이면 계속할 수 있습니다. 그렇지 않으면 Microsoft 지원 팀에 문의하십시오.
18단계. 관리자 권한이 있는 PowerShell(관리자로 실행)을 사용하여 OpenSSH를 설치하려면 다음을 실행합니다.
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
다음은 성공적인 결과의 예입니다.
Path :
Online : True
RestartNeeded : False
이미지 - PowerShell에 OpenSSH 설치
주의: RestartNeeded가 True로 설정된 경우 Windows를 재부팅하십시오.
다른 버전의 Microsoft Windows 설치에 대한 자세한 내용은 Windows용 OpenSSH 시작하기 링크를 참조하십시오. | Microsoft Learn
19단계 일반(권한 상승되지 않은) PowerShell 세션을 열고 다음 명령을 사용하여 RSA 키 쌍을 생성합니다.
ssh-keygen -t RSA
명령이 완료되면 .ssh 폴더에서 사용자 프로필 디렉토리를 생성한 것을 확인할 수 있습니다.
이미지 - RSA 키 생성
20단계. 관리자 권한으로 PowerShell에서 SSH 서비스를 시작합니다( Run as Administrator ).
Start-Service sshd
21단계. (선택 사항이지만 권장됨) 관리자 권한으로 서비스 시작 유형을 Automatic(자동)으로 변경합니다( Run as Administrator ).
Set-Service -Name sshd -StartupType 'Automatic'
22단계. TCP 포트 22에 대한 액세스를 허용하는 방화벽 규칙이 생성되었는지 확인합니다.
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
23단계. 메모장의 %programdata%\ssh\sshd_config에 있는 SSH 구성 파일을 편집하고 RSA 및 DSA의 번호를 제거합니다.
HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
24단계. %programdata%\ssh\sshd_config에서 연결 조건을 편집합니다. 이 예에서 수신 주소는 모든 인터페이스 주소에 사용됩니다. 디자인으로 인해 맞춤 제작이 가능합니다.
Port 22
#AddressFamily any
ListenAddress 0.0.0.0
25단계. 각 줄의 시작 부분에 #을 추가하여 %programdata%\ssh\sshd_config 파일 끝에 다음 두 줄을 표시합니다.
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
26단계(선택 사항)%programdata%\ssh\sshd_config에서 Strict Mode를 편집합니다. 기본적으로 이 모드는 활성화되어 있으며 개인 키와 공개 키가 제대로 보호되지 않는 경우 SSH 키 기반 인증을 차단합니다.
yes 행 주석#StrictModes 제거하고 StrictModes no로 변경합니다.
StrictModes No
27단계. 공개 키 인증을 허용하려면 이 줄에서 %programdata%\ssh\sshd_config를 제거하십시오.
PubkeyAuthentication yes
28단계. .ssh 폴더에 텍스트 파일 "authorized_keys"를 만들고 SWA 공용 RSA 키(9단계에서 수집됨)를 붙여넣습니다.
이미지 - SWA 공개 키
참고: ssh-rsa로 시작하고 root@<your_SWA_hostname>으로 끝나는 전체 행을 복사합니다.
팁: RSA가 SCP 서버에 설치되어 있으므로 ssh-dss 키를 붙여 넣을 필요가 없습니다
29단계. 관리자 권한(관리자로 실행)으로 PowerShell에서 "OpenSSH Authentication Agent"를 활성화합니다.
Set-Service -Name ssh-agent -StartupType 'Automatic'
Start-Service ssh-agent
이미지 - Enable Open SSH Authentication Agent
30단계(선택 사항)키 유형을 허용하려면 %programdata%\ssh\sshd_config에 이 행을 추가합니다.
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa,ssh-dss
31단계. SSH 서비스를 다시 시작합니다. PowerShell에서 관리자 권한( 관리자로 실행)으로 이 명령을 사용할 수 있습니다
restart-Service -Name sshd
32단계. SCP 푸시가 올바르게 구성되었는지 테스트하려면 구성된 로그를 롤오버합니다. GUI 또는 CLI(rollovernow 명령)에서 롤오버할 수 있습니다.
WSA_CLI> rollovernow scpal
참고: 이 예에서 로그 이름은 "scpal"입니다.
로그가 정의된 폴더(이 예에서는 c:/Users/wsascp/wsa01)에 복사되었는지 확인할 수 있습니다
다른 드라이브에 SCP 로그 푸시
C:가 아닌 다른 드라이브로 로그를 푸시해야 하는 경우 사용자 프로필 폴더에서 원하는 드라이브로 링크를 생성합니다. 이 예에서는 로그가 D:\WSA_Logs\WSA01에 푸시됩니다.
1단계. 이 예에서는 원하는 드라이브에 폴더를 만듭니다
2단계. 관리자 권한으로 명령 프롬프트 열기( Run as Administrator )
3단계. 이 명령을 실행하여 링크를 생성합니다.
mklink /d c:\users\wsascp\wsa01 D:\WSA_Logs\WSA01
이미지 - SYM 링크 생성
참고: 이 예에서 SWA는 로그를 C:\Users\wsascp의 WSA01 폴더로 푸시하도록 구성되며, SCP 서버는 WSA01 폴더를 D:\WSA_Logs\WSA01에 대한 심볼 링크로 가집니다
Microsoft Symbol Link에 대한 자세한 내용은 mklink를 참조하십시오. | Microsoft Learn
SCP 로그 푸시 문제 해결
SWA의 로그 보기
SCP 로그 푸시를 트러블슈팅하려면 다음 위치에서 오류를 확인하십시오.
1. CLI > displayalerts
2. System_logs
참고: system_logs를 읽으려면 CLI에서 grep 명령을 사용하고 system_logs와 연결된 번호를 선택하고 마법사에서 질문에 답할 수 있습니다.
SCP 서버의 로그 보기
Microsoft Event Viewer의 Applications and Services Logs(애플리케이션 및 서비스 로그) > OpenSSH > Operational(운영)에서 SCP 서버 로그를 읽을 수 있습니다.
이미지 - 사전 인증 실패
호스트 키 확인 실패
이 오류는 SWA에 저장된 SCP 서버 공개 키가 잘못되었음을 나타냅니다.
다음은 CLI의 displayalerts 출력에서 발생하는 오류의 예입니다.
02 Jan 2024 16:52:35 +0100 Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22:
Last message occurred 68 times between Tue Jan 2 15:53:01 2024 and Tue Jan 2 16:52:31 2024.
Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: Host key verification failed.
Last message occurred 46 times between Tue Jan 2 16:30:19 2024 and Tue Jan 2 16:52:31 2024.
Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: lost connection
Last message occurred 68 times between Tue Jan 2 15:53:01 2024 and Tue Jan 2 16:52:31 2024.
Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: ssh: connect to host 10.48.48.195 port 22: Operation timed out
Last message occurred 22 times between Tue Jan 2 15:53:01 2024 and Tue Jan 2 16:29:18 2024.
다음은 system_logs의 오류 샘플입니다.
Tue Jan 2 19:49:50 2024 Critical: Log Error: Push error for subscription scp: SCP failed to transfer to 10.48.48.195:22:
Tue Jan 2 19:49:50 2024 Critical: Log Error: Push error for subscription scp: SCP failed to transfer to 10.48.48.195:22: lost connection
Tue Jan 2 19:49:50 2024 Critical: Log Error: Push error for subscription scp: SCP failed to transfer to 10.48.48.195:22: Host key verification failed.
이 문제를 해결하려면 SCP 서버에서 호스트를 복사하고 SCP 로그 서브스크립션 페이지에 붙여넣을 수 있습니다.
GUI에서 SCP 원격 서버로 로그를 보내려면 SWA 구성의 7단계를 참조하거나 Cisco TAC에 문의하여 백엔드에서 호스트 키를 제거할 수 있습니다.
사용 권한 거부됨(publickey,password,keyboard-interactive)
이 오류는 일반적으로 SWA에 제공된 사용자 이름이 유효하지 않음을 나타냅니다.
다음은 system_logs의 오류 로그 샘플입니다.
Tue Jan 2 20:41:40 2024 Critical: Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22:
Tue Jan 2 20:41:40 2024 Critical: Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: lost connection
Tue Jan 2 20:41:40 2024 Critical: Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: scp@10.48.48.195: Permission denied (publickey,password,keyboard-interactive).
다음은 SCP 서버의 오류 샘플입니다. <SWA_IP address> 포트 <TCP 포트 SWA가 SCP 서버에 연결하는 잘못된 사용자 SCP
이미지 - 잘못된 사용자
이 오류를 해결하려면 맞춤법을 검사하고 사용자(로그를 푸시하도록 SWA에서 구성됨)가 SCP 서버에서 활성화되었는지 확인하십시오.
해당 파일 또는 디렉토리가 없습니다.
이 오류는 SWA 로그 서브스크립션 섹션에 제공된 경로가 유효하지 않음을 나타냅니다.
다음은 system_logs의 오류 샘플입니다.
Tue Jan 2 20:47:18 2024 Critical: Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22:
Tue Jan 2 20:47:18 2024 Critical: Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: scp: Userswsascpwsa01/aclog.@20240102T204508.s: No such file or directory
Tue Jan 2 20:47:18 2024 Critical: Log Error: Push error for subscription scpal: SCP failed to transfer to 10.48.48.195:22: Sink: C0660 255 aclog.@20240102T204508.s
이 문제를 해결하려면 맞춤법을 확인하고 SCP 서버에서 경로가 올바르고 올바른지 확인하십시오.
SCP 전송 실패
이 오류는 통신 오류의 표시일 수 있습니다. 다음은 오류 샘플입니다.
03 Jan 2024 13:23:27 +0100 Log Error: Push error for subscription scp: SCP failed to transfer to 10.48.48.195:22:
연결 문제를 해결하려면 SWA CLI에서 telnet 명령을 사용합니다.
SWA_CLI> telnet
Please select which interface you want to telnet from.
1. Auto
2. Management (10.48.48.187/24: SWA_man.csico.com)
[1]> 2
Enter the remote hostname or IP address.
[]> 10.48.48.195
Enter the remote port.
[23]> 22
Trying 10.48.48.195...
이 예에서는 연결이 설정되지 않습니다. 성공적인 연결 종료는 다음과 같습니다.
SWA_CLI> telnet
Please select which interface you want to telnet from.
1. Auto
2. Management (10.48.48.187/24: rishi2Man.calo.lab)
[1]> 2
Enter the remote hostname or IP address.
[]> 10.48.48.195
Enter the remote port.
[23]> 22
Trying 10.48.48.195...
Connected to 10.48.48.195.
Escape character is '^]'.
SSH-2.0-OpenSSH_for_Windows_SCP
텔넷이 연결되지 않은 경우:
[1] SCP 서버 방화벽이 액세스를 차단하고 있는지 확인합니다.
[2] SWA에서 SCP 서버로의 경로에 방화벽이 있는지 확인하여 액세스를 차단합니다.
[3] SCP 서버에서 TCP 포트 22가 수신 대기 상태인지 확인합니다.
[4] 추가 분석을 위해 두 SWA ans SCP 서버에서 패킷 캡처를 실행합니다.
다음은 성공적인 연결의 패킷 캡처 샘플입니다.
이미지 - 성공적인 연결 패킷 캡처
참조
Cisco Web Security Appliance 모범 사례 지침 - Cisco
BRKSEC-3303(ciscolive)
AsyncOS 14.5 for Cisco Secure Web Appliance - GD(General Deployment) - 연결, 설치 및 구성 [Cisco Secure Web Appliance] 사용 설명서 - Cisco
Windows용 OpenSSH 시작하기 | Microsoft Learn
Windows에서 SSH 공개 키 인증 구성 | Windows OS 허브(woshub.com)
Windows용 OpenSSH의 키 기반 인증 | Microsoft Learn