Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
セキュリティ強化ガイド
  1. 前書き
  2. 1 セキュリティと機密保持
  3. 2 コモンクライテリア (Common Criteria)
  4. I 認証
    1. 3 PAM を利用した認証
    2. 4 NIS の使用
    3. 5 YaST を利用した認証クライアントの設定
    4. 6 389 LDAP ディレクトリサービス
    5. 7 Kerberos を利用したネットワーク認証
    6. 8 Active Directory サポート
    7. 9 FreeRADIUS サーバの構築
  5. II ローカルセキュリティ
    1. 10 物理的なセキュリティ
    2. 11 seccheck を利用した自動的なセキュリティチェック
    3. 12 ソフトウエア管理
    4. 13 ファイルの管理
    5. 14 パーティションやファイルの暗号化
    6. 15 cryptctl を利用したアプリケーション向けのストレージ暗号化
    7. 16 ユーザ管理
    8. 17 Spectre/Meltdown チェッカー
    9. 18 YaST を利用したセキュリティの設定
    10. 19 PolKit による認可制御
    11. 20 Linux でのアクセス制御リスト
    12. 21 証明書ストア
    13. 22 AIDE を利用した侵入検知
  6. III ネットワークセキュリティ
    1. 23 X Window System と X 認証
    2. 24 SSH: 機密を保持するネットワーク操作
    3. 25 マスカレードとファイアウオール
    4. 26 VPN サーバの設定
    5. 27 X Window System で動作する PKI マネージャ XCA による管理
  7. IV AppArmor による権限の制限
    1. 28 AppArmor の紹介
    2. 29 入門
    3. 30 プログラムに対する予防接種
    4. 31 プロファイルのコンポーネントと文法
    5. 32 AppArmor のプロファイルリポジトリ
    6. 33 YaST を利用したプロファイルの構築と管理
    7. 34 コマンドラインからのプロファイル構築
    8. 35 チェンジハット機能による Web アプリケーションのプロファイル作成
    9. 36 pam_apparmor によるユーザの制限
    10. 37 プロファイルを作成したアプリケーションの管理
    11. 38 サポート
    12. 39 AppArmor 用語集
  8. V SELinux
    1. 40 SELinux の設定
  9. VI Linux 監査フレームワーク
    1. 41 Linux 監査システムの概要
    2. 42 Linux 監査フレームワークの設定
    3. 43 監査ルールセットの紹介
    4. 44 その他の情報源
  10. A GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.2

2 コモンクライテリア (Common Criteria)

コモンクライテリア (Common Criteria) とは IT 製品のセキュリティ評価を行うために幅広く使用され、最も認知されている基準です。この基準では、独立した評価機関が独自に評価を実施し、その評価結果を認証機関が後から認証する形式を取ります。セキュリティ機能要件 (Security Functional Requirements (SFR)) はプロテクションプロファイル (Protection Profiles (PP)) と呼ばれる形式でとりまとめられ、セキュリティターゲット (Security Target (ST)) と評価保証レベル (Evaluation Assurance Levels (EAL)) の定義が同等のものであれば、それによってさまざまな製品のセキュリティ機能を比較できる、と言った仕組みになっています (セキュリティターゲット (Security Target (ST)) の定義は一般に、製品の目的にあった PP を参照するようになっています) 。

2.1 概要

IT 製品におけるセキュリティの明確な定義は "挑戦し続けること" です。セキュリティは決して終わることのない作業を表わすものであり、合致するかどうかに関わらず常に変化し続けるものです。コモンクライテリア (EAL7 より下) では、過ちを犯しやすいシステムに関する明確な規定がありませんが、技術それ自身だけでは説明できない重要な価値を規定しています。誰かがこの手法を利用して、特定のシステムの設計を独立して評価することにより、製品に対して発生しうるクレームに対応し、製品の製造とメンテナンスに明確な注意が払われていることを確認することができます。

証明書には製品のセキュリティ機能のほか、製品を設計/構築し、その保守期間全体にわたって製品を保守する企業に対する成熟度が記載されます。このような仕組みのため、コモンクライテリアは IT 製品のセキュリティに関する全ての項目を考慮するアプローチであり、かなり全体論的な仕組みを目指すものであります。

