简介
本文档介绍配置安全复制(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。
第二步:勾选要存档的日志订用的“回滚”(Rollover)列中的复选框,或勾选全部复选框以选择所有订用。
第3步。单击Rollover Now存档所选日志。
图像 — 立即回滚GUI
在远程服务器上通过SCP配置日志检索
从SWA使用SCP将日志检索到远程服务器有两个主要步骤:
- 配置SWA以推送日志。
- 配置远程服务器以接收日志。
将SWA配置为从GUI向SCP远程服务器发送日志
步骤1:登录到SWA,然后从系统管理中选择日志订阅。
图像 — 选择日志订阅
第二步:在Log Subscriptions页面上,选择Add Log Subscription。
图像 — 选择添加日志订阅
第三步:选择日志类型。在本示例中,已选择访问日志
第四步:输入日志订阅的名称
第5步(可选)您可以按文件大小更改回滚
第六步:从“检索方法”中,选择远程服务器上的SCP
步骤 7.输入远程服务器的信息:
- SCP主机名或IP地址
- 远程服务器上侦听SSH的侦听端口号(默认值为TCP/22)
- 目录名称
- 用于连接到远程服务器的用户名
映像 — 配置日志参数
注:在本示例中,用户名是wsascp,远程服务器是Microsoft Windows操作系统,我们在c:\users\wccpscp文件夹(即Microsoft中的用户配置文件文件夹)中创建了一个文件夹wsa01。
步骤 8提交更改。
步骤 9将SSH密钥保存在文本文件中,以便进一步用于远程SCP服务器配置部分。
注:您需要复制以ssh — 开头和以root@<SWA主机名>结尾的两行。
映像 — 保存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.编辑记事本中的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.在所需驱动器中创建文件夹,在本例中
第二步:以管理员权限打开命令提示符(以管理员身份运行)
第三步:运行以下命令以创建链接:
mklink /d c:\users\wsascp\wsa01 D:\WSA_Logs\WSA01
图像 — 创建SYM链接
注意:在本示例中,SWA配置为将日志推送到C:\Users\wsascp中的WSA01文件夹(例如,SWA和SWA),并且SCP服务器将文件夹WSA01作为到D:\WSA_Logs\WSA01的符号链接
有关Microsoft Symbol Link的详细信息,请访问:mklink | Microsoft学习
排除SCP日志推送故障
在SWA中查看日志
要排除SCP日志推送故障,请检查中的错误:
1. CLI >显示警报
2.系统日志
注:要读取system_logs,可以在CLI中使用grep命令(例如,CLI中的CLI命令),选择与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从后端删除主机密钥。
权限被拒绝(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地址>端口<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未连接:
[1]检查SCP服务器防火墙是否阻止访问。
[2]检查从SWA到SCP服务器的路径中是否有任何防火墙阻止访问。
[3]检查TCP端口22在SCP服务器中是否处于侦听状态。
[4]在两个SWA和SCP服务器中运行数据包捕获以进行进一步分析。
以下是成功连接的数据包捕获示例:
图像 — 成功捕获连接数据包
参考
思科网络安全设备最佳实践指南 — 思科
BRKSEC-3303(ciscolive)
思科安全网络设备AsyncOS 14.5用户指南 — GD(通用部署) — 连接、安装和配置[思科安全网络设备] — 思科
开始使用OpenSSH for Windows | Microsoft学习
在Windows上配置SSH公钥身份验证 | Windows OS集线器(woshub.com)
Windows版OpenSSH中基于密钥的身份验证 | Microsoft学习