Ubuntu 20.04
Sponsored Link

Nginx : Basic 認証 + Kerberos
2020/10/15
 
Basic 認証の際に、Windows Active Directory のユーザーで認証できるよう設定します。
LAN 内に Windows Active Directory Domain Service が稼働していることが前提です。
当例では、以下のような Active Directory ドメイン環境で設定します。
ドメインサーバー : Windows Server 2019
NetBIOS名 : FD3S01
ドメイン名 : srv.world
レルム : SRV.WORLD
ホスト名 : fd3s.srv.world
[1]
Basic 認証の際のパスワードは平文で送信されるため、事前に SSL/TLS の設定を実施しておきます
[2] [mod-http-auth-pam] モジュールが含まれるパッケージをインストールします。
root@www:~#
apt -y install nginx-extras libpam-krb5
# レルム名を指定

 +------------------+ Configuring Kerberos Authentication +------------------+
 | When users attempt to use Kerberos and specify a principal or user name   |
 | without specifying what administrative Kerberos realm that principal      |
 | belongs to, the system appends the default realm.  The default realm may  |
 | also be used as the realm of a Kerberos service running on the local      |
 | machine.  Often, the default realm is the uppercase version of the local  |
 | DNS domain.                                                               |
 |                                                                           |
 | Default Kerberos version 5 realm:                                         |
 |                                                                           |
 | SRV.WORLD________________________________________________________________ |
 |                                                                           |
 |                                  <Ok>                                     |
 |                                                                           |
 +---------------------------------------------------------------------------+
# Active Directory のホスト名を指定

 +------------------+ Configuring Kerberos Authentication +------------------+
 | Enter the hostnames of Kerberos servers in the FD3S.SRV.WORLD Kerberos    |
 | realm separated by spaces.                                                |
 |                                                                           |
 | Kerberos servers for your realm:                                          |
 |                                                                           |
 | fd3s.srv.world___________________________________________________________ |
 |                                                                           |
 |                                  <Ok>                                     |
 |                                                                           |
 +---------------------------------------------------------------------------+
 
# Active Directory のホスト名を指定

 +------------------+ Configuring Kerberos Authentication +------------------+
 | Enter the hostname of the administrative (password changing) server for   |
 | the FD3S.SRV.WORLD Kerberos realm.                                        |
 |                                                                           |
 | Administrative server for your Kerberos realm:                            |
 |                                                                           |
 | fd3s.srv.world___________________________________________________________ |
 |                                                                           |
 |                                  <Ok>                                     |
 |                                                                           |
 +---------------------------------------------------------------------------+
[3] Basic 認証 + Kerberos の設定です。
例として、デフォルトサイトの [/var/www/html/auth-kerberos] 配下は認証を要求するよう設定します。
root@www:~#
vi /etc/nginx/sites-available/default
# 設定対象の [server] セクション内に追記

server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  www.srv.world;
       root         /var/www/html;

       ssl_certificate "/etc/letsencrypt/live/www.srv.world/fullchain.pem";
       ssl_certificate_key "/etc/letsencrypt/live/www.srv.world/privkey.pem";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;

       index index.html
       include /etc/nginx/default.d/*.conf;

       location / {
              try_files $uri $uri/ =404;
       }

       location /auth-kerberos {
           auth_pam "Kerberos Authentication";
           auth_pam_service_name "nginx-krb5";
       }
.....
.....

root@www:~#
vi /etc/pam.d/nginx-krb5
# 新規作成

auth       sufficient   pam_krb5.so use_first_pass
account    sufficient   pam_krb5.so

root@www:~#
systemctl restart nginx

# テストページ作成

root@www:~#
mkdir /var/www/html/auth-kerberos

root@www:~#
vi /var/www/html/auth-kerberos/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Test Page for Kerberos Auth
</div>
</body>
</html>
[4] 任意のクライアント PC で Web ブラウザを起動し、作成したテストページにアクセスします。すると設定通り認証を求められるので、AD のユーザーで認証します。
[5] 正常に認証が成功して、テストページが表示されれば OK です。
関連コンテンツ