はじめに
このドキュメントでは、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はセキュリティをSecure Shell(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を選択します。
イメージ:Add Log Subscriptionの選択
ステップ 3:Log typeを選択します。この例では、アクセスログが選択されています
ステップ 4:ログサブスクリプションの名前を入力してください
ステップ5:(オプション)ファイルサイズでロールオーバーを変更できます
手順 6:Retrieval methodから、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 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サービスを管理者権限で起動します( Run as Administrator )。
Start-Service sshd
ステップ21(オプションですが推奨)サービスのスタートアップの種類を、管理者権限を持つ自動に変更します( Run as Administrator )。
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キーベースの認証が行われません。
yesの行のコメントを解除#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 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またはCLI(rollovernowコマンド)の両方から実行できます。
WSA_CLI> rollovernow scpal
ログが定義されたフォルダにコピーされていることを確認できます。この例ではc:/Users/wsascp/wsa01です。
SCPログを別のドライブにプッシュ
ログをC:以外の別のドライブにプッシュする必要がある場合は、ユーザプロファイルフォルダから目的のドライブへのリンクを作成します。この例では、ログはD:\WSA_Logs\WSA01にプッシュされます。
ステップ1:この例では、目的のドライブにフォルダを作成します
ステップ 2:管理者特権でコマンドプロンプトを開く( Run as Administrator )
ステップ 3:リンクを作成するには、次のコマンドを実行します。
mklink /d c:\users\wsascp\wsa01 D:\WSA_Logs\WSA01
イメージ – SYMリンクの作成
注:この例では、SWAはC:\Users\wsascp内のWSA01フォルダにログをプッシュするように設定されており(SCPサーバはD:\WSA_Logs\WSA01へのシンボリックリンクとしてフォルダWSA01を持っています)、SCPサーバはフォルダWSA01を持っています
Microsoft Symbol Linkの詳細については、mklinkを参照してください。 | Microsoftラーニング
SCPログプッシュのトラブルシューティング
SWAでのログの表示
SCPログプッシュのトラブルシューティングを行うには、次の場所でエラーを確認します。
1. CLI > displayalerts
2. System_logs
注:system_logsを読み取るには、CLIでgrepコマンドを使用します(CLIで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がリッスン状態になっているかどうかを確認します(SCPサーバの場合)。
[4]詳細な分析のために、SWAとSCPサーバの両方でパケットキャプチャを実行します。
正常な接続のパケットキャプチャの例を次に示します。
図 – 正常に完了した接続のパケットキャプチャ
参考資料
Cisco Webセキュリティアプライアンスのベストプラクティスガイドライン – Cisco
BRKSEC-3303(ciscolive)
AsyncOS 14.5 for Cisco Secure Web Applianceユーザガイド – GD(General Deployment) - [Cisco Secure Web Appliance]の接続、インストール、および設定 – シスコ
Windows用OpenSSHの概要 | Microsoftラーニング
WindowsでのSSH公開キー認証の設定 | Windows OSハブ(woshub.com)
Windows用OpenSSHでのキーベースの認証 | Microsoftラーニング