この問題にはいくつかの解決策があります。 たとえば、ワンタイムパスワード、つまりs /キーシステムを使用できます。このシステムでは、md4およびmd5アルゴリズムを使用してパスワードを生成します。 このシステムについては後述します。
S /キーは、クライアント/サーバーの原則に基づいて次のように機能します。ユーザーが秘密鍵を設定し、それが数百回ハッシュされます(たとえば、500)。 ユーザーのコンピューター(サーバー)には、シークレットフレーズの最後(500番目)のハッシュが格納されます。 のために
承認のために、ユーザーは、クライアントアプリケーションによって生成される秘密キーの以前の(499番目の)ハッシュを入力する必要があります。 サーバーは、ユーザーが入力した組み合わせをハッシュし、以前に保存されたデータと一致する場合、ユーザーを認証し、次回(498番目)のハッシュが現在のハッシュを要求されるように、入力されたばかり(499番目)のハッシュを記憶します。
s / keyの詳細については、 WikipediaおよびRFC 1760を参照してください 。
練習に移りましょう。 PAM(ユーザー認証用のAPIセット)とOPIE(ワンタイムパスワードを操作するためのPAMモジュール)を使用します。 SSHが既にインストールされていることが前提です。
OPIEをインストールします。
$ apt-get install opie-client opie-server
次に、構成ファイルを編集する必要があります。
/etc/pam.d/sshdファイルで 、行「 @include common-auth 」をコメント化する必要があります 。
#@include common-auth
その後に次を追加します。
auth sufficient pam_unix.so
auth sufficient pam_opie.so
auth required pam_deny.so
最初の行は、アカウントからのパスワードによる許可の可能性を残しています。 これが不要な場合は、削除できます。
PAMの構成の詳細については、 こちらとこちらをご覧ください 。
次に、 / etc / ssh / sshd_configを編集します -「 ChallengeResponseAuthentication no 」行でyesに変更する必要があります 。
次に、SSHを再起動します。
$ service ssh restart
OPIEデータは/ etc / opiekeysファイルに保存されます 。このファイルの形式は次のとおりです。
フィールドの説明
nameユーザーログイン。
sequenceハッシュシーケンス番号。
シードシードは、分類されていないランダムシーケンスです。
キー最後に使用されたハッシュ。
date最後の変更の日付。
time最後の変更の時刻。
このファイルは最初は空です。 初期データ(500番目のハッシュ自体を生成)を設定するには、 opiepasswdコマンドを実行する必要があります。
$ opiepasswd
Adding username:
You need the response from an OTP generator.
New secret pass phrase:
otp-md5 499 no8327
Response:
要求された応答(Response)を取得するには、2番目のコンソールを開き、 otp-md5 499 no8327コマンドを実行します。
$ otp-md5 499 no8327
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
パスワードを発明して入力します。 これに対して、WATS NIP DUD BRAD LIME DRUMに似たものが表示されます。
楽しい瞬間:ワンタイムパスワードは短い英語の単語で構成されることがあり、覚えやすいです。 opiepasswdアプリケーションの前のコンソールに戻り、指定されたシーケンス(WATS NIP DUD BRAD LIME DRUM)を入力します。 大文字でスペース付き。 専門家によると、小さな文字で入力できますが、著者はこれをチェックしませんでした。
$ opiepasswd
Adding username:
You need the response from an OTP generator.
New secret pass phrase: *********
otp-md5 499 no8327
Response: WATS NIP DUD BRAD LIME DRUM
ID username OTP key is 499 no8327
WATS NIP DUD BRAD LIME DRUM
$
ファイル/ etc / opiekeysを開くと 、次のような行が表示されます。
username 0499 no8327 f825803faf1afaee Jul 10,2010 20:12:12
休暇に行くときは、事前に生成されたワンタイムパスワードのリストを持ち込むことができます。 opiekey -n 100 499 no8327を実行すると、このリストを取得できます。 秘密のフレーズが求められ、その代わりに、100のリスト(番号は-n 100キーで指定されます)のフォームのワンタイムパスワードを取得します
...
480:SLUR ROVE TONE ADAM MUST IRK
481:FULL NAY LYLE BROW MARY COD
482:LOB DOME LIT GIN CHAD
...
パスワードシートは、スーツケースの奥深くに隠したり、単純なテキストファイルとして電話にコピーしたりできます。 この記事の最後で、ワンタイムパスワードを取得/保存するより便利で安全な方法を検討します。
SSHアクセスに戻りましょう。
$ ssh username@host
Password:
ワンタイムパスワードを使用してアカウントからパスワードを要求することを承認するには、パスワード「 opiepasswd 」を入力する必要があります。その後、ワンタイムパスワードが求められます。
$ ssh username@host
Password: opiepasswd
otp-md5 498 no8327 ext, Response:
答えとして、次を実行して取得できるシーケンスを紹介します
$ otp-md5 498 no8327
または
$ opiekey 498 no8327
実際、otp-md5またはopiekeyの代わりにs /キージェネレーターを使用して、任意のコンピューターで回答を生成できます。
すべてが正しく行われると、sshアクセスが取得されます。
休暇の伝説に戻りましょう。 sshクライアントを見つけることができるインターネットカフェはほとんどありません。 この問題の解決策として、Javaアプレットの形式でsshクライアントを使用できます。 残念ながら、すべてのsshクライアントがs / keyをサポートするのに
記事を締めくくり、 sourceforge.net / projects / otp-j2meで入手できるOneTimePasswordオープンソースjava2meアプリケーションについて言及する価値があります。 携帯電話にダウンロードすることで、不要なワンタイムパスワードシートの安全性を心配せずに安全に休暇を過ごすことができます。OneTimePasswordで簡単に生成できます。
素敵な休暇を!
記事を書くときに、次のサイトの資料が使用されました。
-en.wikipedia.org/wiki/S/Key
-tools.ietf.org/html/rfc1760
-www.delta-xi.net/index.php?/archives/16-OTPs-Using-sKey-with-SSH-via-OPIE.html
-blog.bogosity.se/2008/05/31/debian-ubuntu-skey-and-opie
-www.opennet.ru/cgi-bin/opennet/man.cgi?topic=opiekeys&category=5
-alexustes.dev.juga.ru/pam/article.html
-www.ibm.com/developerworks/ru/library/l-pam/index.html
-sourceforge.net/projects/otp-j2me
-www.jcraft.com/jcterm
-wiredx.net/jcterm