目次
はじめに
ルートキットのスキャン
Linuxカーネルの強化
カーネルの保護
カーネルモジュールの署名
モジュール読み込みルール
モジュールを完全に無効にする
Linuxカーネルロックダウンの使用
sysctl.confを強化する
SELinuxまたはAppArmorを有効にする
その他のLinuxシステムの強化
結論
はじめに
本日(米国時間 8月13日)リリースされた米国政府のサイバーセキュリティアドバイザリーで、米国家安全保障局(NSA)と米連邦捜査局(FBI)は、Drovorubと呼ばれる新たなLinuxマルウェアルートキットに関するセキュリティアラートとこのマルウェアの詳細を発表しました。この脅威はAPT28に起因するとしています。レポートは非常に詳細であり、Drovorubマルウェアの攻撃を効果的に識別するためのいくつかの補足的な検出手法を提示しています。一般的な問題として、ホストでの大規模な検出が実際の課題になる可能性があることを考慮し、多数の調査方法が提案されています。NSAとFBIは、カーネルバージョン3.7以前のシステムは、適切なカーネル署名がないため、Drovorubマルウェアの影響を最も受けやすいと彼らの報告で明らかにしました。
システムを最新の状態に保ち、完全に保護することは、Windowsベースの環境に固有のものではありません。Linuxベースのシステムは、多くの企業組織内に広がっており、多くの場合、システム管理者の直接の可視範囲外で動作します。この低い可視性のために、脅威アクターはLinux Stackを横方向の移動の理想的な隠れ場所および出発点として採用しています。これにより、これらの環境を最新の状態に保ち、高い優先度を確保できます。
Drovorubに対する特定のMcAfeeテクノロジー保護については、こちらのDrovorub KB専用の記事をご覧ください。
米国政府の報告書および製品固有のナレッジベースの記事で提供されているガイダンスに加えて、マカフィーでは、ルートキットの検出とカーネルのセキュリティについて、次のベストプラクティス(可能な場合)に注意して適用することをお勧めしています。
ルートキットのスキャン
マルウェアスキャナーと同様に、ルートキットスキャナーは低レベルのプロセスをスキャンして、起動時に悪意のあるコードが読み込まれているかどうかを判断できます。たとえば、以下は一般的なルートキットの検出に使用できるソフトウェアの例です。
・Chrootkit – 見つけにくいルートキットを発見するためのLinuxルートキットスキャナー
・Rkhunter –バックドアやローカルでの悪用の可能性を発見するLinuxルートキットスキャナー
この特定のDrovorubのケースでは、Volatilityなどのツールを使用してマシンのメモリを科学的に分析するためのアドバイスが提供されます。Volatilityプラグイン「Linux_Psxview」を使用すると、通常のPSlistに表示されなくても、Drovorubクライアントの存在を検出できます。
Linuxカーネルの強化
本日のアドバイザリーでは、組織がx86-64システムで「Full」または「thorough」モードでUEFIセキュアブートを有効にすることを推奨しています。UEFIセキュアブートには、暗号で署名されたファームウェアとカーネルが必要です。署名されていないドライバーをハードウェアに読み込むことができないため、この操作により攻撃者が悪意のあるカーネルモジュールをシステムに挿入しにくくなり、署名されていないルートキットが再起動後も存続することが難しくなるため、攻撃対象領域が減少します。
ただし、組織は、セキュアブートがすべてのLinuxディストリビューションに統合されているわけではないことに注意する必要があります。セキュアブートの有効化にはいくつかの課題もあります。多くの場合、カーネルまたはモジュールがアップグレードされるたびに手動による介入が必要になるか、一部の製品のロードが妨げられる可能性があります。このVMWareのナレッジベースの記事では、これらのセキュアブートの問題に対処する方法について説明しています
カーネルの保護
Linuxカーネルを保護し、提供される機能を利用するために、組織が実行できるいくつかの手順があります。使用および適用できるいくつかのベストプラクティスを紹介します。これらを本番環境に適用する前に、テスト環境内で適用してください。
カーネルモジュールの署名
Linux 3.7以降、カーネルはロード可能なカーネルモジュールでデジタル署名をサポートしています。この機能は、CONFIG_MODULE_SIGの設定を使用してカーネルで有効にできます。これらのオプションでは、有効な署名が必要になる場合があります。カーネルのビルドフェーズで自動モジュール署名を有効にし、使用するハッシュアルゴリズムを指定します。さらに、ローカルキーまたはリモートキーを使用できます。有効なデジタル署名を要求することにより、既知の有効なモジュールのみを読み込むことができ、システムの攻撃対象領域が減少します。
モジュール読み込みルール
ロードできるのは既知のモジュールのみです。カーネルモジュールの読み込みを禁止し、どのモジュールを禁止から除外するかを指定することで、制限付きモジュールのサポートをデフォルトで有効にすることができます。次のコマンドを使用して、読み込みを無効にすることができます。
sysctl kernel.modules_disabled = 1
システムの動作に必要な一部のモジュールは、通常、システムの動作中に読み込まれ、起動時に読み込まれない場合があります。これらのモジュールを確実に使用できるようにするには、ロードを無効にする前に、起動時にロードする必要があります。これらのモジュールをロードするには、/ etc / modules-load.dにあるファイルにリストします。
モジュールを完全に無効にする
問題のシステムによっては、カーネル構成で不要なすべてのハードウェアを無効にし、必要なすべてのドライバーコードをモジュールではなく直接カーネルにビルドすると、ロード可能なカーネルモジュールのサポートを完全に無効にできる場合があります。特殊用途システムの場合、これは実行可能なオプションになる場合があります。モジュールを完全に禁止することにより、システムの攻撃対象領域を大幅に減らすことができます。
カーネルモジュールのサポートを完全に無効にできるのは、既知の使用パターンを持つ特殊な目的のシステムの場合のみです。汎用のユーザー向けマシンには、ユーザーアクセスパターンをサポートするためのモジュールサポートが必要になる可能性があります。
Linuxカーネルロックダウンの使用
ロックダウンパッチは、バージョン5.4以降、カーネルにマージされています。セキュアブートが有効になっている場合でも、ルートはカーネルを変更し、たとえばホットパッチを適用して永続的なプロセスを作成することができます。ロックダウンは、ルートがカーネルコードを変更しないようにするポリシーを提供するために開発されました。ロックダウンには、「integrity(整合性)」と「confidentiality(機密性)」の2つのモードがあります。コミュニティは一般に、組織に「integrity」モードを検討し、特別なシステムには「confidentiality」モードを使用するようにアドバイスしています。
sysctl.confを強化する
sysctl.confファイルは、Linuxシステムの主要な構成ポイントです。安全なデフォルトを使用することにより、システム全体はより安全な基盤から恩恵を受けるでしょう。オプションの例には、IPv6の無効化、ネットワークブロードキャストパケットの無視、ASLRの有効化、DEP / NXのアクティブ化が含まれます。(https://www.cyberciti.biz/faq/linux-kernel-etcsysctl-conf-security-hardening/)
SELinuxまたはAppArmorを有効にする
最新のLinuxシステムには、ディストリビューションに応じて、AppArmorまたはSELinuxのセキュリティ強化システムが含まれています。 これらにより、セキュリティポリシーによるきめ細かなアクセス制御が可能になります。 CentOSおよびRedHat Enterprise Linuxオペレーティングシステムでは、SElinuxがデフォルトでインストールおよび有効化されていますが、UbuntuおよびSuSE Linux Enterpriseシステムでは、デフォルトでAppArmorがインストールされ、有効化されています。
・https://www.linode.com/docs/quick-answers/linux/how-to-install-selinux-on-ubuntu-18-04/
・https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/index
私たちがよく目にするのは、root権限で簡単に無効にできるため、問題が発生するとすぐにこれらのセキュリティ強化システムを無効にすることを決定するということです。しかし、サービスを許可して問題を修正する方法を学ぶために時間をかけることは、Linuxシステムに追加のセキュリティ層を提供するために非常に重要です。
AppArmorは、SELinuxと同様の機能を提供するLinuxカーネルセキュリティモジュールです。SELinuxはファイル(特にiノード)で動作し、ファイルシステムのサポートを必要としますが、AppArmorはファイルシステムに依存せずにパスで動作します。多くの人が使いやすいと考えており、通常のユーザーには良く知られています。SELinuxは(潜在的に)より安全になる可能性がありますが、システムの複雑さにより、多くのユーザーがAppArmorを好んでいます。
主要なエンタープライズレベルのLinuxディストリビューションの中で、RedHatはSELinuxを採用し、SuSEエンタープライズはAppArmorを採用(およびその商標を所有)しています。CanonicalはAppArmorにも大きく貢献しており、Ubuntuではデフォルトでサポートされています。
その他のLinuxシステムの強化
今回のアドバイザリーに照らして、この記事では主にLinuxカーネルの保護に焦点を当てました。ただし、Linuxをセキュリティで保護するには、次のような多くのベストプラクティスがあります。
・未使用のソフトウェアの削除
・未使用のサービスを無効化
・監査を有効化
・APIアクセスを制御
・rootアカウントの使用を制限
・最小限の権限のポリシーを可能な限り組み込む
・システムのバックアップ
・sysctlを介してASLRエントロピーを増やし、メモリに格納できるライブラリの場所の数を増やすことで、信頼性の高い悪用をより困難にする
Linuxディストリビューションの詳細なセキュリティ強化およびセキュリティ保護ガイドは、次の場所からダウンロードが可能です。
https://www.cisecurity.org/cybersecurity-best-practices/
結論
Linuxカーネルとシステムの強化は、多くの場合、組織にとっての課題であり、他のオペレーティングシステムを保護するほど簡単ではありません。ただし、NSA-FBIパブリケーションで提供される情報と脅威アクター全体によるLinuxベースのマルウェアの適応を考えると、組織は警戒を怠らず、可能な限りLinuxシステムを強化し、適切なセキュリティ製品を展開することをお勧めします。
DrovorubDrovorubに対する特定のMcAfeeテクノロジ保護については、こちらの専用DrovorubDrovorub KB記事をご覧ください。
※本ページの内容は2020年8月13日(US時間)更新の以下のMcAfee Blogの内容です。
原文:On Drovorub: Linux Kernel Security Best Practices
著者:ATR Operational Intelligence Team