はじめに
このドキュメントでは、Secure Web Appliance(SWA)のログを別のサーバに自動的にコピーするようにSecure Copy(SCP)を設定する手順について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- SCPの仕組み
- SWA管理
- Microsoft WindowsまたはLinuxオペレーティングシステムの管理
Cisco では次の前提を満たす推奨しています。
- 物理または仮想SWAがインストールされている。
- ライセンスがアクティブ化またはインストールされていること。
- セットアップウィザードが完了しました。
- SWAグラフィカルユーザインターフェイス(GUI)への管理アクセス
- Microsoft Windows(Windows Server 2019またはWindows 10(ビルド1809)以降))またはLinux System Installed。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
SCP
Secure Copy(SCP)の動作は、Berkeley r-tools suite(Berkeley大学独自のネットワーキングアプリケーションセット)のRemote Copy(RCP)の動作に似ていますが、SCPはセキュリティをセキュアシェル(SSH)に依存する点が異なります。また、SCPでは、ユーザに正しい特権レベルが設定されているかどうかをデバイスが判断できるように、認証、認可、アカウンティング(AAA)認可を設定する必要があります
リモートサーバ上のSCP方式(SCPプッシュと同じ)では、Secure Copy Protocol(SCP)によってログファイルが定期的にリモートSCPサーバにプッシュされます。この方法では、SSH2プロトコルを使用するリモートコンピュータ上にSSH SCPサーバが必要です。サブスクリプションには、リモートコンピューター上のユーザー名、SSHキー、および宛先ディレクトリが必要です。ログファイルは、ユーザが設定したロールオーバースケジュールに基づいて転送されます。
SWAログサブスクリプション
ログファイルのタイプごとに複数のログサブスクリプションを作成できます。サブスクリプションには、アーカイブおよびストレージの構成の詳細が含まれます。次の内容が含まれます。
- ロールオーバーの設定。ログファイルをアーカイブするタイミングを決定します。
- アーカイブされたログの圧縮設定
- アーカイブされたログの取得設定。ログをリモートサーバにアーカイブするか、アプライアンスに保存するかを指定します。
ログ・ファイルのアーカイブ
AsyncOSは、現在のログファイルがユーザ指定の最大ファイルサイズ制限または最後のロールオーバー以降の最大時間に達すると、ログサブスクリプションをアーカイブ(ロールオーバー)します。
次のアーカイブ設定は、ログサブスクリプションに含まれています。
- ファイルサイズによるロールオーバー
- 時間によるロールオーバー
- ログの圧縮
- 検索方法
ログファイルを手動でアーカイブ(ロールオーバー)することもできます。
ステップ 1:System Administration > Log Subscriptionsの順に選択します。
ステップ 2:アーカイブするログサブスクリプションのロールオーバーカラムのチェックボックスをオンにするか、Allチェックボックスをオンにしてすべてのサブスクリプションを選択します。
ステップ3:選択したログをアーカイブするには、Rollover Nowをクリックします。
イメージ:GUIでのロールオーバー
リモートサーバでのSCPによるログ取得の設定
SCPを使用してSWAからリモートサーバにログを取得するには、主に2つの手順があります。
- ログをプッシュするようにSWAを設定します。
- ログを受信するようにリモートサーバを設定します。
GUIからSCPリモートサーバにログを送信するためのSWAの設定
ステップ 1:SWAにログインし、System AdministrationからLog Subscriptionsを選択します。
イメージ:ログサブスクリプションの選択
ステップ 2:Log Subscriptionsページで、Add Log Subscriptionを選択します。
イメージ – [追加] [ログサブスクリプション]を選択
ステップ 3:Log typeを選択します。この例では、アクセスログが選択されています。
ステップ 4:ログサブスクリプションの名前を入力します。
ステップ5:(オプション)ロールオーバーをファイルサイズで変更できます。
手順 6:検索方法から、SCP on Remote Serverを選択します。
手順 7:リモートサーバの次の情報を入力します。
- SCPホスト名またはIPアドレス
- SSHをリッスンするリモートサーバーのリッスンポート番号(既定はTCP/22)
- ディレクトリ名
- リモートサーバーに接続するためのユーザー名
イメージ:ログパラメータの設定
注:この例では、ユーザ名はwsascpで、リモートサーバはMicrosoft Windowsオペレーティングシステムです。フォルダwsa01がc:\users\wccpscpフォルダ(Microsoftのユーザプロファイルフォルダ)に作成されました。
ヒント:単にフォルダ名を入力するだけで済みます。この例では、その名前はwsa01です。
ステップ 8:変更を送信します。
ステップ 9:SSHキーをテキストファイルに保存し、リモートSCPサーバ設定セクションで使用できるようにします。
注:ssh-で始まりroot@<SWA hostname>で終わる両方の行をコピーする必要があります。
イメージ:後で使用できるようにSSHキーを保存します。
ステップ 10:変更を確定します。
SCPリモートサーバとしてのMicrosoft Windowsの設定
ステップ 10:SCPサービスのユーザーを作成するには、[コンピューターの管理]に移動します。
注:すでにSCPのユーザがいる場合は、ステップ16に進んでください。
ステップ 11Local Users and Groupsを選択してから、左側のペインでUsersを選択します。
ステップ 12メインページで右クリックして、new userを選択します。
図: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 with Administrator privilege(Run as Administrator)を使用して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.(オプションですが推奨)サービスのスタートアップのタイプを自動に変更し、管理者権限を持ちます(管理者として実行)。
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ファイルの末尾の次の2行をマークします。
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
ステップ26.(オプション) %programdata%\ssh\sshd_configでStrictモードを編集します。このモードはデフォルトで有効になっており、秘密キーと公開キーが適切に保護されていない場合はSSHキーベースの認証ができません。
この行のコメントを解除し#StrictModesStrictModes 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:管理者権限でコマンドプロンプト(CMD)を開きます(管理者として実行)。
ステップ 3:リンクを作成するには、次のコマンドを実行します。
mklink /d c:\users\wsascp\wsa01 D:\WSA_Logs\WSA01
イメージ – SYMリンクの作成
注:この例では、SWAがC:\Users\wsascp内のWSA01フォルダにログをプッシュするように設定されており(WSAのインストール時)、SCPサーバにはD:\WSA_Logs\WSA01へのシンボリックリンクとしてWSA01フォルダがあります。
Microsoft Symbol Linkの詳細については、次のサイトを参照してください。 mklink | Microsoft Learn
SCPログプッシュのトラブルシューティング
SWAでログを表示する
SCPログプッシュのトラブルシューティングを行うには、次の場所でエラーを確認します。
1. CLI > displayalertsの順に選択します。
2. System_logs
注:system_logsを読み取るには、CLIでgrepコマンドを使用できます(次の例を参照)。system_logsに関連付けられている番号を選択し、ウィザードの質問に答えてください。
SCPサーバでのログの表示
SCPサーバのログは、Microsoft Event ViewerのApplications and Services Logs > OpenSSH > Operationalの順に選択して表示できます。
イメージ:PreAuthが失敗しました
「Host Key verification failed」(ホストキー検証に失敗しました)
このエラーは、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サーバでのエラーの例を次に示します。「Invalid user SCP from <SWA_IP address> port <TCP port SWA conencts to SCP server>」。
イメージ – 無効なユーザ
このエラーを解決するには、スペルを確認し、SCPサーバでユーザ(ログをプッシュするようにSWAで設定)が有効になっていることを確認してください。
"No such file or directory"
このエラーは、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サーバへのパスに、アクセスをブロックしているファイアウォールがあるかどうかを確認します。
- SCPサーバ(SCPサーバ)で、TCPポート22がリスニングステートであるかどうかを確認します。
- 詳細な分析を行うには、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: Key Exchange Init」を含むパケットを探します。
ステップ 5:SSH Protocolを展開し、「Algorithms」セクションに移動します。
手順 6:server_host_key_algorithms文字列を確認します(例:server_host_key_algorithms文字列:ssh-rsa)。
手順 7: SCPサーバに移動し、sshd_configファイルを編集します。
ステップ 8:HostKeyAlgorithms で始まる行を探し、「ステップ6」で説明されているサポートされているホストキーをファイルに追加します。(この例ではHostKeyAlgorithms ssh-rsa)
注:HostKeyAlgorithmsで始まる行がない場合は、ファイルの最後にこの行を追加できます。
ステップ 9:変更を保存し、SSHDサービスを再起動します。
参考資料