2.2 評価保証レベル (Evaluation Assurance Level (EAL))

評価保証レベル (EAL) は信頼度を示す指標で、特定の製品が満たしているセキュリティレベルを表わしています。レベルは 1 から 7 で、それぞれ下記のような意味になっています:

  • EAL1: 機能テスト済み

  • EAL2: 構造化テスト済み

  • EAL3: 方式的テストおよびチェック済み

  • EAL4: 方式的設計/テスト/レビュー済み

  • EAL5: 準形式的設計/テスト済み

  • EAL6: 準形式的検証済み設計/テスト済み

  • EAL7: 形式的検証済み設計/テスト済み

EAL1 はセキュリティ要件に対して基本的な保証のみを提供するのに対して、 EAL2 から EAL4 までは中程度の保証レベルを、 EAL5 から EAL7 まではより高度な保証を提供します。 EAL4 は、より高い保証レベルを実現するよう当初から設計されている場合を除いて、製品として到達可能な最大のレベルとなります。

2.3 一般的な原則

このガイドにおける多くの推奨事項は、いずれもガイドラインをベースにしたものです。セキュリティプロセスを定義したりする場合や、ここでは明確に説明していない設定に関して、何らかの決定を行いたい場合に、これらを検討するとよいでしょう。

可能な限りのデータ暗号化の使用

暗号化に関する制限事項としては、下記のようなものがあります。

暗号化は確かに有用な仕組みではありますが、目的によっては不適切な場合があり得ることに注意してください。また、暗号化を施したからといって安全性が向上するとは限らないこともありますし、暗号化によってシステムにさらなるリスクをもたらしてしまうこともあります。暗号化を行うにあたっては十分な情報に基づいた決定を行うようにしてください。誤った安心感はむしろ有害となりうることもあります。

openSUSE Leap では下記のような暗号化機能を提供しています:

  • ネットワーク接続 (opensslstunnel などのコマンド), リモート接続 ( openssh (man ssh(1)) など)

  • ファイル ( gpg )

  • ブロックレイヤでのファイルシステム全体の暗号化 ( dm-crypt , cryptsetup )

  • VPN ( ipsec , openvpn )

最小限のパッケージインストール

お使いのシステムにインストールするパッケージを最小限に制限することが重要です。インストールされていないバイナリは実行される危険も無いためです。

システムをインストールするにあたっては、インストールされるパッケージを制限することができます。たとえばいったん全てのパッケージの選択を外して、必要なパッケージのみをインストールするような方法もあります。たとえば YaST 内で apache2-mod_perl パッケージをインストールすれば、 Apache で動作させるために必要なパッケージも自動的に選択されインストールされます。なお、システムの依存関係をより柔軟に処理できるよう、人為的に削減されることもあります。いずれにしても、必要なパッケージのみを選択するよう心がけてください。

サービスの分離 (別々のシステムでのサービス稼働)

可能な限り、 1 つのサーバには 1 つの機能のみを動作させることをお勧めします。複数のサービスを同時に動作させてしまうと、いずれか 1 つのサービスのソフトウエアに脆弱性が存在するだけで、攻撃者は容易に権限を奪取できてしまうためです (もちろん権限を奪取できる脆弱性が存在していれば、の話ですが) 。

サービスに対して AppArmor を使用すると、サービスから不正なアクセスを行われてしまうことを防げます。詳しくは パートIV「AppArmor による権限の制限」 および apparmor のマニュアルページをお読みください。

openSUSE Leap では仮想化技術にも対応しています。仮想化は一般にサーバ統合の目的で使用されますが、サービスを分離する目的でも有用です。しかしながら、仮想化技術は個別の物理マシンでサービスを動作させるのに比べると、分離強度が弱いことに注意する必要があります。また、仮想マシンを分離するハイパーバイザの機能は、 Linux カーネルが提供するプロセス間の分離やアドレス空間の分離と同等か、それ未満の安全性しか提供しないことにも注意してください。

