はじめに
この記事では、Cisco Secure Endpoint Linuxコネクタのファイルシステムとネットワークの監視に必要なコンパイル済みカーネルモジュールが、現在稼働中のシステムカーネルで使用できない状況を特定する方法、およびファイルシステムとネットワークの監視が動作するようにカーネルモジュールを手動でコンパイルする手順について説明します。
この記事では、「サポートされていないカーネル」とは、Linuxコネクタでサポートされているカーネルのバージョンを指しますが、そのカーネルのバージョンに必要な特定のプリコンパイル済みカーネルモジュールがコネクタのインストールパッケージに含まれていないため、手動でコンパイルする必要があります。これは、Amazon Linux 2などのローリングリリースアップデートを使用するオペレーティングシステムで実行されている特定のLinuxコネクタリリースに当てはまります。
すべてのLinuxディストリビューションとカーネルバージョンが、コンパイルされたカーネルモジュールの実行をサポートしているわけではありません。この記事は、カーネルモジュールを手動でコンパイルできる場合の識別に役立ちます。
前提条件
要件
- RHELベースのシステムの場合は、ディストリビューションが提供するgccがインストールされている。現在稼働中のカーネル用にkernel-develがインストールされている。
- Unbreakable Enterprise Kernel (UEK)を使用しているシステムの場合、ディストリビューションが提供するgccがインストールされている。現在稼働中のカーネル用にkernel-uek-develがインストールされている。
適用性
オペレーティング システム
- RHEL/CentOS 7
- Oracle Linux 7 Red Hat Compatible Kernel(RHCK)
- Oracle Linux 7 UEK 5以前
- Amazon Linux 2
カーネルバージョン
- ネットワーク監視カーネルモジュールは、カーネルのバージョン2.6から4.14までコンパイルできます。
- ファイルシステムモニタリングカーネルモジュールは、カーネルバージョン3.10から4.14までコンパイルできます。
- カーネルバージョン2.6から3.10までは、コネクタはファイルシステムの監視にredirfs (ツリー外のカーネルモジュール)を使用します。これはカスタムコンパイルには適用されません。
- 4.14と4.19の間のカーネルのバージョンはコネクタと互換性がなく、カスタムコンパイルにも適用できません。
- カーネルバージョン4.19以降では、コネクタはファイルシステムとネットワークのモニタリングにeBPFモジュールを使用します。これらのカーネルのバージョンでこのエラーを解決する方法については、『Linux Kernel-Device Fault』の記事を参照してください。
コネクタバージョン
- 1.16.0以降
- カスタムUEKカーネルモジュールを作成するための1.18.0以降
サポートされていないカーネルの診断
コネクタがサポートされていないカーネルのコンピュータで実行されている場合、エラー8(Realtime filesystem monitor failed to start)およびエラー9(Realtime network monitor failed to start)が発生し、コネクタは縮退状態で実行されます。ファイルシステムまたはネットワークの監視は行われません。
サポートされていないカーネルでコネクタが動作しているかどうかを確認するために、ターミナルウィンドウから次の手順を実行できます。
- コネクタに障害8または障害9が発生していることを確認します。
$ /opt/cisco/amp/bin/ampcli status
[logger] Set minimum reported log level to notice
Trying to connect...
Connected.
Status: Connected
Mode: Degraded
Scan: Ready for scan
Last Scan: none
Policy: unsupported kernel example (#7607)
Command-line: Enabled
Faults: 2 Critical
Fault IDs: 8, 9
ID 8 - Critical: Realtime filesystem monitor failed to start.
ID 9 - Critical: Realtime network monitor failed to start.
- 現在稼働中のカーネルが2.6から4.14の間にあり、その内容がプリコンパイル済みのカーネルモジュールのバージョンのいずれとも一致しないことを確認してください。
次のコマンドは、現在実行中のカーネルのバージョンを表示します。
$ uname -r
4.14.97-90.72.amzn2.x86_64
コネクタに同梱されているコンパイル済みカーネルモジュールのバージョンは、次のコマンドを使用して表示されます。
$ ls /opt/cisco/amp/bin/modules/
4.14.186-146.268.amzn2.x86_64 4.14.198-152.320.amzn2.x86_64 4.14.209-160.335.amzn2.x86_64 4.14.219-161.340.amzn2.x86_64 4.14.225-169.362.amzn2.x86_64
4.14.192-147.314.amzn2.x86_64 4.14.200-155.322.amzn2.x86_64 4.14.209-160.339.amzn2.x86_64 4.14.219-164.354.amzn2.x86_64 4.14.231-173.360.amzn2.x86_64
4.14.193-149.317.amzn2.x86_64 4.14.203-156.332.amzn2.x86_64 4.14.214-160.339.amzn2.x86_64 4.14.225-168.357.amzn2.x86_64 4.14.231-173.361.amzn2.x86_64
上記の例では、カーネルバージョン4.14.97-90.72.amzn2.x86_64は使用可能なカーネルモジュールのリストに含まれていません。
Linuxコネクタは、以下の全てが当てはまる場合に、カスタムカーネルモジュールをコンパイルするのに適しています。
- コネクタにエラー8または9が発生している。
- 現在のカーネルのバージョンは2.6~4.14です。
- 現在のカーネルバージョンは、プリコンパイル済みカーネルモジュール
/opt/cisco/amp/bin/modules
のリストに含まれていません。
解決方法
サポートされていないカーネルでLinuxコネクタを実行している場合は、次の手順を使用してシステムのカスタムカーネルモジュールをコンパイルできます。
- 必要なシステム依存関係のインストール:
$ yum install gcc
gcc
は、カーネルモジュールを特定のオプションでコンパイルするために必要です。
- RHELベースのカーネルを使用しているシステムでは、次のコマンドを使用して必要なカーネルパッケージをインストールします。
$ yum install kernel-devel-$(uname -r)
-
UEKを使用するシステムでは、次のコマンドを使用して必要なカーネルパッケージをインストールします。
$ yum install kernel-uek-devel-$(uname -r)
システムによっては、現在実行中のカーネルのカーネルモジュールをコンパイルするために、kernel-devel-$(uname -r) kernel-uek-devel-$(uname -r)
が必要です。
-
root権限でcompile_kmods.shスクリプトを実行します。
$ sudo /opt/cisco/amp/bin/compile_kmods.sh
compile_kmods.shスクリプトは、現在稼働中のカーネルのバージョン用に、ファイルシステムとネットワーク監視カーネルモジュールをコンパイルしようとします。カスタムカーネルモジュールは/opt/cisco/amp/extras/modules
ディレクトリの下に作成されます。実行が終了すると、新しくコンパイルされたカーネルモジュールをシステムにロードできるように、スクリプトはコネクタを自動的に再起動します。
- 障害8および9がクリアされたことを確認します。
$ /opt/cisco/amp/bin/ampcli status
[logger] Set minimum reported log level to notice
Trying to connect...
Connected.
Status: Connected
Mode: Normal
Scan: Ready for scan
Last Scan: 2021-06-14 05:53 PM
Policy: unsupported kernel example (#7607)
Command-line: Enabled
Faults: None
より多くのコマンド
compile_kmods.sh実行可能ファイルは、Secure Endpoint Linuxコネクタバージョン1.16.0以降で使用でき、互換性のあるOSディストリビューションに自動的にインストールされます。compile_kmods.sh実行可能ファイルは、Secure Endpoint Linuxコネクタバージョン1.18.0以降で、UEKのカスタムコンパイルをサポートするように改善されています。
ネットワーク監視用のカーネルモジュールのカスタムコンパイルは、カーネルバージョン2.6~4.14でサポートされています。ファイルシステム監視用のカーネルモジュールのカスタムコンパイルは、カーネルバージョン3.10~4.14でサポートされています。
使用可能なコマンド
注意: compile_kmods.sh実行可能ファイルは、root権限で実行する必要があります。
トラブルシューティング
解決手順に従っても障害8または9が発生する場合は、次の手順を実行して問題をさらに調査できます。