Stack Exchangeよりもここに投稿するほうが運が良いと言われています。
IISでサードパーティアプリケーションをロックダウンする方法を探しています。これはWebサービスであるため、ログインページなどはありません。VPN環境での使用を目的としています。私はVPNなしでそれをオンラインにしようとしていて、それに何らかのセキュリティを追加する方法を考えています。特定のネットワーク、つまりビジネス製品に制限する必要があるので、それを使用するには、プライベートネットワーク(つまり、パブリックwifiではない)にいる必要があると言っても問題ないでしょう。私のアイデアは、IISでIPアドレス制限を使用し、ユーザーがインストールして数分ごとに現在のIPでサーバーを更新するアプリを作成し、サーバーは最近更新されたものを除くすべてをブロックすることです。
これはどの程度安全ですか?このアイデアに大きな欠陥はありますか?または、おそらくIISでこれを行うより良い方法はありますか?
編集:明確にするために-ソフトウェアは私が変更することはできません。これは、WCF WebサービスであるIISのいくつかのWebアプリケーションで構成されています。次に、クライアントコンピュータには、それらに接続するプログラムがあります。クライアントプログラムまたはサーバーを編集することはできません。単にIISに何らかのセキュリティ対策を挿入することで接続を許可または拒否するか、または独自のカスタムソフトウェアと組み合わせてパケットを傍受することを望んでいます。認証を行うためにクライアントPCにインストールされます。
本当に脅威モデルに依存しますが、Webサービスによって提供される情報と機能はどの程度価値がありますか?どのタイプの攻撃者と特定の攻撃が心配ですか?
IPアドレス制限は最も基本的な保護形式であり、実際にはセキュリティを提供しません。たとえば、プロキシ経由でバイパスするのは簡単です。また、企業のパブリックアドレスをホワイトリストに登録した場合、その背後にあるマシンが何であるかわからなくなりますNAT=つまり、それが基本的にパブリックサービスであるか、IPアドレス制限を認証に対する深度メカニズムは問題ありません。そうでない場合、セキュリティ上の利点は得られず、そうしないこともあります(追加の管理とトラブルシューティングのトレードオフのため)。ユーザーがトラブルシューティングとサポートを使用して何かをインストールすることには、通常、非常に悪い考え。
価値のあるWebサービスである場合、認証の標準的な方法は次のとおりです。
証明書による相互認証。 http://msdn.Microsoft.com/en-us/library/aa292114%28v=vs.71%29.aspx 。これにより、強力な認証が提供され、管理するパスワードがなくなります。証明書は強引に強制したり推測したりすることはできず、真のサービスに接続していることを第三者に保証します。 startssl.comのようなものを使用して証明書のコストを削減できますが、証明書の発行、サポート、更新、失効が必要です
APIキー-もう1つの最も一般的な方法は、Webサービスの各ユーザーにAPIキーを提供することです。これは事実上パスワードであり、パスワードのすべてのリスクとメリットをもたらします。ブルートフォースと推測のリスクを軽減するには、十分な長さ、複雑さ、ロックアウト/バックオフが必要です
インターネット上のVPNを介して使用することを目的とした社内の環境向けに設計されたWebサービスを配置する場合は、細心の注意を払います。これを行う前に、アプリケーションとインフラストラクチャの観点からセキュリティをテストすることをお勧めします。特にREST Webサービスを使用している場合は、クロスサイトスクリプティング、SQLインジェクション、およびその他の一般的なWebアプリケーションの脆弱性の可能性が高くなります。
OWASPトップ10によると(このリンクは、時間の経過とともにT10プロジェクトを弱体化させているため、このリンクは最新ではないことに注意してください)-IPアドレス、IPプレフィックス、またはDNS名に基づく認証の使用に依存しないでください。これは、A)資格情報ごとに1人に結び付けられていないこと、およびB)なりすまし、だまされ、プロキシ化、または他の方法で不正な使用のために敵対者に利用可能になる可能性があるため、危険な慣行です。
IPアドレスまたはアドレス範囲マスク、DNSまたはDNS逆引き参照、リファラーヘッダーなどの認証の唯一の形式として、なりすましの資格情報に依存しないでください