システムの安全性確認とバックアップ

システムに対する定期的なバックアップ採取と安全性確認は、システムに対する攻撃が成功してしまったような場合に特に有用なものとなります。また、バックアップが正しく行われているかどうかの確認も、セキュリティルーチンの一部にしておくとよいでしょう。

高速に、かつ直接アクセスできるバックアップが存在することで、お使いのシステムに対する信頼性確認を行うことができるようになります。ただし、システムの変更内容を追跡できるよう、バックアップの仕組みやソリューションには適切なバージョン管理の仕組みが存在している必要があります。たとえば各パッケージのインストール日時 ( rpm -q --queryformat='%{INSTALLTIME} %{NAME}\n' パッケージ名 ) と変更されたファイルの対応付けを、バックアップのログファイル内に記録しておくなどの方法があります。

openSUSE Leap 15.2 には未知の (成功した) 攻撃を検出するための仕組みが用意されています。もちろん設定にあたって大きな手間がかかることもありません。

特に AIDE (Advanced Intrusion Detection Environment) と呼ばれるファイルやディレクトリの正常性確認ツールの使用をお勧めしています。初回の起動時には、設定ファイルとして指定されているシステム内のファイルを読み込んでハッシュデータベースを作成し、後から設定ファイルが変更されていないかどうかを確認できるものです。

警告
警告: バックドア

AIDE を使用する場合は、ハッシュデータベースを攻撃者から決してアクセスできない場所にコピーしておく必要があります。そうでないと、攻撃者はハッシュデータベースそのものを改ざんしてしまい、バックドアを設置したりしても検出できなくなってしまう危険性があるためです。

また、カーネル内にバックドアを設置する可能性があることにも注意する必要があります。カーネル内のバックドアは非常に検出が難しいばかりか、効率的に監査をかいくぐることができますし、システムを改ざんしてもほぼ何も検出できなくなってしまいます。そのようなことから、システムの一貫性チェックはレスキューシステム (もしくは通常動作させているものとは別の独立したシステム) で動作させる必要があります。

なお、セキュリティ更新の適用によって、ハッシュデータベースを更新する必要が生じることにも注意してください。 rpm -qlv パッケージ名 のように実行すると、パッケージ内に含まれているファイルを一覧表示することができます。 RPM サブシステムは非常にパワフルなツールであり、さまざまなデータを管理することができます。特に --queryformat オプションを使用すると、さまざまな情報を抽出することができます。ハッシュデータベースを適宜更新していくことで、さらに RPM を便利に利用できるようになります。

2.4 さらなる情報

コモンクライテリアの評価では、検証環境下における製品の固有設定を調査します。検証環境のインストールや設定については、コモンクライテリアの評価ドキュメンテーション内にある 管理者ガイド をお読みのうえ、これをベースラインとして設定を行ってください。

しかしながら、検証環境での設定が必ずしも 強固な ものとは限らないことにも注意してください。 setuid ビットの削除をはじめとしたインストール後の管理手順の説明をお読みのうえ、安全なシステムを構築してください。もちろんこれだけでは不十分です。

  • openSUSE Leap におけるセキュリティ認証と機能について、詳しくは https://www.suse.com/support/security/certifications/ をお読みください。

  • SUSE のセキュリティリソースの一覧については、 https://www.suse.com/support/security/ をお読みください。

  • コモンクライテリアの取り組みで作成された文書とは別に、下記のようなマニュアルページを参照してもかまいません:

    pam(8), pam(5)
    apparmor(7) および参照先マニュアルページ
    rsyslogd(8), syslog(8), syslogd(8)
    fstab(5), mount(8), losetup(8), cryptsetup(8)
    haveged(8), random(4)
    ssh(1), sshd(8), ssh_config(5), sshd_config(5), ssh-agent(1), ssh-add(1), ssh-keygen(1)
    cron(1), crontab(5), at(1), atd(8)
    systemctl(1), daemon(7), systemd.unit(5), systemd.special(5), kernel-command-line(7), bootup(7), systemd.directives
このページを印刷