この記事では、LinuxシステムにおけるPAM(Pluggable Authentication Modules)の基本的な設定から応用例まで詳しく解説します。PAMはLinuxやUnixの認証に広く使用されるフレームワークですが、その設定が複雑なため、理解しきれない人も多いかと思います。ここでは基本から応用までを具体的なコード例とともに解説します。
はじめに:PAMとは
PAM(Pluggable Authentication Modules)は、認証、認可、アカウント管理、セッション管理などの様々な機能をモジュール化して提供するフレームワークです。多くのLinuxディストリビューションとUnix系OSで採用されています。
基本設定:`/etc/pam.d/`における設定
PAMの設定は`/etc/pam.d/`ディレクトリ内にあります。一般的な設定ファイルとしては`common-auth`、`common-account`、`common-session`などがあります。
# /etc/pam.d/common-auth
auth required pam_unix.so
上記の例では、UNIX認証モジュール`pam_unix.so`が必須(required)であると指定しています。
応用例
1. 二段階認証の実装
Google Authenticatorなどを用いた二段階認証もPAMで容易に実装できます。
# /etc/pam.d/sshd
auth required pam_unix.so
auth required pam_google_authenticator.so
2. パスワードの複雑性を強制
PAMを用いて、パスワードに一定の複雑性を強制することができます。
# /etc/pam.d/common-password
password requisite pam_unix.so
password requisite pam_pwquality.so retry=3
3. ユーザーによるリソース制限
`pam_limits.so`を使用して、特定のユーザーに対するリソース制限をかけることができます。
# /etc/security/limits.conf
@students hard nproc 20
4. 特定の時間にログインを制限
`pam_exec.so`を用いて、特定の時間帯にログインを許可・拒否するスクリプトを実行できます。
# /etc/pam.d/sshd
auth required pam_exec.so /etc/security/check_login_time.sh
5. 疑似端末(tty)によるアクセス制御
`pam_tty_audit.so`を用いて、特定のttyからのアクセスを記録・制御できます。
# /etc/pam.d/sshd
session required pam_tty_audit.so enable=*
まとめ
PAMはLinuxシステムにおいて非常に強力な認証とセキュリティ管理のフレームワークです。しかし、その設定は緻密で複雑なため、注意深く設定を行う必要があります。今回紹介した応用例を参考に、ぜひともPAMの設定に挑戦してみてください。
コメント