Linux 用 Device Protection をインストールする
Aikido ダッシュボードに表示されるコマンドを使って、ご自身のマシンやテスト用のマシンなど、1 台のマシンにエージェントをインストールします。複数台のマシンに展開する場合は、代わりに Linux への展開 から方法を選択してください。
Linux デバイスには systemd と root 権限が必要です。Device Protection がサポートするディストリビューションとバージョンについては、サポート対象のエコシステム を参照してください。
1 つのコマンドでインストールする
インストールコマンドを取得する
- Device Protection に移動し、Devices タブを開きます。
- 右上の Connect Device をクリックします。
- Manual install を選択します。
- デバイスを参加させる ユーザーグループ を選択し、Linux install command をコピーします。
デバイス上で実行する
root としてコマンドを実行します。コマンドはディストリビューションとアーキテクチャに合ったパッケージを選択してインストールし、コマンドに含まれるトークンに対してデバイスを登録します。
インストールの種類を選択する
ダッシュボードのコマンドはデスクトップ版をインストールします。デスクトップセッションのないマシンでは、フラグを 1 つ追加するだけで、コマンドの残りの部分はそのままです。
| マシン | フラグ |
|---|---|
| 人が作業に使うノートパソコンまたはワークステーション | なし |
| 継続的に使用するサーバーまたは VM: ビルドサーバー、CI ランナー、Docker または Kubernetes ホスト、クラウド VM | --headless |
| コンテナイメージ内、またはジョブ終了後に破棄されるホスト型 CI ランナー | --container |
curl -fsSL https://github.com/AikidoSec/safe-chain/raw/refs/heads/main/install-scripts/install-endpoint-linux.sh | sudo sh -s -- --token "$AIKIDO_TOKEN" --headless--headless はトレイアイコンとデスクトップ用パッケージを省きますが、保護機能は同じです。--container も同様に省いたうえで、エージェントを透過型データパスではなくローカルプロキシに切り替えるため、再起動も不要です。コンテナイメージでは、エージェントを起動するエントリポイントなど追加の要素が必要になるため、コンテナでの Device Protection を参照してください。ホスト型 CI ランナーは VM ですが、ジョブから再起動することはできないため、こちらも --container を使用し、エージェントを明示的に起動します。その方法は Linux への展開 にある CI ガイドで説明しています。コンテナをビルド・実行する Docker、Kubernetes、Jenkins のホストはサーバーなので、--headless を使用してください。
手動インストール
社内ミラーに配置する場合や、ダウンロード URL にアクセスできないホストにインストールする場合など、ファイルそのものが必要なときは、パッケージを直接使用します。まず uname -m を実行してください。x86_64 は amd64、aarch64 は arm64 を意味します。
| アーキテクチャ | パッケージ |
|---|---|
amd64 (x86_64) | EndpointProtection-amd64.deb |
arm64 (aarch64) | EndpointProtection-arm64.deb |
curl -fLO https://github.com/AikidoSec/safechain-internals/releases/latest/download/EndpointProtection-amd64.deb
sudo AIKIDO_TOKEN=<your-token> apt install ./EndpointProtection-amd64.debバージョン 9 では el9 ビルドを、バージョン 10 では el10 ビルドを使用します。Amazon Linux 2023 も el9 ビルドを使用します。
| バージョン | アーキテクチャ | パッケージ |
|---|---|---|
| 9 | amd64 (x86_64) | EndpointProtection-amd64.el9.rpm |
| 9 | arm64 (aarch64) | EndpointProtection-arm64.el9.rpm |
| 10 | amd64 (x86_64) | EndpointProtection-amd64.el10.rpm |
| 10 | arm64 (aarch64) | EndpointProtection-arm64.el10.rpm |
curl -fLO https://github.com/AikidoSec/safechain-internals/releases/latest/download/EndpointProtection-amd64.el9.rpm
sudo AIKIDO_TOKEN=<your-token> dnf install ./EndpointProtection-amd64.el9.rpmパッケージはインストール中に AIKIDO_TOKEN を読み取り、その後サービスを自動的に有効化して起動するため、他に実行する必要のあるものはありません。
この方法ではフラグを使用できないため、デスクトップのないマシンでは、トークンと一緒に設定する環境変数でインストールの種類を指定します。サーバーまたは VM の場合は AIKIDO_HEADLESS=1、コンテナイメージの場合は AIKIDO_CONTAINER=1 と AIKIDO_CI_CD=1 を設定します。デスクトップ用パッケージをインストールしないようにするには、Debian 系では --no-install-recommends を、Red Hat 系では --setopt=install_weak_deps=False を追加します。
インストールを確認する
systemctl status aikido-endpoint-protection
aikidoctl versionその後、デバイスが デバイス一覧 に Active ステータスで表示されます。ブロックが実際に機能することを確認するには、Device Protection が機能しているかをテストする方法 に従ってください。
インストールにより、システム全体の環境変数を通じて Node.js と uv が Aikido CA を参照するよう設定されます。すでに実行中のシェルにはこれらが反映されないため、パッケージのインストールをテストする前に、新しいログインシェルを開くか再起動してください。
aikidoctl では、macOS や Windows と同じ確認、一時停止、診断のコマンドを使用できます。aikidoctl CLI を参照してください。
--headless または --container でインストールした場合、Request Access ボタンはありません。パッケージに管理者の承認が必要な場合は、代わりに aikidoctl request を実行してください。コマンドラインからブロックされたインストールをリクエストする を参照してください。
アップグレード
同じコマンドを使って、新しいパッケージを既存のパッケージの上からインストールします。デバイスの登録と設定は維持されるため、トークンを再度指定する必要はありません。
トラブルシューティング
| 問題 | 対処法 |
|---|---|
| パッケージはインストールされるが、デバイスがダッシュボードに表示されない | インストールコマンドに AIKIDO_TOKEN が設定されていませんでした。構成管理ツールはローカル環境をホストに転送しないため、タスク自体に変数を設定してから、パッケージを再度インストールしてください |
apt または dnf がファイルをインストールせず、リポジトリ内でパッケージを探してしまう | 名前ではなくパスを指定してください: apt install ./EndpointProtection-amd64.deb。先頭の ./ によって、パッケージマネージャーはそれをローカルファイルとして扱います |
| Red Hat 系のホストでインストールが失敗する | ビルドをメジャーバージョンに合わせてください。バージョン 9 では el9 パッケージを、バージョン 10 では el10 パッケージを使用します |
| サービスが実行されていない | systemctl status aikido-endpoint-protection を実行し、次に sudo aikidoctl diagnostics を実行して詳細を送信してください |
| Node.js または uv が依然として Aikido 証明書を拒否する | インストール時に NODE_EXTRA_CA_CERTS と UV_SYSTEM_CERTS がシステム全体に設定されますが、実行中のシェルにはこれらが反映されません。新しいログインシェルを開くか、デバイスを再起動してください |
| トークンが実行出力やログに表示される | ツールのマスキング機能を使用してください: Ansible では no_log、Chef では sensitive true、Puppet では Sensitive() |
| 複数のマシンがデバイス一覧で 1 つのエントリを共有している | それらのマシンは同じ /etc/machine-id で起動しています。Linux のデバイス ID はこのファイルに基づくため、クローン元のイメージでこのファイルをクリアし、初回起動時に systemd に新しいものを書き込ませてください |
| トレイアイコンが表示されない | Ubuntu 以外の GNOME では想定どおりの動作であり、見た目上の問題にすぎません。Tray Icon Support on Linux を参照してください |