3 システム・セキュリティの管理

この項では、管理者がシステム・セキュリティを管理するために使用できるOracle Linuxの機能について説明します。

Oracle Linuxには、ネットワーク・ファイアウォール制御からアクセス制御セキュリティ・ポリシーまで、完全なセキュリティ・スタックが用意されており、デフォルトでセキュアに構成されています。Oracle Linuxには、リアルタイム・パッチ適用、自動ソフトウェア更新、証明書管理ツール、組込みファイアウォール、必須アクセス制御、公開キー暗号化およびデータ暗号化ツールなど、システム・セキュリティの強化に役立つ機能が含まれています。この項では、これらの各機能について説明し、詳細の参照先について説明します。

システムにプロビジョニングされたアクセスを管理し、OS、システムで実行されるアプリケーションおよびネットワーク接続のセキュリティを向上させるために、これらのツールと機能を組み合せて使用することを検討してください。

更新の重要性について

システム・ソフトウェアを最新の状態に保つことは、「セキュリティ原則の概要」で説明されているように、セキュリティ戦略全体の重要な原則です。Oracle Linuxの更新は、悪意のあるハッカーが悪用してシステムへの不正アクセスを得る可能性があるソフトウェアの脆弱性や既知の攻撃ベクトルを回避および保護するために重要です。

Oracleは、Oracle LinuxおよびOracle VMソフトウェアに対する重要な更新を、エラッタと呼ばれる個別のパッケージ更新としてリリースします。

Oracle Linuxシステムの更新頻度は、各システム管理者が評価する必要がある多数の要素に応じて決まります。システムを安全に保つための優れたセキュリティ・プラクティス・オプションの1つは、入手可能な最新の更新を受け入れることです。これは、システムが古くなるほど、公開される可能性のある潜在的な脆弱性と攻撃ベクトルが増えるためです。脆弱性が古ければ古くなるほど、悪意のあるハッカーが経験や専門知識を収集できる時間が長くなり、これらの脆弱性を持つシステムがハッキングまたは悪用される可能性が高くなります。

インストールされる更新の頻度とタイプを構成する前に、許容可能とみなし、セキュリティ要件を満たすエクスポージャとリスクのレベルを決定する必要があります。

次に、検討する必要がある有用なベスト・プラクティスの例をいくつか示します:

  • Oracleが公開したエラッタを監視し、表示されるエラッタを確認し、セキュリティ・エラッタに注意します。セキュリティ・エラッタは、クリティカルから低までの重大度レベル別にリストされます。

  • セキュリティ・エラッタ、バグ・エラッタおよび拡張エラッタをテストおよびデプロイする時間をスケジュールします。できるだけ早くセキュリティおよびバグのエラッタをテストおよびデプロイすることは、適切なセキュリティ・プラクティスと考えられます。

  • 多くの場合、マイナー・リリースには、セキュリティ・パッチ、バグ修正および機能拡張の組合せが含まれているため、注意が必要です。前述のように、多数の更新セットをテストおよびデプロイする頻度とタイミングを決定する必要があります。すぐに更新できない場合、Oracle Linux Premierサポートでは、オプションの個別バックポート用のPremier Backportプログラムが提供されます。詳細は、「Premier Backportについて」を参照してください。

  • ビジネス・ニーズを満たすのに必要な最小限のソフトウェアのみをインストールすることで、Oracle Linuxに必要な更新の数を削減します。システム上のパッケージ・フットプリントを最小限にすると、ソフトウェアの更新に必要な時間を短縮するとともに、セキュリティ攻撃ベクトルにさらされることを減らすことができます。詳細は、「ソフトウェア・フットプリントの最小化と保護」を参照してください。

  • システムが再起動されると中断が生じるミッション・クリティカルなアプリケーションを含むシステムでは、Kspliceなどのツールを使用して、再起動を必要とせずにメモリーの停止時間なしでセキュリティ・エラッタ・パッチを適用することでゼロデイ攻撃を防止することを検討してください。Kspliceの詳細は、『Oracle Linux Kspliceユーザーズ・ガイド』を参照してください。

  • また、ソフトウェアおよび自動化管理ツールを使用して、Oracle Linux ManagerOracle Cloud Infrastructure OS ManagementOracle OS Management HubOracle Linux Automation Manager、ChefおよびPuppetなどのソフトウェア更新およびデプロイメントを適用することも検討してください。

    このようなツールでは、増分更新を実行してOracle Linuxシステムのグループを選択することもできます。これは、本番にロールアウトする前に、ステージング環境の実際のユーザーに対する更新の影響をテストする場合に便利です。同様に、すべてのものに同じ構成をデプロイするのではなく、Oracle Linuxシステムおよびイメージをユーザー・ロールにあわせることができるように、これらのツールを使用してベース・イメージにRPMパッケージを追加できます。

