SuPHPは、PHPがapacheユーザーとは異なるLinuxユーザーの下にいることを可能にするapacheモジュールです。これにより、各WebサイトのPHPスクリプトを異なるユーザーで実行できるため、ホストされているWebサイトのセキュリティが向上します。このチュートリアルでは、CentOS 7.2で使用できるSuPHPパッケージがないため、ソースからのCentOS7.2へのSuPHPのインストールについて説明します。
CentOS 7.2以降がインストールされているサーバーが必要です。このチュートリアルを、セットアップの基礎として使用します。最初の章では、ApacheWebサーバーをインストールします。すでにapacheをインストールしている場合は、すぐに第2章から始めてください。
私のサーバーは、ホスト名server1.example.comとIPアドレス192.168.1.100を使用します。これらの値は、次のチュートリアルで発生するサーバーのホスト名とIPに置き換えてください。
セキュリティ上の理由からファイアウォールをインストールすることをお勧めします。firewalldをまだインストールしていない場合は、次のコマンドを使用してインストールできます。
yum -y install firewalld
ファイアウォールを起動し、起動時にファイアウォールを起動できるようにします。
systemctl start firewalld.service
systemctl enable firewalld.service
次に、SSHポートを開いて、SSHでサーバーに接続できることを確認します。
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload
1Apache2.4およびPHP5のインストール
ApacheとPHPはCentOSベースリポジトリで利用できるため、yumを使用して両方のソフトウェアパッケージをインストールできます。
Apacheと、後でSuPHPのコンパイルに必要なファイルを含むAapache開発パッケージをインストールします。
yum -y install httpd httpd-devel
PHPのインストール(頻繁に使用するPHPモジュールをいくつか追加しました):
yum -y install php php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring curl
起動時にApacheを起動して、サービスを開始できるようにする必要があります。
systemctl start httpd.service
systemctl enable httpd.service
他のパソコンからウェブサーバーにアクセスできるようにするには、HTTP(80)ポートとHTTPS(443)ポートを開く必要があります。次のコマンドを実行してファイアウォールを構成します。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
2SuPHPのインストール
このステップでは、ソースからSuPHPをコンパイルします。開発ツールをインストールして、必要なビルドチェーンをセットアップします。
yum -y groupinstall 'Development Tools'
そして、ソースファイルとnanoエディターをダウンロードしてください。
yum -y install wget nano
SuPHPソースのtar.gzアーカイブをダウンロードして解凍します。
cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz
CentOS7はApache2.4を使用するため、Apacheに対してコンパイルする前にsuphpにパッチを適用する必要があります。パッチは次のように適用されます:
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch[[email protected] suphp-0.7.2]#autoreconf -if
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
libtoolize:補助ファイルをAC_CONFIG_AUX_DIR、 `config'に配置します。
libtoolize:ファイル` config /ltmain.sh'をコピーします
libtoolize:configure.acに `AC_CONFIG_MACRO_DIR([m4])'を追加することを検討してください。
libtoolize:libtoolizeを再実行して、正しいlibtoolマクロをツリー内に保持してください。
libtoolize:` -Im4'をに追加することを検討してください。 Makefile.amのACLOCAL_AMFLAGS。
configure.ac:9:警告:AM_INIT_AUTOMAKE:2引数および3引数のフォームは非推奨です。詳細については、以下を参照してください:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :インストール'config / config.guess'
configure.ac:24:インストール'config / config.sub'
configure.ac:9:インストール'config / install-sh'
configure .ac:9:'config/missing'のインストール
src/ Makefile.am:'config/depcomp'のインストール
[[emailprotected] suphp-0.7.2]#
autoreconfコマンドがパッチを適用するので、次のように新しいソースを構成できます。 注: configureコマンドは1行です!
./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log
次に、SuPHPをコンパイルしてインストールします。
make
make install
次に、新しいsuphp.confファイルを追加して、suPHPモジュールをApache構成に追加します。
nano /etc/httpd/conf.d/suphp.conf
次の内容で。
LoadModule suphp_module modules/mod_suphp.so
...そして次のようにファイル/etc/suphp.confを作成します:
nano /etc/suphp.conf
[global] ;Path to logfile logfile=/var/log/httpd/suphp.log ;Loglevel loglevel=info ;User Apache is running as webserver_user=apache ;Path all scripts have to be in docroot=/ ;Path to chroot() to before executing script ;chroot=/mychroot ; Security options allow_file_group_writeable=true allow_file_others_writeable=false allow_directory_group_writeable=true allow_directory_others_writeable=false ;Check wheter script is within DOCUMENT_ROOT check_vhost_docroot=true ;Send minor error messages to browser errors_to_browser=false ;PATH environment variable env_path=/bin:/usr/bin ;Umask to set, specify in octal notation umask=0077 ; Minimum UID min_uid=100 ; Minimum GID min_gid=100 [handlers] ;Handler for php-scripts x-httpd-suphp="php:/usr/bin/php-cgi" ;Handler for CGI-scripts x-suphp-cgi="execute:!self">
最後に、Apacheを再起動します:
systemctl restart httpd.service
3SuPHPを使用してApache仮想ホストを構成する
この章では、別のユーザーの下でPHPを実行するApacheに仮想ホストを追加する方法を示します。ドメイン名を使用しますwww.example.com ウェブサイトとPHPは、ユーザーおよびグループ「 web1」として実行されます。 "、ウェブサイトのドキュメントルートは/var/www/example.com
まず、新しいユーザーとグループ「web1」を追加します。
useradd web1
Webサイトのルートディレクトリを追加します。
mkdir /var/www/example.com
chown web1:web1 /var/www/example.com
次に、仮想ホスト構成ファイルをapacheconf.dディレクトリーに追加します。
nano /etc/httpd/conf.d/example.com.conf
このコンテンツで:
<VirtualHost *>
DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [email protected]
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler None
</FilesMatch>
<IfModule mod_suphp.c>
suPHP_Engine on
<FilesMatch "\.php[345]?$">
SetHandler x-httpd-suphp
</FilesMatch>
suPHP_AddHandler x-httpd-suphp
</IfModule>
</VirtualHost>
ServerName行とServerAdmin行でドメイン名を独自のドメインに置き換えます。
次に、apacheを再起動して、構成の変更を適用します。
systemctl restart httpd.service
4SuPHPセットアップをテストします
この章では、このWebサイトでPHPをテストするためのいくつかの方法を紹介します。まず、phpinfo()関数を使用して、PHPが機能しているかどうか、およびPHPがCGIモードで実行されているかどうかを示すファイルを作成します。
nanoでinfo.phpファイルを作成します:
nano /var/www/example.com/info.php
新しいファイルに次の行を追加します。
<?php
phpinfo();
次に、ファイルの所有者をweb1ユーザーとグループに変更します。
chown web1:web1 /var/www/example.com/info.php
ファイルhttp://example.com/info.phpのURLをWebブラウザで開くと、次のページが表示されます。
重要なのはServerAPI CGI / FastCGIを示す行 。これは、PHPがmod_phpではなくSuPHPを介して実行されていることを示しています。
次に、PHPが正しいユーザー(web1)で実行されるかどうかをテストします。 SuPHPはどのユーザーを使用するかをどのように知るのですか? SuPHPはPHPをPHPスクリプトを所有するユーザーに切り替えるため、Webルートフォルダー/var/www/example.com内のすべてのPHPファイルがweb1ユーザーとグループによって所有されていることが重要です。
では、PHPが適切なユーザーを使用しているかどうかをテストするにはどうすればよいでしょうか。 1つの方法は、ユーザー名を返す「whoami」コマンドを実行することです。
Webサイトのルートに新しいスクリプトtestuser.phpを作成します:
nano /var/www/example.com/testuser.php
このコンテンツで:
<?php
system('whoami');
次に、ファイルの所有者をweb1ユーザーとグループに変更します。
chown web1:web1 /var/www/example.com/testuser.php
ウェブブラウザでhttp://example.com/testuser.phpを開くと、結果は次のようになります。web1
SuPHPは、このWebサイトのユーザーとして構成され、PHPファイルを実行します。 Webサイトディレクトリからテストファイルを削除し、Webサイトスクリプトの追加を開始します。
5このCentOS7.2サーバーを仮想マシンとしてダウンロード
このセットアップは、howtoforgeサブスクライバー向けにova / ovf形式(VMWareおよびVirtualboxと互換性があります)の仮想マシンのダウンロードとして利用できます。
VMのログインの詳細
- ルートパスワードは:howtoforge
- 「管理者」ユーザーのパスワードは次のとおりです:howtoforge
最初のログイン時に両方のパスワードを変更してください。
- VMのIPアドレスは192.168.1.100です
6つのリンク
- CentOS
- ApacheWebサーバー
- SuPHP