Symfoware

Symfowareについての考察blog

Debian 8 + NginxでActive Directory認証を使用する

nginxでの認証方法を調べています。

Debian 8 + NginxでBasic認証の設定
Debian 8 + NginxでPAMを使用した認証

今回は、pam_krb5を使用してActive Directory認証してみます。
Active DirectoryはWindows Server 2016で構築したものを使用しました。
Windows Server 2016にActiveDirectoryの機能を追加



nginxのインストール



pam認証モジュールが使用できるようnginx-extrasをインストールしました。
nginx-fullでも問題ないと思います。


# apt-get install nginx-extras




続いて、libpam-krb5をインストール。
これがケルベロス認証を行うモジュールになります。


# apt-get install libpam-krb5




インストール中、ドメイン名を尋ねられるので「大文字で」ドメイン名を入力します。

721_01.png


続いて、サーバーのホスト名の入力を求められます。
こちらはIPアドレスを入力しました。

721_02.png

721_03.png


ここで入力した値は、「/etc/krb5.conf」に反映されます。
もし、インストール時に初期値を指定しなかった場合は、直接ファイルを編集します。


# vi /etc/krb5.conf




追加されるのは以下の2箇所のようです。


[libdefaults]
    default_realm = TEST.LOCAL

# The following krb5.conf variables are only for MIT Kerberos.
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms


(略)


[realms]
    TEST.LOCAL = {
        kdc = 192.168.1.110
        admin_server = 192.168.1.110
    }







pamファイルの設定



ここでやったノウハウが役に立ちました。
Debian 8 + NginxでPAMを使用した認証

まず、Active Directory認証するための設定ファイルを作成します。
試行錯誤の結果、これで良いようです。


# vi /etc/pam.d/nginx_krb5



内容は以下の2行。


auth        sufficient    pam_krb5.so use_first_pass
account     sufficient    pam_krb5.so




続いて、このファイルを使用した認証を行うよう、nginxの設定ファイルを変更します。


# vi /etc/nginx/sites-available/default




テスト的に、locationに設定しました。


        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                auth_pam "Secure Zone";
                auth_pam_service_name "nginx_krb5";

        }




「nginx_krb5」という名前は、/etc/pam.d/に作成したファイル名と揃えます。
auth_pamに指定する文字列は、認証ダイアログに表示されます。

設定が終わったらnginxを再起動。


# service nginx restart




これで設定は完了です。






認証テスト



Active Directoryに適当なユーザーを作成します。
今回は「madoka」というユーザーを作成しました。

721_04.png


ブラウザでアクセスしてみると、ちゃんと認証ダイアログが表示されます。

721_05.png


Active Directoryで設定したユーザーID、パスワードを入力すると認証を通過できます。

721_06.png

/var/log/auth.logに認証のログが出力されます。
こんなログが出力されているはずです。


Dec 4 22:46:20 debian-ad ker process: pam_krb5(nginx_krb5:auth): user madoka authenticated as madoka@TEST.LOCAL






【参考URL】


http://www.bnote.net/kuro_box/krb5_ad.shtml
http://infra.blog.shinobi.jp/Entry/93/

https://www.linux.iastate.edu/content/using-pam-kerberos-authentication-and-group-access-control
http://serverfault.com/questions/442286/restrict-su-to-domain-user-in-winbind-kerberos-linux-ad-integration

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/12/04(日) 23:28:47|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<OpenJDK 8 jjsコマンドでJavaScriptを実行する | ホーム | PHP 「@」でエラー抑止していても処理が途中で終了する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1940-c57d37e8
この記事にトラックバックする(FC2ブログユーザー)