非常に複雑な本番環境に適している可能性のあるその他の推奨事項は、Oracle Linux: Oracle Linuxでのソフトウェアの管理を参照してください。

エラッタのRPMパッケージのインストールと更新

任意のOracle Linux端末またはULNから、YumまたはDNFを使用して、Oracle Linuxシステムからエラッタ情報を直接取得できます。エラッタ情報を評価した後、これらのツールを使用してエラッタを追跡、インストールおよび更新できます。

Oracle Linux 8には、システムを頻繁かつ最小限の操作で更新するためのツールが用意されています。dnf-automaticパッケージを使用して、更新をスケジュールどおりにダウンロードしたり、ソフトウェア・アップグレード・オプションに警告したり、自動的に適用したりすることを検討してください。

RPMパッケージのインストール、更新または削除には必ずDNFを使用します(RPMコマンドは使用しないでください)。dnf update --securityコマンドを使用して次の方法で更新できます:
  • CVE番号で更新する、
  • セキュリティ・エラッタ・アドバイザリ番号で更新する、
  • セキュリティ・エラッタを含む最新のカーネル・バージョンにすべてのカーネル・パッケージを更新する、
  • 重大度レベル(クリティカル、重要、中および低)別にすべてのセキュリティ・エラッタを更新する、
  • 入手可能な最新リリースにすべてのセキュリティ・エラッタを更新する。このオプションは、セキュリティの観点からは、多くの場合、最適な選択です。

これらのDNFコマンドの使用方法の詳細は、Oracle Linux: Oracle Linuxでのソフトウェアの管理を参照してください。

RPMエラッタ・パッケージと累積更新の理解

Oracle LinuxはRPMベースのディストリビューションです。RPMパッケージは、Oracleがセキュリティ、バグまたは拡張のエラッタで構成される更新をリリースすると、累積的に構築されます。たとえば、RPMのリリース2はリリース1の上に構築されています。リリース1がインストールされているがリリース4に更新する場合は、リリース2および3の内容もリリース4に含まれています。

エラッタ・パッケージRPMバイナリには、dnf info packageコマンドを使用して確認できる内容が含まれています。次に例を示します。

dnf info bash
Last metadata expiration check: 0:00:34 ago on Thu 20 Jul 2023 06:42:40 PM GMT.
Installed Packages
Name         : bash
Version      : 4.4.20
Release      : 4.el8_6
Architecture : x86_64
Size         : 6.5 M
Source       : bash-4.4.20-4.el8_6.src.rpm
Repository   : @System
From repo    : anaconda
Summary      : The GNU Bourne Again shell
URL          : https://www.gnu.org/software/bash
License      : GPLv3+
Description  : The GNU Bourne Again shell (Bash) is a shell or command language
             : interpreter that is compatible with the Bourne shell (sh). Bash
             : incorporates useful features from the Korn shell (ksh) and the C shell
             : (csh). Most sh scripts can be run by bash without modification.

