dポイントプレゼントキャンペーン実施中!

お世話になっております。
RHEL5で3回パスワードを間違えた際、
そのアカウントを60秒間ロックしたいと考えております。
SSHのアクセスを管理したいため、pamにて設定したいのですが、
下記のようにauthへpam.tally.soの行を追加することにより、
「3回パスワードを間違えた時にそのアカウントをロックする」ことは確認できました。
# vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam.tally.so deny=3
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
:
:

「60秒間ロックする」という設定を追加したいのですが、
どのように設定する必要がありますでしょうか?
ご存知の方がいらっしゃいましたら、
ご教授の程宜しくお願い致します。

A 回答 (2件)

VMware Player上のCentOSでやってみました。



pam_tally.soではなく、pam_tally2.soとpam_exec.soを使って下記のような感じに。

auth required pam_tally2.so deny=3
auth optional pam_exec.so debug log=/var/tmp/auth /bin/locktest

/bin/locktestはスクリプトで、内容は…
#!/bin/bash

FAILUREDATE=`date -r /var/tmp/auth +'%D %T'`
FAILURE=`/sbin/pam_tally2 | grep "${FAILUREDATE}"`
if [ $? = 0 ]; then
if [ `echo "${FAILURE}" | awk '{print $2}'` = 3 ]; then
UNLOCKUSER=`echo "${FAILURE}" | awk '{print $1}'`
echo "sleep 60;sbin/pam_tally2 --user ${UNLOCKUSER} --reset --quiet" | at now
fi
fi


微妙に汚い書き方かも知れませんが。
# スクリプト中のいくつかのコマンドは…フルパスで書いた方がいいのかも知れません。
# 一応動作確認はしていますが…。

なお、同時にログイン失敗された場合の排他処理が無いです。(/var/tmp/authファイルのタイムスタンプ使っているので…)
/var/log/secureに出力される内容から、排他できるかどうか……。

ロックがかかった状態でログイン失敗すると、/sbin/pam_tally2で出力される失敗カウントは増えていくので、注意が必要…です。

# スクリプトファイルの名前や場所、pam_exec.soのログファイルの名前や場所は適当に変更して下さい。
# rootユーザーで実行されるようですので、パーミッションは…なんとかなりますかね。
# 予めログファイル作成しておかないと、パーミッション000で作成してくれやがりました(汗)
    • good
    • 0

具体的な方法はちょっとわかりませんが…



pam_exec.soで外部コマンドが起動できるようです。
pam_tally.soでロックがかかった際にpam_exec.soを呼び出すようにルールを作成して、pam_tallyコマンドでパスワードミスの回数をリセットさせるようなスクリプトを実行させれば可能なのではないか…
と思われます。
sufficient等の項目にはいろいろ条件が記述できる…ようですし。
詳しくは… man 5 pam.conf でしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!