PAM_FAIL_DELAY(3)

名称
pam_fail_delay - エラー時に遅延を要求

書式
#include <security/pam_appl.h>
or,
#include <security/pam_modules.h>

int pam_fail_delay(pam_handle_t *pamh, unsigned int usec);

解説
申請ユーザのアクセスをスキームが拒否する場合にかかる時間を悪用し、 認証スキームにアタックできることがあります。タイムアウトが 短い 場合でも、ディクショナリを 乱用 してアタックすることが可能なことがあります。アタッカが 自動化されたプロセスを使用し、考えられるパスワードをすべて試してシステムに アクセスしようとするのです。それぞれのエラーにかかる時間を計測できる場合 (エラーの本質を示す)、アタッカは認証プロセスに関する重要な情報を 入手できます。後者のアタックでは、重要な情報の 保護チャンネル を構成する手続き型遅延が利用されます。
このようなアタックを最低限に抑えるには、エラーとなった認証プロセスで ランダムな遅延を導入することが有効です。 PAM には、ランダムな遅延を導入する機能があります。遅延は、 pam_authenticate(3) 関数と pam_chauthtok(3) 関数の エラー時に発生します。すべての認証モジュールが呼び出された 後 で、制御がサービスアプリケーションに戻る 前 に発生します。
pam_fail_delay(3) 関数を使用すると、エラー遅延に必要な最低時間 ( usec 引数) を指定できます。この関数は、ユーザによるサービスの再申請を 遅らせることが重要となるサービスアプリケーションや認証モジュールから呼び 出せます。遅延の長さは必要なときに算出され、 最大 要求値からランダムに分散されます。 最大要求値の上下 25% までに分散されるのです。
pam_authenticate(3) や pam_chauthtok(3) から戻る場合、問題の有無に関係なく、新しい要求遅延は デフォルト値のゼロにリセットされます。

例
ログイン アプリケーションで約 3 秒間のエラー遅延が必要となる場合、 このアプリケーションには以下のようなコードが含まれます。

pam_fail_delay(pamh, 3000000 /* micro-seconds */ );
pam_authenticate(pamh, 0);

モジュールが遅延を要求しない場合、エラー遅延は 2.25 秒と 3.75 秒の 間になります。
認証プロセスで呼び出されるモジュールでも、以下のような遅延が 要求されることがあります。

(モジュール #1) pam_fail_delay(pamh, 2000000);

(モジュール #2) pam_fail_delay(pamh, 4000000);

この場合、実際のエラー遅延の算出に使用されるのは最大要求値です。 ここでは 3 秒から 5 秒です。

戻り値
pam_fail_delay(3) で問題が発生しなかった場合は、 PAM_SUC-CESS が戻されます。その他すべての戻り値は、重大なエラーとみなしてください。

エラー
pam_strerror(3) でテキストに変換できます。

準拠
X/Open グループが、PAM RFC. 1996/1/10 に組み込むことを検討中です。

バグ

見つかっていません。

関連項目
pam_start(3), pam_get_item(3), pam_strerror(3) システム管理者 、 モジュール開発者 、 アプリケーション開発者 用の Linux-PAM ガイドも参照してください。