3.1 パスワード |
3.1.1 パスワードの選択、管理
いまさらくどくど書きませんが、どんなに完全なセキュリティシステムを作っても、 鍵をかけ忘れてはどうにもなりません。推測しやすいパスワードも、ないに等しい ものです。3.1.2 シャドウパスワード
シャドウパスワード方式とは、暗号化したパスワードを/etc/shadowファイルに 保存することでセキュリティを高める方法です。長い間、UNIX系OSのパスワードは/etc/passwdファイルに暗号化して保存されていました。 /etc/passwdファイルはさまざまなプログラムがユーザ認証に利用するため、 このファイルのパーミッションは、一般ユーザに対して可読(読み出し可能)にしておかなければなりません。
note: 例えば、lsコマンドを実行したときにファイルの所有者名が表示されますが、 それはlsコマンド実行中に/etc/passwdファイルを使ってユーザIDから所有者名を得ているのです。
このような事態を避けるため、/etc/passwdファイルにはパスワード関連情報を一切記述せず、
rootユーザのみ可読な/etc/shadowファイルに暗号化したパスワードを保存するシャドウパスワード方式が考案されました。
# pwconv |
3.2 PAM(Pluggable Authentication Modules) |
Unix系OS上でアプリケーションを作成する際、ユーザ認証機能も独自に作ると、
開発に手間がかかるだけでなく、セキュリティホールを抱え込む危険性が高まります。
そこでユーザ認証機構を独立させてモジュール化し、
アプリケーション開発におけるユーザ認証関連のセキュリティ問題の発生を抑えると共に、
管理を簡略化してセキュリティを高めるシステム、PAMが開発されました。
現在では、RedHat(5.0以降)を含む、ほとんどのディストリビューションがPAMをサポートしています。
PAMの設定ファイルは/etc/pam.dディレクトリ以下にあります。RedHat7.2サーバインストールでは、次のような設定ファイル群があります。
# ls /etc/pam.d/ chfn kbdrate login ppp rsh su chsh linuxconf other rexec smtp sudo system-auth ftp linuxconf-pair passwd rlogin sshd |
type control module-path module-arguments |
auth | パスワードなどでユーザ認証を行う。 |
account | ユーザがアカウントを持っているか否かを確認する。 |
password | ユーザが認証情報を変更する際に使用する。 |
session | ユーザ認証の前後に実行することを指定する。 |
required | 認証に失敗すると認証を拒否する。 |
requisite | 認証に失敗すると認証を拒否し、以降のモジュールを実行しない。 |
sufficient | 認証に成功した場合、これ以前のモジュールで認証に失敗していても、認証する。 |
optional | これ以外のすべてのモジュールが無効であったときのみ、認証の許可/拒否を行う。 |
pam_cracklib | 新規パスワードの検査を行う。推測しやすい文字列などを拒否する。 |
pam_deny | すべてのアクセスを拒否する。 |
pam_limits | リソースの制限を設定する。 |
pam_listfile | 指定したファイルに基づきアクセス制御を行う。 |
pam_permit | アクセスを常に許可する。 |
pam_securetty | ログインターミナルの検査をする。 |
pam_shells | /etc/shellsファイルにユーザの使用するshellが記述されている場合、認証を行う。 |
pam_pwdb | パスワードデータベースライブラリを呼び出し、pam_unix_*モジュール群を更新する。 |
1 #%PAM-1.0 2 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed 3 auth required /lib/security/pam_pwdb.so shadow nullok 4 auth required /lib/security/pam_shells.so 5 account required /lib/security/pam_pwdb.so 6 session required /lib/security/pam_pwdb.so |
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/
home |index |previous |next |contents