Available Packages
Name         : bash
Version      : 4.4.20
Release      : 4.el8_6
Architecture : src
Size         : 9.0 M
Source       : None
Repository   : ol8_baseos_latest
Summary      : The GNU Bourne Again shell
URL          : https://www.gnu.org/software/bash
License      : GPLv3+
Description  : The GNU Bourne Again shell (Bash) is a shell or command language
             : interpreter that is compatible with the Bourne shell (sh). Bash
             : incorporates useful features from the Korn shell (ksh) and the C shell
             : (csh). Most sh scripts can be run by bash without modification.
  • 名前、バージョンおよびリリース情報: パッケージを更新すると、RPMのリリース番号が変更されます。RPMがリベースされる(これは頻繁には起こりません)と、バージョン番号が変更される可能性があります。

    dnf updateinfo --list --installed packageコマンドを使用すると、特定のパッケージについて、インストール済RPMを、バージョン、リリースおよび導入された関連エラッタとともにリストできます。たとえば、このコマンドでは、bashパッケージに適用されたすべてのエラッタがリストされ、パッケージの名前、バージョン、リリースおよびアーキテクチャもリストされます:

    dnf updateinfo --list --installed bash
    Last metadata expiration check: 0:05:41 ago on Thu 20 Jul 2023 06:42:40 PM GMT.
    ELBA-2019-3594 bugfix   bash-4.4.19-10.el8.x86_64
    ELBA-2020-4586 bugfix   bash-4.4.19-12.el8.x86_64
    ELSA-2021-1679 Low/Sec. bash-4.4.19-14.el8.x86_64
    ELBA-2021-2030 bugfix   bash-4.4.19-14.el8_3.x86_64
    ELBA-2019-2707 bugfix   bash-4.4.19-8.el8_0.x86_64
    ELBA-2021-1988 bugfix   bash-4.4.20-1.el8_4.x86_64
    ELBA-2021-4495 bugfix   bash-4.4.20-2.el8.x86_64
    ELBA-2022-1993 bugfix   bash-4.4.20-3.el8.x86_64
    ELBA-2022-5815 bugfix   bash-4.4.20-4.el8_6.x86_64

    なお、bashパッケージは、バグ修正ELBA-2021-1988が適用されたときにバージョン4.4.19からバージョン4.4.20にリベースされました。

  • 情報メタデータ: このメタデータには、要約、説明、ライセンスなどの情報が含まれます。

  • 暗号化署名: すべてのOracle Linux RPMパッケージが署名され、お客様は、この署名を使用して、ダウンロード中のRPMの来歴と信頼性を検証できます。そのバイナリをビルドする個人と会社がこの署名を提供します。/etc/dnf/dnf.confファイルでグローバル・デフォルトとしてgpgcheck=1を有効にすると、dnfコマンドでダウンロードまたはインストールする前に、すべてのRPMが本物であり、有効なGPG署名があることが確認されます。これは、RPMが信頼できるソースから提供され、変更されていないことを確認するための重要な方法です。すべてのOracle Linuxイメージには、Oracle GPGキーがインストールされており、gpgcheckオプションがデフォルトで有効になっています。

    注意:

    互換性のあるLinuxディストリビューションからOracle Linuxに既存のシステムを移行する場合は、GPGキーをOracleキーで置き換えることができます。たとえば、次のスクリプトは、システムをCentOS 8またはRocky Linux 8からOracle Linux 8に移行し、GPGキーをOracle Linux GPGキーに置き換えるオプションを提供します: https://github.com/oracle/centos2ol

    RPMパッケージのセキュリティを確保することは、データ暗号化戦略全体の1つの側面です。詳細は、「データの暗号化について」を参照してください。

  • 依存関係情報: RPM、およびRPMが依存している他のパッケージのバージョンの詳細が表示されます。たとえば、次のコマンドを使用すると、bash RPMパッケージについて直接の依存関係をリストできます:

    dnf deplist bash
  • 更新またはインストールの間の様々な段階で実行できる一連のスクリプト。

