pam_fail_delay − エラー時に遅延を要求 |
#include <security/pam_appl.h> int pam_fail_delay(pam_handle_t *pamh, unsigned int usec); |
申 請ユーザのアクセスをスキームが拒否する場合にかかる時間を悪用すること で、しばしば認証スキームに攻撃可能です。タイムアウトが 短い場合、 腕 力 に よる辞書攻撃が可能な場合があります。自動処理により考えられるパスワー ドをすべて試して、攻撃者がシステムにアクセスしようとするのです。一 方、 個 々の失敗が (失敗の性質を示すような) 計測可能な時間を費す場合、認証処 理に関する有用な情報を攻撃者が取得可能です。後者の攻撃は、重要な情報の 隠れ通信路 (covert channel) である、手続き遅延を使用することです。 こ のような攻撃の効果を最低限に抑えるには、エラーとなった認証プロセスで ランダムな遅延を導入することが有効です。 PAM には、ランダムな遅延を導入 す る 機 能 が あ り ま す。 遅 延 は、 pam_authenticate(3) 関 数 と pam_chauthtok(3) 関数のエラー時に発生します。すべての認証モジュールが呼 び出された 後で、制御がサービスアプリケーションに戻る 前に発生します。 pam_fail_delay(3) 関数を使用すると、エラー遅延に必要な最低時間 ( usec 引数) を指定できます。この関数は、ユーザによるサービスの再申請を遅ら せ る ことが重要となるサービスアプリケーションや認証モジュールから呼び出せ ます。遅延の長さは必要なときに算出されます。長さは、 最大要求値に対する 擬似ガウシアン分布になります。最大要求値の上下 25% までに分散されるので す。 pam_authenticate(3) や pam_chauthtok(3) から戻る場合、問題の有無に関 係 なく、新しい要求遅延はデフォルト値の 0 にリセットされます。 |
ログインアプリケーションで約 3 秒間のエラー遅延が必要となる場合、このア プリケーションには以下のコードが含まれます。 pam_fail_delay(pamh, 3000000 /* micro-seconds */
); モジュールが遅延を要求しない場合、エラー遅延は 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 ガイドも参照してください。 |