訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter20.NetBSD Veriexec subsystem

Table of Contents

20.1. How it works
20.2. Signatures file
20.3. Generating fingerprints
20.4. Strict levels
20.5. Veriexec and layered file systems
20.6. Kernel configuration

日本語(のような言語)版訳者註:
そもそも、まだ作業そのもの最中ですし、
査読などの他の人による検証も何も、まだ、されていません。
訳者は英文のままだと、"どうにも"読む事ができないから訳しています。
学校でも赤点取ったほど、英語はわからないので、残念ながら誤訳があってもあたりまえです。
内容柄、誤解し、間違った理解/操作/対応等をすると、非常に危険ですから、
原文や、(訳者の過去の作業(がある章がある)以外の)誰かが
公開しているかもしれない日本語訳を利用してください。
(これは日本語"(のような言語)"版で、"日本語"そのものではありません)

日本語(のような言語)版訳者註おわり。

Veriexec は NetBSD のファイル integrity サブシステムです。これはカーネルベースなので、 それゆえ、 root 権限を奪われる場合でさえもいくつかの保護を提供できます。 この章は、 NetBSD 3.0 および以後のみ適用されます。

20.1.How it works

Veriexec はカーネルに signatures file とも呼ばれる specification[列挙] ファイルをロードすることで機能します。 このファイルは、 Veriexec がモニターすべきファイルのデジタル fingerprint ( この fingerprint の製作に使われるハッシュアルゴリズムと一緒に)と同様に、情報および 後で論じられるさまざまなフラグが入ります。

現在は、次のハッシュアルゴリズムが Veriexec に サポートされていて: MD5SHA1SHA256SHA384SHA512 、および RMD160

20.2.Signatures file

Veriexec 署名ファイルのエントリーはこのように:

	/path/to/file algorithm fingerprint flags

ここで、最初の要素はパスで、必ず常に絶対パスである必要があります。 algorithm は上にリストされたアルゴリズムの1つで、 fingerprint は ASCII fingerprint です。

20.3.Generating fingerprints

各アルゴリズムの ASCII fingerprints は、次のツールを使って生成でき:

Table20.1.Veriexec fingerprints tools

Algorithm Tool
MD5 /usr/bin/cksum -a md5
SHA1 /usr/bin/cksum -a sha1
SHA256 /usr/bin/cksum -a sha256
SHA384 /usr/bin/cksum -a sha384
SHA512 /usr/bin/cksum -a sha512
RMD160 /usr/bin/cksum -a rmd160

例えば、 /bin/ls の MD5 fingerprint を生成するには:

	% cksum -a md5 < /bin/ls
	a8b525da46e758778564308ed9b1e493

および /bin/ps の SHA512 fingerprint を生成するには:

	% cksum -a sha512 < /bin/ps
	381d4ad64fd47800897446a2026eca42151e03adeae158db5a34d12c529559113d928a9fef9a7c4615d257688d1da4645db004081030d7f080bb7198067eb890

各 entry には、フラグは、ないか、あるいはいくつかと associated します。 現在、これらのフラグは entry のファイルがどのようにアクセスされるべきかの 記述を示しています。 註として、この access type は、 strict level 2 (IPS モード) 以上でのみ enforced[強制的] です。

access タイプとして DIRECTINDIRECT 、および FILE が使えます。

  • DIRECT アクセスの 意味は、ファイルは直接実行され、および、インタープリターを invoked しない いくつかのスクリプトに、または、エディターで開かれるものです。 通常、利用するほとんどのプログラムがこのモードでアクセスされます:

    	% ls /tmp
    	% cp ~/foo /tmp/bar
    	% rm ~/foo
  • INDIRECT アクセスの意味は、ファイルが indirectly[間接的に] 実行され、そして スクリプトを interpret するために invoked 。これは通常、 スクリプトの最初の行に magic な #! がある場合起こります。例えば、 最初の行が以下のスクリプトがあって:

    	#!/bin/sh

    および、あなたはこのように run し:

    	% ./script.sh

    すると /bin/sh が indirectly[間接的に] 実行されます -- それはスクリプトを interpret するために invoked されます。

  • FILE entries は executable ではない(または、あるべきではない)全てを refer[指します]。 これは、共有ライブラリー、 設定ファイル、等を含みます。

    いくつかの Veriexec 署名ファイルのエントリー例は:

    	/bin/ls         MD5 dc2e14dc84bdefff4bf9777958c1b20b DIRECT
    	/usr/bin/perl   MD5 914aa8aa47ebd79ccd7909a09ed61f81 INDIRECT
    	/etc/pf.conf    MD5 950e1dd6fcb3f27df1bf6accf7029f7d FILE

Veriexec は entry のファイルにアクセスする方法として、 1つを越えて指定することが許されます。 例えば、 /usr/bin/perl はほとんど、 インタープリターとして使われるけれども、直接実行したいこともあるかもしれなく:

	/usr/bin/perl MD5 914aa8aa47ebd79ccd7909a09ed61f81 DIRECT, INDIRECT

