2

この問題に取り組む最善の方法について、コミュニティからの提案を探しています。

  1. 私は git にシェフのレシピのコレクションを持っており、ラボを定義しています。

  2. ただし、誰かがクックブックの特定の不変セクション (ファイアウォール設定など) を追加したい状況を予見できます。

  3. ファイルの特定のセクションをロックして、変更されていないことを検証し、それ以外の任意の変更を許可するのにどのような戦略が理にかなっていますか?

  4. 理想的には、必要に応じてセクションを難読化する機能も解決します

保護された各ブロックのチェックサムを使用して、コードに独自の DSL を追加し、前処理してシェフに渡す前にラップを解除して検証しますか?

たとえば、フォーマットでの私の最初の試み-すべてのファイルに署名する必要がない限り、署名されたセクションをすべて削除するだけの人々の問題はまだ解決されていません

#---SIGNED-FILE SHA-256 507e74380188c07bad2fa66acb8cbbeeb63f84fcee5fd639499575654239cd49

#
# Cookbook Name:: jenkins
# Recipe:: default
#

# https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
# This is super-simple, compared to the other Chef cookbook I found
# for Jenkins (https://github.com/fnichol/chef-jenkins).
#
# This doesn't include Chef libraries for adding Jenkin's jobs via
# the command line, but it does get Jenkins up and running.

include_recipe "apt"
include_recipe "java"

#---SIGNED-SECTION-START SHA-256 e4d3d02f14ee2a6d815a91307c610c3e182979ce8fca92cef05e53ea9c90f5c7
apt_repository "jenkins" do
  uri "http://pkg.jenkins-ci.org/debian"
  key "http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key"
  components ["binary/"]
  action :add
end
#---SIGNED-SECTION-END

#---OBFUSCATED-SECTION-START SHA-256 5f536f2137dc7e2c5817de861d1329ead72b1e9d2dbb9dbe181ec7bc274dddeb
YXB0X3JlcG9zaXRvcnkgImplbmtpbnMiIGRvCiAgdXJpICJodHRwOi8vcGtnLmplbmtpbnMtY2kub3JnL2RlYmlhbiIKICBrZXkgImh0dHA6Ly9wa2cuamVua2lucy1jaS5vcmcvZGViaWFuL2plbmtpbnMtY2kub3JnLmtleSIKICBjb21wb25lbnRzIFsiYmluYXJ5LyJdCiAgYWN0aW9uIDphZGQKZW5k
#---OBFUSCATED-SECTION-END

package "jenkins"

service "jenkins" do
  supports [:stop, :start, :restart]
  action [:start, :enable]
end
4

1 に答える 1

0

ファイルが署名されたセクションで始まり、ファイル全体に見られる署名されたエンティティを説明する設計はどうですか。次に、解析コードで、各エンティティが説明どおりに存在し、削除されていないことを確認する必要があります。

リプレイ攻撃を防ぐには、各署名にタイム スタンプを含め、署名されたセクションのいずれかに変更を加えるたびに、ファイル全体の署名を再計算する必要があります。したがって、ファイルは次の場合にのみ有効です。

  • 「ヘッダー」に記述されている署名済みエンティティがファイルに存在します。

  • 各署名は検証され、同一のタイム スタンプが含まれています。

  • オプション: 署名のタイム スタンプがファイルのタイム スタンプと (許容可能なデルタ内で) 一致するか?

残りのリスクは、誰かがファイル全体を以前のリビジョンに置き換えることです (つまり、気に入らない新しいセクションを効果的に削除するため)。おそらく上記のようにファイルのタイムスタンプを調べることを除いて、それをどのように防御できるかわかりません。

注意。私の答えは、ファイルを作成して解析するときに何を達成できるかについての仮定を立てています。私はあなたの環境の制約を誤解している可能性があります (私は git に慣れていません)。もしそうなら、私を無視してください!

于 2012-09-02T10:03:53.840 に答える