web-dev-qa-db-ja.com

pam_shield.soをアンインストールした後のPAMエラー

apt installを使用してインストールされたPAMモジュールをアンインストールする正しい手順を知りたいのですが。

「libpam-shield」 https://packages.debian.org/stable/admin/libpam-shield サーバー(debian 9、ssh、imapを実行)にインストールして、認証を繰り返してIPをブロックしました失敗。 (私はapt install libpam-shieldを使用してDebian安定リポジトリからインストールしました。)後で使用しないことにしたので、apt remove libpam-shieldを使用してアンインストールしました。ただし、この後でも、ファイル/etc/pam.d/common-authにはコメントされていない行auth optional pam_shield.soが含まれているため、/var/log/auth.logに警告行が繰り返されます。

PAM unable to dlopen(pam_shield.so): /lib/security/pam_shield.so: cannot open shared object file: No such file or directory
PAM adding faulty module: pam_shield.so

したがって、上記のcommon-authの行をコメントアウトしましたが、それによってimapおよびssh認証の試行で認証エラーが発生し始めました。

grep shield -r /etc/pam*は、pam_shieldが言及されている他の場所を表示しませんでした。 pam_shield.soが見つからないというエラーをなくすには、PAM構成ファイルに他にどのような変更を加える必要がありますか? libpam-shieldをアンインストールした後、サーバーを再起動しました。

追加:/etc/pam.d/common-authからの行は次のとおりです。

auth    [success=3 default=ignore]      pam_unix.so nullok_secure
auth    optional pam_shield.so 
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
4
Manoj Kummini

PAMドキュメント を見てください:

より複雑な構文の場合、有効な制御値は次の形式になります。

[value1 = action1 value2 = action2 ...]

[...]

ActionNは、次のいずれかの形式をとることができます。

[...]

N (an unsigned integer)

スタック内の次のN個のモジュールを飛び越えるという副作用があるokと同等です。 0に等しいNは許可されないことに注意してください(そのような場合はokと同じになります)。

したがって、success = nはn行をスキップします。したがって、auth optional pam_shield.so行を削除すると、1行少なくスキップする必要があるため、最初の行を次のように変換します。

auth    [success=2 default=ignore]      pam_unix.so nullok_secure

目標は、成功または次のメソッドでpam_permit.soにジャンプすることです(pam_shield、良い効果を得るためにpam_ldapの後に置くべきではなかったのだろうかと思いますが、私は十分に知りませんこの)。

しかし実際には、これはすべて、自動再構成を処理するコマンド pam-auth-update を(パッケージから)使用することにより、パッケージの削除時に自動的に管理されているはずです。パッケージの取り外し中に問題が発生した可能性があります。

libpam-shieldおよびlibpam-ldapをインストールおよびアンインストールしようとしたすべての試みで-)どのような順序でも、構成は常に期待どおりに処理されました(パッケージが削除されると、関連する行が消えます)。そのため、なぜそれがうまくいかなかったのか戸惑います。

私はアドバイスしたい:

  • 足を撃たないように注意してください。アクセスを維持または回復する方法を常に持っている
  • パッケージlibpam-shieldを再インストールして再アンインストールし、ディストリビューションで正しい設定が行われるようにします。
  • pam-auth-updateを実行します。提供されたリストに「PAMシールド:パスワード推測を試みるIPをブロックする」と記載するべきではありません。そうでない場合はまだ問題があります。それでも言及されている場合は、無効にすることを選択できるため、とにかく適切な構成が再構築されます。

更新:また、manページで説明されているように:

スクリプトは、/ etc/pam.d/common- *へのローカル変更を尊重するためにあらゆる努力をします。モジュールオプションのリストへのローカル変更は保持され、スタックの管理対象部分にモジュールを追加すると、pam-auth-updateは構成ファイルをローカルで変更されたものとして扱い、指定されない限り構成ファイルにそれ以上の変更を加えません。 --forceオプション。

手動での変更が/etc/pam.d/common-authのコメントと衝突して行われた場合、おそらくpam-auth-updateは変更を回避します。これは、以下を使用してデフォルトのパッケージ処理にリセットできます。

pam-auth-update --force
2
A.B