はじめに
このドキュメントでは、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スイート(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:選択したログをアーカイブするには、ロールオーバーをクリックします。
イメージ – ロールオーバーGUI
リモートサーバでのSCPによるログ取得の設定
SCPを使用してSWAからリモートサーバにログを取得するには、主に2つの手順があります。
- ログをプッシュするようにSWAを設定します。
- ログを受信するようにリモートサーバを設定します。
GUIからSCPリモートサーバにログを送信するためのSWAの設定
ステップ 1:SWAにログインし、System AdministrationでLog Subscriptionsを選択します。
イメージ:ログサブスクリプションの選択
ステップ 2:Log Subscriptionsページで、Add Log Subscriptionを選択します。
イメージ:Add Log Subscriptionの選択
ステップ 3:Log typeを選択します。この例では、アクセスログが選択されています
ステップ 4:ログサブスクリプションの名前を入力してください
ステップ5:(オプション)ロールオーバーをファイルサイズで変更できます
手順 6:検索方法から、リモートサーバのSCPを選択します
手順 7:リモートサーバの情報を入力します。
- SCPホスト名またはIPアドレス
- SSHをリスニングするリモートサーバのリスニングポート番号(デフォルトはTCP/22)
- ディレクトリ名
- リモートサーバーに接続するためのユーザー名
イメージ:ログパラメータの設定
注:この例では、ユーザ名はwsascp、リモートサーバはMicrosoft Windowsオペレーティングシステムです。フォルダwsa01をc:\users\wccpscpフォルダ(Microsoftのユーザプロファイルフォルダ)に作成しました。
ヒント:フォルダ名を入力するだけで済みます。この例ではwsa01です。
ステップ 8:変更を送信します。
ステップ 9:リモートSCPサーバ設定セクションでさらに使用するために、SSHキーをテキストファイルに保存します。
注:ssh-で始まりroot@<SWA hostname>で終わる両方の行をコピーする必要があります。
イメージ:後で使用するためにSSHキーを保存します。
ステップ 10:変更を確定します。
SCPリモートサーバとしてのMicrosoft Windowsの設定
ステップ 10:SCPサービスのユーザーを作成するには、[コンピュータの管理]に移動します。
注:すでにSCPのユーザがいる場合は、ステップ16に進んでください。
ステップ 11Local Users and groupを選択し、左ペインから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を使用してOpenSSHをインストールするには(「管理者として実行」(Run as Administrator))、を実行します。
# 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ラーニング
ステップ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ファイルの末尾のこれらの2行をマークします。
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
ステップ26.(オプション) %programdata%\ssh\sshd_configでStrictモードを編集します。デフォルトでは、このモードは有効になっており、秘密鍵と公開鍵が正しく保護されていない場合は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から管理者権限( Run as Administrator )で使用できます
restart-Service -Name sshd
ステップ 32:SCPプッシュが正しく設定されているかどうかをテストするには、設定されたログをロールオーバーします。これは、GUI(WLC)または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サーバはD:\WSA_Logs\WSA01へのシンボリックリンクとしてフォルダWSA01を持っています)。
Microsoft Symbol Linkの詳細については、次のサイトを参照してください。mklink | Microsoftラーニング
SCPログプッシュのトラブルシューティング
SWAでのログの表示
SCPログプッシュのトラブルシューティングを行うには、次の場所でエラーを確認します。
1. CLI > displayalerts
2. System_logs
注:system_logsを読み取るには、CLIでgrepコマンドを使用します(grepはデフォルト)。system_logsに関連付けられている番号を選択し、ウィザードの質問に答えてください。
SCPサーバでのログの表示
SCPサーバログは、Microsoft Event Viewerの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ログサブスクリプションページに貼り付けます。
「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>
イメージ – 無効なユーザ
このエラーを解決するには、スペルをチェックし、ユーザ(ログをプッシュするようにSWAで設定)がSCPサーバで有効になっていることを確認してください。
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が接続されていない場合:
[1] SCPサーバファイアウォールがアクセスをブロックしているかどうかを確認します。
[2] SWAからSCPサーバへのパスに、アクセスをブロックしているファイアウォールがあるかどうかを確認します。
[3] SCPサーバでTCPポート22がリスニングステートになっているかどうかを確認します。
[4]詳細な分析を行うには、SWAとSCPの両方のサーバでパケットキャプチャを実行します。
接続が成功した場合のパケットキャプチャの例を次に示します。
図 – 正常な接続のパケットキャプチャ
参考資料
Cisco Webセキュリティアプライアンスのベストプラクティスガイドライン – Cisco
BRKSEC-3303(ciscolive)
AsyncOS 14.5 for Cisco Secure Web Applianceユーザガイド – GD(一般導入) - [Cisco Secure Web Appliance]の接続、インストール、および設定 – Cisco
OpenSSH for Windowsの概要 | Microsoftラーニング
WindowsでのSSH公開キー認証の設定 | Windows OSハブ(woshub.com)
OpenSSH for Windowsでのキーベースの認証 | Microsoftラーニング