web-dev-qa-db-ja.com

nginx PAMモジュールの使用方法

Nginx PAMモジュール を使用して、FreeBSDシステムの既存のユーザーでサイトを認証したいと思います。 pam_unix.soを使用しようとしましたが、うまくいきませんでした。私のusr/pswペアを使用することはできません。 :(

nginx conf:

location / {
        root html;
        auth_pam               "Secure Zone";
        auth_pam_service_name  "nginx";
        fastcgi_pass           127.0.0.1:9000;
        fastcgi_index          index.php;
        fastcgi_param          SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include                fastcgi_params;
    }

/usr/local/etc/pam.dディレクトリのnginxファイル:

auth    required     pam_unix.so
account required     pam_unix.so

誰かが私に動作する構成を教えてくれれば幸いです。 :)

5
noirello

あなたがすでにこれを試したかどうかはわかりませんが、私はここで気づきました:

モジュールはWebサーバーユーザーとして実行されるため、使用されるPAMモジュールはrootになることなくユーザーを認証できる必要があります。つまり、pam_unix.soモジュールを使用してユーザーを自動化したい場合は、Webサーバーのユーザーが/ etc/shadowファイルを読まなくてはならないことになります(Debianのようなシステムでは、www-dataを追加できます)シャドウグループへのユーザー)。

Nginx HTTP Auth PAMモジュールREADME

Pam_unix.soを使用していないため、設定を確認できません。

3
Andy Nash

非常に古い質問に答えますが、これが機能することを確認できたので、これが役立つかもしれません。これにより、nginxの場所をローカルサーバーのアカウント名に対して認証できます。 YMMV。

  • Ubuntu 18.04
  • nginx 1.14(http_auth_pamモジュールを含む)
nginx -v
nginx version: nginx/1.14.0 (Ubuntu)

/etc/pam.d/nginxを作成し、次の行を追加します。

@include common-auth

Nginx設定内:

location /secure {
        auth_pam                "Secure zone";
        auth_pam_service_name   "nginx";
}

そして魔法のソースは:

Sudo usermod -aG shadow www-data

Nginx.confで、user www-dataで使用されているアカウントを確認してください。時にはnobodyに設定できます。

Nginxとbingoを再起動してください!

このソリューションを完了するのに役立つ上記の回答に感謝

3
Guy