简介
本文档介绍将安全复制(SCP)配置为自动将安全网络设备(SWA)中的日志复制到其他服务器的步骤。
先决条件
要求
Cisco 建议您了解以下主题:
- SCP的工作原理。
- SWA管理。
- Microsoft Windows或Linux操作系统的管理。
Cisco 建议您:
- 已安装物理或虚拟SWA。
- 许可证已激活或已安装。
- 安装向导已完成。
- 对SWA图形用户界面(GUI)的管理权限。
- 已安装Microsoft Windows(至少Windows Server 2019或Windows 10 (build 1809))或Linux系统。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
SCP
安全复制(SCP)的行为与远程复制(RCP)类似,后者来自Berkeley r-tools套件(伯克利大学自有的一组网络应用程序),不同之处在于SCP依赖安全外壳(SSH)来确保安全性。此外,SCP要求配置身份验证、授权和记帐(AAA)授权,以便设备可以确定用户是否具有正确的权限级别
远程服务器上的SCP方法(相当于SCP推送)通过安全复制协议定期将日志文件推送到远程SCP服务器。此方法要求远程计算机上使用SSH2协议的SSH SCP服务器。订用需要远程计算机上的用户名、SSH密钥和目标目录。日志文件将根据您设置的滚动更新计划进行传输。
SWA日志订阅
可以为每种类型的日志文件创建多个日志订阅。订用包括存档和存储的配置详细信息,包括:
- 滚动更新设置,用于确定日志文件的存档时间。
- 已存档日志的压缩设置。
- 已存档日志的检索设置,用于指定日志是存档到远程服务器还是存储在设备上。
存档日志文件
当当前日志文件达到用户指定的最大文件大小限制或自上次滚动后的最长时间时,AsyncOS存档(回滚)日志订阅。
日志订阅中包含以下存档设置:
- 按文件大小回滚
- 按时间滚动更新
- 日志压缩
- 检索方法
您还可以手动存档(回滚)日志文件。
步骤1:选择System Administration > Log Subscriptions。
第二步:选中要存档的日志订用的“滚动”列中的复选框,或选中全部复选框以选择所有订用。
第3步.点击立即滚动(Rollover Now)以存档所选日志。
图像-立即回滚GUI
通过远程服务器上的SCP配置日志检索
从SWA使用SCP将日志检索到远程服务器有两个主要步骤:
- 配置SWA以推送日志。
- 配置远程服务器以接收日志。
将SWA配置为从GUI向SCP远程服务器发送日志
步骤1:登录到SWA,然后从系统管理选择日志订阅。
图像-选择日志订阅
第二步:在日志订阅页上,选择添加日志订阅。
映像-选择添加日志订阅
第三步:选择日志类型。在本示例中,已选择访问日志
第四步:输入日志订阅的名称
第5步(可选)您可以按文件大小更改回滚
第六步:从Retrieval方法中选择SCP on Remote Server
步骤 7.输入远程服务器的信息:
- SCP主机名或IP地址
- 远程服务器上侦听SSH的侦听端口号(默认为TCP/22)
- 目录名称
- 用于连接到远程服务器的用户名
映像-配置日志参数
注意:在本示例中,用户名为wsascp,远程服务器为Microsoft Windows操作系统,我们在c:\users\wccpscp文件夹(即Microsoft中的用户配置文件文件夹)中创建了一个文件夹wsa01。
步骤 8提交更改。
步骤 9将SSH密钥保存在文本文件中,以供远程SCP服务器配置部分使用。
注意:您需要复制以ssh-开头和以root@<SWA hostname>结尾的两行。
映像-保存SSH密钥以供进一步使用。
步骤 10提交更改。
将Microsoft Windows配置为SCP远程服务器
步骤 10要为SCP服务创建用户,请导航到Computer Management:
步骤 11选择Local Users and group,然后从左侧窗格中选择Users。
步骤 12右键单击主页并选择新用户。
图像-为SCP服务创建用户。
步骤 13输入用户名和所需密码。
步骤 14选择Password Never Expired。
步骤 15单击Create,然后关闭窗口。
图像-输入新用户信息。
步骤 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学习
第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.编辑记事本中%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中的“严格模式”。默认情况下,此模式处于启用状态,并且如果私钥和公钥未得到正确保护,它将阻止基于SSH密钥的身份验证。
取消注释该行#StrictModesyes,并将其更改为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
映像-启用开放式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步:在所需驱动器中创建文件夹,在本例中
第二步:以管理员权限打开命令提示符(以管理员身份运行)
第三步:运行以下命令以创建链路:
mklink /d c:\users\wsascp\wsa01 D:\WSA_Logs\WSA01
映像-创建SYM链路
注意:在本示例中,SWA配置为将日志推送到C:\Users\wsascp中的WSA01文件夹(这是您寻找缓存缺失可以使用的隐藏命令),并且SCP服务器将文件夹WSA01配置为指向D:\WSA_Logs\WSA01的符号链接
有关Microsoft Symbol链接的详细信息,请访问:mklink | Microsoft学习
排除SCP日志推送故障
在SWA中查看日志
要排除SCP日志推送的故障,请检查:
1. CLI > displayalerts
2. 系统日志
注意:要读取system_logs,可以在CLI中使用grep命令(在CLI中为System_logs选择一个关联数字),然后在向导中回答问题。
在SCP服务器中查看日志
您可以在Microsoft事件查看器的应用和服务日志 > OpenSSH > Operational中读取SCP服务器日志
映像- 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,或者您可以联系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地址> port <TCP端口SWA连接到SCP服务器>的用户SCP无效
图像-无效用户
要解决此错误,请检查拼写并验证在SCP服务器中是否已启用用户(在SWA中配置为推送日志)。
无此类文件或目录
此错误表示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未连接:
[1]检查SCP服务器防火墙是否阻止访问。
[2]检查从SWA到SCP服务器的路径中是否有防火墙阻止访问。
[3]检查TCP端口22在SCP服务器中是否处于侦听状态。
[4]在两个SWA和SCP服务器中运行数据包捕获以进行进一步分析。
以下是成功连接的数据包捕获示例:
映像-成功捕获连接数据包
参考
思科网络安全设备最佳实践指南-思科
BRKSEC-3303 (ciscolive)
思科安全网络设备AsyncOS 14.5用户指南- GD(通用部署)-连接、安装和配置[思科安全网络设备] -思科
Windows版OpenSSH入门 | Microsoft学习
在Windows上配置SSH公钥身份验证 | Windows OS中心(woshub.com)
Windows版OpenSSH中基于密钥的身份验证 | Microsoft学习