web-dev-qa-db-ja.com

pam_krb5のKerberosを介して無効にされたADアカウントへのアクセスを拒否するにはどうすればよいですか?

AD/Linux/LDAP/KRB5ディレクトリと認証のセットアップが機能していますが、小さな問題が1つあります。アカウントが無効になっている場合でも、SSH公開鍵認証はユーザーログインを許可します。

Kinitとkpasswdは、パスワードや操作を行わなくても「クライアントの資格情報が取り消されました」を返すため、Kerberosクライアントが無効なアカウントを識別できることは明らかです。

PAMを構成して(sshd_configの "UsePAM yes"を使用して)、公開鍵によって認証が行われる無効なアカウントのログインを禁止できますか?これはうまくいかないようです:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

回答にwinbindを導入しないでください-使用しません。

10
Phil

もう少し宿題をしました、そして私自身の質問に答えています。

RedHatのpam_krb5(pam_krb5-2.3.14-1/src/acct.c)、モジュールが認証段階に参加していない限り、pam_sm_acct_mgmt()関数は、モジュール構成に応じてPAM_IGNOREまたはPAM_USER_UNKNOWNのいずれかを返します。したがって、私がやりたいことを行うには、pam_krb5コードを変更する必要があります。

JohnGHの答えは良い回避策です。 「proxy」属性を使用して、シェルを壊したり、「disabled-users」グループに追加したりするなど、同じ意味を伝えます。

別の回避策(部分的にテスト済み)は、アカウントの有効期限を過去に設定し、pam_unixなどのモジュールを使用してアカウントチェックを失敗させることです。これは、KRB5ではなくLDAPを使用しますが、同じ集中管理されたユーザーディレクトリに対してクエリを実行します。

4
Phil

ロックされたアカウントがSSH経由でログインできないように、SSHを「修正」するように求めている他の人を読んだことがあります。 (Debianバグ219377を参照)このリクエストは、「passwd-lをpasswdのみをロックすることに慣れていたユーザーからの期待に反するため」パッチとして拒否されました。 (Debianバグ389183を参照)例:一部の人々は、パスワードログインからアカウントをロックできることを望んでいましたが、それでもSSHキーアクセスを許可しています。

PAMは、ロックされたばかりのアカウントへのSSHキー認証を拒否しません(たとえば、SSHキー認証は、アカウントが通常ロックされる場所であるパスワードフィールドに注意を払わないように設計されているため、パスワードの試行が無効であるため)。

パスワードハッシュエントリは、pam_acct_mgmt()時ではなく、pam_authenicate()時に暗黙的にチェックされることを理解しています。 pam_unix.so pam_sm_acct_mgmt()はパスワードハッシュをまったくチェックせず、公開鍵認証中にpam_authenticate()は呼び出されません。

アカウントのログインを一元的に無効にできるようにする場合は、次のような他の回避策が考えられます。

ログインシェルを変更します。

authorized_keysファイルを(再)移動します。

アクセスを拒否する別のオプションは、sshd_configでDenyGroupsまたはAllowGroupsを使用することです。 (次に、ユーザーを「sshdeny」グループに追加するか、「sshlogin」グループからユーザーを削除して、ログインを無効にします。)(こちらをお読みください: https://help.ubuntu.com/8.04/serverguide /user-management.html

From http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL 「問題は、pam_unixがパスワードハッシュフィールドの内容ではなく、シャドウエントリの有効期限のみをチェックすることです。」これが当てはまる場合、アカウントをロックするのではなく、expiringする必要がありますか?

あなたの質問への答えはおそらく「はい、ifパスワードフィールド以外の場所でそれらを無効にしている」です。

4
JohnGH

SSH鍵ベースの認証はPAMから独立しています。次の解決策があります。

  • sshd_configでキーベースの認証を無効にする
  • sshdを変更して再コンパイルし、フックを追加して、キーベースの認証がアカウントがpam経由で有効かどうかも確認するようにします。

Kerberos経由でパスワードなしのログインを使用する場合は、次のことを確認する必要があります。

  • sshdにpamを使用していません
  • kerberosが適切に構成されています。例えば。できるよ kinit -k Host/server1.example.com@DOMAIN
  • sshdはgssapiを使用するように設定されています。

    KerberosAuthenticationはいGSSAPIAuthenticationはいGSSAPICleanupCredentialsはいUsePAMいいえ

  • puTTY v0.61以降のようなKerberos化されたsshクライアントを使用します。

2