シェルスクリプトは executable になるために #! magic を使い、そのうえ2つの アクセス types を要求します: それらが DIRECT で あることが必要で、それでそれらを execute でき、そして、 FILE で ある必要があって、カーネルは、それらが定義した interpreter に その内容を 送り込めます:

	/usr/src/build.sh MD5 e80dbb4c047ecc1d84053174c1e9264a DIRECT, FILE

signature ファイルの作成を簡単にし、そして signature ファイル自身を より読みやすくするために、 Veriexec は次の aliases の利用を許します:

Table20.2.Veriexec access type aliases

Alias Expansion
PROGRAM DIRECT
INTERPRETER INDIRECT
SCRIPT DIRECT, FILE
LIBRARY FILE

fingerprints 生成スクリプトのサンプルは /usr/share/examples/veriexecctl にあります。 signatures ファイル生成の後、 /etc/signatures に save し、 rc.conf で Veriexec を enable にします:

	veriexec=YES

20.4.Strict levels

different people が Veriexec を 異なる目的で使いたいかもしれませんから。 われわれは、また、 4つの strict levels を定義し、 ranging 0-3 、そして、 learningIDSIPS 、および lockdown モードと名付けました。

strict level 0 、 learning モードでは[in]、 Veriexec は、いかなる異常についても無抵抗で、そして simply に warn をします。 verbose level 1 と併用して、システムをこのモードで running することで署名ファイルの fine-tune に can help 。これはまたカーネルに 新しい entries をロードできる唯一の strict level でもあります。

Strict level 1 、あるいは IDS モード、は、 fingerprint[署名]の合致しないファイルのアクセスを拒絶します。 このモードは、 attacker[アタッカー]に悪意のある変更をされたかもしれないファイルへのアクセスを simply に妨げたいほとんどのユーザーに適合します。##

Strict level 2, IPS モード、 monitored したファイルの integrity[清潔性] の protect[保護] に向けて 努力しようと一歩進みます。 fingerprint の不一致のファイルへのアクセスを妨げるのに加え、 monitored ファイルの write アクセスもまた拒絶し、そのファイルの removal も 妨げ、アクセス方法も強制します(signatures ファイルに規定のように)。

Lockdown モード (strict level 3) は custom made の 特殊用途 machines 、または attacker のシステムの不正利用の後の防御の最後の一線として 高 critical 状況 で使うことができ、そして removed する事からの traces を防ぎたくて それで、事後分析をすることができます。## これは新しいファイルの作成を prevent し、そして Veriexec が monitored していないファイルのアクセスを拒みます。

your signatures ファイルを fine-tune するために strict level 0 および verbose level 1 で Veriexec を first に run し、 希望のアプリケーションが正しく run することを確実にし、そして strict level を上げるだけ(および verbosity レベルは下げること)が推奨されます。 reboot 後 strict レベルを望んだレベルに自動 raise させるのに /etc/sysctl.conf が使え:

	kern.veriexec.strict=1

20.5.Veriexec and layered file systems

Veriexec はクライアント側の NFS ファイルシステム、および union ファイルシステムのような layered ファイルシステムで利用可能です。 これらのファイルシステムに住むファイルは、 /etc/signatures ファイルに specified されている事だけ 必要で、および、 ファイルシステムが fingerprints がロードされる前にマウントされる必要があります。

もし、 layered ファイルシステムを使っていくなら、 各 layer にある保護したいファイルの fingerprint を確実に include する必要があります。 もし、これに失敗すると、誰かが layered ファイルシステム stack の異なる layer を使って、 Veriexec が保護するファイルを overwrite することができます。 この制限は、後の versions の NetBSD では取り除かれるでしょう。

もし、 layered ファイルシステムも NFS も使っていかないなら、 これらの機能をカーネル設定で disabled すべき事が推奨されます。 ##もし、 layered ファイルシステムを使いたいなら、 前の段落の instructions に従い、 そして、あなたが保護したいファイルの 全 layers で fingerprints を持つ事を確実にする必要があります。## そのうえ、全ての mounts が完了した後に securelevel を 2 に raise べきです:

	kern.securelevel=2

new layers が Veriexec の保護を危険にさらすマウントをする事を妨げます。##

20.6.Kernel configuration

Veriexec の利用には、署名ファイルの作成のほかに、 カーネルの設定ファイルでそれを enable (uncomment) にしなければならず: (例 /usr/src/sys/arch/i386/conf/GENERIC):

	pseudo-device veriexec

それから、サポートしたいハッシュアルゴリズムを enable する必要があり:

	options VERIFIED_EXEC_FP_MD5
	options VERIFIED_EXEC_FP_SHA1
	options VERIFIED_EXEC_FP_RMD160
	options VERIFIED_EXEC_FP_SHA512
	options VERIFIED_EXEC_FP_SHA384
	options VERIFIED_EXEC_FP_SHA256

オペレーティングシステムの version およびプラットホームによっては、 これらは既に enable です。終わったら、カーネルの再構築および再インストールを行います。 更なる instructions は Chapter32, Compiling the kernel を御覧ください。

Veriexec デバイス /dev/veriexec が無ければ、 次のコマンドを running ことで手作業で作れます:

# cd /dev
# sh MAKEDEV veriexec