简介
本文档介绍配置安全复制(SCP)以自动将安全网络设备(SWA)中的日志复制到其他服务器的步骤。
先决条件
要求
Cisco 建议您了解以下主题:
- SCP的工作原理
- SWA管理
- Microsoft Windows或Linux操作系统的管理
Cisco 建议您:
- 已安装物理或虚拟SWA。
- 许可证已激活或已安装。
- 安装向导已完成。
- 对SWA图形用户界面(GUI)的管理访问。
- Microsoft Windows(至少安装了Windows Server 2019或Windows 10(内部版本1809)。)或Linux系统。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
SCP
安全复制(SCP)的行为类似于远程复制(RCP),它来自Berkeley r-tools套件(Berkeley大学拥有的一组网络应用),不同之处在于SCP依赖安全外壳(SSH)提供安全性。此外,SCP要求配置身份验证、授权和记帐(AAA)授权,以便设备能够确定用户是否具有正确的权限级别
远程服务器上的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以推送日志。
- 配置远程服务器以接收日志。
将SWA配置为从GUI向SCP远程服务器发送日志
第1步:登录SWA,然后从System Administration中选择Log Subscriptions。
图像 — 选择日志订阅
第2步:在“日志订阅”页上,选择添加日志订阅:
图像 — 选择添加日志订阅
步骤3.选择日志类型。在本示例中,已选择访问日志。
步骤4.输入您的日志订阅的名称。
第5步(可选)您可以按文件大小更改回滚。
步骤6.从检索方法,选择远程服务器上的SCP。
步骤7.输入远程服务器的以下信息:
- SCP主机名或IP地址
- 远程服务器上侦听SSH的侦听端口号(默认值为TCP/22)
- 目录名称
- 用于连接到远程服务器的用户名
映像 — 配置日志参数
注意:在本示例中,用户名是wsascp,远程服务器是Microsoft Windows操作系统。在c:\users\wccpscp文件夹(即Microsoft中的用户配置文件文件夹)中创建了一个文件夹wsa01。
提示:您只需键入文件夹名称;在本示例中,它是wsa01。
步骤8.提交更改。
步骤9.将SSH密钥保存在文本文件中,以便进一步用于远程SCP服务器配置部分。
注意:您需要复制以ssh — 开头和以root@<SWA hostname>结束的两行。
映像 — 保存SSH密钥以供进一步使用。
步骤10.提交更改。
将Microsoft Windows配置为SCP远程服务器
步骤10.要为SCP服务创建用户,请导航到Computer Management:
第11步:选择Local Users and Groups,然后从左窗格中选择Users。
步骤12.右键单击主页并选择新用户。
映像 — 为SCP服务创建用户。
步骤13.输入用户名和所需密码。
步骤14.选择Password Never Expired。
步骤15.单击创建,然后关闭窗口。
图像 — 输入新用户信息。
步骤16.使用新创建的用户登录到远程SCP服务器,以创建配置文件目录。
注意:如果远程SCP服务器上安装了OpenSSL,请跳至步骤19。
步骤17.打开具有管理员权限的PowerShell(以管理员身份运行)并运行此命令以检查必备条件:
(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上安装的更多信息,请访问OpenSSH for Windows入门 | Microsoft Learn。
第 19 步:打开正常(未提升)的PowerShell会话,并使用命令生成一对RSA密钥:
ssh-keygen -t RSA
命令完成后,您可以看到.ssh文件夹已创建您的用户配置文件目录。
映像 — 生成RSA密钥
步骤20.从具有管理员权限的PowerShell启动SSH服务(以管理员身份运行)。
Start-Service sshd
第21步(可选,但建议使用)将服务“启动”类型更改为“自动”,并具有“管理员”权限以“管理员”运行。
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.编辑位于记事本中的SSH配置文件: %programdata%\ssh\sshd_config,删除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文件的末尾添加#在%programdata%\ssh\sshd_config文件的末尾标记这两行:
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
步骤26.(可选)编辑%programdata%\ssh\sshd_config中的严格模式(Edit the Strict Modes in %programdata%\ssh\sshd_config)。默认情况下,此模式处于启用状态,并且如果私有密钥和公钥未正确受到保护,则会阻止基于SSH密钥的身份验证。
取消对该行的注释#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身份验证代理(以管理员身份运行)。
Set-Service -Name ssh-agent -StartupType 'Automatic'
Start-Service ssh-agent
映像 — 启用开放式SSH身份验证代理
步骤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
您可以确认日志已复制到定义的文件夹,在本例中为c:/Users/wsascp/wsa01。
将SCP日志推送到其他驱动器
如果需要将日志推送到除C:以外的其他驱动器,请创建从用户配置文件文件夹到所需驱动器的链接。在本示例中,日志被推送到D:\WSA_Logs\WSA01。
步骤1.在所需驱动器中创建文件夹。
步骤2.使用管理员权限打开命令提示符(以管理员身份运行)。
步骤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学习
排除SCP日志推送故障
在SWA中查看日志
要排除SCP日志推送故障,请检查中的错误:
1. CLI >显示警报
2.系统日志
注意:要读取system_logs,可以在CLI中使用grep命令。选择与system_logs关联的数字并回答向导中的问题。
在SCP服务器中查看日志
您可以在Microsoft事件查看器中读取SCP服务器日志,位于Applications and Services Logs > OpenSSH > Operational:
映像 — PreAuth失败
"主机密钥验证失败"
此错误表示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日志订阅页面中。请参阅配置SWA以从GUI向SCP远程服务器发送日志中的步骤7,或者您可以联系思科TAC从后端删除主机密钥。
"权限被拒绝(公钥、密码、键盘交互)"
此错误通常表示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地址>端口<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
如果telnet未连接:
- 检查SCP服务器防火墙是否阻止访问。
- [检查从SWA到SCP服务器的路径中是否有任何防火墙阻止访问。
- 检查TCP端口22在SCP服务器中是否处于侦听状态。
- 在两个SWA和SCP服务器中运行数据包捕获以进行进一步分析。
以下是成功连接的数据包捕获示例:
图像 — 成功捕获连接数据包
"未找到匹配的主机密钥类型"
此错误表示SWA在客户端密钥交换阶段提供的主机密钥算法在SCP服务器中没有匹配项。
Wed Feb 12 20:21:40 2025 Critical: Log Error: Push error for subscription al: SCP failed to transfer to 10.48.48.192:22:
Wed Feb 12 20:21:40 2025 Critical: Log Error: Push error for subscription al: SCP failed to transfer to 10.48.48.192:22: lost connection
Wed Feb 12 20:21:40 2025 Critical: Log Error: Push error for subscription al: SCP failed to transfer to 10.48.48.192:22: info: Unable to negotiate with 10.48.48.192 port 22: no matching host key type found. Their offer: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
要解决此问题,可以使用以下步骤:
步骤1.在SWA中开始数据包捕获并过滤SCP服务器IP地址
步骤2.滚动更新日志文件,以确保SWA将文件发送到SCP服务器
步骤3.停止数据包捕获并打开文件。
步骤4.在捕获文件中,查找带有“Client:Info部分中的Key Exchange Init(密钥交换初始)。
步骤5.展开SSH协议,然后导航到“算法”部分。
步骤6.检查server_host_key_algorithms字符串(例如:server_host_key_algoriths字符串:ssh-rsa)
步骤7.导航到SCP服务器并编辑sshd_config文件。
步骤8.找到以HostKeyAlgorithms开头的行,并将“Step 6”中提到的受支持的主机密钥添加到文件。(在本例中:HostKeyAlgorithms ssh-rsa)
注意:如果没有以HostKeyAlgorithms开头的行,您可以将该行添加到文件末尾。
步骤9.保存更改并重新启动SSHD服务。
参考