ユーザの管理と認証

Linuxシステムのセキュリティにおいて、ユーザ管理と認証機構は極めて重要です。この章では、NSS(Name Service Switch)、PAM(Pluggable Authentication Module)、SSSD(System Security Services Daemon)などを用いたユーザ認証と、Kerberos、LDAP、AD(Active Directory)連携、そしてパスワードポリシーやログイン制限の実装方法について詳しく解説します。


目次

NSS(Name Service Switch)の理解と設定

NSSは、ユーザ情報やホスト名解決などの問い合わせ先を定義する仕組みです。構成ファイルは /etc/nsswitch.conf です。

passwd:     files sss
shadow: files sss
group: files sss
  • files: ローカルファイル(例:/etc/passwd)
  • sss: SSSDを通じたリモートソース(例:LDAP、AD)

PAM(Pluggable Authentication Modules)

PAMは、Linuxの認証方式をモジュール化した仕組みです。設定ファイルは /etc/pam.d/ 以下にあり、common-authcommon-password などがよく利用されます。

パスワードポリシー強化

password requisite pam_cracklib.so retry=3 minlen=12 difok=3
  • retry=3: 入力失敗は3回まで
  • minlen=12: 最低12文字
  • difok=3: 前のパスワードとの差3文字以上

アカウントロックとログイン試行制限

pam_tally2 の使用例:

auth required pam_tally2.so deny=5 unlock_time=600 onerr=fail audit
  • deny=5: 5回失敗でロック
  • unlock_time=600: 600秒後に自動解除

関連ツール:

  • faillog: ログイン失敗履歴の表示
  • chage: パスワード有効期限などの管理

SSSDの理解と設定

SSSDはLDAPやKerberosと連携し、キャッシュ機能付きのユーザ認証を提供します。

設定ファイル:/etc/sssd/sssd.conf

[sssd]
services = nss, pam
domains = example.com

[domain/example.com]
id_provider = ldap
auth_provider = krb5
ldap_uri = ldap://ldap.example.com
krb5_server = kerberos.example.com
  • services: PAMとNSSと連携
  • id_provider: ユーザ情報取得元
  • auth_provider: 認証方式(Kerberosなど)

⚠️ sssd.conf はパーミッション 600 にする必要があります。


Kerberosによる認証

設定ファイル:/etc/krb5.conf

[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = true

[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}

コマンド

  • kinit: チケット取得
  • klist: チケット一覧表示
  • kdestroy: チケット破棄

NSS + PAM + SSSD + Kerberosの連携

連携イメージ:

[User Login]
↓ PAM
↓ pam_sss.so
↓ SSSD
↓ NSS or Kerberos

LDAPやActive Directoryとの統合

SSSDはADやIPAとも連携可能で、複数の認証ソースを統合できます。設定は sssd.conf に記述し、realm join を使ってADドメイン参加するケースもあります。


パスワード有効期限と変更管理

  • chage コマンド:パスワードの有効期限を管理
  • /etc/login.defs:パスワードポリシーの全体設定

例:

PASS_MAX_DAYS   90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14

章末問題(四択)

Q1. PAMモジュールpam_cracklib.soの目的はどれか?
A. ユーザのログイン履歴の記録
B. パスワード複雑性ポリシーの強制
C. Kerberosのチケット管理
D. LDAPによるユーザ認証

解説

正解:B

pam_cracklib.so はパスワードの複雑性(文字数、種類など)を強制するモジュールです。

Q2. SSSDと連携するために、NSSの設定ファイルで正しいのはどれか?
A. /etc/sssd.conf
B. /etc/nsswitch.conf
C. /etc/shadow
D. /etc/login.defs

解説

正解:B

NSSの設定は /etc/nsswitch.conf に記述します。SSSDと連携するには sss を指定します。

Q3. Kerberosのチケットを破棄するために使用するコマンドはどれか?
A. kinit
B. kdestroy
C. kpasswd
D. krb5.conf

解説

正解:B

kdestroy はKerberosチケットを破棄するコマンドです。

Q4. ログイン試行回数超過によるアカウントロックに関係するPAMモジュールはどれか?
A. pam_unix.so
B. pam_cracklib.so
C. pam_sss.so
D. pam_tally2.so

解説

正解:D

pam_tally2.so はログイン失敗回数をカウントし、ロック機能を提供します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次