ワンタイムパスワードでのSSHアクセスの構成

真面目な会社では、休暇をとった従業員が職務を緊急に果たす必要がある場合があります。 会社が特定の従業員、たとえば、現在スタッフの多いオフィスから数千キロ離れたビーチに横たわっているシステム管理者を必要としている状況を考えてみましょう。 この従業員が突然頭に落ちた仕事をすることに同意し、リゾート内にインターネットカフェがあると仮定します。 しかし、ここに問題があります。カフェは暗いレーンにあり、そのコンピューターには人気のあるOS、トロイの木馬、キーロガー、その他のハックツールがあるため、これらのマシンの会社のメインサーバーからルートパスワードを入力するのはかなり無理です。

この問題にはいくつかの解決策があります。 たとえば、ワンタイムパスワード、つまり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をサポートするのに同等に役立つわけではありません。 この記事の著者は、必要に応じて、 Jcraft、Inc.の JCTermの1つのアプレットのみに会いました ソースコードは、開発者のサイトで入手できます。 ここでアプレットをテストできます

記事を締めくくり、 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

Source: https://habr.com/ru/post/J99377/


All Articles