Fedora 18
Sponsored Link

Basic認証+PAM
2013/01/25
 
ある特定のページに対してアクセス制限をかけ、OSのユーザーで認証するようにします。 アクセスはSSL経由を要求するようにします。
[1] mod-auth-external および pwauth をインストールして設定します。
[root@www ‾]#
yum -y install gcc patch httpd-devel pam-devel
[root@www ~]#
wget https://mod-auth-external.googlecode.com/files/mod_authnz_external-3.3.1.tar.gz

[root@www ~]#
wget https://pwauth.googlecode.com/files/pwauth-2.3.10.tar.gz

[root@www ~]#
tar zxvf mod_authnz_external-3.3.1.tar.gz

[root@www ~]#
cd mod_authnz_external-3.3.1

[root@www mod_authnz_external-3.3.1]#
vi 2.4.patch
From d48e9475153cd2f7f1a36941b5c6bc6d6908c818 Mon Sep 17 00:00:00 2001
From: David Sansome <me@davidsansome.com>
Date: Mon, 26 Mar 2012 17:34:00 +0100
Subject: [PATCH] Apache 2.4 compatibility

---
 mod_authnz_external.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mod_authnz_external.c b/mod_authnz_external.c
index 479e57f..dbb5d39 100644
--- a/mod_authnz_external.c
+++ b/mod_authnz_external.c
@@ -443,8 +443,8 @@ static int exec_external(const char *extpath, const char *extmethod,
    if (remote_host != NULL)
        child_env[i++]= apr_pstrcat(p, ENV_HOST"=", remote_host,NULL);

-   if (c->remote_ip)
-       child_env[i++]= apr_pstrcat(p, ENV_IP"=", c->remote_ip, NULL);
+   if (c->client_ip)
+       child_env[i++]= apr_pstrcat(p, ENV_IP"=", c->client_ip, NULL);

    if (r->uri)
        child_env[i++]= apr_pstrcat(p, ENV_URI"=", r->uri, NULL);
-- 
1.7.0.4

[root@www mod_authnz_external-3.3.1]#
patch < 2.4.patch

patching file mod_authnz_external.c
[root@www mod_authnz_external-3.3.1]#
apxs -c mod_authnz_external.c

[root@www mod_authnz_external-3.3.1]#
apxs -i mod_authnz_external.la

[root@www mod_authnz_external-3.3.1]#
[root@www ~]#
tar zxvf pwauth-2.3.10.tar.gz

[root@www ~]#
cd pwauth-2.3.10

[root@www pwauth-2.3.10]#
vi config.h
# 126行目:コメントにする

/*
#define SHADOW_SUN
# 134行目:コメント解除

#define PAM
# 281行目:変更 ( httpd の実行IDにする )

#define SERVER_UIDS
48
  /* user "
apache
" */
[root@www pwauth-2.3.10]#
vi Makefile
# 10行目:コメントにする

#
LIB= -lcrypt
# 14行目:コメント解除

LIB=-lpam -ldl
[root@www pwauth-2.3.10]#
make

[root@www pwauth-2.3.10]#
cp pwauth /usr/local/libexec/

[root@www pwauth-2.3.10]#
chmod 4755 /usr/local/libexec/pwauth

[root@www pwauth-2.3.10]#
[root@www ~]#
vi /etc/httpd/conf.modules.d/00-auth.conf
# 以下の内容で新規作成

LoadModule authnz_external_module modules/mod_authnz_external.so
AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe
[root@www ~]#
vi /etc/pam.d/pwauth
# 新規作成

#%PAM-1.0
auth        include       system-auth
account     include       system-auth
session     include       system-auth

[root@www ~]#
vi /etc/httpd/conf.d/auth_pam.conf
# /var/www/html/test 配下を認証必須とする

<Directory /var/www/html/test>
    SSLRequireSSL
    AuthType Basic
    AuthName "PAM Authentication"
    AuthBasicProvider external
    AuthExternal pwauth
    require valid-user
</Directory>

[root@www ~]#
systemctl restart httpd.service
# テストページ作成

[root@www ~]#
vi /var/www/html/test/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Test Page for PAM Auth
</div>
</body>
</html>
  Webブラウザからテストページにアクセスしてみます。 すると設定通り認証を求められますので、OSのユーザーで認証します。
  アクセスできました。
関連コンテンツ
 
Tweet