セキュリティ・エラッタとCVEについて

セキュリティ・エラッタは、1つ以上の共通脆弱性(CVE)で特定されたセキュリティ脆弱性に対処するための是正措置です。

CVE番号は、セキュリティ脆弱性についての公開済の既知の情報に対する一意の共通識別子です。Oracleは、報告されたセキュリティ脆弱性によって生じた是正措置を特定および追跡するために、CVE番号を使用します。CVEプログラムは、米国国土安全保障省のサイバーセキュリティ通信室によって協賛されており、MITRE社によって管理されています。

バグ・エラッタと拡張エラッタについて

バグは、お客様やベンダーによって発見された問題から生じた是正措置です。Oracleは通常、エラッタ通知において、その事象に関連するバグIDを示します。メンテナンス・ポリシーにバグ更新を含めることは、システムにまだ計画されていない、または影響を受けていない問題を防ぐことができるため、適切なセキュリティ・プラクティスと考えられます。たとえば、バグ・エラッタは、システムを不安定にするイベントの組合せが発生するまで公開されない問題を防ぐ可能性があります。そのため、Oracle Linuxシステムをバグ・エラッタで更新しておくことが重要です。

拡張は、Oracleによって提供される、増分での新機能または更新です。

エラッタとCVE通知の取得

Oracleリリースの新しいエラッタ・パッケージの公開時に通知を受けるには、Oracle Linuxエラッタ・メーリング・リスト(https://oss.oracle.com/mailman/listinfo/el-errata)およびOracle VMエラッタ・メーリング・リスト(https://oss.oracle.com/mailman/listinfo/oraclevm-errata)をサブスクライブします。

ULNにログインしている場合、これらのメーリング・リストは、エラッタ・タブに示されるEnterprise Linuxエラッタ・メーリング・リストのサブスクライブ・リンクとOracle VMエラッタ・メーリング・リストのサブスクライブ・リンクに従うことでもサブスクライブできます。

ULNで利用可能な正誤表の完全なリストが公開されます(https://linux.oracle.com/errata)。共通脆弱性(CVE)の公開済リストを確認し、その詳細およびステータスをhttps://linux.oracle.com/cveで確認することもできます。

Oracle Linux yumサーバー・リポジトリへの更新は、https://yum.oracle.com/whatsnew.htmlにアクセスして追跡することもできます。ここでは、各リポジトリ内で過去6か月間に更新されたパッケージを確認できます。

Premier Backportについて

プレミア・バックポート・プログラムを通じて、以降のリリースで使用可能なエラッタを、使用している旧リリースにバックポートするようにリクエストできます。使用している旧リリースは、新リリースの一般提供開始時点から6か月までのバックアップポートの対象にできます。

たとえば、次の表では、2022年6月19日のリリースが最新であると仮定して、その最新リリースを含むパッケージ・バージョンに基づいて、利用可能なglibcパッケージを示しています:

Oracleは、バックポートの対象にできるRPMのリストをhttps://linux.oracle.com/backport-schedule.htmlで公開しています。Premier Backportの利用可能期限を特定するには、Release Date列にリストされているパッケージ・リリース日に6か月を加算します。詳細は、Oracle LinuxおよびOracle VMサポート・ポリシーでOracle Linux Premierサポート・レベルの説明を参照してください。

証明書管理について

公開キー暗号化は、セキュアでないパブリック・ネットワーク上でのセキュアな通信、およびネットワーク接続の相手側でのエンティティのIDの検証を提供します。公開キー暗号化は、秘密キーと公開キーの非対称ペアの作成に基づいています。

OpenSSLは、オープン・ソースにTLSおよびSSLプロトコルを実装したものが含まれています。信頼の階層が組織のイントラネットに限定されている場合は、OpenSSLを使用してルート証明書を生成し、そのドメインに認証局(CA)を設定できます。または、OpenSSLを使用して、認識済CAに提供できる証明書署名リクエストを生成し、アプリケーション構成で使用できる署名付き証明書を取得できます。低コストのドメイン検証証明書署名は、RFC 8555で説明されているIETFで標準化された自動証明書管理環境(ACME)プロトコルを使用すると、さらに取得可能になり、証明書の署名および自己ホストCAの実行に関する大きな支出の必要性が削減されます。

詳細は、『Oracle Linux 証明書と公開キー・インフラストラクチャの管理』を参照してください。

データの暗号化について

Oracle Linuxに付属している暗号化ライブラリは、データ暗号化機能を提供するためにソフトウェアで使用できます。データ暗号化を使用して、保存されているデータまたは転送されるデータを保護できます。ストレージ・デバイスおよびメディア上のデータは、漏えいするリスクまたはデバイスが紛失するリスクがあります。ローカル・エリア・ネットワークおよびインターネットで転送されるデータは、インターセプトまたは変更される可能性があります。データを暗号化することで、ストレージ内または転送中のデータを保護し、より安全なインフラストラクチャを提供できます。また、プライバシ・データおよび個人データを保護するデータ暗号化はますます、企業のセキュリティ・ポリシーおよび政府規制(HIPAA、GLBA、SOX、PCI DSSなど)の必須要件となっています。

Oracle Linuxシステムには、データを保護するために次の戦略が用意されています。

  • システムおよびアプリケーション・ソフトウェアをインストールするときは、信頼できるソースによってデジタル署名されたRPMパッケージのみを受け入れます。

    ダウンロードしたソフトウェア・パッケージが署名済であることを確認するには、リポジトリ構成ファイルでgpgcheck=1を設定して、ソフトウェア・サプライヤから提供されたGPGキーをインポートします。Oracle Linuxイメージに対しては、通常は、/etc/dnf/dnf.confファイルでグローバル・デフォルトとしてこの設定が有効になっています。暗号化を使用して通信チャネルを保護するSecure Sockets Layer (SSL)プロトコルを使用して、RPMをインストールすることもできます。

    詳細は、Oracle Linux: Oracle Linuxでのソフトウェアの管理を参照してください。

  • 特にラップトップ、外部ハード・ドライブおよびUSBメモリー・スティックなどのリムーバブル・デバイスでデータ漏えいを防止するには、フルディスク暗号化の使用を検討します。Oracle Linuxは、dm-cryptカーネル・モジュールおよびLinux Unified Key Setup (LUKS)形式を使用したブロック・デバイス暗号化を提供しています。cryptsetup管理コマンドは、cryptsetupパッケージにあります。

    これらの技術では、システムがオフのときにデータにアクセスできないように、デバイス・パーティションを暗号化します。システムをブートして適切なパスフレーズを指定すると、デバイスは復号化され、データにアクセスできるようになります。ブロック・デバイスの暗号化の詳細は、『Oracle Linux 8 ストレージデバイスの管理』を参照してください。一般的な使用方法の手順については、cryptsetup(8)マニュアル・ページも参照してください。

  • Oracle Linuxは暗号化を使用して、仮想プライベート・ネットワーク(VPN)およびセキュア・シェル(SSH)をサポートします。これらのツールを使用して、エンド・ツー・エンドのネットワーク・トラフィックを暗号化できるため、転送中にデータが安全に保たれます。詳細は、Oracle Linux: OpenSSHを使用したリモート・システムへの接続、およびOracle Linux: 仮想プライベート・ネットワークの構成の「仮想プライベート・ネットワークの構成」を参照してください。

  • Oracle Linuxでは、暗号化を使用してシステム・パスワードを格納します。デフォルトでは、Oracle Linuxは強力なパスワード・ハッシュ・アルゴリズム(SHA-512)を使用し、ハッシュ・パスワードを/etc/shadowファイルに保存します。

  • Oracle Linuxは、Advanced Encryption Standard New Instructions (AES-NI)命令セットを使用するIntel CPUのハードウェア高速暗号化を利用して、x86_64アーキテクチャでのAESおよびRC4アルゴリズムの実行を高速化します。

パケット・フィルタリング・ファイアウォールについて

ファイアウォールは、パケットのヘッダー情報に基づいて、受信および送信ネットワーク・パケットをフィルタ処理します。パケットを受け入れるか拒否するかを決定するパケット・フィルタ・ルールを作成できます。たとえば、ポートをブロックするルールを作成した場合、そのポートに対するリクエストはすべてファイアウォールで自動的にブロックされ、リクエストは無視されます。ブロックされたポートで待機しているサービスは、そのポートから新しいパケットを受信しないため、ネットワーク・トラフィックを処理しなくなります。

ルールを使用してネットワーク・パッケージを受け入れるか、削除するか、転送するかを決定するパケットフィルタリング・ファイアウォールとして機能するように、Netfilter機能を構成できます。また、Netfilterでは、ルーティングされたパケットのIPヘッダー情報を変更するために、ネットワーク・アドレス変換(NAT)およびIPマスカレードが提供されます。ルールベースのパケット・ロギングを設定し、/etc/syslog.confを変更することで専用ログ・ファイルを定義することもできます。

nftablesフレームワークは、Oracle Linuxでのデフォルトのステートフルなネットワーク・パケット・フィルタリング・フレームワークであり、iptablesフレームワークと置き換えられています。nftablesフレームワークは、iptablesフレームワークよりもパフォーマンスが向上します。nftablesフレームワークは、ネットワーク・スタックへの既存のフック、接続トラッキング・システム、ユーザー領域キューイング・コンポーネントおよびロギング・サブシステムなど、Netfilterインフラストラクチャのコンポーネントを利用します。また、nftablesでは、パケットを分類することもできます。

詳細は、『Oracle Linux 8 ファイアウォールの構成』を参照してください。

SELinuxについて

デフォルトでは、SELinuxは、新しいOracle Linuxインストールで自動的に有効になります。

Linuxのセキュリティは以前、壊れたソフトウェアからの最小限の保護、または通常ユーザーあるいはrootとして実行されるマルウェアからの最小限の保護を提供する、任意アクセス制御(DAC)ポリシーに基づいていました。ファイルやデバイスへのアクセスは、ユーザーIDと所有権のみに基づいています。マルウェアや不正な構成のソフトウェアは、プロセスを起動したユーザーがファイルやリソースに対して実行できることはすべて実行できます。ユーザーがrootの場合、またはアプリケーションがrootsetuidまたはsetgidされている場合、プロセスはファイル・システム全体に対するrootアクセス制御を持つことができます。

国家安全保障局は、Linuxのファイル、プロセス、ユーザー、アプリケーションの詳細レベルでの制御を可能にするために、Security Enhanced Linux (SELinux)を策定しました。LinuxカーネルのSELinux拡張により、強制アクセス制御(MAC)ポリシーが実装され、すべてのユーザー、プログラム、プロセス、ファイル、デバイスに詳細な権限を提供するセキュリティ・ポリシーを定義できるようになりました。カーネルのアクセス制御の決定は、認証されたユーザーIDだけでなく、利用可能なすべてのセキュリティ関連情報に基づいて行われます。

プロセスがファイルを開こうとするなど、セキュリティ関連アクセスが発生すると、SELinuxはカーネル・レベルの操作をインターセプトします。この操作は、MACポリシー・ルールで許可されている場合にのみ続行されます。それ以外の場合、SELinuxは操作をブロックして、プロセスにエラーを返します。カーネルは、MACルールの前にDACポリシー・ルールを確認して実施するため、DACルールでリソースへのアクセスが拒否された場合、SELinuxポリシー・ルールは確認されません。

タスク関連情報などのSELinuxの詳細は、『Oracle Linux SELinuxの管理』を参照してください。

SELinuxプロジェクトのWikiおよびselinux(8)マニュアル・ページも参照してください。