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-auth、common-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 はログイン失敗回数をカウントし、ロック機能を提供します。
コメント