よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

PAMを利用して認証

PAM(Pluggable Authentication Modules)とは、アプリケーションから認証処理を独立させることで、アプリケーション側で基本的な認証をしなくても済むように作成されたモジュールの名称で、これを利用することで、アプリケーションの変更なしに認証方式の変更が可能となり、さらにシステム管理者はアプリケーション毎に複数のパスワードを管理しなくてもよくなるというメリットがあります。

このPAMを利用して、今回はapacheBASIC認証にLinuxOSのアカウント(ユーザ名とパスワード)を用いるようにします。

上記の要求を満たすものとして、mod_auth_pammod_auth_external + pwathの2つがありますが、前者には多少、難点があるため注意が必要です。

Linuxではもともと、ユーザ情報と暗号化されたパスワードの情報を/etc/passwdで管理していたのですが、セキュリティ的に問題があるということでそれらを分離し、/etc/passwdでアカウントを管理し、/etc/shadowで暗号化されたパスワードの情報を管理するようになっています。
そのため、/etc/passwdは誰でも閲覧可能ですが、/etc/shadowはrootとshadowグループのみが閲覧できます。
このような背景があるのですが、mod_auth_pamを利用した場合は、apache起動ユーザをsadowグループに追加するか、/etc/shadowを誰でも閲覧可能にする必要があります。
これは微妙ですね。

結論を初めに述べましたが、導入という観点で考えると、mod_auth_pamの方が楽にインストールできます。
#フォローになってないか・・・。

このような事情もあり、最近はmod_auth_external + pwauthを利用する人が多いようです。#mod_auth_pamがapache2.0系までしか対応していないだけかもしれませんが。。


では、続いてmod_auth_external + pwauthのインストール&設定についてです。
以下のサイトを参考にすることで簡単にPAM経由でOSアカウントでの認証ができるようになります。
http://rina.jpn.ph/~rance/server/intra03.html

注意点が1点だけあり、debian etchにインストールする場合は、libpam0g-devパッケージをインストールしておく必要がありますので。