Red Hat Enterprise Linux 7 Security Guide Ja JP
Red Hat Enterprise Linux 7 Security Guide Ja JP
Red Hat Enterprise Linux 7 Security Guide Ja JP
セキュリティガイド
Martin Prpič
Red Hat Customer Content Services
mprpic@redhat.com
Tomáš Čapek
Red Hat Customer Content Services
tcapek@redhat.com
Stephen Wadeley
Red Hat Customer Content Services
swadeley@redhat.com
Yoana Ruseva
Red Hat Customer Content Services
yruseva@redhat.com
Miroslav Svoboda
Red Hat Customer Content Services
msvoboda@redhat.com
Robert Krátký
Red Hat Customer Content Services
rkratky@redhat.com
法律上の通知
This document is licensed by Red Hat under the Creative Commons Attribution-
ShareAlike 3.0 Unported License. If you distribute this document, or a modified version
of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If
the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees
not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable
law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora,
the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United
States and other countries.
Linux ® is the registered trademark of Linus Torvalds in the United States and other
countries.
The OpenStack ® Word Mark and OpenStack Logo are either registered
trademarks/service marks or trademarks/service marks of the OpenStack
Foundation, in the United States and other countries and are used with the
OpenStack Foundation's permission. We are not affiliated with, endorsed or
sponsored by the OpenStack Foundation, or the OpenStack community.
概要
本書は、ユーザーおよび管理者が、ローカルまたはリモートからの侵入、悪用および悪意のある行
為に対してワークステーションとサーバーを保護するプロセスと方法を習得する際の手助けとなり
ます。 本ガイドは Red Hat Enterprise Linux にフォーカスしたものですが、概念と手法はすべ
ての Linux システムに適用できるものです。データセンター、勤務先および個人宅での安全なコン
ピューター環境の構築に必要となるプランニングとツールについて詳細に説明しています。 管理
上の適切な知識と警戒体制およびツールを備えることで、Linux を実行しているシステムの機能を
フルに活用し、かつこれらのシステムをほとんどの一般的な侵入や悪用の手法から保護することが
できます。
1
セキュリティガイド
第1章 セキュリティの概要
ビジネスの運営や個人情報の記録ではネットワーク化された強力なコンピューターへの依存度が高まってい
ることから、各種業界ではネットワークとコンピューターのセキュリティの実践に関心が向けられていま
す。企業は、システム監査の適正な実施やソリューションが組織の運営要件を満たすようにするために、セ
キュリティ専門家の知識と技能を求めてきました。ほとんどの組織はますます動的になってきていることか
ら、従業員は会社の重要な IT リソースにローカルまたはリモートでアクセスするようになっています。こ
のため、セキュアなコンピューティング環境に対するニーズはより顕著になっています。
注記
1.1. コンピューターセキュリティとは
コンピューターセキュリティは、コンピューティングと情報処理の幅広い領域で使用される一般的な用語
です。日常業務や重要な情報へのアクセスにおいてコンピューターシステムとネットワークに依存する業界
は、企業データを総体的資産の重要な部分であると見なしています。総保有コスト (Total Cos t of
Owne rs hip: TCO) や サービスの品質 (Quality of Se rvice : QoS) などのいくつかの用語および評価指標
は日常的なビジネス用語として用いられるようになっていますが、これらの評価指標を用いて、各種の業界
はプランニングおよびプロセス管理コストの一環としてデータ保全性や可用性などを算出しています。電子
商取引などを行う業界では、データの可用性と信頼性がビジネスの成否を決める可能性があります。
1.1.1. セキュリティの標準化
機密性 — 機密情報は、事前に定義された個人に対してのみ利用可能とする必要があります。情報の許可
されていない送信や使用は、制限する必要があります。例えば、情報に機密性があれば、権限のない個
人が ID 盗難やクレジット詐欺などの悪意のある目的で顧客情報や財務情報を入手できません。
保全性 — 情報は、不完全または不正確になるように改ざんすべきではありません。承認されていない
ユーザーは、機密情報を変更したり破壊する機能を使用できないように制限される必要があります。
可用性 — 情報は、認証されたユーザーが必要な時にいつでもアクセスできる必要があります。可用性
は、情報が合意された頻度とタイミングで入手できることを保証します。これは、パーセンテージで測
定されることが多く、ネットワークサービスプロバイダーやその企業顧客が使用するサービスレベルア
グリーメント (SLA) で正式に合意されます。
1.2. セキュリティコントロール
2
第1章 セキュリティの概要
1.2. セキュリティコントロール
コンピューターセキュリティは多くの場合、以下の 3 つの異なるマスターカテゴリーに分類され、一般に
はコントロールと呼ばれています。
物理的
技術的
管理的
これら 3 つの大まかなカテゴリーは、セキュリティの適切な実施における主な目的を定義するものです。
これらのコントロールには、コントロールおよびそれらの実装方法を詳細化するサブカテゴリーがありま
す。
1.2.1. 物理的コントロール
物理的コントロールは、機密資料への認証されていないアクセスの抑止または防止のために、明確な構造で
セキュリティ対策を実施することです。物理的コントロールの例は以下の通りです。
有線監視カメラ
動作/温度感知アラームシステム
警備員
写真付き身分証明書
施錠された、デッドボルト付きのスチールドア
バイオメトリクス (指紋、声、顔、虹彩、筆跡、および本人確認を行うためのその他の自動認識方法が含
まれます)
1.2.2. 技術的コントロール
技術的コントロールでは、物理的な構造物やネットワークにおける機密データのアクセスや使用を制御する
ための基盤となる技術を使用します。技術的コントロールは広い範囲に及び、以下のような技術も含まれま
す。
暗号化
スマートカード
ネットワーク認証
ファイル完全性監査ソフトウェア
1.2.3. 管理者コントロール
管理的コントロールは、セキュリティの人的要素を定義します。これらは組織内のあらゆるレベルの人員に
関連するもので、次のような手段によって、誰がどのリソースや情報にアクセスするかを決定します。
トレーニングおよび認識の向上
災害準備および復旧計画
人員採用と分離の戦略
3
セキュリティガイド
人員登録とアカウンティング
1.3. 脆弱性のアセスメント
時間、リソースおよびやる気のある攻撃者は、ほとんどすべてのシステムに侵入することができます。現在
利用できるすべてのセキュリティ手順と技術を駆使しても、すべてのシステムを侵入から完全に保護できる
訳ではありません。ルーターはインターネットへのセキュアなゲートウェイの提供に役立ちます。ファイ
アウォールはネットワークの境界を保護します。仮想プライベートネットワーク (VPN) は、暗号化された
ストリームにおいてデータを安全に通過させます。侵入検知システムは悪意のある活動について警告しま
す。しかし、これらの技術が成功するかどうかは、以下を含む数多くの要因によって決まります。
技術の設定、監視および保守を行うスタッフの専門知識
サービスとカーネルのパッチおよび更新を迅速かつ効率的に行う能力
ネットワーク上での警戒を常に怠らない担当者の能力
データシステムと各種技術が動的であることを考えると、企業リソースのセキュア化は極めて複雑なタスク
になり得ます。この複雑さゆえに、使用するすべてのシステムについての専門家リソースを見つけることは
多くの場合、困難になります。高レベルの情報セキュリティの多くの分野に精通している人材を確保するこ
とはできても、複数分野における専門家スタッフを保持することは容易ではありません。これは主に、情報
セキュリティの各専門分野では継続的な注意とフォーカスが必要とされるためです。情報セキュリティは
常に変化しています。
脆弱性アセスメントは、お使いのネットワークとシステムのセキュリティについての内部監査です。このア
セスメントの結果として、ネットワークの機密性、完全性および可用性の状態が明らかになります (「セ
キュリティの標準化」に詳述)。通常、脆弱性アセスメントは、対象システムとリソースに関する重要な
データを収集する調査フェーズから開始されます。この後にはシステム準備フェーズが続きます。基本的に
このフェーズでは、対象を絞り、それが持つすべての既知の脆弱性を検査します。準備フェーズの後には報
告フェーズが続きます。ここでは、調査結果が高中低のカテゴリに分類され、対象のセキュリティを向上さ
せる (または脆弱性のリスクを軽減する) 方法が話し合われます。
自宅の脆弱性アセスメントを実施することを想定してみましょう。まずは自宅のドアが閉じられており、か
つ施錠されていることを確認するために各ドアの点検を行うことでしょう。また、すべての窓が完全に閉じ
られていて掛け金が締められていることもチェックするでしょう。これと同じ概念がシステムやネットワー
ク、および電子データにも適用されます。悪意のあるユーザーはデータを盗み、これを破壊します。悪意の
あるユーザーが使用するツールや考え方および動機に注目すると、彼らの行動にすばやく反応することが可
能になります。
1.3.1. アセスメントとテストの定義
外部からの視点で脆弱性アセスメントを実施する場合、システムに外部から攻撃を試みます。会社の外部に
立つことで、クラッカーの視点を得ることができます。一般にルーティング可能な IP アドレスや DMZ に
あるシステムやファイアウォールの外部インターフェースなど、クラッカーが目を付けるものに着目しま
す。DMZ は「非武装地帯 (de militariz e d z one )」を表し、企業のプライベート LAN などの信頼できる
内部ネットワークと公的なインターネットなどの信頼できない外部ネットワークの間にあるコンピュー
ターまたは小さなサブネットワークに相当します。通常、DMZ には We b (HTTP) サーバー、FTP サー
バー、SMTP (e -mail) サーバーおよび DNS サーバーなど、インターネットのトラフィックにアクセスで
きるデバイスが含まれます。
内部からの視点で脆弱性アセスメントを実施する場合、実行者は内部関係者であり、信頼されるステータス
にあることから、有利な位置に立ちます。内部からの視点は、実行者やその同僚がシステムにログオンした
時点で得られるものです。プリントサーバーやファイルサーバー、データベースおよびその他のリソースを
見ることができます。
4
第1章 セキュリティの概要
これら 2 種類の脆弱性アセスメントには大きな違いがあります。会社の内部にいる場合は、部外者にはな
い多くの特権が与えられます。多くの組織では、侵入者を締め出すようにセキュリティが構成されていま
す。しかし、組織内の各分野に対しては、ほとんどセキュリティ対策が取られていません (部門内ファイア
ウォール、ユーザーレベルのアクセス制御および内部リソースに対する認証手順など)。また、一般的にほ
とんどのシステムは社内にあるので、内部からの方がより多くのリソースを確認できます。いったん社外に
移動すると、ステータスは信頼されない状態になります。外部から利用できるシステムやリソースは、通常
は非常に限られたものになります。
脆弱性アセスメントと 侵入テストの違いを考えてみましょう。脆弱性テストを侵入テストの第一歩と捉えて
ください。アセスメントで得られる情報は、その後のテストで使用されます。アセスメントは抜け穴や潜在
的な脆弱性を検査する目的で行われるのに対し、侵入テストでは調査結果を実際に使用する試みがなされま
す。
ネットワークインフラストラクチャーのアセスメントは動的なプロセスです。セキュリティ (情報セキュリ
ティと物理的なセキュリティ) は動的なものです。アセスメントを実施することで概要が明らかになり、誤
検出 (Fals e pos itive s ) と検出漏れ (Fals e ne gative s ) が示される場合があります。誤検出では、実際
には存在しない脆弱性をツールが検出します。検出漏れでは、実際の脆弱性が除外されてしまいます。
セキュリティ管理者の力量は、使用するツールとその管理者が有する知識で決まります。現在使用できるア
セスメントツールのいずれかを選び、それらをシステムに対して実行すると、ほぼ間違いなくいくつかの誤
検出が見つかります。プログラム障害かユーザーエラーかに関わらず、結果は同じです。ツールは誤検出す
ることもあれば、さらに悪い場合は、検出漏れをすることもあります。
脆弱性アセスメントと侵入テストの違いが定義されたところで、新たなベストプラクティスの一環として侵
入テストを実施する前に、アセスメントの結果を注意深く確認、検討してみましょう。
警告
実稼働システム上で脆弱性を悪用する試みを行わないでください。システムとネットワークの生産性
と効率に悪影響を与える可能性があります。
脆弱性アセスメントの実施には、以下のような利点があります。
情報セキュリティに事前にフォーカスできる
クラッカーが発見する前に潜在的な不正使用を発見できる
システムを最新の状態に維持し、パッチを適用できる
スタッフの成長と専門知識の開発を促す
経済的な損失とマイナスの評判を緩和する
1.3.2. 方法論の確立
脆弱性アセスメントの方法論を確立すると、脆弱性アセスメント用のツール選択に役立ちます。残念なが
ら、現時点では事前定義の方法論や業界で承認された方法論はありませんが、一般常識やベストプラクティ
スを適切なガイドとして活用することができます。
ターゲットは何か? 1 つのサーバーまたはネットワーク全体、およびネットワーク内のすべてが含まれる
のか? 会社の外部にいるのか、それとも内部にいるのか? これらの質問に対する答えは、ツールの選択のみ
ならず、ツールの使用方法を決定する際にも役立ちます。
方法論の確立についての詳細は、以下の We b サイトを参照してください。
5
セキュリティガイド
1.3.3. 脆弱性アセスメントのツール
アセスメントは、情報収集ツールを使用することから始まります。ネットワーク全体を評価する際は、最初
にレイアウトを描いて実行されているホストを把握します。ホストの場所を確認したら、それぞれのホスト
を個別に検査します。これらのホストにフォーカスするには別のツールセットが必要になります。どのツー
ルを使用すべきかを知っておくことは、脆弱性の発見において最も重要なステップである可能性がありま
す。
日常生活のあらゆる状況と同様に、同じジョブを実行できる異なるツールは数多くあります。この概念は脆
弱性アセスメントの実施にも当てはまります。ツールには、オペレーティングシステムやアプリケーション
に固有ものや、(使用されるプロトコルに基づいて) ネットワークに固有のツールもあります。ツールには無
料のものもあれば、そうでないものもあり、直感的で使いやすいツールもあれば、難解で適切に文書化され
てはいないものの、他のツールにはない機能を持つツールもあります。
適切なツールを見つけることは困難なタスクとなる場合もあり、最終的には経験が重要になります。可能で
あれば、実験ラボをセットアップし、各ツールの長所と短所を発見できるようできる限り多くのツールをテ
ストするようにします。ツールの README ファイルや man ページも確認してください。さらに、イン
ターネットからツールについての記事やステップバイステップのガイドまたはツール固有のメーリングリス
トなどの詳細情報を入手してください。
以下で説明するツールは、利用可能なツールのごくわずかなサンプルです。
Nmap はネットワークのレイアウトを決定するためによく使用されるツールです。
Nmap は長年にわ
たって利用されており、情報収集を行う際におそらく最もよく使われるツールです。各種のオプションと使
用法を詳述した優れたマニュアルページが含まれています。管理者は、ネットワーク上で Nmap を使用
し、ホストシステムやそれらのシステム上で開かれているポートを見つけることができます。
Nmap は、脆弱性アセスメントにおける最初の有効なステップです。ネットワーク内にあるすべてのホス
トのマッピングができるほか、Nmap が特定ホスト上で実行中のオペレーティングシステムを特定できる
ようにするオプションを渡すこともできます。Nmap はセキュアなサービスの使用と不必要なサービスの
停止についての方針を定める際の優れた土台を提供します。
nmap <hostname>
基本的なスキャン (ホストの位置や他のネットワーク条件によって数分の時間がかかる場合があります) の
結果は以下のようになります。
6
第1章 セキュリティの概要
Nmap はリッスンしているまたはサービスを待機している最も一般的なネットワーク通信ポートをテスト
します。テストから得られる情報は、不必要または未使用のサービスの終了を希望している管理者にとって
役に立つものです。
1.3.3.2. Nessus
注記
Nessus クライアントおよびサーバーソフトウェアを使用するには、サブスクリプションが必要で
す。本ガイドでは、このアプリケーションに関心のあるユーザー向けに参考情報として説明していま
す。
http://www.ne s s us .org/
1.3.3.3. OpenVAS
1.3.3.4. Nikt o
http://cirt.ne t/nikto2
7
セキュリティガイド
1.4. セキュリティへの脅威
1.4.1. ネットワークセキュリティへの脅威
ネットワークの以下の要素を設定する際に不適当なプラクティスが行われると、攻撃のリスクが増大しま
す。
セキュリティが十分ではないアーキテクチャー
間違った構成のネットワークは、未承認ユーザーの主要のエントリーポイントになります。信頼ベースの
オープンなローカルネットワークを安全性の非常に低いインターネットに対して無防備な状態にしておくこ
とは、犯罪の多発地区でドアを半開きにしておくようなものです。すぐに何かが起きることはないかもしれ
ませんが、いずれ誰かがこの機会を悪用するでしょう。
ブロードキャストネットワーク
システム管理者は、セキュリティ計画においてネットワーキングハードウェアの重要性を見落としがちで
す。ハブやルーターなどの単純なハードウェアは、ブロードキャストやノンスイッチの仕組みに基づいてい
ます。つまり、あるノードがネットワークを介して受信ノードにデータを送信するときは常に、受信ノード
が受信してデータを処理するまで、ハブやルーターはデータパケットのブロードキャストを送信します。こ
の方式は、外部侵入者やローカルホスト上の認証されていないユーザーが仕掛けるアドレス解決プロトコル
(ARP) およびメディアアクセスコントロール (MAC) アドレスの偽装に対して最も脆弱です。
集中化サーバー
ネットワーキングのもうひとつの落とし穴は、集中化されたコンピューティングの使用にあります。多くの
企業では、一般的なコスト削減手段として、すべてのサービスを 1 台の強力なマシンに統合しています。
集中化は、複数サーバーの設定よりも管理がより簡単な上、コストを大幅に削減できるので便利な手段と言
えます。しかし、集中化されたサーバーはネットワークにおける単一障害点となるため、集中化サーバーが
攻撃されると、ネットワークは完全に使えなくなるか、またはデータの不正操作や盗難が起きやすくなる可
能性があります。こうした状況では、1 つの集中化サーバーが侵入口となり、ネットワーク全体へのアクセ
スを許してしまうことになります。
1.4.2. サーバーセキュリティへの脅威
サーバーには組織の重要情報が数多く含まれることが多いため、サーバーのセキュリティはネットワークの
セキュリティと同様に重要です。サーバーが攻撃されると、クラッカーがすべてのコンテンツを意のままに
盗んだり、不正に操作したりできるようになることがあります。以下のセクションでは、主要な問題のいく
つかを詳述します。
未使用のサービスと開かれたポート
システム管理者は、どのアプリケーションがインストールに含まれるかを気にせずにオペレーティングシス
テムをインストールしてしまうことがよくあります。必要のないパッケージがインストールされ、デフォル
ト設定でオンにしてしまうと、これが問題になる場合があります。これにより、管理者の気付かないところ
で、Te lne t や DHCP、または DNS などの不要なサービスがサーバーやワークステーションで実行され、
8
第1章 セキュリティの概要
その結果、サーバーへの不要なトラフィックが発生したり、クラッカーにシステムへのパスが提供される可
能性があります。ポートを閉じる方法や未使用のサービスを無効にする方法についての詳細は、「サービス
のセキュア化」を参照してください。
パッチが適用されないサービス
デフォルトのインストールに含まれるほとんどのサーバーアプリケーションは、ソフトウェアの細部まで徹
底的にテストされており、堅牢な作りになっています。何年も実稼働環境で使用される中で、それらのコー
ドは入念に改良され、数多くのバグの発見や修正が行われるものです。
しかし、完璧なソフトウェアというものはなく、常に改良の余地があるものです。さらに、比較的に新しい
ソフトウェアは実稼働環境に最近導入されたか、または他のサーバーソフトウェアほど普及していない場合
が多くあり、厳密なテストが期待通りに行われていない状況も多く見受けられます。
開発者やシステム管理者は、サーバーアプリケーションで悪用される可能性のあるバグを発見することが多
くあり、関連する情報を Bugtraq メーリングリスト (http://www.s e curityfocus .com) や Compute r
Eme rge ncy Re s pons e Te am (CERT) We b サイト (http://www.ce rt.org) などの、バグ追跡やセキュ
リティ関連の We b サイトに公開します。これらはセキュリティの脆弱性についてコミュニティに警告す
る効果的な方法ではありますが、システムに速やかにパッチを当てるかどうかは個々のシステム管理者次第
となります。クラッカーも同じ脆弱性トラッキングサービスにアクセスし、可能な場合にはいつでもパッチ
が適用されていないシステムをクラッキングするために関連情報を利用できることを考慮すると、速やかな
対応がとりわけ重要になります。優れたシステム管理には、よりセキュアなコンピューティング環境を確保
するために、警戒を怠らず、バグ追跡を絶えず行い、適切なシステム保守を実行することが求められます。
システムを最新状態に維持する方法についての詳細は、3章システムを最新の状態に保つ を参照してくださ
い。
管理における不注意
システムにパッチを当てようとしない管理者は、サーバーセキュリティへの最大の脅威の 1 つとなりま
す。SysAdmin, Audit, Network, Security Institute (SANS) によると、コンピューターのセキュリティ
脆弱性の主な原因は、「訓練を受けていない人にセキュリティの保守を任せ、保守を行うために必要な訓練
や時間を与えないこと」にあります。これは、自信過剰な管理者やモチベーションの高い管理者だけではな
く、経験の少ない管理者にも起こり得ます。
サーバーやワークステーションにパッチを当てない管理者のほかに、システムのカーネルやネットワーク通
信からのログメッセージを見落とす管理者もいます。またよく起こるエラーとして、サービスのデフォルト
パスワードやキーを変更しないまま放置しておくことがあります。例えば、データベースにはデフォルトの
管理パスワードが設定されているものがありますが、この設定では、システム管理者がインストール後すぐ
にデフォルトパスワードを変更することをデータベース開発者が想定しています。しかし、データベース管
理者がこのパスワードの変更を忘れると、経験の浅いクラッカーでさえ、周知のデフォルトパスワードを
使ってデータベースの管理者権限を得ることができます。これらは、管理者の不注意がサーバーを危険にさ
らすことになる数例に過ぎません。
本質的に安全ではないサービス
どんなに注意深い組織であっても、選択するネットワークサービスが本質的に安全でない限り、攻撃を受け
やすくなります。例えば、多くのサービスは、信頼できるネットワークで使用されるとの仮定に基づいて開
発されますが、これらのサービスが (本質的に信頼できない) インターネット上で利用可能になる時点で、
この仮定は成立しなくなります。
安全ではないネットワークサービスのカテゴリの 1 つに、暗号化されていないユーザー名とパスワードを
認証時に要求するサービスがあります。Te lne t や FTP がこの種のサービスです。パケット盗聴ソフト
ウェアがリモートユーザーとこのようなサービス間のトラフィックをモニタリングしていれば、ユーザー名
とパスワードは簡単に傍受される可能性があります。
また、基本的にこのようなサービスはセキュリティ業界で 中間者攻撃と呼ばれる攻撃の餌食になりやすくな
9
セキュリティガイド
ります。この種の攻撃では、クラッカーは、ネットワーク上のクラッキングされたネームサーバーをだま
し、目標のサービスではなくクラッカーのマシンにポイントすることで、ネットワークトラフィックをリダ
イレクトします。誰かがサーバーへリモートセッションを開くと、攻撃者のマシンがリモートサービスと無
防備なユーザー間に静かに存在する目に見えないパイプとして機能し、この間を流れる情報を取り込みま
す。このようにして、クラッカーはサーバーやユーザーに気付かれることなく、管理パスワードや生データ
を収集できるようになってしまいます。
ワークステーションや家庭用 PC はネットワークやサーバーほど攻撃にさらされることはないかもしれませ
んが、クレジットカード情報のような機密データが含まれるのでシステムクラッカーの標的になります。
ワークステーションは知らぬ間に攻撃者によって「スレーブ」マシンとして引き入れられ、一連の攻撃で攻
撃者に使用される可能性もあります。このため、ユーザーはワークステーションの脆弱性を理解しておく
と、オペレーティングシステムの再インストールや、深刻な場合はデータ盗難からの回復といった問題から
免れることができます。
不適切なパスワード
不適切なパスワードを設定すると、システムにアクセスする最も簡単な方法を攻撃者に提供してしまいま
す。パスワードを作成する際のよくある落とし穴を避ける方法については、「パスワードのセキュリ
ティ」を参照してください。
脆弱なクライアントアプリケーション
管理者がサーバーに十分な安全対策を施し、パッチを当てている場合でも、リモートユーザーによるアクセ
スが安全であるわけではありません。例えば、サーバーが公開ネットワーク上で Te lne t や FTP サービス
を提供している場合、攻撃者はネットワークを通過するプレーンテキストのユーザー名とパスワードを取り
込み、アカウント情報を使用してリモートユーザーのワークステーションにアクセスすることが可能です。
SSH などのセキュアなプロトコルを使用している場合であっても、クライアントアプリケーションを定期
的に更新していないと、リモートユーザーは特定の攻撃を受けやすくなる可能性があります。例えば、v.1
SSH クライアントは、悪意のある SSH サーバーからの X 転送攻撃に対して脆弱です。クライアントが
サーバーに接続すると、攻撃者はネットワーク上でクライアントによるキー入力やマウス操作をひそかに収
集できます。この問題は v.2 SSH プロトコルで修正されましたが、ユーザーはどのアプリケーションにこ
のような脆弱性があるかを追跡し、必要に応じてアプリケーションを更新する必要があります。
「デスクトップのセキュリティ」では、管理者とホームユーザーがコンピューターのワークステーション
の脆弱性を限定するために取るべき手順をより詳細に説明しています。
1.5. 一般的な不正使用と攻撃
10
第1章 セキュリティの概要
表1.1「一般的な不正使用」では、侵入者が組織のネットワークリソースにアクセスするために使用する最
も一般的な不正使用とエントリーポイントのいくつかについて詳しく説明しています。これらの一般的な不
正使用については、それらがどのように実行され、管理者がそれらの攻撃からネットワークをどのように適
切に保護できるかを理解していることが重要になります。
表1.1 一般的な不正使用
不正使用 説明 注意事項
空またはデフォル 管理パスワードを空白のままにしたり、 ルーター、ファイアウォール、VPN お
トのパスワード 製品ベンダーが設定したデフォルトパス よび Ne twork Attache d Storage
ワードをそのまま使用します。ルーター (NAS) アプライアンスなどのネットワー
やファイアウォールなどのハードウェア クハードウェアに一般的に関連するもの
で最もよく見られますが、Linux で実行 です。
するサービスにはデフォルトの管理者パ
スワードが入っているものがあります 数多くのレガシーオペレーティングシス
(ただし Re d Hat テム、特にサービスをバンドルしたオペ
Ente rpris e Linux 7 はパスワードなし レーティングシステム (UNIX や
で出荷されます)。 Windows など) によくあります。
管理者が急いで特権ユーザーアカウント
を作成したためにパスワードが空白のま
まになっていることがありますが、これ
は、このアカウントを発見した悪意のあ
るユーザーにとっては、絶好のエント
リーポイントとなります。
標的となるシステムで実行される、 ソー
スベース認証技術を使用するサービス
(rsh、 telnet、FTP その他) によっ
て異なりますが、このようなサービス
は、ssh または SSL/TLS で使用される
PKI やその他の形式の暗証化認証と比較
すると推奨できるものではありません。
11
セキュリティガイド
不正使用 説明 注意事項
盗聴 2 つのノード間の接続を盗聴することに この種類の攻撃には大抵、Te lne t、
より、ネットワーク上のアクティブな FTP、および HTTP 転送などのプレーン
ノード間を行き交うデータを収集しま テキストの転送プロトコルが使われま
す。 す。
このような攻撃を仕掛けるには、リモー
トの攻撃者は LAN 上で攻撃するシステ
ムへのアクセス権を持っていなければな
りません。通常、クラッカーは LAN 上
にあるシステムを危険にさらすために活
発な攻撃(IP スプーフィングや中間者攻
撃など) を仕掛けます。
パスワードのなりすましを防ぐ予防策と
しては、暗号化鍵交換、ワンタイムパス
ワードまたは暗号化された認証による
サービス使用が挙げられます。通信中は
強力な暗号化を実施することをお勧めし
ます。
開発時およびテスト時には気付かない脆
弱性がサービスに含まれることがありま
す。このような脆弱性 (攻撃者が任意の
値を使用してアプリケーションのメモ
リーバッファー領域をあふれさせ、攻撃
者が任意のコマンドを実行できるような
インタラクティブなコマンドプロンプト
を与えて、サービスをクラッシュさせ
るバッファーオーバーフローなど)は完
全な管理コントロールを攻撃者に与える
ものとなる可能性があります。
12
第1章 セキュリティの概要
不正使用 説明 注意事項
アプリケーション 攻撃者はデスクトップやワークステー ワークステーションとデスクトップは、
の脆弱性 ションのアプリケーション(電子メール ユーザーが侵害を防いだり検知するため
クライアントなど)に欠陥を見つけ出 の専門知識や経験を持たないため、不正
し、任意のコードを実行したり、将来の 使用の対象になりやすくなります。認証
システム侵害のためにトロイの木馬を移 されていないソフトウェアをインストー
植したり、システムを破壊したりしま ルしたり、要求していないメールの添付
す。攻撃を受けたワークステーションが ファイルを開く際には、それに伴うリス
ネットワークの残りの部分に対して管理 クについて個々に通知することが必須で
特権を持っている場合は、さらなる不正 す。
使用が起こる可能性があります。
電子メールクライアントソフトウェアが
添付ファイルを自動的に開いたり、実行
したりしないようにするといった、予防
手段を取ることが可能です。さらに、
Re d Hat Ne twork や他のシステム管理
サービスなどからワークステーションの
ソフトウェアを自動更新することによ
り、マルチシートのセキュリティデプロ
イメントの負担を軽減することができま
す。
通常ソースパケットは、攻撃の本当のも
とを調査するのが難しくなるよう、偽装
(または再ブロードキャスト)されてい
ます。
iptables を使用したイングレスフィ
ルタリング (IETF rfc2267) や snort
などのネットワーク侵入検知システムに
おける進歩は、管理者が分散型サービス
拒否攻撃を追跡し、これを防止するのに
役立っています。
13
セキュリティガイド
第2章 インストール時におけるセキュリティのヒント
セキュリティは、Re d Hat Ente rpris e Linux 7 をインストールするために CD や DVD をディスクドラ
イブに入れた時から始まります。最初からシステムを安全に設定することで、追加のセキュリティ設定を後
で実装することがより簡単になります。
例えば、マシンが見本市で使われていて機密情報を含んでいない場合、このような攻撃を防ぐことは重要で
はないかもしれません。しかし、同じ見本市で企業ネットワーク用のプライベートの暗号化されていない
SSH 鍵のあるノートパソコンが誰の監視下にもなく置かれていた場合、重大なセキュリティ侵害につなが
り、その影響は企業全体に及ぶ可能性があります。
ただし、ワークステーションが権限のあるユーザーもしくは信頼できるユーザーのみがアクセスできる場所
に置かれてるのであれば、BIOS もしくはブートローダーの安全確保は必要ない可能性もあります。
BIOS パスワードの設定方法はコンピューターメーカーで異なるため、具体的な方法についてはコンピュー
ターのマニュアルを参照してください。
BIOS と同様のプログラムをパスワード保護する方法については、メーカーの指示を参照してください。
2.2. ディスクのパーティション設定
14
第2章 インストール時におけるセキュリティのヒント
/boot
このパーティションは、ブート時にシステムが最初に読み込むパーティションです。システムを
Re d Hat Ente rpris e Linux 7 にブートするために使われるブートローダーとカーネルイメージ
はこのパーティションに保存されます。このパーティションは暗号化すべきではありません。こ
のパーティションが / に含まれていて、そのパーティションが暗号化されているかまたは他の理
由で利用できなくなると、システムをブートすることができなくなります。
/home
注記
インストールのプロセス中には、パーティションを暗号化するオプションがユーザーに示されま
す。ユーザーは、パスフレーズを提供する必要があります。これは、パーティションのデータを保
護するために使われるバルク暗号鍵を解除する鍵として使用されます。LUKS についての詳細情報
は、「LUKS のディスク暗号化の使用」 を参照してください。
2.3. 必要なパッケージの最小限のインストール
コンピューター上の各ソフトウェアには脆弱性が潜んでいる可能性があるので、実際に使用するパッケージ
のみをインストールすることがベストプラクティスになります。インストールを DVD から行う場合は、イ
ンストールしたいパッケージのみを選択するようにします。他のパッケージが必要になる場合は、いつでも
後でシステムに追加することができます。
2.4. インストール後の手順
15
セキュリティガイド
1. システムを更新します。root で以下のコマンドを実行します。
3. セキュリティを強化するために、不要なサービスは無効にしてください。たとえば、使用中のコン
ピューターにプリンターがインストールされていなければ、以下のコマンドを使って cups サービ
スを無効にします。
アクティブなサービスを見直すには、以下のコマンドを実行します。
2.5. その他のリソース
16
第3章 システムを最新の状態に保つ
第3章 システムを最新の状態に保つ
本章では、システムを最新の状態に保つプロセスについて説明します。セキュリティ更新のインストール方
法の立案や設定、新たに更新されたパッケージが導入する変更の適用、Re d Hat カスタマーポータルを利
用したセキュリティアドバイザリーの追跡などが関連してきます。
3.1. インストール済みソフトウェアのメンテナンス
セキュリティの脆弱性が発見された場合、セキュリティ上のリスクを最小限に抑えるために、影響を受け
るソフトウェアを更新する必要があります。そのソフトウェアが現在サポートされている Re d Hat
Ente rpris e Linux ディストリビューション内のパッケージの一部である場合、Re d Hat は脆弱性を修正
する更新パッケージをできるだけ迅速にリリースするように全力を尽くします。
多くの場合、セキュリティ上の特定の不正使用に関する発表にはパッチ (または問題を解決するソースコー
ド) が伴われています。このパッチは Re d Hat Ente rpris e Linux パッケージに適用されます。パッチは
テストされ、エラータ更新としてリリースされるものです。しかし、発表にパッチが含まれていない場合に
は、Re d Hat の開発者はまず、問題の解決に向けてそのソフトウェアの保守担当者と協力します。問題が
解決されると、パッケージがテストされ、エラータ更新としてリリースされます。
システムで使用しているソフトウェアのエラータ更新がリリースされている場合、システムが攻撃される可
能性のある期間を最短にするため、影響を受けるパッケージをできる限り早く更新することが強く推奨され
ます。
3.1.1. セキュリティの更新の立案と設定
すべてのソフトウェアにはバグが含まれます。これらのバグは、悪意のあるユーザーにシステムをさらして
しまう可能性のある脆弱性につながりかねません。更新されていないパッケージは、コンピューターへの侵
入を招く一般的な原因となります。脆弱性の悪用を防ぐには、セキュリティパッチをタイミングよくインス
トールする計画を実行して、発見された脆弱性をすばやく排除してください。
セキュリティ更新が利用可能になったらそれらをテストして、インストールするスケジュールを立てま
す。更新のリリースからシステムにインストールするまでの間、システムを保護するための新たな制御が必
要になります。これらの制御は脆弱性の内容によって異なりますが、ファイアウォールの追加ルールや、外
部ファイアウォールの使用、またはソフトウェア設定の変更などがこれらに含まれることがあります。
サポート対象のパッケージ内のバグは、エラーのメカニズムを使用して修正されます。エラータは、1 つ以
上の RPMパッケージとそのエラータが対処する問題の簡単な説明で構成されています。エラータはすべ
て、アクティブなサブスクリプションを持つお客様に Red Hat サブスクリプション管理 サービスで配布
されます。セキュリティ問題に対処するエラータは、Red Hat セキュリティアドバイザリー と呼ばれま
す。
セキュリティエラータを使った作業についての詳細情報は、「カスタマーポータルでセキュリティ更新を
見る」 を参照してください。RHN Classic からの移行を含む Red Hat サブスクリプション管理 サー
ビスについての詳細情報は、Re d Hat サブスクリプション管理 にある関連ドキュメントを参照してくださ
い。
Yum パッケージマネジャーには、セキュリティエラータの検索、一覧、表示、インストールに使用可能な
セキュリティ関連の機能がいくつか含まれています。これらの機能を使うと、Yum を使ってセキュリティ
更新のみをインストールすることもできます。
使用中のシステムで利用可能なセキュリティ関連の更新を確認するには、root で以下のコマンドを実行し
ます。
17
セキュリティガイド
上記のコマンドは非対話モードで実行されるので、更新が利用可能かどうかの自動確認のスクリプトに使用
することができます。このコマンドは、利用可能なセキュリティ更新がある場合には 100 を返し、更新が
ない場合には 0 を返します。エラーが発生すると、1 が返されます。
同様に、以下のコマンドを使用するとセキュリティ関連の更新のみがインストールされます。
updateinfo サブコマンドを使うと、リポジトリーが提供する利用可能な更新についての情報を表示した
り、それについてアクションを取ることができます。この updateinfo サブコマンド自体は、多くのコマ
ンドを受け付け、この中にはセキュリティ関連の使用も含まれます。これらのコマンドの概要について
は、表3.1「yum update info で使用可能なセキュリティ関連のコマンド」 を参照してください。
コマンド 説明
advisory [advisories] 1 つ以上のアドバイザリーについての情報を表示します。advisory を
アドバイザリー番号で置き換えます。
cves CVE (Common Vulnerabilities and Exposures) に関連する情報の
サブセットを表示します。
security または sec セキュリティ関連の情報をすべて表示します。
severity または sev 提供された severity_level のセキュリティ関連パッケージについての
severity_level 情報を表示します。
3.1.2. パッケージの更新とインストール
システムのソフトウェアを更新する際には、信頼できるソースから更新をダウンロードすることが重要で
す。攻撃者は、問題を解決するはずのバージョンと同じバージョン番号のパッケージを簡単に再構築し、そ
のパッケージからセキュリティ上の別の不正使用を可能にした上で、それをインターネット上にリリース
する場合があります。こうした事態が発生すると、元の RPM に対するファイル検証などのセキュリティ対
策を講じても、不正アクセスを検知することができません。このため、RPM は Re d Hat などの信頼できる
ソールからのみダウンロードし、その保全性を検証するためにパッケージの署名を確認することが極めて重
要になります。
3.1.2.1. 署名パッケージの検証
Yum パッケージマネジャーを使うと、インストールまたはアップグレード対象の全パッケージの自動検証
ができます。この機能は、デフォルトで有効になっています。使用中のシステムでこのオプションを設定す
る場合は、/etc/yum.conf 設定ファイル内で gpgcheck 設定ディレクティブが 1 に設定されているこ
とを確認してください。
18
第3章 システムを最新の状態に保つ
以下のコマンドを使用すると、ファイルシステム上のパッケージファイルを手動で検証できます。
3.1.2.2. 署名パッケージのインストール
ファイルシステムから検証済みのパッケージ (パッケージの検証方法については、「署名パッケージの検
証」 を参照) をインストールするには、以下のように root で yum install コマンドを実行します。
重要
セキュリティに関するエラータをインストールする前に、エラータレポートに記載されているすべ
ての特別な指示をよく読み、指示に従ってインストールしてください。エラータ更新に基づく変更の
適用についての全般的な指示は、「インストールされた更新による変更の適用」 を参照してくださ
い。
3.1.3. インストールされた更新による変更の適用
セキュリティに関するエラータと更新をダウンロードしてインストールした後は、古いソフトウェアの使用
を中止して新しいソフトウェアの使用を開始することが重要です。これを実際に行う方法は、更新済みのソ
フトウェアの種類によって異なります。以下では、ソフトウェアの一般的なカテゴリを示し、パッケージ
のアップグレード後に更新バージョンを使用する方法について説明します。
注記
一般的に、システムの再起動は、ソフトウェアパッケージの最新バージョンが使用されていること
を確認する最も確実な方法です。ただし、このオプションは常に必要というわけではなく、システム
管理者が常に利用できるわけでもありません。
アプリケーション
ユーザースペースのアプリケーションとは、ユーザーが開始できるすべてのプログラムのことで
す。通常このようなアプリケーションは、ユーザー、スクリプトまたは自動化されたタスクユー
ティリティがそれらを起動する場合にのみ使用されるものです。
ユーザースペースのアプリケーションが更新されると、システムにあるアプリケーションのすべ
てのインスタンスが停止し、更新バージョンを使用するためにプログラムが再起動されます。
カーネル
19
セキュリティガイド
カーネルは中心的な役割を担うので、カーネルの再起動にはコンピューターの再起動が伴いま
す。つまりカーネルの更新バージョンは、システムの再起動後に初めて使用できるようになりま
す。
KVM
共有ライブラリ
共有ライブラリは、glibc のように、多くのアプリケーションやサービスにより使用されるコー
ドの集合です。通常、共有ライブラリを使用しているアプリケーションは、アプリケーションが
初期化される際に共有コードを読み込みます。そのため、更新されたライブラリを使用している
すべてのアプリケーションは、まず停止してから再起動する必要があります。
特定ライブラリにリンクしている実行中のアプリケーションを判別するには、以下の例のように
lsof コマンドを使用します。
lsof library
たとえば、libwrap.so ライブラリにリンクしている実行中のアプリケーションを判別するに
は、以下を入力します。
20
第3章 システムを最新の状態に保つ
s ys te md サービスは、通常ブートプロセス中に開始される永続的なサーバープログラムです。
s ys te md サービスの例としては、sshd や vsftpd などがあります。
通常、これらのプログラムはマシンが起動している限りはメモリ内に残るので、パッケージの
アップグレード後には、更新された s ys te md サービスは停止してから再起動する必要がありま
す。これは、root で systemctl コマンドを使用すると実行できます。
他のソフトウェア
以下のアプリケーションの更新は、リンク先のリソースで示された指示にしたがってください。
3.2.1. カスタマーポータルでセキュリティ更新を見る
テーブルの左側にあるエラータコードをクリックすると、個別のアドバイザリーについての詳細情報が表示
されます。次のページには、特定のエラータの原因や結果、必要となる修正だけでなく、その特定のエラー
タが更新するパッケージ全一覧と更新の適用方法が示されています。このページには、関連する CVE など
の関連参照情報のリンクも含まれています。
21
セキュリティガイド
3.2.3. 問題の影響度の分類について
これらを合わせると、セキュリティ問題の影響度が理解できます。そうすることで、使用中のシステムの
アップグレード戦略のスケジュールを立てたり、優先順位を決めたりすることができます。これらの評価は
特定の脆弱性の潜在的なリスクを反映するもので、現行の脅威レベルではなく、バグの技術的分析に基づい
ています。つまり、セキュリティの影響度評価は、特定の弱点に対してエクスプロイトがリリースされても
変更されません。
3.3. その他のリソース
インストールされているドキュメント
オンラインのドキュメント
Re d Hat Ente rpris e Linux 7 システム管理者のガイド — Re d Hat Ente rpris e Linux 7 の 『シス
テム管理者のガイド』 では、Yum および rpm プログラムを使って Re d Hat Ente rpris e Linux 7
システム上でパッケージをインストール、更新、削除する方法を説明しています。
Re d Hat Ente rpris e Linux 7 SELinux Us e r's and Adminis trator's Guide — Re d Hat
Ente rpris e Linux 7 の 『SELinux Us e r's and Adminis trator's Guide 』 では、SELinux
mandatory access control メカニズムの設定について説明しています。
22
第3章 システムを最新の状態に保つ
関連項目
2章インストール時におけるセキュリティのヒント では、最初からシステムを安全に設定することで、
追加のセキュリティ設定を後で実装することがより簡単になることについて説明しています。
23
セキュリティガイド
第4章 ツールとサービスを使用したシステム強化
4.1. デスクトップのセキュリティ
インストール中にシャドウパスワードが検出されると、すべてのパスワードは全ユーザーが読み取り可能な
/etc/passwd ファイルに一方向のハッシュとして保存されます。この場合、システムはオフラインのパ
スワードクラッキング攻撃に脆弱なものとなってしまいます。侵入者が通常のユーザーとしてマシンにアク
セスすると、/etc/passwd ファイルを侵入者自身のマシンにコピーして、パスワードクラッキングプロ
グラムをいくつでも実行できるようになります。このファイルに安全でないパスワードがあれば、パスワー
ドクラッカーがこれを見つけるのは時間の問題となります。
フォーマットやストレージに加えて考慮すべき点は、コンテンツの問題です。パスワードクラッキングから
アカウントを保護するためにユーザーがなし得る最重要事項は、強固なパスワードを作成することです。
4.1.1. パスワードのセキュリティ
4.1.1.1. 強固なパスワードの作成
安全なパスワードを作成するには、長いパスワードの方が短くかつ複雑なものよりも強固であることをユー
ザーは認識する必要があります。あるパスワードが数字や特殊文字、大文字のアルファベットを含んでいて
も、それが 8 文字の長さしかなければ、強固なパスワードとは言えません。「John The Rippe r」のよう
なパスワード解析ツールは、人間が記憶するには困難なパスワードを分解するために最適なものです。
情報の理論上では、エントロピーはランダムな変数に関連付けられる不確実性のレベルで、ビット表示され
ます。エントロピーの値が高ければ高いほど、パスワードはより安全と言えます。NIST (米標準技術研究
所) の SP 800-63-1 文書によると、一般的に選択される 5 万件のパスワードからなる辞書にないパス
ワードには、少なくとも 10 ビットのエントロピーがあります。このため、ランダムな 4 単語からなるパ
スワードには、およそ 40 ビットのエントロピーがあることになります。安全性を高めるために複数の単語
で構成される長いパスワードは、 パスフレーズ とも呼ばれます。例を示します。
大文字や数字、特殊文字の使用が強制されるシステムでは、上記の推奨事項に合致するパスフレーズは簡単
に修正することができます。たとえば、最初の文字を大文字にして、"1!" を追加します。このような修正
は、パスフレーズの安全性を大幅に高めるもの ではない ことに注意してください。
パスワードを自分で作成するもうひとつの方法は、パスワードジェネレーターを使用することで
す。pwmake は、大文字、小文字、数字、特殊文字の 4 種類の文字からなるランダムなパッケージを生
24
第4 章 ツールとサービスを使用したシステム強化
成するコマンドラインツールです。このユーティリティーを使うと、パスワード生成に使用されるエントロ
ピービットの数を指定することができます。エントロピーは、/dev/urandom から引き出されます。指定
可能な最小ビット数は 56 で、これはブルートフォース攻撃が滅多に仕掛けられないシステムやサービスの
パスワードには十分なものです。攻撃者がパスワードハッシュファイルに直接アクセスできないアプリケー
ションであれば、64 ビットで十分です。攻撃者がパスワードハッシュへの直接アクセスを取得する可能性
がある場合やパスワードが暗号化鍵として使用される場合は、80 ビットや 128 ビットを使うべきです。
無効なエントロピービット数を指定すると、pwmake はデフォルトのビット数を使用します。128 ビッ
トのパッケージを作成するには、以下のコマンドを実行します。
pwmake 128
安全なパスワードの作成にはいくつものアプローチがありますが、以下の悪い点は必ず避けてください。
パスワードまたはパスフレーズを 10 文字未満にする。
キーボードのレイアウトにおけるキーの配列を使用する。
パスフレーズを書き留める。
誕生日や記念日、家族の名前、ペットの名前などの個人情報をパスフレーズに使用する。
複数のマシンで同じパスワードまたはパスフレーズを使用する。
セキュアなパスワードの作成は不可欠ですが、パスワードの適切な管理も特に大きな組織のシステム管理者
にとっては重要です。次のセクションでは、組織内でのユーザーパスワードの作成および管理で推奨される
方法を説明します。
4.1.1.2. 強固なパスワードの強制
組織内に多くのユーザーがいる場合、システム管理者は 2 つの基本的な方法で強固なパスワードの使用を
強制できます。つまり、管理者がパスワードを作成してユーザーに渡すか、パスワードに十分な強度がある
かを検証しながらユーザー自身がパスワードを作成する方法です。
前者の方法だとパスワードは強固なものになりますが、組織が拡大するにつれてタスクが重荷になります。
また、ユーザーが自分のパスワードを書き留め、それをさらしてしまうリスクも高まります。
これらの理由で、多くのシステム管理者は後者を選択しますが、パスワードが強固かどうかを積極的に検証
します。場合によっては、管理者はパスワードエージングで定期的にユーザーがパスワードを変更するよう
に強制することもできます。
ユーザーは、パスワードの作成や変更を求められると、passwd コマンドラインユーティリティーを使用
することができます。これは PAM (Pluggable Authentication Modules) を認識し、パスワードが短すぎ
ないか、短くない場合は簡単にクラックされないかを確認します。この確認は、pam_pwquality.so
PAM モジュールが実行します。
注記
pam_pwquality モジュールは、ルールセットに対してパスワードの強度を確認するために使用されま
25
セキュリティガイド
す。確認の手順は 2 段階になります。まず、該当パスワードが辞書にあるかどうかをチェックします。辞
書にない場合は、さらにいくつかのチェックを行います。pam_pwquality は /etc/pam.d/passwd
ファイルの password コンポーネント内に他の PAM モジュールと並んでいます。ルールのカスタムセッ
トは、/etc/security/pwquality.conf 設定ファイル内で指定されます。これらのチェック項目の
完全一覧については、pwquality.conf (8) man ページを参照してください。
minlen=8
minclass=4
パスワード強度チェックで連続文字または反復文字のチェックを行うには、以下の行を
/etc/security/pwquality.conf に追加します。
maxsequence=3
maxrepeat=3
この例では、「abcd」や「1234」など、4 つ以上連続する文字をパスワードに含めることはできませ
ん。また、同じ文字は、3 つまでしか繰り返すことはできません。
注記
4.1.1.3. パスワードエージングの設定
パスワードエージングは、システム管理者が組織内での脆弱なパスワードに対する防御として用いるもうひ
とつのテクニックです。パスワードエージングとは、一定期間後 (通常 90 日) にユーザーが新たなパス
ワードを作成するように求められるシステムのことです。理論上は、ユーザーに定期的なパスワード変更を
強制すれば、クラックされたパスワードは侵入者にとって一定期間しか有効でないことになります。しか
し、パスワードエージングのマイナス面は、ユーザーがパスワードを書き留める可能性が高くなるという点
です。
重要
26
第4 章 ツールとサービスを使用したシステム強化
chage -M 90 <username>
上記のコマンドでは、<username> をユーザー名で置き換えます。パスワードの期限切れを無効にするに
は、通常 -M オプションの後に 99999 の値を使います (これは 273 年余りに相当します)。
chage コマンドで使用可能なオプションの詳細情報については、以下の表を参照してください。
オプション 説明
-d days 1970 年 1 月 1 日から最後にパスワードを変更した日までの日数を指定
します。
-E date アカウントがロックされる日付を YYYY-MM-DD の形式で指定します。
日付の代わりに、 1970 年 1 月 1 日からの日数を指定することも可能
です。
-I days パスワードが失効してからアカウントがロックされるまでのアクティブ
でない日数を指定します。値を 0 とすると、パスワード失効後にアカウ
ントはロックされません。
-l 現在のアカウントエージングの設定を一覧表示します。
-m days パスワード変更が必要となる間隔の最短日数を指定します。値を 0 とす
ると、パスワードは失効しません。
-M days パスワードの有効最長日数を指定します。このオプションで指定した日
数と -d オプションで指定した日数の合計が、1970 年 1 月 1 日から数
えた現在までの日数より少ない場合は、ユーザーはアカウントを使用す
る前にパスワードを変更する必要があります。
-W days パスワードが失効する前にユーザーに警告を発する日数を指定します。
chage <username>
以下は、このコマンドを使用したインタラクティブセッションの例です。
ユーザーの初回ログイン時にパスワードが失効するように設定できます。これにより、ユーザーはパスワー
ドを直ちに変更するよう強制されます。
1. 初期パスワードを設定します。この手順には 2 つの一般的なアプローチがあります。デフォルトの
パスワードを割り当てる、もしくは null パスワードを使用します。
デフォルトのパスワードを割り当てるには、root としてシェルプロンプトで以下を入力します。
27
セキュリティガイド
passwd username
passwd -d username
警告
null パスワードの使用は便利ですが、安全性は極めて低くなります。これは、いかなる第三
者でも、セキュアでないユーザー名を使用して最初にシステムにログインし、アクセスでき
るためです。可能な場合は、null パスワードの使用は避けてください。どうしても避けられ
ない場合は、null パスワードでアカウントのロック解除を行う前に、ユーザーがログインで
きる状態にあることを常に確かめてください。
2. パスワードを直ちに強制的に失効させるには、root として以下のコマンドを実行します。
chage -d 0 username
これで、ユーザーは初回ログイン時に新規パスワードを入力するよう要求されます。
4.1.2. アカウントのロック
注記
ログイン失敗のログファイルにおける行の順番は重要なものです。even_deny_root オプション
が使用されている場合、この順番が変更されると root アカウントを含むすべてのユーザーアカウ
ントがロックされます。
アカウントのロックを設定するには、以下の手順を実行します。
28
第4 章 ツールとサービスを使用したシステム強化
unlock_time=600
複数回のログイン失敗後でもユーザーがロックアウトされないようにするには、以下の行を
/etc/pam.d/system-auth および /etc/pam.d/password-auth の各ファイルで
pam_faillock が最初に呼び出される行のすぐ上に追加します。また、user1、user2、および user3
を実際のユーザー名で置き換えます。
ユーザーあたりの実際の失敗回数を表示するには、root で以下のコマンドを実行します。
ユーザーのアカウントをロック解除するには、root で以下のコマンドを実行します。
1. 設定ファイルの名前を変更します。
29
セキュリティガイド
2. 以下のシンボリックリンクを作成します。
3. /etc/pam.d/system-auth-local ファイルに以下の行を記載します。
4. /etc/pam.d/password-auth-local ファイルに以下の行を記載します。
4.1.3. セッションのロック
日常の業務中にユーザーがワークステーションから離れなければならない時もあります。こういう場合は、
特に十分な物理的セキュリティ対策がとられていない環境 (「物理的コントロール」 を参照) では、攻撃者
にマシンに物理的にアクセスする機会を与えてしまいます。ノートパソコンの場合は特に、持ち運びが便利
なので物理的な安全性が脅かされます。このリスクは、正しいパスワードが入力されないとシステムにアク
セスできないようにするセッションロッキング機能を使うことで緩和できます。
30
第4 章 ツールとサービスを使用したシステム強化
注記
画面のロックがログアウトよりも優れている点は、ロックの場合は (ファイル転送といった) ユー
ザーのプロセスを続行できるという点です。ログアウトしてしまうと、このようなプロセスは中断し
てしまいます。
仮想コンソールをロックする必要がある場合は、vlock というユーティリティーを使って実行できます。
このユーティリティーをインストールするには、以下のコマンドを root で実行します。
vlock -a
重要
このプログラムでは現在、root パスワードを使ったコンソールのロック解除ができません。詳細
は BZ#895066 を参照してください。
コンソールをロックしても、画面およびスクロールバックバッファを削除しないので、それまで
のコマンドやコンソールで表示された出力が、ワークステーションに物理的アクセスできれば誰
でも見れることになります。詳細については、BZ#807369 を参照してください。
~]$ ls -l /bin/su
-rwsr-xr-x. 1 root root 34904 Mar 10 2011 /bin/su
31
セキュリティガイド
注記
s は大文字または小文字の場合があります。大文字の場合は、基になるパーミッションビットが設
定されていないことを示します。
しかし、組織のシステム管理者は、組織のユーザーが自身のマシンにどの程度の管理者アクセスを持つかを
決定しなくてはなりません。pam_console.so と呼ばれる PAM モジュールを使うと、再起動やリムーバ
ブルメディアのマウントなど通常は root ユーザーのみとなっているアクティビティーを、物理コンソール
に最初にログインしたユーザーが実行できるようになります。しかし、ネットワーク設定の変更や新たなマ
ウスの設定、ネットワークデバイスのマウントといったシステム管理者の他の重要なタスクは、管理者権限
なしでは実行できません。その結果、システム管理者はネットワーク上のユーザーにどの程度のアクセスを
許可するかを判断する必要があります。
Ro o t シェルの変更
表4.2 Ro o t シェルの無効化
影響あり 影響なし
Root シェルへのアクセスを防ぎ、アクセスの FTP クライアントや メールクライアント、多
試みをすべてログに記録します。以下のプロ くの s e tuid プログラムはシェルを必要とし
グラムは root アカウントへのアクセスが止め ません。以下のプログラムは root アカウント
られます。 へのアクセスが 止められません。
login sudo
gdm FTP クライアント
kdm Email クライアント
xdm
su
ssh
scp
sftp
32
第4 章 ツールとサービスを使用したシステム強化
追加対象のファイルは以下のとおりです。
/etc/pam.d/gdm
/etc/pam.d/gdm-autologin
/etc/pam.d/gdm-fingerprint
/etc/pam.d/gdm-password
/etc/pam.d/gdm-smartcard
/etc/pam.d/kdm
/etc/pam.d/kdm-np
/etc/pam.d/xdm
警告
表4.3 Ro o t ログインの無効化
影響あり 影響なし
コンソールまたはネットワーク経由での root Root としてはログインしませんが、s e tuid
アカウントへのアクセスを防ぎます。以下の または別のメカニズムで管理タスクを実行す
プログラムは root アカウントへのアクセスが るプログラムです。以下のプログラムは root
止められます。 アカウントへのアクセスが 止められません。
login su
gdm sudo
kdm ssh
xdm scp
tty を開くその他のネットワークサービス sftp
Ro o t SSH ログインを無効にする
33
セキュリティガイド
#PermitRootLogin yes
の行を以下のように変更します。
PermitRootLogin no
影響あり 影響なし
ツールの Ope nSSH スイート経由での root ツールの Ope nSSH スイートの一部ではない
アクセスを防ぎます。以下のプログラムは プログラム
root アカウントへのアクセスが止められま
す。
ssh
scp
sftp
管理者が複数サービスへのアクセスを拒否したい場合、メールクライアントでは
/etc/pam.d/pop や /etc/pam.d/imap ファイルに、SSH クライアントでは
/etc/pam.d/ssh ファイルのような PAM 設定ファイルに同様の行を追加することができま
す。
34
第4 章 ツールとサービスを使用したシステム強化
影響あり 影響なし
PAM 対応のネットワークサービスへの root PAM 非対応のプログラムおよびサービス
アクセスを防ぎます。以下のサービスは root
アカウントへのアクセスが止められます。
login
gdm
kdm
xdm
ssh
scp
sftp
FTP クライアント
Email クライアント
すべての PAM 対応サービス
組織内のユーザーが信頼できてコンピューターの知識を持っているユーザーであれば、root アクセスを許
可することに問題はありません。ユーザーに root アクセスを許可すれば、デバイスの追加やネットワーク
インターフェイスの設定といった重要性の低いアクティビティを個別のユーザーが処理できるので、シス
テム管理者はネットワークセキュリティや他の重要な問題に専念できます。
4.2.4. 自動ログアウトの有効化
35
セキュリティガイド
4.2.4. 自動ログアウトの有効化
trap "" 1 2 3 15
3. /etc/profile ファイルの最後に以下の行を追加して、ユーザーが仮想コンソールまたはリモー
トからログインする度に screen セッションが開始するようにします。
SCREENEXEC="screen"
if [ -w $(tty) ]; then
trap "exec $SCREENEXEC" 1 2 3 15
echo -n 'Starting session in 10 seconds'
sleep 10
exec $SCREENEXEC
fi
新規セッションが開始される度にメッセージが表示されるため、ユーザーは 10 秒間待たなければ
ならない点に注意して下さい。セッション開始までの待機時間を調節するには、sleep コマンド
の後にある値を変更します。
4. アクティブでない状態が一定期間経過した後に、screen セッションを閉じるようにするには、以
下の行を /etc/screenrc 設定ファイルに追加します。
別の方法として、以下の行を使用してセッションのロックだけが行われるようにシステムを設定す
ることも可能です。
この方法では、セッションのロックを解除するためにパスワードが必要です。
これらの変更は、ユーザーが次回システムにログインする時に反映されます。
4.2.5. ブートローダーのセキュア化
Linux ブートローダーをパスワードで保護する主要な理由は以下のとおりです。
36
第4 章 ツールとサービスを使用したシステム強化
1. シングルユーザーモードへのアクセスを防ぐ— 攻撃者がシステムを起動してシングルユーザー
モードに入れるとすると、root パスワードの入力なしで自動的に root としてログインすることに
なってしまいます。
警告
3. 安全でないオペレーティングシステムへのアクセスを防ぐ— デュアルブートシステムの場合、攻
撃者はアクセス制御やファイルパーミッションを無視する (例えば、DOS などの) OS を起動時に
選択できます。
Inte l 64 および AMD64 プラットホームの Re d Hat Ente rpris e Linux 7 では、GRUB 2 ブートロー
ダーが同梱されています。GRUB 2 の詳細については、Re d Hat Ente rpris e Linux 7 システム管理者の
ガイドの GRUB 2 ブートローダーの操作 の章を参照してください。
4.2.5.1. インタラクティブスタートアップの無効化
起動順序の最初に I キーを押すと、インタラクティブな方法でシステムを起動できます。この方法では、
システムがユーザーにサービスを 1 つずつ開始するように求めます。しかし、システムに物理的なアクセ
スがある攻撃者の場合は、この方法だとセキュリティ関連のサービスを無効にし、システムへのアクセスを
許すことになってしまいます。
このようなインタラクティブなスタートアップを防止するには、root で /etc/sysconfig/init ファ
イルの PROMPT パラメーターを以下のように無効にします。
PROMPT=no
4.3. サービスのセキュア化
組織内のシステム管理者にとっては管理機能へのユーザーアクセスは重要な問題ですが、どのネットワーク
サービスがアクティブかを監視することは、Linux システムのすべての管理・運営担当者にとっての最重要
事項です。
4.3.1. サービスへのリスク
37
セキュリティガイド
スクリプトの脆弱性への攻撃 — We b サーバーが通常行うように、サーバー全体のアクションにサー
バーがスクリプトを使用している場合、攻撃者は誤って書かれたスクリプトを狙うことができます。こ
のスクリプトの脆弱性に対する攻撃により、バッファがオーバーフロー状態になるか、攻撃者がシステ
ム上のファイルを変更できる可能性があります。
注記
重要
ネットワーク上での攻撃への露出を限定するために、使用していないサービスはすべてオフにするこ
とが推奨されます。
4.3.2. サービスの特定および設定
cups-lpd — 代替プリントサーバー
これらサービスの稼働を継続しておくかどうかを判断する際は、常識にしたがってリスクを避けるのが最善
38
第4 章 ツールとサービスを使用したシステム強化
4.3.3. 安全でないサービス
潜在的にはどのネットワークサービスも安全ではありません。未使用のサービスをオフにすることが重要な
のは、このためです。サービスのエクスプロイトは定期的に発見され修正プログラムが提供されているの
で、ネットワークサービスはどんなものでも関連するパッケージを定期的に更新することが非常に重要で
す。詳細は 3章システムを最新の状態に保つ を参照してください。
ネットワークプロトコルの中には、もともと他のものよりも安全性が低いものがあります。以下の動作を実
行するサービスがそれに当たります。
もともと安全性が低いサービスには、rlogin、rsh、telnet、vsftpd などがあります。
FTP はリモートシェルと比べるとシステムの安全性にそれほど危険ではありませんが、問題を回避するには
FTP サーバーは慎重に設定、監視する必要があります。FTP サーバーを安全にする詳細情報について
は、「FTP のセキュア化」 を参照してください。
実装時に注意が必要で、ファイアウォールの背後に配置する必要があるサービスは以下のものです。
auth
nfs-server
yppasswdd
ypserv
ypxfrd
ネットワークサービスの安全性を高めるための詳細情報は、「ネットワークアクセスのセキュア化」 を参
照してください。
39
セキュリティガイド
注記
RPC サービスを実行している場合は、以下の基本的なルールにしたがってください。
UDP トラフィックを同様に制限するには、以下のコマンドを使用します。
注記
NIS サーバーは、以下のものを含むいくつかのアプリケーションで構成されています。
40
第4 章 ツールとサービスを使用したシステム強化
NIS は今日の基準ではあまり安全なものではありません。ホスト認証メカニズムがなく、パスワードハッ
シュを含むすべての情報をネットワーク上で暗号化せずに送信します。このため、NIS を使用するネット
ワークの設定時には、非常に注意深い作業が必要になります。さらに、NIS のデフォルト設定がもともと安
全でないことで複雑性が増してしまいます。
4.3.5.1. ネットワークの注意深いプラニング
NIS は機密性の高い情報を暗号化せずにネットワーク上で送信するので、ファイアウォールの背後で、ま
たセグメント化された安全なネットワーク上で実行することが重要です。NIS 情報が安全でないネットワー
ク上で送信される際は、常に傍受される危険があります。ネットワークを注意深く設計することで、重大な
セキュリティ侵害の防止に役立ちます。
例えば、だれかがノートパソコンをネットワークに接続するか、外部からネットワークに侵入すると (そし
て内部 IP アドレスにスプーフィングできたとすると)、以下のコマンドが /etc/passwd マップを公開し
ます。
注記
41
セキュリティガイド
255.255.255.0 192.168.0.0
警告
4.3.5.4. 静的ポートの割り当てとリッチ言語ルールの使用
YPSERV_ARGS="-p 834"
YPXFRD_ARGS="-p 835"
注記
iptable s コマンドによるファイアウォール実装についての詳細情報は、「ファイアウォールの使
用」 を参照してください。
42
第4 章 ツールとサービスを使用したシステム強化
重要
4.3.6.1. ネットワークの注意深いプラニング
警告
ファイルシステムをエクスポートする際は、全体のエクスポートのみを行なってください。ファイ
ルシステムのサブディレクトリーをエクスポートすると、セキュリティ問題につながる可能性があ
ります。場合によってはクライアントがファイルシステムのエクスポートされた部分から抜け出
し、エクスポートされていない部分に至ることもあります (exports(5) man ページのサブツリー
チェックのセクションを参照)。
マウント済みファイルシステムへの書き込み可能なユーザー数を減らすためには、可能な場合は常に ro オ
プションを使用してファイルシステムを読み取り専用としてエクスポートしてください。rw オプションの
使用は、明確に必要な場合のみとしてください。詳細は exports(5) man ページを参照してください。
書き込みアクセスを許可すると、シンボリックリンク攻撃などのリスクが高まります。これには、/tmp や
/usr/tmp などの一時ディレクトリーが含まれます。
ディレクトリーを rw オプションでマウントする必要がある場合は、リスク低減のためにできる限り全ユー
ザー書き込み可能としないようにします。アプリケーションのなかにはパスワードをクリアテキストで保存
したり暗号化が弱いものもあるので、ホームディレクトリーのエクスポートもリスクとみなされます。この
43
セキュリティガイド
リスクは、アプリケーションコードがレビューされ、改善されることで軽減されてきています。SSH キー
にパスワードを設定しないユーザーもいるので、ホームディレクトリーがリスクをもたらすことになりま
す。パスワードや Ke rbe ros の使用を強制することで、このリスクは緩和されます。
no_root_squash オプションは使用しないでください。また、既存のインストールのレビューを行い、
これが使用されていないことを確認してください。詳細は 「no_root_s quas h オプションは使用しないで
ください」 を参照してください。
ほとんどのクライアントでは、可能な場合はまだ予約済みポートを使用しています。しかし、予約済みポー
トは限定的なリソースなので、クライアント (特に NFS マウント数が多いもの) はより高い番号のポートを
使う選択をする場合もあります。Linux クライアントは、「nore s vport」 マウントオプションを使用し
てこれを行うことができます。エクスポートでこれを許可したい場合は、「ins e cure 」 エクスポートオプ
ションで行うことができます。
noexec オプションはクライアント上のすべての実行可能ファイルを無効にします。共有しているファイ
ルシステムにあるファイルをユーザーが不注意で実行しないようにこのオプションを使用します。nosuid
および noexec オプションは、ほとんどのファイルシステムの標準オプションです。
44
第4 章 ツールとサービスを使用したシステム強化
4.3.6.3. 構文エラーに注意
例えば、/etc/exports ファイル内の以下の行は読み取り/書き込みパーミッションでディレクトリー
/tmp/nfs/ をホスト bob.example.com と共有します。
/tmp/nfs/ bob.example.com(rw)
一方、/etc/exports ファイルは同じディレクトリーを読み取り専用パーミッションでホスト
bob.example.com と共有し、ホスト名の後ろに一文字分の空白があるので読み取り/書き込みパーミッ
ションで wo rld と共有します。
showmount -e <hostname>
Re d Hat Ente rpris e Linux 7 のデフォルトの NFS は NFSv4 で、この場合は TCP でポート 2049 が
開いていれば問題ありません。NFSv3 を使用していると、以下の説明にあるように、さらに 4 つのポート
が必要になります。
NFSv3 用のポート設定
45
セキュリティガイド
スクリプトを実稼働環境で実行する 前に、常にそのシステムがシステム上で意図したとおりに稼働してい
ることを確認してください。また、スクリプトもしくは CGI を含むディレクトリーに書き込みパーミッ
ションを持っているのは root ユーザーのみであることを確認してください。これを行うには、root ユー
ザーで以下のコマンドを実行します。
FollowSymLinks
このディレクティブはデフォルトで有効となっているので、We b サーバーのドキュメントルー
トへのシンボリックリンク作成時には注意してください。例えば、/ へのシンボリックリンクを
提供することはよい方法ではありません。
Indexes
このディレクティブはデフォルトで有効となっていますが、これが最適ではない可能性がありま
す。ビジターがサーバー上のファイル閲覧をできないようにするには、このディレクティブを削
除します。
UserDir
UserDir はシステム上でのユーザーアカウントの有無を確認できるので、デフォルトでは無効
となっています。サーバー上のユーザーディレクトリーのブラウジングを有効にするには、以下
のディレクティブを使用します。
UserDir enabled
UserDir disabled root
これらのディレクティブは、/root/ 以外のすべてのユーザーディレクトリーのブラウジングを
有効にします。無効アカウントリストにユーザーを追加するには、UserDir disabled 行に空
白で区切ったユーザーのリストを追加します。
サーバートークン
サーバートークン ディレクティブは、クライアントに返信されるサーバー応答ヘッダーフィー
ルドを制御します。これには、以下のパラメーターを使用してカスタマイズできる種々の情報が
含まれます。
46
第4 章 ツールとサービスを使用したシステム強化
Apache
Apache/2
Apache/2.0
Apache/2.0.41
ServerTokens OS — 以下の情報を提供します。
Apache/2.0.41 (Unix)
潜在的な攻撃者がユーザーのシステムについて価値ある情報を取得できないないようにするに
は、ServerTokens Prod の使用が推奨されます。
重要
IncludesNoExec ディレクティブは削除しないでください。デフォルトでは、Server-Side
Includes (SSI) モジュールはコマンドの実行ができません。絶対に必要な場合以外は、この設定を
変更しないことが推奨されます。変更すると、攻撃者がシステム上でコマンドを実行できるようにな
る可能性があります。
ht t pd モジュールの削除
/etc/httpd/conf.d/ ディレクトリーにもモジュールの読み込みに使われる設定ファイルが含まれてい
ることに注意してください。
ht t pd および SELinux
詳細情報は、Re d Hat Ente rpris e Linux 7 SELinux Us e r's and Adminis trator's Guide の The
Apache HTTP Se rve r and SELinux の章を参照してください。
47
セキュリティガイド
4.3.8. FT P のセキュア化
4.3.8.1. FT P グリーティングバナー
ユーザー名とパスワードの送信前に、すべてのユーザーにグリーティングバナーが示されます。デフォルト
では、このバナーにはシステムの脆弱性を特定しようとしているクラッカーに有益なバージョン情報が含ま
れています。
vsftpd のグリーティングバナーを変更するには、以下のディレクティブを
/etc/vsftpd/vsftpd.conf ファイルに追加します。
ftpd_banner=<insert_greeting_here>
複数行のバナーの場合、バナーファイルの使用が最善の方法となります。複数のバナーの管理を簡素化する
には、/etc/banners/ という新規ディレクトリーにすべてのバナーを格納します。この例では、FTP 接
続のバナーファイルは、/etc/banners/ftp.msg となります。以下はこのファイルのサンプルになりま
す。
注記
vsftpd でこのバナーを参照するようにするには、以下のディレクティブを
/etc/vsftpd/vsftpd.conf ファイルに追加します。
banner_file=/etc/banners/ftp.msg
4.3.8.2. 匿名のアクセス
/var/ftp/ ディレクトリーが存在すると、匿名アカウントがアクティベートされます。
48
第4 章 ツールとサービスを使用したシステム強化
このディレクトリーを作成する最も簡単な方法は、vsftpd パッケージをインストールすることです。こ
のパッケージは、匿名ユーザー向けのディレクトリーツリーを確立し、匿名ユーザーによる読み取り専用の
パーミッションをディレクトリーに設定します。
デフォルトでは、匿名ユーザーはどのディレクトリーにも書き込みできません。
警告
FTP サーバーへの匿名アクセスを有効にする場合は、機密性の高いデータの保存場所に注意してく
ださい。
4.3.8.2.1. 匿名のアップロード
匿名ユーザーによるファイルのアップロードを許可する場合は、/var/ftp/pub/ 内に書き込み専用の
ディレクトリーを作成することが推奨されます。これを行うには、以下のコマンドを root で実行します。
次に、パーミッションを変更して、匿名ユーザーがディレクトリーのコンテンツを閲覧できないようにしま
す。
ディレクトリーのロング形式での一覧は以下のようなります。
管理者が匿名ユーザーによるディレクトリー内での書き込みや読み取りを許可すると、そのサーバーが盗難
ソフトウェアのレポジトリになってしまう場合が多くあります。
anon_upload_enable=YES
4.3.8.3. ユーザーアカウント
FTP は安全でないネットワーク上で認証用のユーザー名とパスワードを暗号化せずに送信するので、ユー
ザーアカウントからサーバーへのシステムユーザーアクセスを拒否することはよい方法です。
vsftpd のすべてのユーザーアカウントを無効にするには、以下のディレクティブを
/etc/vsftpd/vsftpd.conf に追加します。
local_enable=NO
4.3.8.3.1. ユーザーアカウントの制限
また、各サービス内で直接ユーザーアカウントを無効にすることもできます。
49
セキュリティガイド
vsftpd で特定のユーザーアカウントを無効にするには、ユーザー名を/etc/vsftpd/ftpusers に追
加します。
4.3.9.1. サービス拒否攻撃を制限する
Email の性質上、攻撃者が本気になるとサーバーに大量のメールを送信し、サービス拒否を発生させること
が簡単にできます。/etc/postfix/main.cf ファイル内のディレクティブに制限を設定すると、この
ような攻撃の有効性が制限されます。既存のディレクティブの値を変更するか、以下の形式で希望する値の
必要なディレクティブを追加することもできます。
<directive> = <value>
サービス拒否攻撃の制限に使用できるディレクティブを以下に示します。
anvil_rate_time_unit — この時間単位は割合制限の計算に使用されます。デフォルト値は 60 秒
です。
smtpd_client_event_limit_exceptions — 接続および割合制限のコマンドから除外されるク
ライアントです。デフォルトでは、信頼できるネットワーク内のクライアントは除外されます。
smtpd_client_message_rate_limit — 時間単位内でクライアントが要求可能な最大メッセージ
配信数です (Pos tfix が実際にこの数のメッセージを受け付けるかどうかは別問題です)。
queue_minfree — メール受信に必要なキューファイルシステム内での空き領域の最低バイト数で
す。これは現在、Pos tfix SMTP サーバーがメールを受信するかどうかを判断するために使用していま
す。デフォルトでは、Pos tfix SMTP サーバーは、空き領域が me s s age _s iz e _limit の 1.5 倍未満で
あれば MAIL FROM コマンドを拒否します。空き領域の最低限度をより大きくするように指定するに
は、que ue _minfre e の値が少なくとも me s s age _s iz e _limit の 1.5 倍になるように指定します。
デフォルトの que ue _minfre e 値は 0 です。
header_size_limit — メッセージヘッダー保存に使用するメモリの最大バイト数です。ヘッダー
サイズがこの制限を超える場合は、超過分が廃棄されます。デフォルト値は 102400 です。
50
第4 章 ツールとサービスを使用したシステム強化
message_size_limit — メッセージの最大バイト数で、これにはエンベロープ情報も含まれます。
デフォルト値は 10240000 です。
注記
4.3.9.3. メール専用ユーザー
inet_interfaces = localhost
51
セキュリティガイド
Do veco t のセットアップ
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
service auth {
inet_listener {
port = 12345
}
}
上記の例では、12345 を実際に使用するポート番号に置き換えます。
Po st f ix のセットアップ
smtpd_sasl_auth_enable = yes
52
第4 章 ツールとサービスを使用したシステム強化
smtpd_sasl_type = dovecot
3. Po st f ix キューディレクトリーの認証相対パスを提供します (相対パスを使用すること
で、Po st f ix サーバーが chro o t で稼働しているかどうかにかかわらず、この設定が確実に機
能するようになります)。
smtpd_sasl_path = private/auth
smtpd_sasl_path = inet:127.0.0.1:12345
上記の例では、非暗号化セッション中は匿名認証が許可されず、また暗号化されていないユーザー
名やパスワードを送信するメカニズムも許可されません。(TLS を使った) 暗号化セッションでは、
匿名でない認証メカニズムのみが許可されます。
その他のリソース
53
セキュリティガイド
重要
本セクションでは、SSH 設定のセキュア化における最も一般的な方法にフォーカスしてきました。
ただし、ここで提案された方法が網羅的または決定的であるというわけではありません。sshd デー
モンの動作修正に利用可能な設定ディレクティブすべてについての説明は sshd_config(5) の
man ページを、基本的な SSH の概念については ssh(1) の man ページを参照してください。
4.3.10.1. 暗号化ログイン
SSH は、コンピューターにログインするための暗号化鍵の使用をサポートしています。これはパスワード
のみの使用よりもはるかに安全です。この方法を他の認証方法と組み合わせると、マルチファクター認証
(multifactor authe ntication) と見なすことができます。マルチ認証方法についての詳細は、「複数の認
証方法」 を参照してください。
認証における暗号鍵の使用を有効にするには、/etc/ssh/sshd_config ファイルの
PubkeyAuthentication 設定ディレクティブを yes に設定する必要があります。これがデフォルト設
定であることに注意してください。PasswordAuthentication ディレクティブを no に設定すると、
ログインでのパスワード使用が無効になります。
パスワードやその他の認証メカニズムと同様に、SSH 鍵は定期的に変更する必要があります。この
際、authorized_key ファイルから使用されていない鍵を必ず消去してください。
4.3.10.2. 複数の認証方法
マルチファクター認証とも呼ばれる複数の認証方式を使用すると、権限のないアクセスに対する保護のレベ
ルが高まります。このため、システムのセキュリティを強化する際には、マルチファクター認証を検討して
ください。マルチファクター認証を使用するシステムにログインしようとすると、ユーザーは指定されたす
べての認証方式で成功しないと、アクセスが認められません。
使用する認証方式を指定するには、/etc/ssh/sshd_config ファイル内の
AuthenticationMethods 設定ディレクティブを使用します。このディレクティブでは、必要となる認
証方式の複数のリストを定義できることに注意してください。複数を定義する場合は、各方式を少なくとも
1 つのリストで定義する必要があります。各リストは空白で区切ります。リスト内の各認証方式の名前はコ
ンマ区切りとします。例を示します。
54
第4 章 ツールとサービスを使用したシステム強化
プロトコルのバージョン
Re d Hat Ente rpris e Linux 7 で提供される SSH プロトコルは SSH-1 と SSH-2 の両バージョンをサ
ポートしますが、可能な場合は常に後者のみを使用してください。SSH-2 バージョンには、旧式の SSH-1
の多くの改善点が含まれており、高度な設定オプションの多くは SSH-2 でのみ使用可能となっています。
鍵のタイプ
デフォルト以外のポート
Ro o t 以外のログイン
4.4. ネットワークアクセスのセキュア化
55
セキュリティガイド
man ページを参照してください。サービスに適用可能なオプションとして機能する利用可能なフラグにつ
いては、xinetd.conf(5) man ページを参照してください。
システム管理者が警戒していることを潜在的な攻撃者に知らせるには、ユーザーがサービスに接続する際に
適切なバナーを表示させるのがよい方法です。また、ユーザーに対してシステムのどの情報を表示させるか
を制御することもできます。サービスに TCP Wrappe r のバナーを実装するには、banner オプションを
使用します。
以下の例では、vsftpd にバナーを導入します。最初にバナーファイルを作成します。これはシステム上の
どこでも構いませんが、デーモンと同じ名前にする必要があります。例えば、ファイル名
/etc/banners/vsftpd には以下の行が含まれます。
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Inappropriate use will result in your access privileges being
removed.
%c トークンは、ユーザー名およびホスト名、またはユーザー名および IP アドレスなどの幅広いクライアン
ト情報を提供して接続に対して威嚇します。
以下の例では、206.182.68.0/24 ネットワークからのクラッカーがサーバーに攻撃を仕掛けようとしてい
ることが検出されたとします。/etc/hosts.deny ファイルに以下の行を挿入すると、そのネットワーク
からの接続の試みが拒否され、特別ファイルにログ記録されます。
%d トークンは、攻撃者がアクセスを試みるサービス名を提供します。
注記
spawn ディレクティブはどんなシェルコマンドも実行するので、特定のクライアントがサーバーに
接続しようとする際に、管理者に通知したり一連のコマンドを実行したりする特別スクリプトを作成
するとよいでしょう。
56
第4 章 ツールとサービスを使用したシステム強化
特定の種類の接続が他のものよりも懸念される場合は、severity オプションを使うと該当サービスに対
するログレベルを高めることができます。
4.4.2. リッスンしているポートの確認
ポートを必要以上に開くとシステムの攻撃対象領域を増やすことになるので、避けるべきです。システムが
サービスを開始した後で予期しないポートがリスニング状態になっている場合は、侵入の形跡である可能性
があり、調査が必要になります。
root でコンソールから以下のコマンドを実行して、ネットワークからの接続をリッスンしているポートを
判断します。
57
セキュリティガイド
2581/unbound
udp 0 0 127.0.0.1:766 0.0.0.0:*
2279/rpc.statd
udp 0 0 0.0.0.0:59186 0.0.0.0:*
674/avahi-daemon: r
udp 0 0 0.0.0.0:33639 0.0.0.0:*
2279/rpc.statd
udp 0 0 0.0.0.0:889 0.0.0.0:*
1608/rpcbind
udp 0 0 127.0.0.1:53 0.0.0.0:*
2581/unbound
udp 0 0 0.0.0.0:68 0.0.0.0:*
2642/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:*
1608/rpcbind
udp 0 0 0.0.0.0:46198 0.0.0.0:*
2642/dhclient
udp 0 0 0.0.0.0:123 0.0.0.0:*
697/chronyd
udp 0 0 0.0.0.0:5353 0.0.0.0:*
674/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:*
697/chronyd
udp6 0 0 :::3885 :::*
2642/dhclient
udp6 0 0 :::889 :::*
1608/rpcbind
udp6 0 0 ::1:53 :::*
2581/unbound
udp6 0 0 :::111 :::*
1608/rpcbind
udp6 0 0 :::123 :::*
697/chronyd
udp6 0 0 ::1:323 :::*
697/chronyd
udp6 0 0 :::33235 :::*
2279/rpc.statd
raw6 0 0 :::58 :::* 7
2612/NetworkManager
システムで必要なサービスをコマンドの出力で確認して、特に必要でないものや権限が与えられていないも
のをオフにしてから、再度チェックを実行します。次に、ネットワーク経由で最初のシステムに接続してい
る別のシステムから nmap を使用して、外部チェックを行います。これは、ipt ables のルールの確認
に使用できます。外部システムから ss 出力で表示されているすべての IP アドレス (localhos t 127.0.0.0
または ::1 レンジを除く) をスキャンします。IPv6 のスキャンには -6 オプションを使用します。詳細は
man nmap(1) を参照してください。
58
第4 章 ツールとサービスを使用したシステム強化
4.4.3. ソースルーティングの無効化
ソースルーティングはインターネットプロトコルメカニズムで、IP パケットがアドレス一覧の情報を持ち
運べるようにします。このアドレスは、パケットが通過する必要のあるパスをルーターに知らせるもので
す。ルートを移動する際にホップを記録するオプションもあります。「ルート記録」と呼ばれるホップの記
録は、宛先にソースまでの帰りのパスを提供します。これによりソースは (つまり送信ホスト)、すべてもし
くは一部のルーターのルーティングテーブルを無視して、ルートを厳密もしくは緩やかに特定することがで
きます。これによりユーザーは、不正目的でネットワークトラフィックをリダイレクトすることが可能にな
ります。このため、ソースベースのルーティングは無効にする必要があります。
パケット転送の無効化は、可能な場合は上記のコマンドと合わせて行うべきです (転送の無効化は仮想化に
影響する場合があります)。以下のコマンドを root で発行します。
以下のコマンドはすべてのインターフェイスですべてのマルチキャストパケットの転送を無効にします。
59
セキュリティガイド
警告
4.4.4. 逆方向パス転送
逆方向パス転送は、あるインターフェイスから着信したパケットが異なるインターフェイス経由で去ってし
まうことを防ぐために使用されます。送信ルートと着信ルートが異なる場合は、 非対称ルーティング と呼
ばれる場合もあります。ルーターがパケットをこの方法でルート設定することはよくありますが、ほとんど
のホストはこのようなことをする必要はないはずです。例外として挙げられるのは、トラフィックをあるリ
ンクで送信し、異なるサービスプロバイダーから別のリンクでトラフィックを受け取るアプリケーションで
す。例えば、xDSL との組み合わせで専用回線を使っている場合や、3G モデムを使ったサテライトリンク
などの場合です。このようなシナリオが該当する場合は、着信インターフェイスで逆方向パス転送をオフに
することが必要になります。つまり、これが必要だと分かっている場合を除いて、有効にしておくのが最善
の方法です。これは、ローカルサブネットからユーザーが IP アドレスをスプーフィングすることを防
ぎ、DDoS 攻撃の機会を減らすためです。
注記
警告
rp_filter
デフォルト動作の設定時には以下の形式になります。
60
第4 章 ツールとサービスを使用したシステム強化
0 — ソース確認なし
1 — RFC3704 で定義された厳密モード
2 — RFC3704 で定義された緩やかなモード
4.4.4.1. その他のリソース
以下のリソースでは、逆方向パス転送について詳細な説明が提供されています。
便利なウェブサイト
/proc/sys/net/ipv4/ ディレクトリーで使用可能なファイルおよびオプションの一覧について
は、https ://www.ke rne l.org/doc/Docume ntation/ne tworking/ip-s ys ctl.txt を参照してくださ
い。
4.5. ファイアウォールの使用
firewalld が提供するファイアウォールのサービスは、設定の変更はいつでも可能で即座に実行されるの
で、静的ではなく動的なものです。変更は保存したり適用したりする必要がありません。ファイアウォール
はリロードの必要がないので、既存のネットワーク接続が意図せずに中断されることがありません。
61
セキュリティガイド
4.5.3. f irewalld と syst em-conf ig-f irewall および ipt ables との比較
62
第4 章 ツールとサービスを使用したシステム強化
図4.1 ファイアウォールスタック
4.5.4. ネットワークゾーンについて
ファイアウォールを使うと、ユーザーがネットワーク内のデバイスとトラフィックに配置する信頼レベル
に基づいて、ネットワークを異なるゾーンに分けることができます。Net wo rkManager が
firewalld にインターフェイスが所属するゾーンを通知します。インターフェイスに割り当てられたゾー
ンは Net wo rkManager で、または関連する Net wo rkManager ウィンドウを開く f irewall-
co nf ig ツール経由で変更できます。
/etc/firewalld/ におけるゾーン設定は、ネットワークインターフェイスにすぐに適用可能な事前設定
の範囲です。以下でこれらを簡単に説明します。
drop
着信ネットワークパケットはすべて遮断され、返信されません。送信ネットワーク接続のみが可
能です。
block
63
セキュリティガイド
public
公開エリア用です。自分のコンピューターを保護するため、ネットワーク上の他のコンピュー
ターを信頼しません。選択された着信接続のみが許可されます。
external
マスカレードを特別にルーター用に有効にした外部ネットワーク上での使用向けです。自分のコ
ンピューターを保護するため、ネットワーク上の他のコンピューターを信頼しません。選択され
た着信接続のみが許可されます。
dmz
公開アクセスが可能ではあるものの、内部ネットワークへのアクセスには制限がある非武装地帯
にあるコンピューター用。選択された着信接続のみが許可されます。
work
作業エリア用です。自分のコンピューターを保護するため、ネットワーク上の他のコンピュー
ターをほぼ信頼します。選択された着信接続のみが許可されます。
home
ホームエリア用です。自分のコンピューターを保護するため、ネットワーク上の他のコンピュー
ターをほぼ信頼します。選択された着信接続のみが許可されます。
internal
内部ネットワーク用です。自分のコンピューターを保護するため、ネットワーク上の他のコン
ピューターをほぼ信頼します。選択された着信接続のみが許可されます。
trusted
すべてのネットワーク接続が許可されます。
これらのゾーンのいずれかをデフォルトに指定することができます。インターフェイス接続が
Net wo rkManager に追加されると、デフォルトのゾーンに割り当てられます。インストール時に
は、firewalld のデフォルトは public ゾーンに設定されます。
4.5.5. ネットワークゾーンの選択
ネットワークゾーンの名前は、すぐに分かりユーザーが妥当な決定をすばやく下せるように付けられていま
す。ただし、ユーザーのニーズおよびリスク評価に合わせて、デフォルト設定の見直しを行ったり、不要な
サービスを無効にしてください。
4.5.6. 事前定義のサービスについて
サービスは、ローカルポートと宛先のリストとするか、サービスが有効な場合に自動的に読み込まれるファ
イアウォールヘルパーのモジュールのリストとすることができます。事前定義サービスを使用すると、ユー
ザーによるサービスへのアクセスの有効、無効の切り替えが容易になります。ポートやポート範囲を開くの
ではなく、事前定義のサービスまたはカスタム定義のサービスを使用すると、管理が容易になる場合があり
ます。サービスの設定オプションと一般的なファイル情報は、firewalld.service(5) man ページで
説明されています。サービスは個別の XML 設定ファイルで指定されており、これらのファイル名の形式
は、service-name.xml となります。
64
第4 章 ツールとサービスを使用したシステム強化
コマンドラインを使用してデフォルトの利用可能な事前定義サービスを一覧表示するには、root で以下の
コマンドを実行します。
~]# ls /usr/lib/firewalld/services/
/usr/lib/firewalld/services/ にあるファイルは編集しないでくださ
い。/etc/firewalld/services/ にあるファイルのみを編集してください。
システムもしくはユーザーが作成したサービスを一覧表示するには、root で以下のコマンドを実行しま
す。
~]# ls /etc/firewalld/services/
~]# cp /usr/lib/firewalld/services/[service].xml
/etc/firewalld/services/[service].xml
この後に、新規作成されたファイルを編集することができます。firewalld はファイルが
/etc/firewalld/services/ にあることを好みますが、もしファイルが削除されてしまった場合で
も、/usr/lib/firewalld/services/ にフォールバックします。ただし、これはリロードの後にな
ります。
4.5.7. ダイレクトインターフェイスについて
ダイレクトインターフェイスモードは、サービスもしくはアプリケーションが実行時に特定のファイア
ウォールルールを追加するためのものです。--permanent オプションを追加して firewall-cmd --
permanent --direct コマンドを使用するか、/etc/firewalld/direct.xml を修正することで、
ルールを永続的なものにできます。ルールが永続的になっていないと、D-BUS を使用して firewalld か
ら開始、再開、リロードのメッセージを受け取るたびに毎回適用する必要があります。
65
セキュリティガイド
firewalld が稼働しているかどうかを確認するには、以下のコマンドを実行します。
66
第4 章 ツールとサービスを使用したシステム強化
4.5.14. ファイアウォールの設定
4.5.14.1. グラフィカルユーザーインターフェイスを使ったファイアウォールの設定
4.5.14.1.1. グラフィカルファイアウォール設定ツールの起動
コマンドラインを使ってグラフィカルなファイアウォール設定ツールを起動するには、root で以下のコマ
ンドを入力します。
~]# firewall-config
ファイアウォールの設定 ウィンドウが開きます。このコマンドは一般ユーザーとしても実行できます
が、その場合は時折、管理者パスワードの入力を求められることに注意してください。
67
セキュリティガイド
図4.2 ファイアウォール設定ツール
4.5.14.1.2. ファイアウォールの設定変更
注記
実行時 モードでファイアウォール設定を変更する際には、サービスに関連するチェックボックスに
チェックを入れたり消したりすると、その選択が直ちに反映されます。他のユーザーが使用している
可能性のあるシステムでこの作業を行う場合は、この点を考慮してください。
永続 モードでファイアウォール設定を変更すると、ファイアウォールを再読み込みした場合かシス
テムの再起動時にのみ変更が反映されます。ファイル メニューの下にある再読み込みアイコンを使
用するか、オプション メニューをクリックして Firewalld の再読み込み を選択します。
ゾーンは左側のコラムで選択できます。ゾーンには有効になっているサービスがいくつかあり、すべてを閲
覧するにはウィンドウのサイズを変更するか、スクロールする必要がある場合があります。サービスを選択
および選択解除することで、設定をカスタマイズできます。
68
第4 章 ツールとサービスを使用したシステム強化
4.5.14.1.3. インターフェースをゾーンに追加する
4.5.14.1.4. デフォルトゾーンの設定
4.5.14.1.5. サービスの設定
4.5.14.1.6. ファイアウォールでポートを開く
特定のポートへのトラフィックがファイアウォールを通過できるようにするには、f irewall-co nf ig
ツールを起動して、設定を変更するネットワークゾーンを選択します。ポート タブを選んで 追加 ボタン
をクリックします。ポートとプロトコル ウィンドウが開きます。
4.5.14.1.7. IP アドレスのマスカレードの有効化
4.5.14.1.8. ポート転送の設定
受信トラフィックのプロトコルとポートもしくはポート範囲をウィンドウの上部で選択します。
ローカルポートにトラフィックを転送する、つまり同一システム上のポートに転送するには、ローカル転
送 のチェックボックスを選択します。トラフィックの送信先となるローカルポートまたはポート範囲を入
力します。
69
セキュリティガイド
ヘルプの出力を表示するには、以下のコマンドを実行します。
注記
firewalld の状態をテキスト表示するには、以下のコマンドを実行します。
アクティブなゾーンと、それらに割り当てられているインターフェイスの一覧を表示するには、以下のコマ
ンドを実行します。
70
第4 章 ツールとサービスを使用したシステム強化
たとえば、インターフェイス e m1 が現在割り当てられているゾーンを確認するには、以下のコマンドを実
行します。
現在読み込まれているサービスを一覧表示するには、root で以下のコマンドを実行します。
ここで表示されるのは、/usr/lib/firewalld/services/ から読み込まれた事前定義サービスの名前
と、現在読み込まれているカスタムサービスになります。設定ファイル自体は service-name.xml. と命
名されることに注意してください。
カスタムが作成されていても読み込まれていない場合は、以下のコマンドで確認できます。
ここでは、サービスが読み込まれていなくても、/etc/firewalld/services/ で設定されたカスタム
サービスを含めたすべてのサービスが一覧表示されます。
すべての送受信パケットの遮断を開始するには、root で以下のコマンドを実行します。
71
セキュリティガイド
これですべての送受信パケットが遮断されます。アクティブな接続は、一定期間アクションがないと切断さ
れます。この期間は、個別のセッションタイムアウト値によって異なります。
すべての送受信パケットの受け渡しを再開するには、root で以下のコマンドを実行します。
パニックモードの有効期間が短かった場合、パニックモードを無効にすると、確立されていた接続が再度機
能する可能性があります。
パニックモードの有効、無効を確認するには、以下のコマンドを実行します。
ファイアウォールをユーザー接続を切断せずに、つまり状態情報を失わずにリロードするには、root で以
下のコマンドを実行します。
ファイアウォールをユーザー接続を切断して、つまり状態情報を破棄してリロードするには、root で以下
のコマンドを実行します。
このコマンドは通常、重大なファイアウォール問題の場合にのみ使用されます。たとえば、状態情報に問題
があって接続が確立されないものの、ファイアウォールルール自体は適正な場合などです。
この設定を永続的にするには、--permanent を追加してファイアウォールをリロードします。
4.5.14.4.4. インターフェイス設定ファイルを編集してインターフェースをゾーンに追加する
ZONE=work
4.5.14.4.5. ファイアウォール設定ファイルを編集してデフォルトゾーンを設定する
72
第4 章 ツールとサービスを使用したシステム強化
# default zone
# The default zone used if an empty zone string is used.
# Default: public
DefaultZone=home
root で以下のコマンドを実行して、ファイアウォールをリロードします。
この変更は即座に有効になり、このケースではファイアウォールのリロードは不要です。
--add-services コマンドで開いたポートはここで表示されないことに注意してください。
この設定を永続的にするには、--permanent を追加してファイアウォールをリロードします。
この設定を永続的にするには、--permanent を追加してファイアウォールをリロードします。
この設定を永続的にするには、--permanent を追加してファイアウォールをリロードします。
73
セキュリティガイド
変更をシステムブート後にも維持するには、--permanent オプションを追加します。このオプションを
使用して、かつ変更を即座に有効にしたい場合は、root で以下のコマンドを実行して、ファイアウォール
をリロードします。
このコマンドでは、確立されている接続は切断されません。切断したい場合は --complete-reload オ
プションが使えますが、この場合切断されるのは削除したサービスだけでなく、すべての確立されている接
続が切断されることに注意してください。
デフォルトゾーンのファイルを表示するには、root で以下のコマンドを実行します。
~]# ls /usr/lib/firewalld/zones/
block.xml drop.xml home.xml public.xml work.xml
dmz.xml external.xml internal.xml trusted.xml
これらのファイルは、編集しないでください。これらのファイルは、/etc/firewalld/zones/ ディレ
クトリーに同等のファイルがない場合に、デフォルトで使用されます。
デフォルトから変更されたゾーンファイルを表示するには、root で以下のコマンドを実行します。
~]# ls /etc/firewalld/zones/
external.xml public.xml public.xml.old
<service name="smtp"/>
~]# ls /etc/firewalld/zones/
external.xml public.xml work.xml
74
第4 章 ツールとサービスを使用したシステム強化
<service name="smtp"/>
work.xmlファイルにそれ以外の変更がなされない場合、これでこの行は削除され、firewalld は次回リ
ロード時またはシステム起動時にデフォルトの /usr/lib/firewalld/zones/work.xml 設定ファイ
ルを使用します。
4.5.14.4.12. IP アドレスのマスカレーディングの設定
IP マスカレーディングを有効にするには、root で以下のコマンドを発行します。
この設定を永続的にするには、--permanent を追加してファイアウォールをリロードします。
IP マスカレーディングを無効にするには、root で以下のコマンドを発行します。
この設定を永続的にするには、--permanent を追加してファイアウォールをリロードします。
受信ネットワークパケットをあるポートから別のポートまたはアドレスに転送するには、まず root で以
下のコマンドを実行して、ゾーン (たとえば e xte rnal) の IP アドレスマスカレーディングを有効にしま
す。
75
セキュリティガイド
XML ファイルは直接作成、編集するか、グラフィカルおよびコマンドラインツールを使って間接的に作成
することができます。組織内では RPM ファイルでこれらを配布することで、管理とバージョンコントロー
ルが容易になります。Puppet のようなツールを使うと、このような設定ファイルの配布が可能になりま
す。
4.5.14.6. ダイレクトインターフェイスの使用
ダイレクトインターフェイスの使用は意図せずにファイアウォール侵害を引き起こす可能性があるの
で、ipt ables に精通していない場合には危険です。
ダイレクトインターフェイスモードは、サービスもしくはアプリケーションが実行時に特定のファイア
ウォールルールを追加するためのものです。--permanent オプションを追加して firewall-cmd --
permanent --direct コマンドを使用するか、/etc/firewalld/direct.xml を修正することで、
76
第4 章 ツールとサービスを使用したシステム強化
ルールを永続的なものにできます。/etc/firewalld/direct.xml ファイルの詳細
は、firewalld.direct(5) の man ページを参照してください。
4.5.14.6.1. ダイレクトインターフェイスを使用したカスタムルールの追加
この設定を永続的にするには、--permanent オプションを追加します。
4.5.14.6.2. ダイレクトインターフェイスを使用したカスタムルールの削除
この設定を永続的にするには、--permanent オプションを追加します。
4.5.14.6.3. ダイレクトインターフェイスを使用したカスタムルールの一覧表示
「リッチ言語」 構文を使用すると、ダイレクトインターフェイスよりも理解しやすい方法で複雑なファイ
アウォールルールが作成できます。さらに、設定を永続的にすることができます。この言語は値の付いた
キーワードを使用するもので、ipt ables ルールの抽象表現です。ゾーンはこの言語を使って設定すること
ができ、現行の設定方式もそのままサポートされます。
4.5.15.1. リッチ言語コマンドの形式
本セクションのコマンドはすべて、root で実行する必要があります。ルールを追加するコマンド形式は以
下のようになります。
ルールを削除するコマンド形式は以下のようになります。
77
セキュリティガイド
ルールが存在するかどうかを確認するには、以下のコマンドを実行します。
ゾーン設定ファイルで使用されるリッチ言語表現についての詳細情報は、firewalld.zone(5) man
ページを参照してください。
4.5.15.2. リッチルールの構造について
リッチルールコマンドの形式または構造は、以下のようになります。
ルールは特定のゾーンに関連付けられます。ゾーンには複数のルールを関連付けることができます。いくつ
かのルールが相互に作用する、または矛盾する場合は、パケットに適合する最初のルールが適用されます。
4.5.15.3. リッチルールのコマンドオプションについて
family
ソースおよび宛先のアドレス
source
ソースのアドレスを指定すると、接続試行の元を指定したソースアドレスに限定することができ
ます。ソースアドレスまたはアドレスの範囲は、IPv4 または IPv6 のマスクを伴う IP アドレ
スかネットワーク IP アドレスになります。ネットワーク family (IPv4 または IPv6) が自動的
に見つけられます。IPv4 のマスクは、ネットワークマスクか単純な番号になります。IPv6 の
マスクは、単純な番号になります。ホスト名の使用はサポートされていません。invert="true
または invert="yes" を追加すると、ソースアドレスコマンドの意味が逆になり、提供された
アドレス以外のものがマッチすることになります。
destination
宛先のアドレスを指定すると、ターゲットを指定した宛先アドレスに限定することができます。
宛先アドレスでは、ソースアドレスと同様の構文を使用します。ソースおよび宛先アドレスの使
用はオプションで、宛先アドレスの使用はすべての要素と使用できるわけではありません。これ
は、たとえばサービスエントリーにおける宛先アドレスの使用などによります。
要素
78
第4 章 ツールとサービスを使用したシステム強化
service
サービスが宛先アドレスを提供する場合、ルール内の宛先アドレスと競合し、エラーが発生しま
す。内部で宛先アドレスを使用するサービスのほとんどは、マルチキャストを使用するサービス
です。コマンドは以下の形式になります。
service name=service_name
port
protocol
プロトコルの値は、プロトコル ID 番号かプロトコル名になります。利用可能なプロトコルエン
トリーについては、/etc/protocols を参照してください。コマンドは以下の形式になりま
す。
protocol value=protocol_name_or_ID
icmp-block
icmp-block name=icmptype_name
masquerade
ルール内の IP マスカレードを有効にします。ソースアドレスを提供するとこの分野へのマスカ
レードを制限できますが、宛先アドレスは制限できません。ここではアクションの特定はできま
せん。
forward-port
79
セキュリティガイド
アドレスになります。ここではアクションの特定はできません。forward-port コマンドは
accept のアクションを内部で使用します。コマンドは以下の形式になります。
ロギング
log
s ys log などのカーネルロギングでルールへの新たな接続試行を記録します。ログメッセージに
接頭辞として追加される接頭辞テキストを定義することができます。ログレベル
は、emerg、alert、crit、error、warning、notice、info または debug のいずれか
になります。ログの使用はオプションです。ログの使用は以下のように制限できます。
audit
アクション
accept|reject|drop
4.5.15.4. リッチルールログコマンドの使用
80
第4 章 ツールとサービスを使用したシステム強化
zone_log
zone_deny
zone_allow
4.5.15.4.1. リッチルールログコマンドの使用例 1
4.5.15.4.2. リッチルールログコマンドの使用例 2
プロトコル FTP および audit を使用した 1 分あたり 1 件のログ用に新たな IPv4 および IPv6 接続を許
可します :
4.5.15.4.3. リッチルールログコマンドの使用例 3
4.5.15.4.4. リッチルールログコマンドの使用例 4
4.5.15.4.5. リッチルールログコマンドの使用例 5
4.5.15.4.6. リッチルールログコマンドの使用例 6
ソースアドレスをホワイトリスト化してそのソースからの接続すべてを許可します。
81
セキュリティガイド
4.5.16. ファイアウォールのロックダウン
4.5.16.1. ファイアウォールロックダウンの設定
Lockdown=yes
root で以下のコマンドを実行して、ファイアウォールをリロードします。
この設定を永続的にするには、--permanent オプションを追加します。
root でファイアウォールをリロードします。
これでコマンド実行が成功します。
4.5.16.2. コマンドラインクライアントを使用したロックダウンの設定
ロックダウンが有効になっているかどうかを確認するには、root で以下のコマンドを実行します。
82
第4 章 ツールとサービスを使用したシステム強化
ロックダウンを有効にするには、root で以下のコマンドを実行します。
ロックダウンを無効にするには、root で以下のコマンドを実行します。
4.5.16.3. コマンドラインを使用したロックダウンホワイトリストオプションの設定
ロックダウンのホワイトリストには、コマンドやセキュリティのコンテキスト、ユーザー、およびユーザー
ID を含めることができます。ホワイトリストのコマンドエントリーがアスタリスク 「*」 で終わっている
場合、そのコマンドで始まるすべてのコマンドラインがマッチすることになります。「*」 がなければ、引
数を含めたコマンドが完全に一致する必要があります。
~]$ ps -e --context
このコマンドで、実行中のアプリケーションすべてが返されます。grep ツールを使用して、出力から目的
のアプリケーションを以下のようにパイプ処理します。
ホワイトリストにあるコマンドラインすべてを一覧表示するには、root で以下のコマンドを実行します。
83
セキュリティガイド
ホワイトリストにあるセキュリティコンテキストすべてを一覧表示するには、root で以下のコマンドを実
行します。
この設定を永続的にするには、--permanent オプションを追加します。
この設定を永続的にするには、--permanent オプションを追加します。
この設定を永続的にするには、--permanent オプションを追加します。
この設定を永続的にするには、--permanent オプションを追加します。
ホワイトリストにあるユーザー名すべてを一覧表示するには、root で以下のコマンドを実行します。
84
第4 章 ツールとサービスを使用したシステム強化
この設定を永続的にするには、--permanent オプションを追加します。
この設定を永続的にするには、--permanent オプションを追加します。
4.5.16.4. 設定ファイルを使用したロックダウンホワイトリストオプションの設定
以下のホワイトリスト設定ファイルの例では、firewall-cmd ユーティリティーのコマンドと、ユーザー
ID が 815 である user のコマンドすべてを有効にしています。
この例では、--lockdown-on コマンドのみが許可されます。
85
セキュリティガイド
注記
4.5.17. その他のリソース
以下の情報ソースでは、firewalld に関する追加リソースが提供されています。
4.5.17.1. インストールされているドキュメント
86
第4 章 ツールとサービスを使用したシステム強化
ホットスポットの問題について
87
セキュリティガイド
DNSSEC 対応のリカーシブリゾルバー
Wi-Fi ホットスポットでは、ユーザーはインターネットへのアクセスを許可される前にサインオンページに
リダイレクトされる傾向が強まっています。上記で示された調査手順の間にリダイレクトが検出されると、
ユーザーはインターネットアクセスにログインが必要かどうかを尋ねるようにプロンプトが示されま
す。dnssec-trigger デーモンは 10 分ごとに DNSSEC リゾルバーをプローブし続けます。dnssec-
t rigger グラフィカルユーティリティーの使用に関する情報は、「Dns s e c-trigge r の使用」 を参照し
てください。
88
第4 章 ツールとサービスを使用したシステム強化
トリーすべてについてフラッシュされるので、そのドメインネーム内のネームに関するクエリは VPN 経由
で届いた内部ネームサーバーから新たにフェッチされます。VPN トンネルが終了すると、unbound
キャッシュが再度フラッシュされ、ドメインへのクエリが以前に獲得されたプライベート IP アドレスでは
なく、公開 IP アドレスを返すようにします。詳細は、「接続によって提供されるドメイン用の DNSSEC
検証の設定」 を参照してください。
4.6.5. 推奨される命名プラクティス
ICANN (The Inte rne t Corporation for As s igne d Name s and Numbe rs ) は、(.yourcompany な
どの) トップレベルの未登録ドメインを公開登録簿に追加することがあります。このため、Re d Hat では、
プライベートネットワーク上であっても委任されていないドメイン名を使用しないことを強く推奨していま
す。これは、ネットワーク設定によっては異なる解決をしてしまうドメインネームになってしまう可能性が
あるからです。その結果、ネットワークリソースは利用不可能になってしまいます。また、委任されていな
いドメイン名を使うと、DNSSEC の実装および維持がより困難になります。これは、ドメインネームが競
合すると DNSSEC 検証に手動の設定が必要となるからです。この問題に関する詳細情報は、ICANN FAQ
on domain name collis ion を参照してください。
4.6.6. トラストアンカーについて
unbound デーモンが稼働しているかどうかを確認するには、以下のコマンドを実行します。
89
セキュリティガイド
unbound デーモンは、以下のディレクトリーを使用してローカルデータの設定または上書きを可能にしま
す。
/etc/unbound/conf.d ディレクトリーは、特定のドメインネーム用の設定追加に使用されます。ド
メインネームのクエリを特定の DNS サーバーにリダイレクトするために使用されます。企業 WAN 内
にのみ存在するサブドメインに多く使用されます。
/etc/unbound/keys.d ディレクトリーは、特定のドメインネーム用のトラストアンカーの追加に使
用されます。これは、内部のみのネームが DNSSEC 署名されているものの、トラストのパスを構築す
るための DS レコードが公開で存在しない場合に必要になります。別のユースケースは、企業 WAN 外
で公開で入手可能なネームではない別の DNSKEY を使って署名された、内部バージョンのドメインの
場合になります。
dnssec-triggerd が稼働しているかどうかを確認するには、以下のコマンドを実行します。
90
第4 章 ツールとサービスを使用したシステム強化
DNSSEC が稼働しているかどうかを確認するには、様々なコマンドラインツールの使用が可能です。最適
なのは、bind-utils パッケージからの dig コマンドです。ldns パッケージからの drill とunbound パッ
ケージからの unbo und-ho st も有用です。nslo o kup および ho st という古い DNS ユーティリ
ティーは旧式なので使用しないでください。
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;whitehouse.gov. IN A
;; ANSWER SECTION:
whitehouse.gov. 20 IN A 72.246.36.110
whitehouse.gov. 20 IN RRSIG A 7 2 20 20130825124016 20130822114016 8399
whitehouse.gov. BB8VHWEkIaKpaLprt3hq1GkjDROvkmjYTBxiGhuki/BJn3PoIGyrftxR
HH0377I0Lsybj/uZv5hL4UwWd/lw6Gn8GPikqhztAkgMxddMQ2IARP6p
91
セキュリティガイド
wbMOKbSUuV6NGUT1WWwpbi+LelFMqQcAq3Se66iyH0Jem7HtgPEUE1Zc 3oI=
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;badsign-a.test.dnssec-tools.org. IN A
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;badsign-a.test.dnssec-tools.org. IN A
;; ANSWER SECTION:
badsign-a.test.dnssec-tools.org. 49 IN A 75.119.216.33
badsign-a.test.dnssec-tools.org. 49 IN RRSIG A 5 4 86400 20130919183720
20130820173720 19442 test.dnssec-tools.org.
E572dLKMvYB4cgTRyAHIKKEvdOP7tockQb7hXFNZKVbfXbZJOIDREJrr
zCgAfJ2hykfY0yJHAlnuQvM0s6xOnNBSvc2xLIybJdfTaN6kSR0YFdYZ
n2NpPctn2kUBn5UR1BJRin3Gqy20LZlZx2KD7cZBtieMsU/IunyhCSc0 kYw=
92
第4 章 ツールとサービスを使用したシステム強化
DNSSEC は、間違った取得または失効時間によってマニフェスト自体を誤解することが多くあります。た
だし上記の例では、www.dns s e c-tools .org のユーザーはわざとこの RRSIG 署名を分割しており、この
出力を見るだけでは検出できません。このエラーは systemctl status unbound の出力で表示さ
れ、unbound デーモンがこれらのエラーを syslo g に以下のように記録します。
以下は、unbound-host を使用した例です。
1. インターネット上で公開されているマシン上にウェブサーバーを設定します。Re d Hat
Ente rpris e Linux 7 システム管理者のガイドの We b サーバー の章を参照してください。
2. サーバーが稼働したら、既知のコンテンツがある静的ページを公開します。このページは、有効な
HTML ページである必要はありません。たとえば、hotspot.txt という名前のプレーンテキスト
ファイルで OK という文字列の内容だけでも構いません。サーバーが example.com にあり、そ
のサーバーのサブディレクトリー document_root/static/ に hotspot.txt ファイルを公
開したとすると、この静的ページのアドレスは、example.com/static/hotspot.txt になり
ます。Re d Hat Ente rpris e Linux 7 システム管理者のガイドの We b サーバー の章にある
DocumentRoot ディレクティブを参照してください。
93
セキュリティガイド
デフォルトでは、適切なネームサーバーのある転送ゾーンは、Wi-Fi 以外の接続が提供するドメインすべて
について dnssec-t rigger が自動的に Net wo rkManager で unbound に追加します。デフォルト
では、unbound に追加されるすべての転送ゾーンは DNSSEC 検証されています。
転送ゾーンの検証におけるデフォルト動作は変更可能なので、すべての転送ゾーンがデフォルトで
DNSSEC 検証されるわけれは ありません。すべてを検証するようにするには、 dnssec-t rigger 設定
ファイルである /etc/dnssec.conf にある validate_connection_provided_zones 変数を変
更します。root ユーザーでファイルを開き、以下のように行を編集します。
validate_connection_provided_zones=no
この変更は既存の転送ゾーンではなく、将来の転送ゾーンにのみ有効になります。このため、現在提供され
ているドメインについて DNSSEC を無効にするには、再接続が必要になります。
Wi-Fi が提供するゾーンへの転送ゾーンの追加を有効にすることができます。これを行うには、dnssec-
t rigger の設定ファイル /etc/dnssec.conf にある add_wifi_provided_zones 変数を変更しま
す。 root ユーザーでファイルを開き、以下のように行を編集します。
add_wifi_provided_zones=yes
この変更は既存の転送ゾーンではなく、将来の転送ゾーンにのみ有効になります。このため、現在 Wi-Fi が
提供するドメインについて DNSSEC を有効にするには、Wi-Fi 再接続 (再起動) が必要になります。
警告
4.6.12. その他のリソース
以下のリソースでは、DNSSEC について詳細な説明が提供されています。
4.6.12.1. インストールされているドキュメント
94
第4 章 ツールとサービスを使用したシステム強化
4.6.12.2. オンラインのドキュメント
ht t p://www.dnssec.net /
DNSSEC リソースに関する多くのリンクがあるウェブサイトです。
ht t p://www.unbo und.net /
95
セキュリティガイド
重要
Libreswan がインストールされているかどうかを確認するには、以下のコマンドを実行します。
~]# rm /etc/ipsec.d/*db
デーモンが稼働していることを確認します。
96
第4 章 ツールとサービスを使用したシステム強化
エンドポイントの認証には、3 つの一般的な方法が使用されます。
97
セキュリティガイド
以下で説明するように、この鍵を設定ファイルに追加する必要があります。
この鍵を設定ファイルに追加する必要があります。
このホスト間のトンネル用に設定ファイルを作成するには、上記の leftrsasigkey= と
rightrsasigkey= の各行を /etc/ipsec.d/ ディレクトリー内のカスタム設定ファイルに記載しま
す。Libreswan がカスタム設定ファイルを読み取れるようにするには、root でエディターを実行し、
メイン設定ファイルである /etc/ipsec.conf で以下の行の # 文字を削除します。これで、以下の行が
有効になります。
include /etc/ipsec.d/*.conf
root でエディターを使用して以下の形式で適切な名前のファイルを作成します。
/etc/ipsec.d/my_host-to-host.conf
以下のようにファイルを編集します。
conn mytunnel
leftid=@west.example.com
left=192.1.2.23
leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...]
W2n417C/4urYHQkCvuIQ==
rightid=@east.example.com
right=192.1.2.45
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
authby=rsasig
# load and initiate automatically
auto=start
左右両方のホストに同一の設定ファイルを使用することができます。ホストは「左」か「右」かを自動検出
します。ホストのいずれかがモバイルホストであり、IP アドレスが事前に分からない場合は、モバイルホ
98
第4 章 ツールとサービスを使用したシステム強化
ipsec を再起動して、変更された設定を読み込みます。
左右いずれかでトンネルを表示するには、root で以下のコマンドを実行します。
~]# tcpdump -n -i interface esp and udp port 500 and udp port 4500
00:32:32.632165 IP 192.1.2.45 > 192.1.2.23:
ESP(spi=0x63ad7e17,seq=0x1a), length 132
00:32:32.632592 IP 192.1.2.23 > 192.1.2.45:
ESP(spi=0x4841b647,seq=0x1a), length 132
00:32:32.632592 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 7, length 64
00:32:33.632221 IP 192.1.2.45 > 192.1.2.23:
ESP(spi=0x63ad7e17,seq=0x1b), length 132
00:32:33.632731 IP 192.1.2.23 > 192.1.2.45:
ESP(spi=0x4841b647,seq=0x1b), length 132
00:32:33.632731 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 8, length 64
00:32:34.632183 IP 192.1.2.45 > 192.1.2.23:
ESP(spi=0x63ad7e17,seq=0x1c), length 132
00:32:34.632607 IP 192.1.2.23 > 192.1.2.45:
ESP(spi=0x4841b647,seq=0x1c), length 132
00:32:34.632607 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 9, length 64
00:32:35.632233 IP 192.1.2.45 > 192.1.2.23:
ESP(spi=0x63ad7e17,seq=0x1d), length 132
00:32:35.632685 IP 192.1.2.23 > 192.1.2.45:
ESP(spi=0x4841b647,seq=0x1d), length 132
00:32:35.632685 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489,
seq 10, length 64
99
セキュリティガイド
注記
conn mysubnet
also=mytunnel
leftsubnet=192.0.1.0/24
rightsubnet=192.0.2.0/24
conn mysubnet6
also=mytunnel
connaddrfamily=ipv6
leftsubnet=2001:db8:0:1::/64
rightsubnet=2001:db8:0:2::/64
conn mytunnel
auto=start
leftid=@west.example.com
left=192.1.2.23
leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...]
W2n417C/4urYHQkCvuIQ==
rightid=@east.example.com
right=192.1.2.45
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
authby=rsasig
100
第4 章 ツールとサービスを使用したシステム強化
conn mysubnet
leftid=@west.example.com
leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...]
W2n417C/4urYHQkCvuIQ==
left=192.1.2.23
leftsourceip=192.0.1.254
101
セキュリティガイド
leftsubnet=192.0.1.0/24
rightid=@east.example.com
rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
right=192.1.2.45
rightsourceip=192.0.2.254
rightsubnet=192.0.2.0/24
auto=start
authby=rsasig
IPsec は、ハブおよびスポークのアーキテクチャーで導入されることがよくあります。各リーフノードに
は、広い範囲の一部である IP 範囲があります。各リーフはハブ経由で相互に通信します。これは、サブ
ネット押し出しと呼ばれます。下記の例では、ヘッドオフィスを 10.0.0.0/8 で設定し、2 つのブラン
チでは小型の /24 サブネットを使用します。
ヘッドオフィスでは以下のようになります。
conn branch1
left=1.2.3.4
leftid=@headoffice
leftsubnet=0.0.0.0/0
leftrsasigkey=0sA[...]
#
right=5.6.7.8
rightid=@branch1
righsubnet=10.0.1.0/24
rightrsasigkey=0sAXXXX[...]
#
auto=start
authby=rsasigkey
conn branch2
left=1.2.3.4
leftid=@headoffice
leftsubnet=0.0.0.0/0
leftrsasigkey=0sA[...]
#
right=10.11.12.13
rightid=@branch2
righsubnet=10.0.2.0/24
rightrsasigkey=0sAYYYY[...]
#
auto=start
authby=rsasigkey
conn branch1
left=1.2.3.4
leftid=@headoffice
leftsubnet=0.0.0.0/0
leftrsasigkey=0sA[...]
#
102
第4 章 ツールとサービスを使用したシステム強化
right=10.11.12.13
rightid=@branch2
righsubnet=10.0.1.0/24
rightrsasigkey=0sAYYYY[...]
#
auto=start
authby=rsasigkey
conn passthrough
left=1.2.3.4
right=0.0.0.0
leftsubnet=10.0.1.0/24
rightsubnet=10.0.1.0/24
authby=never
type=passthrough
auto=route
ロードウォリアーとは、ノート PC などのモバイルクライアントを使用する移動ユーザーのことで、これら
のクライアントには動的に IP アドレスが割り当てられます。これは、証明書を使って認証します。
サーバー上では以下の設定になります。
conn roadwarriors
left=1.2.3.4
# if access to the LAN is given, enable this
#leftsubnet=10.10.0.0/16
leftcert=gw.example.com
leftid=%fromcert
right=%any
# trust our own Certificate Agency
rightca=%same
# allow clients to be behind a NAT router
rightsubnet=vhost:%priv,%no
authby=rsasigkey
# load connection, don't initiate
auto=add
# kill vanished roadwarriors
dpddelay=30
dpdtimeout=120
dpdaction=%clear
ロードウォリアーのデバイスであるモバイルクライアント上では、上記の設定に多少変更を加えて使用しま
す。
conn roadwarriors
# pick up our dynamic IP
left=%defaultroute
leftcert=myname.example.com
leftid=%fromcert
# right can also be a DNS hostname
right=1.2.3.4
# if access to the remote LAN is required, enable this
#rightsubnet=10.10.0.0/16
103
セキュリティガイド
xauthby=file
user1:$apr1$MIwQ3DHb$1I69LzTnZhnCT2DPQmAOK.:remoteusers
xauthby=alwaysok
サーバーは常に、XAUTH ユーザーとパスワードの組み合わせが適切であるように装います。
サーバーはユーザー名とパスワードを無視しますが、クライアントはこれらを指定する必要があ
ります。これはユーザーが X.509 証明書で既に特定されている場合、もしくは XAUTH バック
エンドが不要な VPN をテストしている場合にのみ使用します。
X.509 証明書を使った設定例を以下に示します。
conn xauth-rsa
auto=add
authby=rsasig
pfs=no
rekey=no
104
第4 章 ツールとサービスを使用したシステム強化
left=ServerIP
leftcert=vpn.example.com
#leftid=%fromcert
leftid=vpn.example.com
leftsendcert=always
leftsubnet=0.0.0.0/0
rightaddresspool=10.234.123.2-10.234.123.254
right=%any
rightrsasigkey=%cert
modecfgdns1=1.2.3.4
modecfgdns2=8.8.8.8
modecfgdomain=example.com
modecfgbanner="Authorized Access is allowed"
leftxauthserver=yes
rightxauthclient=yes
leftmodecfgserver=yes
rightmodecfgclient=yes
modecfgpull=yes
xauthby=pam
dpddelay=30
dpdtimeout=120
dpdaction=clear
ike_frag=yes
# for walled-garden on xauth failure
# xauthfail=soft
#leftupdown=/custom/_updown
4.7.9. その他のリソース
4.7.9.1. インストールされているドキュメント
105
セキュリティガイド
4.7.9.2. オンラインのドキュメント
ht t ps://libreswan.o rg
アップストリームプロジェクトの We b サイトです。
o penssl コマンドラインユーティリティーには多くの擬似コマンドがあり、システムにインストールされ
た o penssl のバージョンが対応しているコマンドに関する情報を提供します。擬似コマンドlist-
standard-commands、list-message-digest-commands、および list-cipher-commands は
それぞれ、すべての標準コマンド一覧、メッセージダイジェストコマンド一覧、暗号コマンド一覧を出力し
ます。これは、現行の o penssl ユーティリティーで利用可能なものです。
4.8.1. 暗号鍵の作成と管理
OpenSSL では、公開鍵は対応する秘密鍵から生成されます。このため、アルゴリズムを決定した後に最
初に行うことは、秘密鍵の生成になります。以下の例では、秘密鍵を privkey.pem とします。たとえば、
デフォルトのパラメーターを使用して RSA 秘密鍵を作成するには、以下のコマンドを実行します。
RSA アルゴリズムは以下のオプションに対応しています。
106
第4 章 ツールとサービスを使用したシステム強化
4.8.2. 証明書の生成
OpenSSL を使って証明書を生成するには、秘密鍵が利用可能である必要があります。以下の例では、秘
密鍵を privkey.pem とします。秘密鍵をまだ生成していない場合は、「暗号鍵の作成と管理」 を参照し
てください。
4.8.2.1. 証明書署名要求の作成
CA に提出する証明書を作成するには、コマンドを以下の形式で実行します。
2 文字の国コード
州または県の名前
市または自治体
組織の名前
組織内の部署名
ユーザー名もしくはシステムのホスト名
Email アドレス
4.8.2.2. 自己署名証明書の作成
366 日間有効の自己署名証明書を生成するには、以下の形式でコマンドを実行します。
107
セキュリティガイド
~]$ openssl req -new -x509 -key privkey.pem -out selfcert.pem -days 366
~]$ cd /etc/pki/tls/certs/
~]$ make
4.8.3. 証明書の検証
CA 署名がされている証明書は、信頼できる証明書と呼ばれます。このため、自己署名証明書は、信頼され
ない証明書になります。検証ユーティリティーは、OpenSSL が通常の工程で使用するものと同じ SSL
および S/MIME 機能を使用します。エラーが見つかると報告され、他のエラーを見つけるためにテストを
継続する試みがなされます。
4.8.4. ファイルの暗号化および暗号化解除
暗号化エンジンを指定するには、-engine コマンドを以下のように使用します。
108
第4 章 ツールとサービスを使用したシステム強化
~]$ openssl pkeyutl -sign -in plaintext -out sigtext -inkey privkey.pem
署名されたデータファイルを検証し、データを抽出するには、以下のコマンドを実行します。
DSA 鍵などを使用した署名を検証するには、以下のコマンドを実行します。
~]$ openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem
4.8.5. メッセージダイジェストの生成
dgst コマンドは、十六進数形式で提供されたファイルのメッセージダイジェストを作成します。このコマ
ンドは、デジタル署名および検証にも使用できます。メッセージダイジェストコマンドは、以下の形式をと
ります。
4.8.6. パスワードハッシュの生成
passwd コマンドは、パスワードのハッシュを計算します。コマンドラインでパスワードのハッシュを計
算するには、以下のコマンドを実行します。
デフォルトでは、-crypt アルゴリズムが使用されます。
109
セキュリティガイド
s alt xx を使用してファイルに保存されているパスワードのハッシュを計算するには、以下のコマンドを実
行します。
4.8.7. ランダムデータの生成
シードファイルを使用してランダムなデータを含むファイルを生成するには、以下のコマンドを実行しま
す。
ランダムデータプロセスをシードするための複数ファイルは、コロン : 区切りのリストを使用して指定で
きます。
4.8.8. システムのベンチマーキング
あるアルゴリズムにおけるシステムの演算速度をテストするには、以下のコマンドを実行します。
『Inte rne t X.509 Public Ke y Infras tructure Ce rtificate and Ce rtificate Re vocation Lis t
(CRL) Profile 』
110
第4 章 ツールとサービスを使用したシステム強化
『Update s to the Inte rne t X.509 Public Ke y Infras tructure Ce rtificate and Ce rtificate
Re vocation Lis t (CRL) Profile 』
st unnel プログラムは、クライアントとサーバー間の暗号化ラッパーです。設定ファイルで指定された
ポートをリッスンし、クライアントとの通信を暗号化し、通常のポートでリッスンしているオリジナルの
デーモンにデータを転送します。こうすることで、それ自体で暗号化をサポートしていないサービスをセ
キュアにすることができます。また、SSL バージョン 2 や 3 など、POODLE SSL 脆弱性 (CVE-2014-
3566) の影響を受け、安全上の理由から使用を避けたい暗号化サービスのセキュリティを改善することも
できます。詳細は、https ://acce s s .re dhat.com/s olutions /1234773 を参照してください。CUPS
は、自身の設定で SSL を無効にする方法がないコンポーネントの例です。
st unnel の設定は、以下の手順にしたがいます。
1. st unnel とどのサービスを使うにしても、有効な証明書が必要になります。適切な証明書がない
場合は、認証機関 に申し込むか、自己署名の証明書を自身で作成することもできます。
警告
実稼働環境で稼働しているサーバーには、常に認証機関で署名された証明書を使用してくだ
さい。自己署名証明書は、テスト目的またはプライベートネットワークのみで使用すること
をお勧めします
認証局が提供する証明書についての詳細情報は、「証明書署名要求の作成」 を参照してくださ
い。st unnel 用に自己署名証明書を作成するには、root で /etc/pki/tls/certs/ ディレ
クトリーに移動し、以下のコマンドを実行します。
すべての質問に回答して、プロセスを完了します。
cert = /etc/pki/tls/certs/stunnel.pem
; Allow only TLS, thus avoiding SSL
sslVersion = TLSv1
111
セキュリティガイド
chroot = /var/run/stunnel
setuid = nobody
setgid = nobody
pid = /stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
[service_name]
accept = port
connect = port
TIMEOUTclose = 0
options = NO_SSLv2
options = NO_SSLv3
オプションの目的は、以下のとおりです。
cert — 証明書へのパスです。
socket — ローカルおよびリモートのソケットオプション。このケースでは、ネーグルのアル
ゴリズムを無効にして、ネットワーク遅延を改善します。
[service_name] — サービ定義の開始点。この下に続く行で使用されるオプションは、該当
サービスのみに適用されます。この上にあるオプションは、 st unnel でグローバルに適用さ
れます。
accept — リッスンするポートです。
connect — 接続先のポートです。このポートは、セキュアにしているサービスが使用するも
のである必要があります。
[cups]
accept = 632
connect = 631
112
第4 章 ツールとサービスを使用したシステム強化
4. 使用中のシステムでファイアウォールが新たなポートへのアクセスを許可しない設定となっている
場合は、この設定を許可するように変更します。詳細は、「ファイアウォールでポートを開く」 を
参照してください。
4.10. 暗号化
LUKS の概要
LUKS の機能
LUKS はブロックデバイス全体を暗号化するため、脱着可能なストレージメディアやノート
PC のディスクドライブといった、モバイルデバイスのコンテンツ保護に適しています。
暗号化されたブロックデバイスにあるのは任意のコンテンツです。これは、スワップ デバイ
スの暗号化に役立ちます。また、とりわけデータストレージ用にフォーマットしたブロック
デバイスを使用する特定のデータベースに関しても有用です。
113
セキュリティガイド
LUKS は既存のデバイスマッパーカーネルサブシステムを使用します。
LUKS はパラフレーズの強化を提供し、辞書攻撃から保護します。
LUKS デバイスには複数のキースロットが含まれ、ユーザーはこれを使ってバックアップ
キーやパスフレーズを追加できます。
LUKS でできないこと:
LUKS は、ファイルレベルの暗号化を必要とするアプリケーションには適していません。
Se rpe nt
4.10.1.2. 手動でのディレクトリーの暗号化
警告
以下の手順を実行すると、暗号化しているパーティションの既存データがすべて削除されます。す
べての情報が失われてしまうので、この手順を開始する前に、外部ソースへのデータのバックアッ
プを必ず行なってください。
telinit 1
umount /home
114
第4 章 ツールとサービスを使用したシステム強化
4. /home がもはやマウントされていないことを確認します。
5. パーティションをランダムなデータで埋めます。
このコマンドは、デバイスの連続書き込み速度で実行され、完了までに時間がかかる場合がありま
す。使用デバイスに暗号化されていないデータが残っていないことを確認した上で、デバイスの暗
号化されたデータを含む部分を難読化するのは重要なステップです。
6. パーティションを初期化します。
7. 新たに暗号化したデバイスを開きます。
8. デバイスがあることを確認します。
9. ファイルシステムを作成します。
mkfs.ext3 /dev/mapper/home
10. ファイルシステムをマウントします。
11. ファイルシステムが表示されていることを確認します。
df -h | grep home
115
セキュリティガイド
/sbin/restorecon -v -R /home
15. マシンを再起動します。
shutdown -r now
これですべてのデータ用に暗号化されたパーティションを設定できたので、コンピューターをオフにしてい
る間もデータを安全に保管できます。
4.10.1.3. 既存デバイスへの新規パスフレーズの追加
既存デバイスに新規パスフレーズを追加するには、以下のコマンドを使用します。
認証のために既存のパスフレーズが尋ねられた後に、新規パスフレーズの入力を求めるプロンプトが出され
ます。
4.10.1.4. 既存のデバイスからのパスフレーズ削除
既存のデバイスからパスフレーズを削除するには、以下のコマンドを使用します。
削除したいパスフレーズを求めるプロンプトの後に、認証に必要な残りのパスフレーズを求めるプロンプト
が出されます。
システムのインストール時に、暗号化されたデバイスを作成することができます。これにより、 暗号化
パーティションを含むシステムを簡単に設定することができます。
ブロックデバイスの暗号化を有効にするには、自動パーティション設定を選択している場合は システムの
暗号化 チェックボックスに、個別パーティション、ソフトウェア RAID アレイまたは論理ボリュームを
作成している場合は 暗号化 チェックボックスにチェックを入れます。パーティション設定が終了した
ら、暗号化のパスフレーズが尋ねられます。このパスフレーズは暗号化したデバイスへのアクセスに必要と
なります。LUKS デバイスが事前に存在しており、インストールプロセスの当初にそれらの正しいパスフ
レーズを指定している場合には、チェックボックスのあるパスフレーズ入力ダイアログが表示されます。こ
のチェックボックスにチェックを入れると、既存の暗号化ブロックデバイスの利用可能なスロットに新規
パスフレーズを追加することになります。
注記
116
第4 章 ツールとサービスを使用したシステム強化
注記
kickstart を使用すると、新たに暗号化されたブロックデバイスのパスフレーズを個別に設定す
ることができます。
4.10.1.6. その他のリソース
HOWTO: Cre ating an e ncrypte d Phys ical Volume (PV) us ing a s e cond hard drive and
pvmove
2. 鍵を作成するには、アプリケーション → アクセサリメニューから、パスワードと暗号鍵を選択し
ます。これでアプリケーション Seaho rse が起動します。
警告
パスフレーズを忘れると、データの暗号解除ができなくなります。
117
セキュリティガイド
2. ダイアログボックスで、新しい鍵ペアを生成するよう求められます。名前、電子メールアドレス、
およびオプションのコメントを入力します。鍵の長さ (ビット数) とアルゴリズムに加え、鍵の有効
期限も選択できます。
警告
パスフレーズを忘れると、データの暗号解除ができなくなります。
1. 次のシェルコマンドを使用します。
このコマンドは、公開鍵と秘密鍵で構成される鍵ペアを生成します。受信側では、ユーザーからの
通信の認証や暗号化解除を行うためにこのユーザーの公開鍵を使用します。そのため、とりわけ
メーリングリストのように、送信者からの認証済みの通信を受け取ることを希望すると思われる
人々に向けて、できる限り幅広く公開鍵を配布してください。
2. 一連のプロンプトにしたがってプロセスを進めます。デフォルト値を割り当てる場合は Enter
キーを押します。最初のプロンプトは、使用を希望する鍵の種類を選択するよう尋ねます。
ほとんど多くの場合、デフォルトが適切な選択になります。RSA/RSA 鍵を選択すると、通信に署
名するだけでなく、ファイルを暗号化することができます。
3. 鍵のサイズを選択します。
118
第4 章 ツールとサービスを使用したシステム強化
5. gpg2 プログラムが署名情報を尋ねる前に、以下のプロンプトが表示されます。
y を入力してプロセスを終了します。
6. GPG 鍵用に氏名と電子メールアドレスを入力します。このプロセスは、ユーザーを個人として認証
するためのものです。このため、本当の名前を入力してください。偽の電子メールアドレスを選択
すると、他の人があなたの公開鍵を見つけにくくなります。これにより、通信の認証が困難になり
ます。例えば、メーリングリストの自己紹介にこの GPG 鍵を使用する場合、そのリストで使用し
ている電子メールアドレスを入力します。
コメントフィールドには、エイリアスやその他の情報を記載します。(一部の人は、目的別に複数の
鍵を使用しており、「オフィス」または「オープンソースプロジェクト」などのコメントを付けて
それぞれの鍵を識別しています。)
7. すべてのエントリーが正しければ、確認プロンプトで O と入力して続行するか、または問題がある
場合はそれを修正するために他のオプションを使用します。最後に、秘密鍵のパスフレーズを入力
します。gpg2 プログラムは、入力エラーがないことを確認するためにパスフレーズを 2 回入力す
るように指示します。
8. 最後に、gpg2 はランダムなデータを生成して鍵を可能な限り一意なものにします。このプロセス
をスピードアップするには、この手順の実行中にマウスを動かし、ランダムなキーを入力するか、
またはシステム上で他のタスクを実行します。この手順が完了すると、鍵が完成して使用可能な状
態になります。
9. 鍵のフィンガープリントは、あなたの鍵の「署名」の短縮版です。これを使って、他の人々があな
たの実際の公開鍵を (改ざんされない状態で) 受け取ったことを確認することができます。このフィ
ンガープリントを書き留めておく必要はありません。フィンガープリントを表示するには、以下の
コマンドをあなたの電子メールアドレスに置き換えて使用します。
119
セキュリティガイド
警告
パスフレーズを忘れると、鍵を使うことができなくなり、その鍵で暗号化されたすべてのデータが失
われます。
4.10.2.4. 公開鍵の暗号化について
2. HowStuffWorks - Encryption
使用するハードウェアトークンのタイプによっては、特別なユースケース用のサポートを提供する追加パッ
ケージのインストールが必要になる場合もあります。たとえば、Trusted Platform Module (TPM) デバイ
ス用のサポートを入手するには、opencryptoki-tpmtok パッケージをインストールする必要があります。
ブート時にサービスが自動的に起動するには、以下のコマンドを実行します。
120
第4 章 ツールとサービスを使用したシステム強化
このファイルは、鍵と値のペアを使用して個別スロットを定義します。各スロットの定義には、説明、使用
するトークンライブラリーの仕様、およびスロットの製造者の ID が含まれます。オプションでは、スロッ
トのハードウェアおよびファームウェアのバージョンを定義することもできます。ファイル形式の説明、
個別の鍵およびその鍵に割り当てられる値の詳細な説明は、ope ncryptoki.conf(5) man ページを参照し
てください。
~]$ pkcsconf -t
警告
pkcs11 グループには、完全に信頼できるユーザーのみを割り当ててください。このグループのメ
ンバーは、o penCrypt o ki サービスの他のユーザーが設定済み PKCS#11 トークンへアクセスで
きなくすることができます。またこのグループのメンバーは、o penCrypt o ki の他のユーザーの
権限で任意のコードを実行することができます。
4.10.4. 信頼できる鍵および暗号化された鍵
信頼できる鍵および暗号化された鍵 は、カーネルキーリングサービスを使用するカーネルが生成する可変
長のシンメトリックキーです。この鍵はユーザースペースでは暗号解除された形式で表示されないので、そ
の整合性が検証可能になります。このため、たとえば拡張検証モジュール (EVM) がこの鍵を使用して稼働
中のシステムの整合性を検証かつ確認することができるようになります。ユーザーレベルのプログラムがア
クセス可能なのは、暗号化された ブロブ の形式での鍵のみです。
121
セキュリティガイド
等のものでしかないという欠点があります。
4.10.4.1. 鍵を使った作業
鍵を使う操作の前には、関連するカーネルモジュールの読み込みが必要になります。信頼できる鍵の場合は
t rust ed モジュール、暗号化された鍵の場合は encrypt ed-keys モジュールです。root ユーザーで
以下のコマンドを実行して、これらモジュールの両方を同時に読み込みます。
keyct l ユーティリティーを使って信頼できる鍵と暗号化された鍵の作成、読み込み、エクスポート、更新
ができます。keyct l の使用に関する詳細情報は、ke yctl(1) を参照してください。
注記
上記の構文を使用したコマンド例は以下のようになります。
print サブコマンドは、暗号化された鍵を標準出力に出します。この鍵をユーザースペースのブロブにエ
クスポートするには、以下のように pipe サブコマンドを使用します。
信頼できる鍵をユーザースペースのブロブから読み込むには、add コマンドでブロブを引数として使用しま
す。
122
第4 章 ツールとサービスを使用したシステム強化
上記の構文に基づき、既存の信頼できる鍵を使って暗号化された鍵を生成するコマンドは以下のようになり
ます。
TPM が利用できないシステムで暗号化された鍵を作成するには、任意の数の列を使ってユーザーキーを生
成し、それを使って実際の暗号化された鍵を保護します。
その後に、任意の数のユーザーキーを使って暗号化された鍵を生成します。
list サブコマンドを使うと、指定されたカーネルキーリング内のすべての鍵を一覧表示できます。
重要
マスターの信頼できる鍵で保護されていない暗号化された鍵の安全性は、その鍵の暗号化に使用され
たユーザーマスターキー (任意の数の鍵) と同等にしかならないことに注意してください。このた
め、マスターユーザーキーはできるだけ安全に、可能であればブートプロセスの初期に、読み込むよ
うにしてください。
4.10.4.2. その他のリソース
以下のオフラインおよびオンラインのリソースでは、信頼できる鍵および暗号化された鍵に関する追加情報
が提供されています。
インストールされているドキュメント
オンラインのドキュメント
123
セキュリティガイド
Re d Hat Ente rpris e Linux 7 SELinux Us e r's and Adminis trator's Guide — Re d Hat
Ente rpris e Linux 7 の 『SELinux Us e r's and Adminis trator's Guide 』 では、SELinux の原則
と、SELinux を設定して Apache HT T P Server などのさまざまなサービスで使用する方法が詳
細に説明されています。
https ://www.ke rne l.org/doc/Docume ntation/s e curity/ke ys -trus te d-e ncrypte d.txt — Linux
カーネルの信頼できる鍵および暗号化された鍵に関する機能についての公式ドキュメントです。
関連項目
「公開鍵暗号」 では、公開鍵の暗号化のアプローチとそこで使用される様々な暗号化プロトコルについ
て説明しています。
4.11. T LS 設定の強化
4.11.1. 有効にするアルゴリズムの選択
選択して設定する必要があるコンポーネントがいくつかあります。以下で説明するものはすべて、その設定
結果 (つまり、クライアントにおけるサポートレベル) やシステム上でソリューションが持つコンピュー
ターのデマンドに直接影響します。
プロトコルのバージョン
124
第4 章 ツールとサービスを使用したシステム強化
注記
プロトコルのバージョンおよび推奨される使用方法についての概要は、表4.6「プロトコルのバージョン」
を参照してください。
表4.6 プロトコルのバージョン
プロトコルの 推奨される使用方法
バージョン
SSL v2 使用しないでください。重大なセキュリティ上の脆弱性があります。
SSL v3 使用しないでください。重大なセキュリティ上の脆弱性があります。
TLS v1.0 必要な場合は、相互運用性目的で使用します。相互運用性を保証する方法では緩和でき
ない既知の問題があります。このため、緩和策はデフォルトでは有効になっていませ
ん。最新の暗号化スイートには対応していません。
TLS v1.1 必要な場合は、相互運用性目的で使用します。既知の問題はありませんが、Re d Hat
Ente rpris e Linux の TLS 実装すべてに含まれるプロトコル修正に依存します。最新
の暗号化スイートには対応していません。
TLS v1.2 推奨されるバージョンです。最新の AEAD 暗号化スイートに対応しています。
重要
暗号化スイート
128 ビット未満のセキュリティしか提供しない暗号化スイートは直ちに不安というわけではありません
が、これらは短期間の使用に考慮すべきではありません。128 ビット以上のセキュリティを使用するアル
125
セキュリティガイド
ゴリズムは少なくとも数年間は解読不可能であることが期待されているので、強く推奨されます。3DES 暗
号は 168 ビットの使用といわれていますが、実際に提供されているのは 112 ビットのセキュリティであ
ることに注意してください。
公開鍵の長さ
警告
システムのセキュリティ強度は、チェーンの中の最も弱いリンクが示すものと同じであるというこ
とを念頭に置いてください。たとえば、強力な暗号化だけではすぐれたセキュリティは保証されま
せん。鍵と証明書も同様に重要で、 認証機関 (CA) が鍵の署名に使用するハッシュ機能と鍵もまた重
要になります。
4.11.2. T LS 実装の使用
「有効にするアルゴリズムの選択」 で示された推奨事項を検討するとともに、各種の実装で含まれている
ツールを使って、ご自分のユースケースにとって最善のセキュリティを提供する暗号化スイートを一覧表
示、指定してください。そこでできた暗号化スイートを使って、各アプリケーションが接続を処理してセ
キュア化することができます。
重要
126
第4 章 ツールとサービスを使用したシステム強化
「有効にするアルゴリズムの選択」 の推奨事項を満たす暗号化スイートを一覧表示するには、以下のよう
なコマンドを実行します。
127
セキュリティガイド
これはやや厳密な設定であることに注意してください。現実には条件を多少緩和して、より広い範囲のクラ
イアントとの互換性を可能にする必要があるかもしれません。
注記
~]$ gnutls-cli -l
-l オプションで表示された暗号化スイート一覧を絞り込むには、ひとつ以上のパラメーター GnuT ( LS
ドキュメンテーションでは priority strings および keywords と呼ばれる) を --priority オプション
に渡します。利用可能な priority s trings の全一覧
は、http://www.gnutls .org/manual/gnutls .html#Priority-Strings にある GnuT LS ドキュメンテー
ションを参照してください。たとえば、少なくとも 128 ビットのセキュリティを提供する暗号化スイート
一覧を表示するには、以下のコマンドを実行します。
「有効にするアルゴリズムの選択」 の推奨事項を満たす暗号化スイートを一覧表示するには、以下のよう
なコマンドを実行します。
128
第4 章 ツールとサービスを使用したシステム強化
これはやや厳密な設定であることに注意してください。現実には条件を多少緩和して、より広い範囲のクラ
イアントとの互換性を可能にする必要があるかもしれません。
4.11.3. 特定アプリケーションの設定
アプリケーションはそれぞれ、TLS 用に個別の設定メカニズムを提供します。本セクションでは、最も一
般的に使用されているサーバーアプリケーションが使用する TLS 関連の設定ファイルについて説明し、よ
くある説明例を示します。
129
セキュリティガイド
/etc/httpd/conf.d/ssl.conf 設定ファイルの設定を修正する場合は、少なくとも下記の 3 つの
ディレクティブを確認してください。
SSLProtocol
SSLCipherSuite
優先する暗号化スイートを指定する、もしくは許可しないスイートを無効にするディレクティブ
です。
SSLHonorCipherOrder
コメントを解除して、このディレクティブを on に設定すると、接続先のクライアントが指定さ
れた暗号化の命令に従います。
例を示します。
上記の設定は最小限のものであり、「有効にするアルゴリズムの選択」 にある推奨事項にしたがうことで
さらに強化できることに注意してください。
/etc/dovecot/conf.d/10-ssl.conf 設定ファイルの設定を修正する場合は、少なくとも下記の 3
つのディレクティブを確認してください。
ssl_protocols
ssl_cipher_list
130
第4 章 ツールとサービスを使用したシステム強化
優先する暗号化スイートを指定する、もしくは許可しないスイートを無効にするディレクティブ
です。
ssl_prefer_server_ciphers
例を示します。
上記の設定は最小限のものであり、「有効にするアルゴリズムの選択」 にある推奨事項にしたがうことで
さらに強化できることに注意してください。
4.11.4. その他の情報
T LS の設定および関連トピックについての詳細情報は、以下に挙げるリソースを参照してください。
インストールされているドキュメント
/usr/share/doc/dovecot-2.2.10/wiki/SSL.DovecotConfiguration.txt —
Do veco t メールサーバーが使用する /etc/dovecot/conf.d/10-ssl.conf 設定ファイルで使
用可能な基本的設定ディレクティブについて説明しています。
オンラインのドキュメント
Re d Hat Ente rpris e Linux 7 SELinux Us e r's and Adminis trator's Guide — Re d Hat
Ente rpris e Linux 7 の 『SELinux Us e r's and Adminis trator's Guide 』 では、SELinux の原則
と、SELinux を設定して Apache HT T P Server などのさまざまなサービスで使用する方法が詳
細に説明されています。
関連項目
131
セキュリティガイド
第5章 システム監査
Audit がログファイルに記録できる情報のいくつかを、以下のリストで要約しています。
イベントの日付と時間、タイプ、結果。
サブジェクトとオブジェクトの機密性のラベル。
イベントを開始したユーザーの ID とイベントの関連性。
/etc/passwd のような、信頼できるデータベースへの変更。
システムからの情報のインポートおよびシステムへの情報のエクスポートの試行。
Audit は以下でも認定されています。
National Information As s urance Partne rs hip (NIAP) および Be s t Se curity Indus trie s (BSI)
による評価。
Re d Hat Ente rpris e Linux 6 上での Ope rating Sys te m Prote ction Profile / Evaluation
As s urance Le ve l 4+ (OSPP/EAL4+) の認定。
使用例
ファイルアクセスの監視
Audit は、ファイルやディレクトリーがアクセス、修正、実行されたか、またはファイル属性が
変更されたかを追跡することができます。これはたとえば、重要なファイルへのアクセスを検出
132
第5章 システム監査
変更されたかを追跡することができます。これはたとえば、重要なファイルへのアクセスを検出
し、これらのファイルが破損した場合に監査証跡を入手可能とする際に便利なものです。
システムコールの監視
Audit は、特定のシステムコールが使用されるたびにログエントリーを生成するように設定でき
ます。これを使用すると、settimeofday や clock_adjtime、その他の時間関連のシステム
コールを監視することで、システム時間への変更を追跡できます。
ユーザーが実行したコマンドの記録
Audit はファイルが実行されたかどうかを追跡できるので、特定のコマンドの実行を毎回記録す
るようにいくつものルールを定義することができます。たとえば、/bin ディレクトリー内の実
行可能ファイルすべてについてルールを定義することができます。その結果できるログエント
リーをユーザー ID で検索すると、ユーザーごとに実行されたコマンドの監査証跡を生成するこ
とができます。
セキュリティイベントの記録
pam_faillock 認証モジュールは、失敗したログイン試行を記録することができます。Audit
で失敗したログイン試行も記録するように設定すると、ログインを試みたユーザーについての追
加情報が提供されます。
イベントの検索
サマリーレポートの実行
aurepo rt ユーティリティーを使うと、記録されたイベントのデイリーレポートを生成するこ
とができます。システム管理者は、このレポートを分析し、疑わしいアクティビティーをさらに
調べることができます。
ネットワークアクセスの監視
注記
システムのパフォーマンスは、Audit が収集する情報量によって影響される可能性があります。
Audit システムは、ユーザースペースアプリケーションおよびユーティリティーと、カーネル側のシステム
コール処理という 2 つの主要パートで構成されます。カーネルコンポーネントは、ユーザースペースアプ
リケーションからシステムコールを受け、これを user、t ask、または exit のいずれかのフィルターで
振り分けます。システムコールがフィルターのどれかを通過すると、exclude フィルターに掛けられま
す。このフィルターは Audit ルール設定に基づいて、システムコールを Audit デーモンに送信してさらに
処理します。図5.1「Audit システムのアーキテクチャー」 では、このプロセスを示しています。
133
セキュリティガイド
134
第5章 システム監査
space_left パラメーターは、ここで指定した値にディスク上の残りの空きスペースが達する
と、space_left_action パラメーターで定義したアクションが起動します。s pace _le ft で指定す
るディスクの残り空きスペースの値は大きなものに設定し、これがなくなる前に管理者が対応してス
ペースを利用可能にできるようにすべきです。space_left の値は、Audit ログファイルが生成され
るレートによって異なります。
admin_space_left パラメーターは、ここで指定した値にディスク上の残りの空きスペースが達する
と、admin_space_left_action パラメーターで定義したアクションが起動します。
admin_s pace _le ft の値は大きなものに設定し、管理者が実行するアクションをログ記録できるように
する必要があります。
残りの設定オプションは、ローカルのセキュリティポリシーにあわせて設定します。
135
セキュリティガイド
Audit システムは、ログファイルにキャプチャーされるものを定義するルールセットで作動します。指定
可能な Audit ルールには、以下の 3 つのタイプがあります。
ファイルシステムルール — ファイルウォッチとも呼ばれ、特定のファイルまたはディレクトリーへの
アクセスの監査が可能になります。
システムコールルール — 特定のプログラムが実行するシステムコールのログ記録が可能になります。
注記
制御ルールの定義
以下の制御ルールを使うと、Audit システムの動作が修正できます。
136
第5章 システム監査
-b
-f
重大なエラーが検出された際に実行されるアクションを設定します。例を示します。
~]# auditctl -f 2
上記の設定では、重大なエラーが発生した際にカーネルパニックが起動されます。
-e
Audit システムを有効または無効にする、もしくは設定をロックします。例を示します。
~]# auditctl -e 2
上記のコマンドは、Audit 設定をロックします。
-r
1 秒あたりに生成されるメッセージ数を設定します。例を示します。
~]# auditctl -r 0
上記の設定では、生成されるメッセージ数は制限されません。
-s
Audit システムのステータスをレポートします。例を示します。
~]# auditctl -s
AUDIT_STATUS: enabled=1 flag=2 pid=0 rate_limit=0
backlog_limit=8192 lost=259 backlog=0
-l
~]# auditctl -l
LIST_RULES: exit,always watch=/etc/localtime perm=wa key=time-
change
LIST_RULES: exit,always watch=/etc/group perm=wa key=identity
LIST_RULES: exit,always watch=/etc/passwd perm=wa key=identity
LIST_RULES: exit,always watch=/etc/gshadow perm=wa key=identity
⋮
-D
~]# auditctl -D
No rules
137
セキュリティガイド
ファイルシステムルールの定義
ファイルシステムのルールを定義するには、以下の構文を使用します。
ここでは、
path_to_file は、監査対象のファイルもしくはディレクトリーになります。
permissions は、ログ記録されるパーミッションになります。
r — ファイルまたはディレクトリーの読み取りアクセスです。
w — ファイルまたはディレクトリーの書き込みアクセスです。
x — ファイルまたはディレクトリーの実行アクセスです。
a — ファイルまたはディレクトリーの属性を変更します。
key_name は、どのルールまたはルールセットが特定のログエントリーを生成したかを特定する際に役
立つオプションの文字列です。
例5.1 ファイルシステムルール
/etc/passwd ファイルへのすべての書き込みアクセスとこのファイルのすべての属性変更をログ記録
するルールを定義するには、以下のコマンドを実行します。
-k オプションに続く文字列は任意のものであることに注意してください。
/etc/selinux/ ディレクトリー内の全ファイルへのすべての書き込みアクセスとこれらファイルのす
べての属性変更をログ記録するルールを定義するには、以下のコマンドを実行します。
システムコールルールの定義
システムコールのルールを定義するには、以下の構文を使用します。
ここでは、
138
第5章 システム監査
指定します。ルール適合フィルターは、task、exit、user、exclude のいずれかになります。これ
らフィルターの詳細については、「Audit システムのアーキテクチャー」 の最初の部分を参照してくだ
さい。
system_call は、名前でシステムコールを指定します。システムコールの全一覧
は、/usr/include/asm/unistd_64.h ファイルで確認できます。複数のシステムコールをひとつ
のグループにまとめて、-S オプションの後にそれらを指定することも可能です。
key_name は、どのルールまたはルールセットが特定のログエントリーを生成したかを特定する際に役
立つオプションの文字列です。
例5.2 システムコールのルール
システムコールルールの構文を使って、ファイルシステムのルールを定義することもできます。以下の
コマンドでは、-w /etc/shadow -p wa ファイルシステムルールに似たシステムコールのルールが
作成されます。
制御ルールの定義
139
セキュリティガイド
ファイルシステムおよびシステムコールのルールの定義
ファイルシステムおよびシステムコールのルールは、auditctl 構文を使って定義します。「audit ct l
ユーティリティーを使った Audit ルールの定義」 の例は、以下のルールファイルのようになります。
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -p x -k module_insertion
事前設定ルールのファイル
nispom.rules — NISPOM (National Indus trial Se curity Program Ope rating Manual) の第 8
章で指定されている要件に合致する、Audit ルール設定です。
capp.rules — Common Crite ria 認証の一部である Controlle d Acce s s Prote ction Profile
(CAPP) が設定している要件に合致する、Audit ルール設定です。
lspp.rules — Common Crite ria 認証の一部である Labe le d Se curity Prote ction Profile
(LSPP) が設定している要件に合致する、Audit ルール設定です。
140
第5章 システム監査
最初の記録
type=SYSCALL
type フィールドには、記録のタイプが記載されます。この例では、この記録がカーネルへのシ
ステムコールで開始されたことを SYSCALL の値が示しています。
msg=audit(1364481363.243:24287):
msg フィールドでは以下を記録しています。
141
セキュリティガイド
arch=c000003e
syscall=2
syscall フィールドは、カーネルに送信されたシステムコールのタイプを記録します。2 とい
う値は、/usr/include/asm/unistd_64.h ファイル内の ヒューマンリーダブルに相当する
ものにマッチします。このケースでは、2 は open システムコールになります。ausyscall
ユーティリティーを使うと、システムコール番号をヒューマンリーダブルなものに変換できるこ
とに注意してください。ausyscall --dump コマンドを実行すると、システムコールすべてと
それらの番号一覧が表示されます。詳細情報は、aus ys call(8) man ページを参照してくださ
い。
success=no
success フィールドは、その特定のイベントで記録されたシステムコールが成功したかどうか
を記録します。このケースでは、コールは成功しませんでした。
exit=-13
exit フィールドには、システムコールが返した終了コードを指定する値が含まれています。こ
の値は、システムコールによって異なります。以下のコマンドを使うと、この値をヒューマン
リーダブルなものに変換できます。 ausearch --interpret --exit -13 (Audit ログに
終了コード -13 で失敗したイベントが含まれていることが前提)。
a0 から a3 までのフィールドは、このイベントにおけるシステムコールの最初の 4 つの引数を
十六進法で記録します。これらの引数は、使用されているシステムコールによって異なりま
す。ausearch ユーティリティーでこれらを変換できます。
items=1
items フィールドには、イベントのパス記録の数が含まれています。
ppid=2686
pid=3538
auid=500
142
第5章 システム監査
uid=500
gid=500
euid=500
suid=500
fsuid=500
fsuid フィールドは、分析されているプロセスを開始したユーザーのファイルシステムユーザー
ID を記録します。
egid=500
sgid=500
fsgid=500
fsgid フィールドは、分析されているプロセスを開始したユーザーのファイルシステムグループ
ID を記録します。
tty=pts0
tty フィールドは、分析されているプロセスが開始されたターミナルを記録します。
ses=1
comm="cat"
comm フィールドは、分析されているプロセスを開始するために使用されたコマンドのコマンド
ライン名を記録します。このケースでは、cat コマンドを使ってこの Audit イベントが開始され
ました。
exe="/bin/cat"
143
セキュリティガイド
exe フィールドは、分析されているプロセスを開始するために使用された実行可能ファイルへの
パスを記録します。
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
key="sshd_config"
2 番目の記録
type=CWD
msg=audit(1364481363.243:24287)
cwd="/home/shadowman"
cwd フィールドは、システムコールが開始されたディレクトリーへのパスになります。
3 番目の記録
type=PATH
msg=audit(1364481363.243:24287):
item=0
name="/etc/ssh/sshd_config"
name フィールドは、システムコールに引数として渡されたファイルまたはディレクトリーへの
完全パスを記録します。このケースでは、/etc/ssh/sshd_config ファイルとなります。
inode=409248
144
第5章 システム監査
inode フィールドには、このイベントで記録されたファイルまたはディレクトリーに関連する
inode 番号が含まれます。以下のコマンドを実行すると、409248 inode 番号に関連するファ
イルまたはディレクトリーが表示されます。
dev=fd:00
dev フィールドは、このイベントで記録されたファイルまたはディレクトリーを含むデバイスの
マイナーおよびメジャー ID を示します。このケースでは、値は /dev/fd/0 デバイスを示して
います。
mode=0100600
mode フィールドは、ファイルまたはディレクトリーパーミッションを数字表記でエンコードさ
れた形で記録します。このケースでは、0100600 は -rw------- に変換可能です。つまり、
root ユーザーにのみ、/etc/ssh/sshd_config ファイルへの読み取りおよび書き込みパー
ミッションがあることをなります。
ouid=0
ogid=0
rdev=00:00
rdev フィールドには、特定なファイルにのみ使われる、記録されたデバイス識別子が含まれま
す。このケースでは、記録されたファイルは通常のファイルなので、使われていません。
obj=system_u:object_r:etc_t:s0
obj フィールドは、実行時に記録されたファイルまたはディレクトリーにラベル付けされる
SELinux コンテキストを記録します。
145
セキュリティガイド
すべてのアカウント、グループ、役割変更を検索するには、以下のコマンドを実行します。
昨日から現在までに失敗したすべてのシステムコールを検索するには、以下のコマンドを実行します。
今日を除いた過去 3 日間にログ記録されたイベントのレポートを生成するには、以下のコマンドを実行
します。
146
第5章 システム監査
実行可能ファイルのイベントすべてについてのレポートを生成するには、以下のコマンドを実行しま
す。
~]# aureport -x
上記の実行可能ファイルのレポートのサマリーを生成するには、以下のコマンドを実行します。
全ユーザーの失敗したイベントのレポートサマリーを生成するには、以下のコマンドを実行します。
システムユーザーごとのすべてのログイン試行失敗のレポートサマリーを生成するには、以下のコマンド
を実行します。
~]# aureport -t
5.9. その他のリソース
Audit システムについての詳細情報は、以下のリソースを参照してください。
オンラインのリソース
Hack In the Box 誌の記事 『Inve s tigating ke rne l Re turn Code s with the Linux Audit
Sys te m』 : http://magaz ine .hackinthe box.org/is s ue s /HITB-Ez ine -Is s ue -005.pdf
インストールされているドキュメント
man ページ
audis pd.conf(5)
147
セキュリティガイド
auditd.conf(5)
audit.rule s (7)
audis pd(8)
auditctl(8)
auditd(8)
aulas t(8)
aulas tlog(8)
aure port(8)
aus e arch(8)
aus ys call(8)
autrace (8)
auvirt(8)
148
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
コンプライアンス監査 は、あるオブジェクトがコンプライアンスポリシーのすべてのルールにしたがって
いるかどうかを判断するプロセスです。 コンプライアンスポリシー は、コンピューティング環境で使用さ
れる望ましい設定を指定するセキュリティ専門家が定義します。これは多くの場合、チェックリストの形式
を取ります。
コンプライアンスポリシーは組織によって大幅に異なることがよくあり、同一組織内でもシステムが異なる
と様々なものになります。システムの目的や組織におけるシステム重要性に基づいて、これらのポリシーは
異なってきます。カスタム化したソフトウェア設定や導入の特徴によっても、カスタム化したポリシーの
チェックリストが必要になってきます。
注記
6.2. コンプライアンスポリシーの定義
セキュリティまたはコンプライアンスポリシーがまったくのゼロから書かれることはめったにありませ
ん。ISO 270 0 0 標準シリーズやその派生物、他のソースなどがセキュリティポリシーのテンプレートや
実践上の推奨事項を提供するので、最初はこれらが便利です。しかし、情報セキュリティプログラムを構築
している組織では、個別のニーズに合わせるためにポリシーテンプレートを修正する必要があります。テン
プレートは、企業環境への関連性に基づいて選択すべきです。テンプレートには組織に適用できない埋め込
みの前提が含まれていたり、テンプレートで特定の判断が明らかに必要であることなどから、テンプレート
選択後にこれを調整する必要があります。
149
セキュリティガイド
Re d Hat Ente rpris e Linux の監査機能は、Se curity Conte nt Automation Protocol (SCAP) 標準を
ベースとしています。SCAP は相互運用可能な使用を統合したもので、形式と命名を標準化します。これら
の形式と命名により、ソフトウェアの弱点およびセキュリティ設定の情報がマシンとユーザーの両方に通信
されます。SCAP は、自動設定、脆弱性とパッチのチェック、技術的制御コンプライアンスアクティビ
ティー、およびセキュリティ措置などをサポートする仕様の複数目的のフレームワークです。
言い換えると、SCAP は、ベンダーにとらわれないセキュリティポリシーの表示方法です。このため、現
代の企業では幅広く使われています。SCAP 仕様は、セキュリティコンテンツの形式が周知かつ標準化さ
れたエコシステムを作り出す一方で、スキャナーやポリシーエディターの導入は義務化されません。このよ
うな状態では、企業がいくつものセキュリティベンダーを用いていても、組織がセキュリティポリシー
(SCAP コンテンツ) を構築するのは一度で済みます。
SCAP の最新バージョンには、いくつかの基礎的標準が含まれています。これらのコンポーネントは、
SCAP 内での機能により、以下のようにグループ化されています。
SCAP コンポーネント
言語 — このグループは、コンプライアンスポリシーを表現する標準的な語彙および慣習を定義する
SCAP 言語で構成されます。
列挙 — このグループには、命名形式および興味のある特定のセキュリティ関連の分野からのアイテム
の公式一覧または辞書を定義する、SCAP 基準が含まれています。
メトリクス — このグループは、セキュリティリスクを特定、評価するフレームワークで構成されてい
ます。
150
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
XCCDF 言語は、情報交換、ドキュメント生成、組織および状況に応じた調整、自動コンプライアンステス
ト、およびコンプライアンススコアリングをサポートするように設計されています。この言語は主に記述的
で、セキュリティスキャンを実行するコマンドは含まれていません。しかし XCCDF ドキュメントは他の
SCAP コンポーネントを参照できるため、関連する評価ドキュメント (OVAL, OCIL) を除くすべてのター
ゲットプラットホームのなかで移植可能なコンプライアンスポリシーの作成に使用することができます。
<xccdf:Rule> — チェックリスト要件を表示し、その説明を保持する重要な要素です。これには、特
定のルールのコンプライアンスを確認または強制したり、ルール自体を修正するアクションを定義す
る、子要素が含まれる場合があります。
<xccdf:Tailoring> — この要素では、ベンチマーク外のベンチマークプロファイルの定義が可能に
なります。これは、コンプライアンスポリシーの手動のテーラリングでは、妥当なものになる場合があ
ります。
151
セキュリティガイド
<xccdf:TestResult> — この要素は、ターゲットシステム上の特定のベンチマークのスキャン結果
を保持する役割を果たします。各 <xccdf:TestResult> は、特定のスキャンのコンプライアンスポ
リシーを定義する際に使用されたプロファイルを参照するようにしてください。また、スキャンに関連
するターゲットシステムについての重要情報も含めるようにしてください。
<xccdf:select> — ポリシーから特定のルールまたはルールのグループを除外もしくは含めるために
使われるセレクター要素です。
<xccdf:refine-rule> — このセレクター要素は、選択されたルールの属性の上書きを可能にしま
す。
152
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
reboot="false"
disruption="low"
system="urn:xccdf:fix:script:sh">
yum -y remove
<sub idref="xccdf_com.example.www_value_1"/>
</fix>
<check system="http://oval.mitre.org/XMLSchema/oval-definitions-
5">
<check-export value-id="xccdf_com.example.www_value_1"
export-name="oval:com.example.www:var:1"/>
<check-content-ref href="examplary.oval.xml"
name="oval:com.example.www:def:1"/>
</check>
<check system="http://open-scap.org/page/SCE">
<check-import import-name="stdout"/>
<check-content-ref href="telnet_server.sh"/>
</check>
</Rule>
</Group>
</Benchmark>
1. ターゲットシステム設定の表示。
2. ターゲットシステムが特定のマシン状態にあるかを分析。
3. 指定されたマシン状態と観察されたマシン状態の比較結果のレポーティング。
他のツールやカスタム化されたスクリプトとは異なり、OVAL 言語は宣言型でリソースの望ましい状態を記
述します。OVAL 言語コードは スキャナーと呼ばれる OVAL インタープリターツールを用いて実行されま
すが、直接実行されることは決してありません。OVAL が宣言型であるために、評価されるシステムの状態
が偶然に修正されることはありません。セキュリティスキャナーは可能な限り高い権限で実行されることが
多いので、これは重要な点になります。
OVAL ドキュメント形式
153
セキュリティガイド
OVAL ドキュメントの基本的セクションからの各要素は、以下の形式の識別子で明確に特定されます。
oval:namespace:type:ID
154
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
version="1">
<metadata>
<title>Red Hat Enterprise Linux 7</title>
<affected family="unix">
<platform>Red Hat Enterprise Linux 7</platform>
</affected>
<reference ref_id="cpe:/o:redhat:enterprise_linux:7"
source="CPE"/>
<description>
The operating system installed on the system is Red Hat
Enterprise Linux 7
</description>
</metadata>
<criteria>
<criterion comment="Red Hat Enterprise Linux 7 is installed"
test_ref="oval:org.open-scap.cpe.rhel:tst:7"/>
</criteria>
</definition>
</definitions>
<tests>
<lin-def:rpminfo_test check_existence="at_least_one_exists"
id="oval:org.open-scap.cpe.rhel:tst:7"
version="1"
check="at least one"
comment="redhat-release is version 7">
<lin-def:object object_ref="oval:org.open-scap.cpe.redhat-
release:obj:1"/>
<lin-def:state state_ref="oval:org.open-scap.cpe.rhel:ste:7"/>
</lin-def:rpminfo_test>
</tests>
<objects>
<lin-def:rpmverifyfile_object id="oval:org.open-scap.cpe.redhat-
release:obj:1"
version="1">
<!-- This object represents rpm package which owns /etc/redhat-
release file -->
<lin-def:behaviors nolinkto='true'
nomd5='true'
nosize='true'
nouser='true'
nogroup='true'
nomtime='true'
nomode='true'
nordev='true'
noconfigfiles='true'
noghostfiles='true' />
<lin-def:name operation="pattern match"/>
<lin-def:epoch operation="pattern match"/>
<lin-def:version operation="pattern match"/>
<lin-def:release operation="pattern match"/>
<lin-def:arch operation="pattern match"/>
<lin-def:filepath>/etc/redhat-release</lin-def:filepath>
</lin-def:rpmverifyfile_object>
</objects>
<states>
<lin-def:rpminfo_state id="oval:org.open-scap.cpe.rhel:ste:7"
155
セキュリティガイド
version="1">
<lin-def:name operation="pattern match">^redhat-release</lin-
def:name>
<lin-def:version operation="pattern match">^7[^\d]</lin-
def:version>
</lin-def:rpminfo_state>
</states>
</oval_definitions>
6.2.3. データストリームの形式
例6.3 データストリームヘッダーの例
<ds:data-stream-collection
xmlns:ds="http://scap.nist.gov/schema/scap/source/1.2"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:cat="urn:oasis:names:tc:entity:xmlns:xml:catalog"
id="scap_org.open-scap_collection_from_xccdf_ssg-rhel7-xccdf-
1.2.xml"
schematron-version="1.0">
<ds:data-stream id="scap_org.open-scap_datastream_from_xccdf_ssg-
rhel7-xccdf-1.2.xml"
scap-version="1.2" use-case="OTHER">
<ds:dictionaries>
<ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel7-
cpe-dictionary.xml"
xlink:href="#scap_org.open-scap_comp_output--ssg-rhel7-cpe-
dictionary.xml">
<cat:catalog>
<cat:uri name="ssg-rhel7-cpe-oval.xml"
uri="#scap_org.open-scap_cref_output--ssg-rhel7-cpe-
oval.xml"/>
</cat:catalog>
</ds:component-ref>
</ds:dictionaries>
<ds:checklists>
<ds:component-ref id="scap_org.open-scap_cref_ssg-rhel7-xccdf-
1.2.xml"
xlink:href="#scap_org.open-scap_comp_ssg-rhel7-xccdf-1.2.xml">
<cat:catalog>
<cat:uri name="ssg-rhel7-oval.xml"
156
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
uri="#scap_org.open-scap_cref_ssg-rhel7-oval.xml"/>
</cat:catalog>
</ds:component-ref>
</ds:checklists>
<ds:checks>
<ds:component-ref id="scap_org.open-scap_cref_ssg-rhel7-oval.xml"
xlink:href="#scap_org.open-scap_comp_ssg-rhel7-oval.xml"/>
<ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel7-
cpe-oval.xml"
xlink:href="#scap_org.open-scap_comp_output--ssg-rhel7-cpe-
oval.xml"/>
<ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel7-
oval.xml"
xlink:href="#scap_org.open-scap_comp_output--ssg-rhel7-
oval.xml"/>
</ds:checks>
</ds:data-stream>
<ds:component id="scap_org.open-scap_comp_ssg-rhel7-oval.xml"
timestamp="2014-03-14T16:21:59">
<oval_definitions xmlns="http://oval.mitre.org/XMLSchema/oval-
definitions-5"
xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5"
xmlns:ind="http://oval.mitre.org/XMLSchema/oval-definitions-
5#independent"
xmlns:unix="http://oval.mitre.org/XMLSchema/oval-definitions-
5#unix"
xmlns:linux="http://oval.mitre.org/XMLSchema/oval-definitions-
5#linux"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-
5
oval-common-schema.xsd
http://oval.mitre.org/XMLSchema/oval-definitions-5
oval-definitions-schema.xsd
http://oval.mitre.org/XMLSchema/oval-definitions-
5#independent
independent-definitions-schema.xsd
http://oval.mitre.org/XMLSchema/oval-definitions-5#unix
unix-definitions-schema.xsd
http://oval.mitre.org/XMLSchema/oval-definitions-5#linux
linux-definitions-schema.xsd">
157
セキュリティガイド
Input f ile
このフィールドには、選択されたセキュリティポリシーへの完全パスがあります。Browse ボタ
ンをクリックすると、システム上で当てはまる SCAP コンテンツを検索することができます。
Checklist
このコンボボックスは、選択されたセキュリティポリシーで適用されるチェックリスト名を表示
します。2 つ以上のチェックリストが利用可能な場合は、このボックスをクリックすると特定の
チェックリストが選択できます。
T ailo ring
このコンボボックスは、特定のセキュリティポリシーに使用されるカスタマイズを表示します。
このコンボボックスをクリックして、システム評価に適用されるカスタムルールを選択できま
す。デフォルト値は (no t ailo ring) で、これは使用されているセキュリティポリシーに変更
がないことを意味します。選択されているセキュリティプロファイルに変更を加えた場
合、Save Tailoring をクリックするとこれらの変更を XML ファイルで保存できます。
158
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
Pro f ile
このコンボボックスには、選択されたセキュリティプロファイル名が表示されます。コンボボッ
クスをクリックすると、XCCDF またはデータストリームファイルからセキュリティプロファイ
ルを選択できます。選択したセキュリティプロファイルのプロパティーを継承する新規プロファ
イルを作成するには、Customize ボタンをクリックします。
T arget
評価対象のシステムがローカルかリモートかを 2 つのラジオボタンから選択します。
Select ed Rules
このフィールドには、セキュリティポリシーの対象となるセキュリティルールが一覧表示されま
す。特定のセキュリティルール上にカーソルを持っていくとそのルールについての詳細情報が表
示されます。
Save co nt ent
ステータスバー
このグラフィカルバーは、実行中の操作のステータスを表示します。
Online remediat io n
このチェックボックスにチェックを入れると、システム評価中に修復機能が有効になります。
チェックが入っていると、SCAP Workbe nch はポリシーで定義された状態にマッチしないシス
テム設定の修正を試行します。
Scan
このボタンを押すと、指定されたシステムの評価が開始されます。
159
セキュリティガイド
6.3.3. システムのスキャン
警告
160
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
警告
チェックリストを変更すると、別のプロファイルが選択される場合があります。また、新規
チェックリストには、以前のカスタマイズが適用できない場合もあります。
3. 自分のニーズにカスタマイズされたセキュリティコンテンツのある事前に用意されたファイルを使
用するには、T ailo ring コンボボックスでそのファイルをクリックして読み込みます。また、利
用可能なセキュリティプロファイルを変更してカスタマイズした tailoring ファイルを作成するこ
ともできます。詳細は、「セキュリティプロファイルのカスタマイズ」 を参照してください。
a. 選択したプロファイルを修正するには、Customize ボタンをクリックします。プロファ
イルのカスタマイズに関する詳細は、「セキュリティプロファイルのカスタマイズ」 を参
照してください。
5. Target ラジオボタンのいずれかを選択して、スキャンするマシンをローカルかリモートから選択
します。
a. リモートシステムを選択した場合は、以下の例のようにユーザー名、ホスト名、ポート情報
を入力して指定します。
図6.2 リモートシステムの指定
警告
修正オプションが有効な状態でのシステム評価は、慎重に行わないとシステムが機能不全に
陥る場合があります。
7. Scan ボタンをクリックしてシステムスキャンを開始します。
6.3.4. セキュリティプロファイルのカスタマイズ
161
セキュリティガイド
6.3.4. セキュリティプロファイルのカスタマイズ
図6.3 セキュリティプロファイルのカスタマイズ
162
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
6.3.6. スキャン結果の表示とスキャンレポートの生成
警告
Clear ボタンをクリックすると、スキャン結果が恒久的に削除されます。
163
セキュリティガイド
o scap コマンドラインユーティリティーを使うと、ローカルシステムのスキャン、セキュリティコンプ
ライアンスコンテンツの確認、これらのスキャンおよび評価を基にしたレポートとガイドの生成ができま
す。このユーティリティーは Ope nSCAP ライブラリーへのフロントエンドとしてのサービスを提供し、
その機能を処理する SCAP コンテンツのタイプに基づいてモジュール (サブコマンド) にグループ化しま
す。
SDS - Source data stream that will be split into multiple files.
TARGET_DIRECTORY - Directory of the resulting files.
Options:
--datastream-id <id> - ID of the datastream in the
collection to use.
--xccdf-id <id> - ID of XCCDF in the datastream that
should be evaluated.
164
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
~]$ oscap -V
OpenSCAP command line tool (oscap) 1.0.4
Copyright 2009--2014 Red Hat Inc., Durham, North Carolina.
165
セキュリティガイド
textfilecontent54 probe_textfilecontent54
textfilecontent probe_textfilecontent
variable probe_variable
xmlfilecontent probe_xmlfilecontent
environmentvariable58 probe_environmentvariable58
filehash58 probe_filehash58
inetlisteningservers probe_inetlisteningservers
rpminfo probe_rpminfo
partition probe_partition
iflisteners probe_iflisteners
rpmverify probe_rpmverify
rpmverifyfile probe_rpmverifyfile
rpmverifypackage probe_rpmverifypackage
selinuxboolean probe_selinuxboolean
selinuxsecuritycontext probe_selinuxsecuritycontext
file probe_file
interface probe_interface
password probe_password
process probe_process
runlevel probe_runlevel
shadow probe_shadow
uname probe_uname
xinetd probe_xinetd
sysctl probe_sysctl
process58 probe_process58
fileextendedattribute probe_fileextendedattribute
routingtable probe_routingtable
o scap ユーティリティーを効果的に使い始める前に、システムにいくつかのセキュリティコンテンツをイ
ンストールもしくはインポートする必要があります。SCAP コンテンツはそれぞれのウェブサイトからダウ
ンロードするか、RPM ファイルもしくはパッケージとして指定されている場合は、Yum パッケージマネ
ジャーを使って指定された場所もしくは既知のリポジトリーからインストールすることができます。
166
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
以下のコマンドを実行すると、SCAP ドキュメントの内部構造を調べることができます。また、ドキュメ
ントタイプ、仕様バージョン、ドキュメントのステータス、ドキュメントの公開日、ドキュメントがファ
イルシステムにコピーされた日付などの便利な情報が表示されます。
Stream: scap_org.open-scap_datastream_from_xccdf_ssg-rhel7-xccdf-
1.2.xml
Generated: (null)
Version: 1.2
Checklists:
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-xccdf-1.2.xml
Profiles:
xccdf_org.ssgproject.content_profile_test
xccdf_org.ssgproject.content_profile_rht-ccp
xccdf_org.ssgproject.content_profile_common
xccdf_org.ssgproject.content_profile_stig-
rhel7-server-upstream
Referenced check files:
ssg-rhel7-oval.xml
system:
http://oval.mitre.org/XMLSchema/oval-definitions-5
Checks:
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-oval.xml
Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-cpe-oval.xml
Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-oval.xml
Dictionaries:
Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-cpe-
dictionary.xml
6.4.3. システムのスキャン
o scap の最も重要な機能は、ローカルシステムの設定および脆弱性スキャンを実行することです。以下は
コマンドの一般的な構文になります。
167
セキュリティガイド
場合は、各ファイルが異なるコンポーネントを表します (XCCDF、OVAL、CPE、CVE、その他)。スキャ
ン結果は、標準出力と XML ファイルの両方にプリントすることができます。この結果のファイルは
o scap でさらに処理され、ヒューマンリーダブル形式のレポートを生成することができます。以下は、こ
のコマンドの最も一般的な使用例になります。
スキャン結果は、scan-oval-results.xml ファイルとして現在のディレクトリーに保存されます。
スキャン結果は、scan-oval-results.xml ファイルとして現在のディレクトリーに保存されます。
スキャン結果は、scan-xccdf-results.xml ファイルとして現在のディレクトリーに保存されま
す。
注記
6.4.4. レポートおよびガイドの生成
168
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
以下でこのコマンドの最も一般的な使用例を示します。
例6.9 チェックリスト付きガイドの生成
ガイドは、ssg-guide-checklist.html ファイルとして現在のディレクトリーに保存されます。
169
セキュリティガイド
システム上でセキュリティポリシーを使い始める前に、ポリシーを検証してポリシー内の構文エラーやセマ
ンティックエラーを避けるようにしてください。o scap ユーティリティーを使うと、SCAP XML スキー
マに対してセキュリティコンテンツを検証することができます。検証結果は、標準エラーストリーム
(s tde rr) にプリントされます。このような検証コマンドの一般的な構文は以下のようになります。
このソリューションは、2 つの方法でのセキュリティコンプライアンススキャンの実行、表示、およびス
キャン結果のさらなる処理をサポートしています。OpenSCAP Satellite Web Interface を使うか
Satellite API からコマンドとスクリプトを実行することができます。このソリューションのセキュリ
ティコンプライアンス、要件、機能に関する詳細情報は、Re d Hat Sate llite 5.6 ユーザーガイド を参照
してください。
6.6. 実用的な使用例
170
第6 章 コンプライアンスおよび O pe nSCAP を使った脆弱性のスキャン
システムにインストール済みのソフトウェアに関するセキュリティ脆弱性を監査するには、以下のコマンド
を実行します。
注記
6.7. その他のリソース
171
セキュリティガイド
様々なセキュリティコンプライアンスの分野に関する詳細情報は、以下のリソースを参照してください。
インストールされているドキュメント
オンラインのドキュメント
The SCAP Workbe nch proje ct page — SCAP Workbe nch プロジェクトのホームページで
は、scap-wo rkbench アプリケーションの詳細情報が提供されています。
National Ins titute of Standards and Te chnology (NIST) SCAP page — このページには SCAP
関連の大量の資料があります。SCAP の出版物や仕様、SCAP 検出プログラムもあります。
Re d Hat OVAL conte nt re pos itory — Re d Hat Ente rpris e Linux システム向けの OVAL 定義を
含むリポジトリーです。
172
第7章 米連邦政府の標準および規制
第7章 米連邦政府の標準および規制
どの組織も、米連邦政府または業界のセキュリティ仕様、標準および規制の遵守に取り組むことで一定のセ
キュリティレベルを維持することができます。本章では、これらの標準および規制のいくつかについて説明
します。
173
セキュリティガイド
2. 次に、dracut-fips パッケージをインストールします。
3. initramfs ファイルを再作成します。
~]# dracut -f
警告
fips=1
174
第7章 米連邦政府の標準および規制
注記
~]$ df /boot
Filesystem 1K-blocks Used Available Use%
Mounted on
/dev/sda1 495844 53780 416464 12% /boot
上記の例では、以下の文字列をカーネルコマンドラインに追加する必要があります。
boot=UUID=05c000f1-f899-467b-a4d9-d5ca4424c797
5. システムを再起動します。
7.2. NISPOM (Nat ional Indust rial Securit y Program Operat ing
Manual)
National Indus trial Se curity Program (NISP) の 1 つの構成要素である NISPOM (DoD 5220.22-M
とも呼ばれる) は、すべての政府指定業者向けに、秘密情報 (clas s ifie d information) に関する一連の手
順と要件を規定しています。現行の NISPOM は、2006 年 2 月 28 日付けのもので、2013 年 3 月 28
日からのメジャーな変更が組み込まれています。NISPOM 文書は以下の URL からダウンロードできま
す。http://www.nis pom.org/NISPOM-download.html
(ソース: https ://www.pcis e curitys tandards .org/about/inde x.s html) PCI Securit y St andards
Co uncil は、20 0 6 年に発足したグローバル規模の開かれた協議会であり、データセキュリティスタン
ダード (DSS: Dat a Securit y St andard) を含む PCI セキュリティ基準の開発、管理、教育および
普及に関する討議の場を提供しています。
175
セキュリティガイド
PCI DSS 標準は、https ://www.pcis e curitys tandards .org/s e curity_s tandards /pci_ds s .s html から
ダウンロードできます。
176
付録A 暗号の標準
付録A 暗号の標準
A.1. 同期式の暗号
現在、DES のセキュリティは多くのアプリケーションに対して不十分であると考えられています。この主
な原因は、56 ビットキーが小さすぎることにあります。1999年1月に、dis tribute d.ne t と Ele ctronic
Frontie r Foundation は共同で DES 鍵を 22 時間 15 分で解読しました。また、実際の実装については
実現不可能であるものの、暗号に理論上の弱点があることを示唆するいくつかの解析結果があります。こう
した理論上の弱点があるものの、このアルゴリズムは 3-DES の形式で実際には安全であると考えられてい
ます。近年、この暗号は高度暗号化標準 (AES) に置き換えられています。 [6]
A.2. 公開鍵暗号
公開鍵暗号は、多くの暗号アルゴリズムと暗号化システムで採用されている暗号化のアプローチです。その
際立った特徴は、対称鍵アルゴリズムではなく非対称鍵アルゴリズムを使用する、または対称鍵と共に非対
177
セキュリティガイド
称鍵アルゴリズムを使用する点にあります。公開鍵/秘密鍵の暗号化技術を使用することで、以前には知ら
れていなかった通信を保護し、メッセージを認証する数多くの方法を実用化できるようになりました。ま
た、対称鍵アルゴリズムを使用する際に必要とされていた1つまたは複数の秘密鍵のセキュアな初期交換が
不要になりました。さらに、公開鍵暗号を使って電子署名を作成することもできるようになりました。 [8]
公開鍵暗号は、基本的な技術であり世界中で幅広く使用されています。また、トランスポート層セキュリ
ティ (TLS) (SSL の後継)、PGP および GPG などのインターネット標準の土台となるアプローチです。
[9]
公開鍵暗号で使用される特徴的な技術は、非対称の鍵アルゴリズムの使用です。このアルゴリズムでは、
メッセージを暗号化するために使われる鍵がメッセージの暗号解読するために使用される鍵と同じではあり
ません。各ユーザーは、暗号鍵と秘密鍵のペアを持ちます。公開鍵が広く配布される可能性があるのに対し
て、秘密鍵は秘密の状態にされます。メッセージは受信者の公開鍵で暗号化され、対応する秘密鍵でのみ暗
号化解除することができます。これらの鍵は数学的に関連付けることができますが、(現在または将来にお
いて) 秘密鍵を公開鍵から導き出すことはできません。このアルゴリズムの発見は、1970 年代中盤に始
まった暗号の使用に変革をもたらすものとなりました。 [10]
これとは対照的に、数千年間にわたって使用されてきた各種の対称鍵暗号のアルゴリズムでは、暗号化と暗
号解除のために単一の秘密鍵が使用され、この鍵は送信者と受信者によって共有されます (この秘密鍵は共
有されるものの、秘密の状態にしておく必要があります)。対称的な暗号化スキームを使用するには、送信
者と受信者の両方が前もって鍵を安全に共有しておく必要があります。 [11]
対称鍵アルゴリズムの方の計算集約度が低くなることがほぼ通例であるため、鍵交換アルゴリズムを用いて
鍵を交換してから、その鍵と対称鍵アルゴリズムを用いてデータを転送することが一般に行われています。
例えば、PGP および各種スキームの SSL/TLS ファミリーがこれを実行するため、それらはハイブリッド
暗号システムと呼ばれています。 [12]
A.2.2. RSA
178
付録A 暗号の標準
で広く使用されており、十分な長さの鍵と最新の実装が使用されていることからセキュアであると考えられ
ています。
A.2.3. DSA
A.2.4. SSL/T LS
このプロトコルのいくつかのバージョンは、ウェブ閲覧、電子メール、インターネット FAX、インスタン
トメッセージおよび voice -ove r-IP (VoIP) などのアプリケーションで広く使われています。 [18]
A.2.6. ElGamal 暗号
179
セキュリティガイド
180
付録B Audit システムのリファレンス
表B.1 イベントフィールド
イベントフィールド 説明
a0、a1、a2、a3 システムコールの最初の 4 つの引数を十六進法で記録します。
acct ユーザーのアカウント名を記録します。
addr IPv4 または IPv6 アドレスを記録します。このフィールドは通
常、hostname フィールドの後に来て、ホスト名が解決するアドレスを
含みます。
arch システムの CPU アーキテクチャーについての情報を十六進法にエンコー
ドして記録します。
auid Audit ユーザー ID を記録します。この ID は、ログイン時にユーザーに
割り当てられ、ユーザーの ID が変更された後でもすべてのプロセスに引
き継がれます (たとえば、su - john コマンドでユーザーアカウントを
切り替えた場合)。
capability 特定の Linux 機能の設定に使用されたビット数を記録します。Linux 機
能については、capabilitie s (7) man ページを参照してください。
cap_fi 引き継いだファイルのシステムベースの機能設定に関連したデータを記録
します。
cap_fp 許可されたファイルのシステムベースの機能設定に関連したデータを記録
します。
cap_pe 効果的なプロセスベースの機能設定に関連したデータを記録します。
cap_pi 継承されたプロセスベースの機能設定に関連したデータを記録します。
cap_pp 許可されたプロセスベースの機能設定に関連したデータを記録します。
cgroup Audit イベント生成時のプロセスが含まれる cgroup へのパスを記録し
ます。
cmd 実行されたコマンドライン全体を記録します。これは、exe フィールド
がたとえば /bin/bash を記録するようなシェルインタープリターの場
合に便利です。シェルインタープリターと cmd フィールド
は、helloworld.sh --help のような実行されたコマンドラインの残
りの部分を記録するからです。
comm 実行されたコマンドを記録します。これは、exe フィールドがたとえば
/bin/bash を記録するようなシェルインタープリターの場合に便利で
す。シェルインタープリターと comm フィールドは、helloworld.sh
のような実行されたスクリプト名を記録するからです。
cwd システムコールが開始されたディレクトリーへのパスを記録します。
data TTY 記録に関連するデータを記録します。
dev イベントで記録されたファイルまたはディレクトリーを含むデバイスのマ
イナーおよびメジャー ID を記録します。
devmajor メジャーデバイス ID を記録します。
devminor マイナーデバイス ID を記録します。
egid 分析されているプロセスを開始したユーザーの実効グループ ID を記録し
ます。
euid 分析されているプロセスを開始したユーザーの実効ユーザー ID を記録し
ます。
181
セキュリティガイド
イベントフィールド 説明
exe 分析されているプロセスを開始するために使用された実行可能ファイルへ
のパスを記録します。
exit システムコールが返した終了コードを記録します。この値は、システム
コールによって異なります。以下のコマンドを使うと、この値をヒューマ
ンリーダブルなものに変換できます。ausearch --interpret --
exit exit_code
family IPv4 または IPv6 の使用されたアドレスプロトコルのタイプを記録しま
す。
filetype ファイルのタイプを記録します。
flags ファイルシステム名のフラグを記録します。
fsgid 分析されているプロセスを開始したユーザーのファイルシステムグループ
ID を記録します。
fsuid 分析されているプロセスを開始したユーザーのファイルシステムユーザー
ID を記録します。
gid グループ ID を記録します。
hostname ホスト名を記録します。
icmptype 受信した Inte rne t Control Me s s age Protocol (ICMP) パッケージの
タイプを記録します。このフィールドを含む Audit メッセージは通
常、ipt ables が生成します。
id 変更されたアカウントのユーザー ID を記録します。
inode Audit イベントで記録されたファイルまたはディレクトリーに関連する
inode 番号を記録します。
inode_gid inode の所有者のグループ ID を記録します。
inode_uid inode の所有者のユーザー ID を記録します。
items この記録にアタッチされたパス記録の数を記録します。
key Audit ログで特定のイベントを生成したルールに関連付けられているユー
ザー定義の文字列を記録します。
list Audit ルールリストの ID を記録します。以下が既知の ID リストになり
ます。
0 — user
1 — task
4 — exit
5 — exclude
mode ファイルまたはディレクトリーのパーミッションを数字表記にエンコー
ドして記録します。
msg 記録のタイムスタンプと一意の ID、または各種のイベント固有の
<name>=<value> ペアを記録します。これらは、カーネルもしくはユー
ザースペースアプリケーションが提供します。
msgtype ユーザーベースの AVC 拒否の場合に返されたメッセージのタイプを記録
します。このメッセージタイプは、D-Bus で決定されます。
name システムコールに引数として渡されたファイルまたはディレクトリーへの
完全パスを記録します。
new-disk 仮想マシンに割り当てられた新規ディスクリソースの名前を記録します。
new-mem 仮想マシンに割り当てられた新規メモリーリソースの容量を記録します。
new-vcpu 仮想マシンに割り当てられた新規の仮想 CPU リソースの数を記録しま
す。
new-net 仮想マシンに割り当てられた新規ネットワークインターフェイスのリソー
スの MAC アドレスを記録します。
new_gid ユーザーに割り当てられたグループ ID を記録します。
182
付録B Audit システムのリファレンス
イベントフィールド 説明
oauid システムにアクセスするためにログインし s ( u を使用してのログインな
どではなく)、ターゲットプロセスを開始したユーザーのユーザー ID を記
録します。このフィールドは、タイプ OBJ_PID の記録専用になります。
ocomm ターゲットプロセスの開始に使用されたコマンドを記録します。この
フィールドは、タイプ OBJ_PID の記録専用になります。
opid ターゲットプロセスのプロセス ID を記録します。このフィールドは、タ
イプ OBJ_PID の記録専用になります。
oses ターゲットプロセスのセッション ID を記録します。このフィールドは、
タイプ OBJ_PID の記録専用になります。
ouid ターゲットプロセスの実際のユーザー ID を記録します。
obj オブジェクトの SELinux コンテキストを記録します。オブジェクトは、
ファイルやディレクトリー、またはサブジェクトのアクションを受信す
るものになります。
obj_gid オブジェクトのグループ ID を記録します。
obj_lev_high オブジェクトの高い SELinux レベルを記録します。
obj_lev_low オブジェクトの低い SELinux レベルを記録します。
obj_role オブジェクトの SELinux の役割を記録します。
obj_uid オブジェクトの UID を記録します。
obj_user オブジェクトに関連付けられたユーザーを記録します。
ogid オブジェクトの所有者のグループ ID を記録します。
old-disk 新規ディスクリソースが仮想マシンに割り当てられた際の古いディスクリ
ソース名を記録します。
old-mem 新しいメモリー容量が仮想マシンに割り当てられた際の古いメモリーリ
ソースの容量を記録します。
old-vcpu 新規の仮想 CPU が仮想マシンに割り当てられた際の古い仮想 CPU リ
ソースの数を記録します。
old-net 新規ネットワークインターフェイスが仮想マシンに割り当てられた際の古
いネットワークインターフェイスリソースの MAC アドレスを記録しま
す。
old_prom ネットワークの無作為フラグの以前の値を記録します。
ouid ターゲットプロセスを開始したユーザーの実際のユーザー ID を記録しま
す。
path AVC 関連の Audi イベントでシステムコールに引数として渡されたファ
イルまたはディレクトリーへの完全パスを記録します。
perm イベント生成に使用されたファイルパーミッション (つまり、読み取り、
書き込み、実行、または属性変更) を記録します。
pid pid フィールドのセマンティックは、このフィールドの値の発生元に
よって異なります。
ユーザースペースから生成されたフィールドの場合、このフィールドはプ
ロセス ID になります。
カーネルが生成したフィールドの場合、このフィールドはスレッド ID に
なります。スレッド ID は単一スレッドプロセスの場合、プロセス ID と
同じになります。このスレッド ID の値は、ユーザースペースで使用され
る pthre ad_t ID の値とは異なることに注意してください。詳細
は、ge ttid(2) man ページを参照してください。
183
セキュリティガイド
イベントフィールド 説明
res Audit イベントを開始した操作結果を記録します。
result Audit イベントを開始した操作結果を記録します。
saddr ソケットアドレスを記録します。
sauid 送信者の Audit ログインユーザー ID を記録します。この ID は、元の
auid を送信しているユーザーをカーネルが判別できないため、D-Bus
が提供します。
ses 分析されているプロセスが開始されたセッションのセッション ID を記録
します。
sgid 分析されているプロセスを開始したユーザーのセットグループ ID を記録
します。
sig プログラムを異常終了させたシグナル数を記録します。これは通常、シス
テム侵入を知らせるものです。
subj サブジェクトの SELinux コンテキストを記録します。サブジェクトは、
プロセスやユーザー、またはオブジェクトに対して動作を行なっているも
のになります。
subj_clr サブジェクトの SELinux クリアランスを記録します。
subj_role サブジェクトの SELinux の役割を記録します。
subj_sen サブジェクトの SELinux の秘密度を記録します。
subj_user サブジェクトに関連付けられたユーザーを記録します。
success システムコールが成功したか、失敗したかを記録します。
suid 分析されているプロセスを開始したユーザーのセットユーザー ID を記録
します。
syscall カーネルに送信されたシステムコールのタイプを記録します。
terminal ターミナル名 (/dev/ なしで) を記録します。
tty 制御ターミナルの名前を記録します。プロセスに制御ターミナルがない場
合は、(none) の値を使います。
uid 分析されているプロセスを開始したユーザーの実際のユーザー ID を記録
します。
vm Audit イベントが始まった仮想マシン名を記録します。
表B.2 記録のタイプ
イベントタイプ 説明
ADD_GROUP ユーザースペースグループが追加されると開始します。
ADD_USER ユーザースペースユーザーのアカウントが追加されると開始します。
ANOM_ABEND [a] プロセスが異常終了すると開始します (コアダンプを引き起こすシグナル
が有効になっていれば、このシグナルを伴います)。
ANOM_ACCESS_FS [a] ファイルまたはディレクトリーアクセスが異常終了すると開始します。
ANOM_ADD_ACCT [a] ユーザースペースアカウントの追加が異常終了すると開始します。
ANOM_AMTU_FAIL [a] Abs tract Machine Te s t Utility (AMTU) の失敗が検出されると開始し
ます。
ANOM_CRYPTO_FAIL [a] 暗号化システムの失敗が検出されると開始します。
184
付録B Audit システムのリファレンス
イベントタイプ 説明
ANOM_EXEC [a] ファイル実行が異常終了すると開始します。
ANOM_LOGIN_ACCT [a] アカウントのログイン試行が異常終了すると開始します。
ANOM_LOGIN_FAILURES [ ログイン試行が失敗の制限数に達すると開始します。
a]
ANOM_LOGIN_LOCATION [ 許可されていない場所からログイン試行が行われると開始します。
a]
ANOM_LOGIN_SESSIONS [ ログイン試行が同時セッションの最大数に達すると開始します。
a]
185
セキュリティガイド
イベントタイプ 説明
DAEMON_ABORT エラーのためにデーモンが停止する際に開始します。
DAEMON_ACCEPT auditd デーモンがリモート接続を受け入れる際に開始します。
DAEMON_CLOSE auditd デーモンがリモート接続を閉じる際に開始します。
DAEMON_CONFIG デーモンの設定変更が検出されると開始します。
DAEMON_END デーモンが正常に停止されると開始します。
DAEMON_RESUME auditd デーモンがロギングを再開する際に開始します。
DAEMON_ROTATE auditd デーモンが Audit ログファイルをローテーションする際に開始
します。
DAEMON_START auditd デーモンが起動されると開始します。
DEL_GROUP ユーザースペースグループが削除されると開始します。
DEL_USER ユーザースペースのユーザーが削除されると開始します。
DEV_ALLOC デバイスが割り当てられると開始します。
DEV_DEALLOC デバイスの割り当てが解除されると開始します。
EOE 複数記録イベントの終了を記録するために開始します。
EXECVE execve(2) システムコールの引数を記録するために開始します。
FD_PAIR pipe および socketpair のシステムコールの使用を記録するために開
始します。
FS_RELABEL ファイルシステムのラベル張り替え操作が検出されると開始します。
GRP_AUTH ユーザースペースのグループに対してグループパスワードを使って認証が
行われると開始します。
INTEGRITY_DATA [b] カーネルが実行するデータ整合性検証イベントを記録するために開始しま
す。
INTEGRITY_HASH [b] カーネルが実行するハッシュタイプ整合性検証イベントを記録するために
開始します。
INTEGRITY_METADATA [b] カーネルが実行するメタデータ整合性検証イベントを記録するために開始
します。
INTEGRITY_PCR [b] Platform Configuration Re gis te r (PCR) 無効化メッセージを記録する
ために開始します。
INTEGRITY_RULE [b] ポリシールールを記録するために開始します。
186
付録B Audit システムのリファレンス
イベントタイプ 説明
MAC_IPSEC_EVENT IPSe c イベントが検出されるか IPSe c 設定が変更されると、IPSe c イベ
ントについての情報を記録するために開始します。
MAC_MAP_ADD 新たな Linux Se curity Module (LSM) ドメインマッピングが追加され
ると開始します。LSM ドメインマッピングは、Ne tLabe l が提供する
カーネルのパケットラベル付け機能の一部です。
MAC_MAP_DEL 既存の LSM ドメインマッピングが追加されると開始します。LSM ドメ
インマッピングは、Ne tLabe l が提供するカーネルのパケットラベル付け
機能の一部です。
MAC_POLICY_LOAD SELinux ポリシーファイルが読み込まれると開始します。
MAC_STATUS SELinux モード (e nforcing、pe rmis s ive 、off) が変更されると開始し
ます。
MAC_UNLBL_ALLOW Ne tLabe l が提供するカーネルのパケットラベル付け機能を使用する際に
ラベルのないトラフィックが許可されると開始します。
MAC_UNLBL_STCADD Ne tLabe l が提供するカーネルのパケットラベル付け機能を使用する際に
静的ラベルが追加されると開始します。
MAC_UNLBL_STCDEL Ne tLabe l が提供するカーネルのパケットラベル付け機能を使用する際に
静的ラベルが削除されると開始します。
MMAP mmap(2) システムコールのファイル記述子およびフラグを記録するため
に開始します。
MQ_GETSETATTR mq_getattr(3) および mq_setattr(3) のメッセージキュー属性を
記録するために開始します。
MQ_NOTIFY mq_notify(3) システムコールの引数を記録するために開始します。
MQ_OPEN mq_open(3) システムコールの引数を記録するために開始します。
MQ_SENDRECV mq_send(3) および mq_receive(3) のシステムコールの引数を記録
するために開始します。
NETFILTER_CFG Ne tfilte r チェーンの修正が検出されると開始します。
NETFILTER_PKT Ne tfilte r チェーンをトラバースするパケットを記録するために開始しま
す。
OBJ_PID 信号の送信先のプロセスについての情報を記録するために開始します。
PATH ファイル名パスの情報を記録するために開始します。
RESP_ACCT_LOCK [c] ユーザーのアカウントがロックされると開始します。
RESP_ACCT_LOCK_TIMED ユーザーのアカウントが一定期間ロックされると開始します。
[c]
187
セキュリティガイド
イベントタイプ 説明
ROLE_MODIFY 管理者が SELinux の役割を編集すると開始します。
ROLE_REMOVE 管理者がユーザーを SELinux の役割から削除すると開始します。
SELINUX_ERR 内部 SELinux エラーが検出されると開始します。
SERVICE_START サービスが起動すると開始します。
SERVICE_STOP サービスが停止すると開始します。
SOCKADDR ソケットアドレスを記録するために開始します。
SOCKETCALL sys_socketcall システムコール (多くのソケット関連のシステムコー
ルを多重化するために使用) の引数を記録するために開始します。
SYSCALL カーネルへのシステムコールを記録するために開始します。
SYSTEM_BOOT システムが起動すると開始します。
SYSTEM_RUNLEVEL システムのランレベルが変更されると開始します。
SYSTEM_SHUTDOWN システムがシャットダウンすると開始します。
TEST テストメッセージの成功の値を記録するために開始します。
TRUSTED_APP このタイプの記録は、監査を必要とするサードパーティーのアプリケー
ションで使用可能です。
TTY TTY 入力が管理プロセスに送信されると開始します。
USER_ACCT ユーザースペースユーザーのアカウントが編集されると開始します。
USER_AUTH ユーザースペースの認証試行が検出されると開始します。
USER_AVC ユーザースペースの AVC メッセージが生成されると開始します。
USER_CHAUTHTOK ユーザーアカウントの属性が編集されると開始します。
USER_CMD ユーザースペースのシェルコマンドが実行されると開始します。
USER_END ユーザースペースのセッションが終了すると開始します。
USER_ERR ユーザーアカウントの状態のエラーが検出されると開始します。
USER_LABELED_EXPORT SELinux ラベルの付いたオブジェクトがエクスポートされると開始しま
す。
USER_LOGIN ユーザーがログインすると開始します。
USER_LOGOUT ユーザーがログアウトすると開始します。
USER_MAC_POLICY_LOAD ユーザースペースのデーモンが SELinux ポリシーを読み込むと開始しま
す。
USER_MGMT ユーザースペースの管理データを記録するために開始します。
USER_ROLE_CHANGE ユーザーの SELinux の役割が変更されると開始します。
USER_SELINUX_ERR ユーザースペースの SELinux エラーが検出されると開始します。
USER_START ユーザースペースのセッションが開始すると開始します。
USER_TTY 管理プロセスへの TTY 入力についての説明メッセージがユーザースペー
スから送信されると開始します。
USER_UNLABELED_EXPOR SELinux ラベルなしでオブジェクトがエクスポートされると開始しま
T す。
USYS_CONFIG ユーザースペースのシステム設定変更が検出されると開始します。
VIRT_CONTROL 仮想マシンが起動、一時停止、停止すると開始します。
VIRT_MACHINE_ID 仮想マシンへのラベルのバインディングを記録するために開始します。
VIRT_RESOURCE 仮想マシンのリソース割り当てを記録するために開始します。
[a] ANOM が前に付いている Audit イベントタイプはすべて、侵入検出プログラムが処理することになっていま
す。
[b] このイベントタイプは、Integrity Measurem ent Architecture (IMA) に関連しており、これは,
Trusted P latform Module (TP M) チップと一番うまく機能します。
[c] RESP が前に付いている Audit イベントタイプはすべて、侵入検出システムがシステム上で悪意のあるアク
ティビティーを検出した場合に、その侵入検出システムの反応となることが意図されています。
188
付録C 改訂履歴
付録C 改訂履歴
189