PAMは登場して以来嫌いです。
Debian Squeezeの管理者レベルでPAMデバッグをオンにするにはどうすればよいですか?
見つけたすべてのリソースをチェックしました。グーグル、マンページ、なんでも。私がまだ試していない唯一のことは(PAMが嫌いだと言っただけですか?)、PAMのライブラリソースを掘り下げています。
私は解決策をググってみました、何も。これまでに見つけたもの:
http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion (/etc/pam_debug
)および http://nixdoc.net/man-pages/HP- UX/man4/pam.conf.4.html (/etc/pam.d/
のPAMエントリのdebug
オプション)。
いいえ、動作しません。PAM出力がない、何もない、完全な無音。
解決策を探している間、私はパムへのリンクをたどりました。それはドイツのガソリンスタンドです。ええ、そうです、恐らくそれらの数十億のヒットには手掛かりが隠されているかもしれませんが、私が撃たれると、発見する前に死んでしまいます。
残りは参考です:
どのような問題がありましたか?
Debian Squeezeにアップグレードした後、何かがおかしくなりました(まあ、それはかつて、えっと、Echの上で正しかったものでした..ああ、はい、Woody)。だから、それはおそらくDebianのせいではなく、長い間ねじ込まれたセットアップです。 PAMで何かをしなければならないという印象をすぐに感じましたが、何が起こっているのか本当にわかりませんでした。私は完全に暗闇の中で、一人で、YKWIMとしては無力でした。一部のSSHログインは機能しましたが、一部は機能しませんでした。ちょっと面白かったです。 ssh -v
には手掛かりがありません。/var/log/*
には手掛かりがありません。 「認証成功」または「認証失敗」だけで、同じユーザーが並行して1つのセッションで成功し、同時に別のセッションで失敗することがありました。そして、あなたが本当に手に入れることができるものは何もありません。
他のオプションのtrainloadを掘り下げた後、私は見つけることができました。 nullok
とnullok_secure
、Debianスペシャルがあります。 /etc/securetty
にねじ込まれた何かがあり、tty
(多少ランダムです)に応じて、ログインが拒否されたか拒否されました。本当にいいね、ふw!
修正は簡単で、すべてが元通りになりました。
しかし、これは私に質問を残しました、将来そのような混乱をデバッグする方法。 PAMが私を狂わせるのはこれが初めてではない。だから私は最終的な解決策を見たいと思います。 「解決済み」のような最終版、「アルマゲドン」のような最終版ではありません。ありがとう。
ああ、ところで、これは、PAMが登場して以来、PAMを憎むことは良いことだという私の信念を再び強めました。私はそうすることを述べましたか?
あなたが試すためのいくつかのこと:
Syslogのデバッグメッセージのロギングを有効にしましたか?
cp /etc/syslog.conf /etc/syslog.conf.original
vi /etc/syslog.conf
次の行を追加します。
*.debug /var/log/debug.log
:wq!
で終了します。
touch /var/log/debug.log
service syslog restart
次のように、すべてのモジュールのデバッグを有効にできます。
touch /etc/pam_debug
または、/etc/pam.d/system-auth
またはその他の/etc/pam.d/*
ファイルの関連する行の最後に「debug」を追加することで、関心のあるモジュールに対してのみデバッグを有効にすることができます。
login auth required pam_unix.so debug
次に、デバッグメッセージが/var/log/debug.log
に表示されるようになります。これがあなたを助けることを願っています!
少なくともCentOS 6.4では、/etc/pam_debug
は使用されません。
Pam_warn.soモジュールがインストールされている場合、次のようにログ出力を取得できます。
auth required pam_warn.so
success required pam_warn.so
このモジュールは、どの時点でも認証プロセスに干渉しないことを保証しますが、syslogを介して意味のあるものをログに記録します。
コードを調べてコンパイルした後、(1)ソースを介してこのデバッグモードを有効にすることが可能であり、(2)RHELパッチによって機能がほとんど使用できなくなった(少なくともpam_unixモジュール)、(3)とにかくコードをパッチする方が良いでしょう。
これをRHELで機能させるには、Linux-PAM ... src.rpm(1.1バージョンの場合)を取得して、specファイルを次のように変更します。
で始まる行を見つける
%構成、設定 \
その後に--enable-debug \を追加します
次に、rpmをビルドしてインストールします(強制的に、既存のパッケージを上書きします)。次に、ファイル/var/run/pam-debug.logを作成します。
install -m 622 /dev/null /var/run/pam-debug.log
ファイルが存在しない場合、デバッグ出力はstderrに送信されます。
Stderrへの送信は、私の考えでは愚かであり、パッチの競合を引き起こしています。ファイルlibpam/include/security/_pam_macros.hに移動し、次の4行を置き換えることで、この動作を変更できます
logfile = stderr;
と
return;
ビルド時に、到達できないステートメントに関する警告が表示されますが、無視してかまいません。この変更は、sedスクリプトで行うことができます(パッチの後でRPMの%prepセクションに入れます)...
sed -i 's/logfile = stderr;$/return;/' libpam/include/security/_pam_macros.h
この小さなパッチを実行すると、%patch2を復元できます。正常に機能するはずです。
CentOS 6.4のPAMでデバッグログを有効にする方法を見つけるために、たまたま数時間を費やしました。この質問はDebianに関するものですが、他の人が私がすでに持っている時間を費やす必要がないことを期待して、CentOSでそれを行う方法を書き留めます。
結局のところ、pam
CentOSパッケージでデバッグログを有効にするのは簡単です。問題は、パッケージの再コンパイルが含まれていることです。したがって、最初に here からSRPM(例:pam-1.1.1-13.el6.src.rpm
)を見つけます。 SRPMからのパッケージのコンパイルについて知らない人は、 RPMビルド環境のセットアップ の手順を参照できます。
これが主なステップです。スペックファイルを開き、configure
呼び出しの--enable-debug
セクションに%build
を追加します。再コンパイル!新しく作成したパッケージを再インストールします。最後に、デバッグログが書き込まれるファイルを作成します。
$ Sudo touch /var/run/pam-debug.log
ファイルを作成しないと、端末で大量のログが飛んでしまうため、あまり役に立ちません。
DebianとUbuntu(およびおそらく他のディストリビューション)には、すべてのpam出力が記録される特別なログファイルがあります。
/var/log/auth.log
私は1日半にわたってpam関連の問題に取り組んできましたが、ようやくこのログファイルを見つけ、狂気から身を守りました。
以下は、予定どおりに機能しない場合のこのファイルの内容のサンプルです。
Jul 10 09:31:14 vagrant-ubuntu-trusty-64 pamtester: pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd_users.db': No such file or directory
Jul 10 09:36:20 vagrant-ubuntu-trusty-64 Sudo: vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
機能するときの外観は次のとおりです。
Jul 10 09:47:00 vagrant-ubuntu-trusty-64 sshd[5222]: pam_unix(sshd:session): session closed for user vagrant
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: error: Could not load Host key: /etc/ssh/ssh_Host_ed25519_key
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: Accepted publickey for vagrant from 10.0.2.2 port 54652 ssh2: RSA dd:3b:b8:2e:85:04:06:e9:ab:ff:a8:0a:c0:04:6e:d6
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 Sudo: vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 Sudo: pam_unix(Sudo:session): session opened for user root by vagrant(uid=0)
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 Sudo: pam_unix(Sudo:session): session closed for user root
Jul 10 09:51:41 vagrant-ubuntu-trusty-64 pamtester: pam_userdb(vsftpd:auth): user 'foo' granted access
Jul 10 09:51:44 vagrant-ubuntu-trusty-64 Sudo: vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
Jul 10 09:51:44 vagrant-ubuntu-trusty-64 Sudo: pam_unix(Sudo:session): session opened for user root by vagrant(uid=0)
Pamデバッグロギングを有効にする他の可能性はどれも私にとってうまくいきませんでした。
/ etc/securettyにねじ込まれた何かがあり、tty(これは多少ランダムです)に応じて、ログインが拒否されたかどうかが決まります。本当にいいね、ふw!
少し拡張していただけますか?
the file contains the device names of terminal lines (one per line, without leading /dev/) on which root is allowed to login.
記述した動作は、securettyが正常に動作しているように非常によく聞こえます(実際にrootとしてログオンしている場合)。
一部のSSHログインは機能しましたが、一部は機能しませんでした。
ここでも、PAM以外の制限が適用されている可能性があるため、/etc/ssh/sshd_config
がどのように見えるかを理解するのに役立つ場合があります。
特に、あなたの説明から:
sshd_config
にこの行が存在していることが原因である可能性があります:PermitRootLogin no
AllowGroups
またはAllowUsers
のsshd_config
での使用である可能性があります。サンプル行は次のようになります:AllowGroups users admins
もちろん、PAMが問題の一部である可能性は十分にありますが、他の手段で説明できるように、あなたの主な「症状」は私に聞こえます。