エージェントと SSH ログイン履歴
Zenavo エージェント
セットアップは、すべてのサーバーの専用の zenavo-system 名前空間に Zenavo エージェントをインストールします。エージェントは HTTPS でコントロールプレーンに外向きに接続し、コントロールプレーンの Kubernetes リクエストをローカルのクラスターに届けます:デプロイ、ログ、ターミナル、ファイル、状態確認。接続はサーバーから外に出るので、Zenavo のためにポートを開ける必要はなく、Zenavo はクラスターの認証情報を保存しません。エージェントにできること・できないことはファイアウォールとセキュリティを参照してください。
サーバーの Server Info タブには、エージェントが接続しているかどうかが表示され、Connects through には、コントロールプレーンに直接つながっているか、Zenavo のリレー経由かが表示されます。エージェントが応答しなくなって数分たつと、サーバーは Offline と表示されます。サーバー上のプロジェクトは動き続けます(サーバーの管理)。
エージェントを更新する
Settings にエージェントのバージョンが表示されます。新しいバージョンがあれば、チームの管理者が Update agent をクリックします。エージェントは、digest で固定された Zenavo のエージェントイメージに自分で更新します。SSH やセットアップは不要です。新しいエージェントが接続するまで今のエージェントが動き続けるので、何も中断されません。更新が終わらなかった場合は、設定にその旨とジョブログへのリンクが表示されます。
更新を始められるのは、サーバーが動いていて、ほかのジョブが実行中でないときです。
エージェント導入前に追加したサーバー
エージェントができる前に追加したサーバーは、自動でエージェントに移行します。Settings → Connection に状態が表示され、すぐに移行を始めることもできます(エージェント導入前に追加したサーバー)。SSH ログイン履歴など、エージェントが必要な機能は移行後に使えるようになります。
SSH ログイン履歴
サーバーの SSH タブには、誰がサーバーに SSH でログインしたかが表示されます(チームのメンバー以上)。
- Source IPs:ログインした各アドレスと、その国と都市、使ったユーザーと方法(パスワードか鍵)、ログイン成功回数と失敗回数、最初と最後に見られた日時。期間内に新しく現れたアドレスには New の印が付きます。
- Time range:過去 24 時間、7 日、30 日、90 日。
- Include failed login attempts:デフォルトはオフで、ログインに成功したアドレスだけが表示されます。オンにすると失敗だけのアドレスも表示されます。その多くはインターネット全体へのパスワードスキャンです。
あるアドレスがチームのサーバーに初めてログインに成功すると、Zenavo はチームにメールを送ります。New SSH login source の通知です。新しいネットワークから接続した直後なら想定どおりですが、そうでなければ警告のサインです。Zenavo が初めて見た時点で 1 日以上前のログイン(コントロールプレーンが止まっていた場合など)はアラートを送りません。
収集の仕組み
エージェントは root ではなく、サーバーのログを読めないので、セットアップはログを読める小さなコレクターをインストールします。systemd タイマーが 5 分ごとに root で実行します。ジャーナルの新しい sshd エントリーだけを読み、送信元 IP、ユーザー、方法ごとの 1 時間単位の集計を過去 7 日分、エージェントのグループだけが読めるディレクトリに保存します。エージェントが生のログを見ることはなく、コレクターはネットワークにアクセスせず、何も送信しません。
コントロールプレーンは数分ごとにエージェント経由で集計をコピーし、90 日間保持します。アドレスの所在地はオフラインの都市データベースで調べ、他のサービスに送ることはありません。1 つの接続は 1 回として数えます。受け入れられればログイン、そうでなければ失敗 1 回です。普通の名前でないユーザー名は ? と記録します。
タブにまだ報告がないと表示される場合、そのサーバーはログイン履歴ができる前にセットアップされています。Settings → Run setup でコレクターがインストールされます。エージェント経由でないサーバーは、エージェントに移行するまで履歴が表示されません。
API
| メソッド | パス | |
|---|---|---|
GET | /api/servers/{sid}/ssh-logins?hours=&failed= | ログイン履歴(メンバー):hours は 24、168、720、2160(デフォルトは 168)。failed=1 で失敗だけのアドレスも含めます。コレクターの状態(active、waiting、unsupported)、合計、送信元 IP ごとの行を返します |
POST | /api/servers/{sid}/agent/update | エージェントを現在のイメージに更新(管理者。ジョブを返します) |
POST | /api/servers/{sid}/agent | エージェント導入前に追加したサーバーを今すぐ移行(管理者。サーバーとともに 202 を返し、移行はジョブとして実行されます) |