内容

要件

オペレーティング システム

カーネルバージョン

コネクタバージョン

より多くのコマンド

使用可能なコマンド

はじめに

この記事では、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)が発生し、コネクタは縮退状態で実行されます。ファイルシステムまたはネットワークの監視は行われません。

サポートされていないカーネルでコネクタが動作しているかどうかを確認するために、ターミナルウィンドウから次の手順を実行できます。

1. コネクタに障害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. 現在稼働中のカーネルが2.6から4.14の間にあり、その内容がプリコンパイル済みのカーネルモジュールのバージョンのいずれとも一致しないことを確認してください。

次のコマンドは、現在実行中のカーネルのバージョンを表示します。

$ uname -r

4.14.97-90.72.amzn2.x86_64

コネクタに同梱されているコンパイル済みカーネルモジュールのバージョンは、次のコマンドを使用して表示されます。

3. $ 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コネクタを実行している場合は、次の手順を使用してシステムのカスタムカーネルモジュールをコンパイルできます。

1. 必要なシステム依存関係のインストール：

$ yum install gcc

gccは、カーネルモジュールを特定のオプションでコンパイルするために必要です。

1. RHELベースのカーネルを使用しているシステムでは、次のコマンドを使用して必要なカーネルパッケージをインストールします。

$ yum install kernel-devel-$(uname -r)

2. UEKを使用するシステムでは、次のコマンドを使用して必要なカーネルパッケージをインストールします。

$ yum install kernel-uek-devel-$(uname -r)
システムによっては、現在実行中のカーネルのカーネルモジュールをコンパイルするために、kernel-devel-$(uname -r) kernel-uek-devel-$(uname -r)が必要です。

2. root権限でcompile_kmods.shスクリプトを実行します。

$ sudo /opt/cisco/amp/bin/compile_kmods.sh

compile_kmods.shスクリプトは、現在稼働中のカーネルのバージョン用に、ファイルシステムとネットワーク監視カーネルモジュールをコンパイルしようとします。カスタムカーネルモジュールは/opt/cisco/amp/extras/modulesディレクトリの下に作成されます。実行が終了すると、新しくコンパイルされたカーネルモジュールをシステムにロードできるように、スクリプトはコネクタを自動的に再起動します。

3. 障害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権限で実行する必要があります。

- -h/—helpオプションを使用すると、使用可能なオプションの完全なリストが表示されます。

$ /opt/cisco/amp/bin/compile_kmods.sh --help

Usage: compile_kmods [OPTIONS]

OPTIONS:

-f, --force        force overwriting compiled kmod

-h, --help         show help

- -f/—forceオプションを使用すると、実行中のカーネル用にコンパイル済みのカスタムカーネルモジュールを強制的に上書きできます。これは、現在のカスタムカーネルモジュールが古いバージョンのコネクタを使用して構築され、コネクタの更新バージョンを使用して再コンパイルする必要がある場合に使用します。コネクタのアップデートプロセスでは、アップデートの一部として顧客のカーネルモジュールを再コンパイルしません。

トラブルシューティング

解決手順に従っても障害8または9が発生する場合は、次の手順を実行して問題をさらに調査できます。

- システムログ/var/log/messagesの次のようなログ行を探します。

- 次のログは、コンピュータ上で現在実行中のカーネルバージョンが、ファイルシステムとネットワークの監視にカーネルモジュールを使用していないことを示しています。カーネルバージョン4.18以降では、ファイルシステムとネットワークはeBPFモジュールを使用して監視されます。

init: cisco-amp pre-start: AMP kernel modules are not required on this kernel version '5.4.117-58.216.amzn2.x86_64'; skipping reinstalling kernel modules

- 次のログは、プリコンパイルされたカーネルモジュールディレクトリ/opt/cisco/amp/bin/modulesにカーネルバージョンが見つからないことを示しています現在のカーネルのバージョンと互換性がある場合：

init: cisco-amp pre-start: finding compatible kernel modules in /opt/cisco/amp/bin/modules to install

init: cisco-amp pre-start: failed to find kernel versions

init: cisco-amp pre-start: failed to install and load all required kernel modules in /opt/cisco/amp/bin/modules, continuing without some modules loaded

- 次のログは、カスタムコンパイル済みカーネルモジュールディレクトリ/opt/cisco/amp/extra/modulesにカーネルバージョンが見つからないことを示しています現在のカーネルのバージョンと互換性がある場合：

init: cisco-amp pre-start: finding compatible kernel modules in /opt/cisco/amp/extra/modules to install

init: cisco-amp pre-start: failed to find kernel versions

init: cisco-amp pre-start: failed to install and load all required kernel modules in /opt/cisco/amp/extra/modules, continuing without some modules loaded

- Secure Endpoint Linuxコネクタファイルシステムとネットワーク監視カーネルモジュールがロードされているかどうかを確認します。

$ lsmod | grep ampfsm

ampfsm                 24576  0

$ lsmod | grep ampnetworkflow

ampnetworkflow         65536  0

- Secure Endpoint Linuxコネクタを、可能であれば新しいバージョンにアップグレードします。