ネットワーク内でのシステムのセキュリティと健全性は扱いにくいことがあります。 単純にどのサービスがネットーワーク上で稼動しているか、 そして、その使用されているサービスの動作を追跡するだけでも 複数の管理者の時間を費やすことがあるからです。 さらに、FTPプロトコルやTelnetプロトコルによるネットワークを介した暗号化されていないパスワード の送信などに見られるように、 プロトコルが使用する方法が本質的に安全性に欠ける場合、 ネットワークサービスへのユーザー認証は危険を伴うことがわかります。
kerberosは、ネットワークへのユーザー認証をするための対称鍵暗号法 [1] を用いるMITで開発された、 ネットワーク認証プロトコルです。 — ネットワーク上でパスワードを送る必要がなくなります。 Kerberosを使用してネットワークサービスにユーザーを認証すると、 認証のないユーザーがネットワークのトラフィックを監視してパスワードを取り込もうとしても 適切に阻止されます。
従来のネットワークシステムのほとんどはパスワードベースの認証体系を使用しています。 この様な認証体系は、 特定のネットワークサーバにユーザーがユーザー名とパスワードを提供して認証を得る必要があります。 残念ながら多くのサービスで認証情報の送信は暗号化されていません。 この様な認証体系を安全にするためには、ネットワークは外部からアクセス不可能で、 そのネットワーク上の全てのコンピュータとユーザーは信頼され、 また信頼できるコンピュータとユーザーでなければなりません。
この様なケースでさえ、ネットワークがインターネットに接続されてしまうと、 ネットワークが安全であるとみなすことはもうできなくなります。 ネットーワークへのアクセスを取得する攻撃者は、 パケットスニッファとも呼ばれる簡単なパケットアナライザを使用し、 上述の方法で送信されたユーザー名とパスワードを傍受、 ユーザーアカウント及びセキュリティ基盤全体の健全性に被害を与えます。
Kerberosのおもな設計目標は、ネットワーク経由で送信されるプレーンテキストのパスワードを無くすと言う事です。 Kerberosを適切に使用することで、パケットスニッファが与えるネットワーク上の脅威を効率的に抹消します。
Kerberosにより、一般的で、極度のセキュリティ脅威は除去できますが、 さまざまな理由により、Kerberosを実装することは難しいことがあります:
/etc/passwdや/etc/shadowといった、 標準的なUNIXパスワードデータベースから、 Kerberosパスワードデータベースへとユーザーのパスワードを移行するのは、 単調な作業となりえます。 この移行作業を自動的に実行するメカニズムがないからです。 これに関する詳細は、オンライン 「Kerberos FAQ」の中の質問番号 2.23を参照してください。
Kerberosは、ほとんどの Red Hat Enterprise Linux サーバーで使用している PAM(Pluggable Authentication Modules) システムと部分的な互換性しかありません。 この問題の詳細については、項18.4を参照してください。
Kerberosでは、 信用できるユーザーが信頼できないネットワーク上で信用できないホストを使用していることを想定します。 Kerberosの第一目標は、 プレーンテキストのパスワードがそのネットワーク経由で送信されないようにすることです。 ただし、不正なユーザーが認証用に使用されるチケットを発行するホスト — key distribution center (KDC)と呼ばれる — にアクセスしている場合、 Kerberosの認証システム全体が被害を受ける危険性があります。
アプリケーションにおいてKerberosを使用するためには、 Kerberosのライブラリを正しくコールするために、アプリケーションのソースを修正しなければいけません。 このようにアプリケーションを修正することをkerberized(kerberos化) すると言います。アプリケーションによっては、 アプリケーションサイズ、又はその設計の為にこの修正が深刻な問題になることがあります。 その他の互換性のないアプリケーションには、 サーバとクライアント側が通信できるように変更する必要があります。 ここでも又、広範囲に及ぶプログラミングが必要になります。 デフォルトで kerberos をサポートしていないクローズドソースアプリケーションに よく問題がみられます。
Kerberosは「ALL or Nothing」のソリューションです。 一度ネットワークでKerberosを使用すると、 Kerberos化してしないサービスに暗号化していないパスワードを送信することは危険になります。 そうなると、ネットワークでKerberosを使用するメリットはまったくありません。 Kerberosによってネットワークを保護するためには、 暗号化していないパスワードを送信するクライアント/サーバ アプリケーションはすべてkerberos化されたバージョンを使用するか、あるいは、 このようなクライアント/サーバー アプリケーションは全く使用しない かのどちらかにしなければなりません。
[1] | ネットワーク通信を暗号化する/解読するために使用される共通鍵をクライアントとサーバーの 両者が共有するシステム |