セルフサービス パスワードをインストールする目的は、LDAP または Windows AD 管理者がパスワードを手動で変更する際の問題点を解決することです。一般に、企業が展開する LDAP にはパスワード有効期限ポリシーがあり、ユーザーは指定された期間内にパスワードを変更する必要があります。パスワードの使用サイクルを更新します。
1、セルフサービスパスワード依存環境をインストールする
1.1 こちら では、必要な依存関係が紹介されています
- Apache or another web server (これはNginxを使用しています)
- php (>=7.4) (これはPHP8.0を使用しています)
- php-curl (haveibeenpwned api)
- php-filter
- php-gd (captcha)
- php-ldap
- php-mbstring (reset mail) (これには、yum をインストールする前に epel ソースをインストールする必要があります)
- php-openssl (token crypt, probably built-in)
- Smarty (version >=3) (インストールする際はバージョンに注意し、デフォルトのphpライブラリファイルのパスを変更してください)
⚠️ 注意 以下のコンパイルとインストールは、gcc または gcc-c++ がインストールされているコンパイルの場合をデフォルトとしています。インストールされていない場合は、PHP のコンパイル > インストール時に対応するライブラリ ファイルが見つからない場合は、インストールする必要があります。状況に応じて、対応するインストール パッケージを選択してください。
1.2 openssl をコンパイルしてインストールする openssl の最新バージョンを openssl公式 Web サイト からダウンロードします
tar -xvf openssl-1.1.1v.tar.gz -C /usr/local/src/cd /usr/local/src/openssl-1.1.1v./config --prefix=/opt/opensslmake && make install1.3 openldap をコンパイルしてインストールする 今回インストールしたのはTLS版です
tar -xvf openldap-2.5.16.tar.gz -C /usr/local/src/cd /usr/local/src/openldap-2.5.16export PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfigenv CPPFLAGS="-I/opt/openssl/include" LDFLAGS="-L/opt/openssl/lib -D_GNU_SOURCE" ./configure --prefix=/opt/openldapmake && make install1.4 Nginxをコンパイルしてインストールします
tar -xvf nginx-1.24.0.tar.gz -C /usr/local/src/cd /usr/local/src/nginx-1.24.0./configure \--prefix=/usr/local/nginx \--with-http_realip_module \--with-http_sub_module \--with-http_gzip_static_module \--with-http_stub_status_module \--with-http_ssl_module \--with-http_v2_module \--with-openssl=/usr/local/src/openssl-1.1.1v \--with-pcre=/usr/local/src/pcre-8.45 \--with-zlib=/usr/local/src/zlib-1.2.12
make && make install1.5 PHPをコンパイルしてインストールする
tar -xvf php-8.0.30.tar.gz -C /usr/local/src/cd /usr/local/src/php-8.0.30./configure \--prefix=/usr/local/php8 \--exec-prefix=/usr/local/php8 \--bindir=/usr/local/php8/bin \--sbindir=/usr/local/php8/sbin \--includedir=/usr/local/php8/include \--libdir=/usr/local/php8/lib/php \--mandir=/usr/local/php8/php/man \--with-config-file-path=/usr/local/php8/etc \--enable-fpm \--enable-fastcgi \--with-curl \--enable-filter \--enable-gd \--with-ldap=/opt/openldap \--enable-mbstring \--with-openssl=/opt/openssl
make && make install1.5.1 php 拡張機能 gd.so モジュールをコンパイルしてインストールします 上記のように php をコンパイルすると、セルフサービス パスワード イメージ検証コード機能を使用するため、デフォルトでは gd.so モジュールが存在しません まずイメージ依存パッケージをインストールします
tar -xvf libpng-1.6.40.tar.gz -C /usr/local/src/tar -xvf jpegsrc.v9e.tar.gz -C /usr/local/src/tar -xvf freetype-2.13.1.tar.gz -C /usr/local/src/
cd /usr/local/src/libpng-1.6.40./configure --prefix=/opt/libpngmake && make install
cd /usr/local/src/jpegsrc.v9e./configure --prefix=/opt/jpegmake && make install
cd /usr/local/src/freetype-2.13.1./configure --prefix=/opt/freetypemake && make installPHP拡張機能gdを再度コンパイルします
yum install autoconfcd /usr/local/src/php-8.0.30/ext/gd/usr/local/php/bin/phpize./configure \--with-php-config=/usr/local/php8/bin/php-config \--with-libdir=/opt/libpng/lib \--with-freetype=/opt/freetype/lib \--with-jpeg=/opt/jpeg/lib
make && make install現時点では、/usr/local/php8/lib/php/extensions/no-debug-non-zts-20200930 のようなディレクトリに gd.so モジュールがあります
2、サービス構成ファイルの編集
2.1 PHPサービス php.iniをコンパイルする
###### PHP 情報が http ヘッダーで公開されるのを防ぐexpose_php = Off
###### php が mysql を呼び出すときにエラー メッセージが表示されないようにするdisplay_errors = Off
###### display_errors をオフにした後、PHP エラー ログをオンにします (パスは php-fpm.conf で構成されます)log_errors = On
###### PHP拡張ライブラリのパスを設定するextension_dir = "/usr/local/php8/lib/php/extensions/no-debug-non-zts-20200930/"
###### PHP の opcache および mysql ダイナミック ライブラリをセットアップするzend_extension=opcache.soextension=gd.so
###### PHPのタイムゾーンを設定するdate.timezone = PRC
###### opcache を有効にする[opcache]; Determines if Zend OPCache is enabledopcache.enable=1
###### PHPスクリプトがアクセスできるディレクトリを設定します(実際の状況に応じて設定する必要があります);open_basedir = /usr/local/nginx/www;php-fpm.confをコンパイルする
error_log = /var/log/php-fpm/error.log###### www.conf ファイルに設定をインポートしますinclude=/usr/local/php8/etc/php-fpm.d/*.confwww.conf を編集する
###### ユーザーとユーザーグループを設定するuser = nginxgroup = nginx
###### nginx.conf の fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; の設定に従って PHP リスニングを設定します; listen = 127.0.0.1:9000 ##### 推奨されませんlisten = /var/run/php-fpm/php-fpm.sock
###### 低速ロギングを有効にするslowlog = /var/log/php-fpm/$pool-slow.logrequest_slowlog_timeout = 10s
###### phpのセッションディレクトリを設定します(ユーザー、ユーザーグループともにnginx)php_value[session.save_handler] = filesphp_value[session.save_path] = /var/lib/php/session2.2 Nginxサービス nginx.confを編集する
user nginx nginx;
worker_processes auto;
...省略...
events { use epoll; worker_connections 65535;}
http { include mime.types; default_type application/octet-stream; server_tokens off;
...省略...
server { listen 80; server_name localhost;
root www/self/htdocs; index index.php index.html index.htm;
location ~* \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/local/nginx/www/self/htdocs$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/www/self/htdocs$fastcgi_script_name; fastcgi_index index.php; try_files $fastcgi_script_name =404; fastcgi_read_timeout 600; include fastcgi_params; }
...省略...
}
}⚠️ 注意 /sbin/nologin 属性を持つ nginx ユーザーを使用し、Web プロジェクト ディレクトリの権限を nginx:nginx として定義しているため、GET 経由でアクセスするとページに 403 というプロンプトが表示されます。Web プロジェクト ディレクトリは nginx インストール ディレクトリの下に置くことしかできません。通常どおり GET を通じてページにアクセスします
2.3 セルフサービス パスワード サービス Smarty ライブラリを構成する
現時点では、self-service-password PHP サービスには通常アクセスできません。デフォルトの Smarty ライブラリ ファイルが /usr/share/ ディレクトリを指しているため、サービスが見つからず、最新バージョンをダウンロードする必要があります。この ページ はマークされています>対応するバージョンは指定された php バージョンを使用します。ダウンロードするには、ここ をクリックしてください。スマーティ/リリース)
tar -xvf smarty-4.3.2.tar.gzcd smarty-4.3.2mv libs /usr/local/nginx/www/self/smarty编辑/usr/local/nginx/www/self/conf/config.inc.php
### 約410行を修正if (!defined("SMARTY")) { define("SMARTY", "/usr/share/self/smarty/Smarty.class.php");}
に変更します
if (!defined("SMARTY")) { define("SMARTY", "/usr/local/nginx/www/self/smarty/Smarty.class.php");}
397~398行目あたりのコメントをキャンセルします$smarty_compile_dir = "/usr/local/nginx/www/self/templates_c";$smarty_cache_dir = "/usr/local/nginx/www/self/cache";
パスを設定したパスに変更します3、セルフサービスパスワードサービスを構成する
/usr/local/nginx/www/self/conf/config.inc.php を編集します
$keyphrase # このパラメータの後にランダムな文字列を入力します。入力しない場合、ページは正しく表示されません$use_questions = false; # 問題の回復を無効にする$use_sms = false; # SMS 取得を無効にするuse_tokens = false; # 電子メールの取得を無効にする
# 上記の機能は使用しないので、必要に応じてオンにして設定できます
$use_captcha = true; # 画像検証コードを有効にする$pwd_min_length = 8; # パスワードの最小長$pwd_max_length = 32; # パスワードの最大長$pwd_complexity = 3; # パスワードには複数の文字タイプが含まれています$pwd_show_policy = "always"; # パスワードポリシーを示すページ
最後のステップは、対応するパラメータを入力するだけです。4、最終製品写真
