CentOS Stream 8
Sponsored Link

Apache httpd : Basic 認証 + PAM
2021/03/15
 
mod_authnz_pam をインストールして、Basic 認証の際に、OS のユーザーで認証できるよう設定します。
[1]
Basic 認証の際のパスワードは平文で送信されるため、事前に SSL/TLS の設定を実施しておきます
[2] [mod_authnz_pam] をインストールします。
[root@www ~]#
dnf -y install mod_authnz_pam
[root@www ~]#
vi /etc/httpd/conf.modules.d/55-authnz_pam.conf
# コメント解除

LoadModule authnz_pam_module modules/mod_authnz_pam.so
[3] Basic 認証 + PAM の設定です。
例として [/var/www/html/auth-pam] ディレクトリを認証対象として設定します。
[root@www ~]#
vi /etc/httpd/conf.d/authnz_pam.conf
# 最終行に追記

<Directory "/var/www/html/auth-pam">
    SSLRequireSSL
    AuthType Basic
    AuthName "PAM Authentication"
    AuthBasicProvider PAM
    AuthPAMService httpd-auth
    Require valid-user
</Directory>

[root@www ~]#
vi /etc/pam.d/httpd-auth
# 新規作成

auth       required     pam_listfile.so item=user sense=deny file=/etc/httpd/conf.d/denyusers onerr=succeed
auth       include      system-auth
account    include      system-auth

[root@www ~]#
vi /etc/httpd/conf.d/denyusers
# 新規作成

# httpd からの認証を禁止するユーザーを記述

root
user01
user02
[root@www ~]#
chgrp apache /etc/httpd/conf.d/denyusers

[root@www ~]#
chmod 640 /etc/httpd/conf.d/denyusers

# httpd が shadow を read できるようアクセス権変更

[root@www ~]#
chgrp apache /etc/shadow

[root@www ~]#
chmod 440 /etc/shadow

[root@www ~]#
systemctl restart httpd

# テストページ作成

[root@www ~]#
mkdir /var/www/html/auth-pam

[root@www ~]#
vi /var/www/html/auth-pam/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Test Page for PAM Authentication
</div>
</body>
</html>
[4] SELinux を有効にしている場合は、ポリシーの許可設定が必要です。
[root@www ~]#
setsebool -P httpd_mod_auth_pam on

[5] 任意のクライアント PC で Web ブラウザを起動し、作成したテストページにアクセスします。すると設定通り認証を求められるので、OS のユーザーで認証します。
[6] 正常に認証が成功して、テストページが表示されれば OK です。
関連コンテンツ