2011-01-04 3 views
11

ターミナルサーバーで実行する小さなクライアントプログラムを作成しています。私はそれが指定されたサーバー上でのみ実行されることを確認する方法を探していますし、サーバーから削除された場合、機能が停止します。仮想マシンでも確実に使用できる一意のコンピュータ識別子はありますか?

私はそれを100%安全にする方法がないことを理解しています。ほとんどのパワーユーザーがそれを行うことが難しくなるようにしたいと思いません。

プロセッサID、WindowsプロダクトID、コンピュータGUID、その他のUIなど、さまざまな一意の識別子があります。ターミナルサーバーは仮想マシンなので、このマシンに完全に固有のものは見つかりません。

これを最も安全にするために何を調べるべきかに関するアイディア。アプリケーション自体の目的を破るため、できるだけセキュアにする時間や必要性がありません。

私はMACアドレスを使用したくありません。各マシンに固有のものですが、インターネット上の指示に従うことで偽装することができます。

私たちのシステムチームがVMサーバーをクローンし、社内のボリュームキーを使用しているため、私は既に同じ製品ID番号を持つ2つのサーバーにアクセスしています。私はアイデアを持っていません同じ製品IDをいくつも持っていますProduct ID

また、マシンを特定しようとする代わりに、このソフトウェアにアクセスするためにユーザーを特定し、

+0

MACアドレスはVMでもユニークであるべきですか? - http://stackoverflow.com/questions/3443093/what-is-a-good-unique-pc-identifier – Paolo

+2

どのように誰もMACアドレスを偽装することができる人の数についてこのような正確なデータを持っていますか?どうやらそれは5%です...私は分かりませんでした。 –

+2

私はMACアドレスをやりたいとは思っていません。 http://www.mydigitallife。情報/ 2008/06/30/how-to-change-or-spoof-mac-address-in-windows-xp-vista-server-20032008-mac-os-x-unix-and-linux/ –

答えて

0

もし私がMac IDと一緒に行くと95%を望むならば、スプーフィングすることができますが、デフォルトではマシン固有のものです。

+0

http://www.mydigitallife.info/2008/06/30/how-to-change-or-spoof-mac-address-in-windows-xp-vista-server-20032008-mac-os-x-unix -and-linux/ 私はこれを5%以上の人々が簡単に行うと考えています。 –

+0

最近の統計によると、米国におけるコンピュータリテラシーは20%です。私はそれらの4分の1未満がMACアドレスを偽装することができないと思います。私はちょうどあなたの質問を再言いたいと思います。 – BrokenGlass

1

最も単純な解決方法はmacアドレスを使用することですが、Windowsではediting the registryで簡単に変更できます。私は5%以下の人がそれをやる方法を知っていると言っています。ここで

は、C#でのMACアドレスを取得する方法は次のとおりです。

System.Net.NetworkInformation.NetworkInterface.GetPhysicalAddress(); 
+0

誰もWindowsでこれを行うことはできません。これは問題が示唆しているようです。 ;-) –

+0

@Codyあなたは間違っています! – marcog

+0

私は 'ifconfig'の使用を参照していましたが、これはあなたの答えから削除しました。私はMACがどんな動作環境でもなりすますことができることを知っています。 –

1

(数がある場合、またはカード)あなたがネットワークカードのMACアドレスにライセンスを結び付けることができます。

もちろん、ネットワークカードを変更すると、ソフトウェアの動作が停止します。

/TPMがサーバーで標準になる場合は、サーバーを認証するために使用する必要があります。ここに示されているよう

1

あなたは、PCのMACアドレスを取得することができます。もちろんhttp://www.java2s.com/Code/CSharp/Network/GetMacAddress.htm

は、このアプローチは欠陥がないわけではありません。この記事には他のアプローチもありますが、これは似ていますが、正確な重複はありません。What's a good way to uniquely identify a computer?

+0

ノートには、私がリンクしているStackOverflowポストの答えがいくつかのアップボントに値すると思います。受け入れられた答えは非常に良好です。特に、それが進行中の雑用であることについての注意です。 – David

1

macaddressアプローチで拡大しています。システムオーナーにしか知られていないSALTで、その周りにmd5関数を持つmacaddressを使用することができます。この方法では、macaddressはSALTを知らなくても役に立たない。

私のタパスの価値..:)

[編集] - などの塩析/ハッシュ上のC#の例のためにここで参照:設計により

MD5 hash with salt for keeping password in DB in C#

http://www.obviex.com/samples/hash.aspx

5

を、一意の仮想マシンを識別することは困難です。一意に識別できるようにしたものは、完全に仮想ではないことを意味します(仮想マシンを複製すると同一のマシンを生成する必要があるため)。

  1. ループバックネットワークアダプタを介してVMと通信するハートビートアプリケーションをホストマシン上に作成します。
  2. ハートビートアプリケーションがホストマシンを一意に識別できない場合は、実行を拒否してください。
  3. ハートビートアプリケーションが実行されていない場合は、メインアプリケーションの実行を拒否してください。

ハートビートアプリケーションを簡単にスプーフィングできないようにする方法を見つける必要があります。

端末プログラムを100%保護することはできません。この質問は、ソフトウェアの著作権侵害を防ぐことと同じです。

2

私が見つけたのはBIOS UUIDですが、あなたのユースケースにはまったくぴったりです。

VM内で使用可能なSMBIOS UUIDは、VMwareハイパーバイザおよび管理ツールによってVirtualMachine.config.uuid(参照:the uuid property on this page)としても使用されます。これは、特定のホストまたは特定のvCenterで一意であることが保証されていることを意味します。ただし、別のホストまたは別個のvCenterインストールで複製することができます。

また、仮想マシンのBIOS UUIDも変更可能です。これはAPIを介して変更することができます(ただし、クライアントを介して簡単にはできません)。

VMを正確に複製するために特別な努力とセットアップが必要になるため、これはおそらく95%に近づきます。

しかし、仮想化対応の観点からは(VM惨事復旧や将来の仮想化ソフトウェアのアップグレードなど)、UUIDやMACアドレスなどのハードウェアIDを使用すると、さまざまな問題が発生します。通常、新しい仮想マシンを作成することで、ソフトウェアの下にあるOSバージョンをリビジョンしたいときは、両方のサーバーのVM設定を手動で編集して、UUIDを一致させる必要があります。 MACを使用して、ネットワークアーキテクチャーを変更した場合、ソフトウェアはVMを特別なケースにする必要があります。これらのことは、仮想管理者の頭痛の原因になります(しかし、あなたが引き起こそうとしている正確な頭痛かもしれません - 確かに分かっているだけです)。

あなたが言及しているアクセス許可ベースのアプローチ、または必要に応じて同時ライセンスサーバーを使用することをお勧めします。しかし、ハードウェアに縛られたライセンスがすでに頭痛に晒されている、非常にバーチャルな背景から来ています。

関連する問題