Nginx および PHP-FPM 権限のセキュリティ構成

WBOY
リリース: 2016-06-23 13:15:02
オリジナル
1452 人が閲覧しました

環境:

  • Gentoo Hostel ホスト
  • 2 つの WordPress ブログ
  • Nginx
  • Php-FPM 5.6
  • Mysql

    」を分離します。
  • 一般的な手順:
  • 2 つの新しいシステム ユーザーを作成します: blog1、blog2。シェルは nologin です。
  • MySQL 2 つの新しいユーザー blog1/blog2、2 つの新しいデータベース dbblog1/dbblog2 を作成し、ユーザーをそれぞれのデータベースに開きます
WordPress 圧縮パッケージが解凍されると、所有者はすべて blog1/blog2 に変更されます PHP-FPM は sock 通信を使用します。プロセス所有者は blog1/blog2、sock ファイルの所有者は blog1/blog2、所有者グループはは nginx; chroot を開きます 🎜 Nginx プロセスの権限は nginx🎜 です 🎜 🎜 以下の記録手順は blog1、blog2、および blog1 のみに適用されます。 設定は一部のフィールドを変更するだけです。 🎜 2 つのシステム サービス ユーザーを作成します。 : 🎜 🎜 サービス ユーザーであるため、シェルが必要です。ログインを禁止するには、/sbin/nologin に設定します。さらに、ホーム ディレクトリを生成する必要はありません。 🎜 MySQL の新しいユーザー、データベース、設定権限: 🎜 🎜データベース レベルの権限の分離。各ユーザーは自分の関連データベースに対する権限のみを持ちます。🎜
$ useradd -u 1201 -s /sbin/nologin -d /dev/null blog1
ログイン後にコピー
🎜WordPress 圧縮パッケージを解凍し、ファイルの所有者を変更します。🎜 所有者の変更により、PHP-FPM はサイトの読み取りと書き込みの権限を持ちます。 files.🎜
CREATE DATABASE dbblog1;CREATE USER 'blog1'@'localhost' IDENTIFIED BY '<password>';GRANT ALL ON dbblog1.* TO 'blog1'@'localhost';FLUSH PRIVILEGE;
ログイン後にコピー
🎜PHP-FPM 構成:🎜 🎜まずメイン構成 /etc/php/fpm-php5.6 /php-fpm.conf を変更します: 🎜 🎜プール定義内のすべての構成項目をコメントアウトします。つまり、デフォルトの wwwPool; インクルード項目を有効にします: 🎜
$ tar zxvf wordpress-4.4.2-zh_CN.tar.gz$ mv wordpress blog1$ chown -R blog1 blog1$ ls -alhd blog1drwxr-xr-x 5 blog1 nogroup 4.0K Feb  3 08:13 blog1
ログイン後にコピー
🎜 各 Web サイトの独立した php-fpm 構成 (詳細な説明については、デフォルトの構成を参照してください): 🎜
; Include one or more files. If glob(3) exists, it is used to include a bunch of; files from a glob(3) pattern. This directive can be used everywhere in the; file.; Relative path can also be used. They will be prefixed by:;  - the global prefix if it's been set (-p argument);  - /usr/lib64/php5.6 otherwiseinclude=/etc/php/fpm-php5.6/etc/fpm.d/*.conf
ログイン後にコピー
🎜 アクセス許可を制御し、サイト ファイルの読み取りと書き込みを行うようにユーザーを構成します 🎜 🎜 listen を構成します。 .owner/group を使用して、nginx が php-fpm と通信できるようにします。 🎜 🎜 chroot をサイト ディレクトリに設定して、コマンド pwdx で指定されたプロセスの現在の作業ディレクトリを表示できます。 🎜
$ cat /etc/php/fpm-php5.6/etc/fpm.d/blog1.conf[blog1]user = blog1    ; php-fpm子进程的uidgroup = nogrouplisten = /var/run/php-fpm-blog1.socklisten.owner = nginx    ; sock通信文件的属主, 和nginx通信listen.group = nginx    ; sock通信文件的属组, 和nginx通信listen.mode = 0660pm = dynamicpm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3chroot = /var/www/blog1chdir = /
ログイン後にコピー
🎜 Nginx 設定: 🎜
$ ps aux | grep phproot      5646  0.0  0.3 247836  7192 ?        Ss   14:55   0:00 php-fpm: master process (/etc/php/fpm-php5.6/php-fpm.conf)blog1     5647  0.0  0.6 247944 13884 ?        S    14:55   0:00 php-fpm: pool blog1blog1     5648  0.0  0.6 247812 13192 ?        S    14:55   0:00 php-fpm: pool blog1blog2     5649  0.0  1.4 251840 29756 ?        S    14:55   0:00 php-fpm: pool blog2blog2     5650  0.0  0.3 247812  6636 ?        S    14:55   0:00 php-fpm: pool blog2root     10071  0.0  0.1 112700  2100 pts/4    S+   15:52   0:00 grep --color php$ pwdx 56475647: /var/www/blog1
ログイン後にコピー
🎜 fastcgi_param 設定に注意してください。それがデフォルトの場合: 🎜
server {    listen 80;    server_name blog1.tankywoo.com;    index index.php;    access_log /var/log/nginx/blog1_log main;    error_log /var/log/nginx/blog1_error_log;    root /var/www/blog1/;    location ~ .php$ {        try_files      $uri  =404;        fastcgi_pass   unix:///var/run/php-fpm-blog1.sock;        include        fastcgi.conf;        fastcgi_param  SCRIPT_FILENAME    /$fastcgi_script_name;    }}
ログイン後にコピー
🎜 PHP-FPM (fastcgi) は、index.php、つまり /var/ www/blog1/inex.php.🎜 を読み取ります。 FPM は chroot で構成されており、このディレクトリは chroot の後のディレクトリです 🎜 🎜 つまり、/var/www/blog1/var/www/blog1/index は実際には .php を読み取られます 🎜 プロセス中に、いくつかのエラーが発生しました: 🎜 🎜php-fpm log:🎜 🎜 🎜php-fpm chroot FastCGI が stderr で送信されました: アップストリームから応答ヘッダーを読み取り中に「プライマリ スクリプトが不明です」🎜 🎜 🎜 php ファイルが見つかりません。理由は、fastcgi の SCRIPT_FILENAME 構成が構成されていないことです。 🎜 🎜 🎜データベース接続に失敗しました🎜 🎜 🎜その理由は、WordPress がデフォルトでソケット経由でデータベースに接続し、この時点で Web サイトが chroot されているため、sock ファイルが見つからないためです。🎜 🎜 方法 1 はマウントすることです。 sock ファイル: 🎜
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
ログイン後にコピー
🎜 ただし、この方法は完璧ではありません。 🎜 🎜方法 2 は、tcp、wp-config.php を介して MySQL に接続するように WordPress を変更することです: 🎜
$ mkdir -p /var/www/blog1/var/run/mysqld$ mount --bind /var/run/mysqld /var/www/blog1/var/run/mysqld
ログイン後にコピー
🎜参考リンク: 🎜 🎜 🎜 Nginx と PHP-FPM の構成と最適化のヒントとコツ 🎜 🎜 複数の Web サイトを安全にホストする方法Ubuntu 14.04 の Nginx と Php-fpm 🎜 🎜 Nginx + PHP-FPM と chroot 🎜 🎜 Apache + PHP-FPM + chroot の結果「ファイルが見つかりません。」エラー 🎜 🎜 🎜 🎜 🎜
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート