この時点で、Webサーバは静的コンテンツを公開できる状態になっている。しかし、ほとんどのWebサイトには、フォーラムやチャット、ギャラリーなど、PHPによる動的コンテンツが含まれている。
PHPのインストールは簡単ですぐに終わる。PHP本体のパッケージとPHPエクステンションのコンパイルとインストールを行うが、次のようにしてPHP v5のインストール時に忘れずにApacheモジュールもコンパイルする。
cd /usr/ports/lang/php5
make config install distclean
cd /usr/ports/lang/php5-extensions
make config install distclean
ApacheでPHPサイトを扱うには、PHPファイルの処理方法を指定する必要がある。具体的には、「/usr/local/etc/apache2/httpd.conf」ファイルの「LoadModule」行のすぐ後ろに次のエントリを追加する。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
また次のように、ディレクトリインデックス(DirectoryIndex)に「index.php」を追加しておく。
DirectoryIndex index.php index.html index.htm
PHPには、大半の用途でセキュアといえる推奨設定内容を記載したファイルが用意されているので、これを利用する。ただし「allow_url_fopen」(リモートFTP/HTTPサイトのファイルをローカルファイルと同じように操作できるようにする)は、使い方を誤ると問題になるので無効にしておく。
cp /usr/local/etc/php-ini-recommended /usr/local/etc/php.ini
これでPHPのインストールと設定も終わった。だが、大半のPHPアプリケーションはデータベースも利用する。安定したオープンソースのデータベースシステムMySQLなら、無料で使える。
次のようにして、SSLサポートを有効にしてMySQLのコンパイルとインストールを行い、OS起動時にMySQLサーバが自動で立ち上がるように「/etc/rc.conf」にエントリを追加しておく。
cd /usr/ports/databases/mysql51-server
make install WITH_OPENSSL=yes
make distclean
echo 'mysql_enable="YES"' >> /etc/rc.conf
また、rootパスワード(以下の例では「p3Df1IsT」)も設定する。ただし、シェル上でパスワードを設定すると(利用するシェルに応じて「~/.bash_history」や「~/.histfile」に)履歴が残るため、セキュリティ上の理由からシェルのコマンド履歴を消去しておく(特にrootアカウントを共有している場合)。
/usr/local/etc/rc.d/mysql-server start
mysqladmin -u root password p3Df1IsT
mysql -u root -p
rm /root/.history
MySQLにログインしたら、そのコマンドプロンプトから以下のコマンド列を実行することで、すべての匿名アカウントを削除する。4番目のコマンドはパスワードのないユーザーの一覧を表示するもので、それぞれについてパスワードを設定するかそのユーザーを削除するかを選択できる。最後のコマンドでは、デフォルトのrootアカウントの名前を「mmu002」に変更している。rootアカウントを変更しておくと、何者かにrootパスワードを狙われた場合に都合がよい。というのも、クラッキングは「root」というユーザー名とデフォルトのパスワードや辞書に載っているような単語のパスワードの組み合わせを使って仕掛けられることが多いからだ。この場合は、デフォルトのrootアカウントが存在しないため、クラッキングはずっと困難になる。また、アカウント名には推測しづらいものを用いる。
use mysql
DELETE FROM user WHERE user="";
FLUSH PRIVILEGES;
SELECT * FROM user WHERE Password="";
UPDATE user SET user='mmu002' WHERE user='root';
FreeBSDのデフォルトの状態ではMySQL設定ファイルが用意されていないので、以下のように「/etc/my.cnf」ファイルを自分で作成してデフォルトのポートを29912番に変更する必要がある。ここでは、127.0.0.1(ローカルホスト)からの接続のみを受け入れるようにする。最後の行は、ユーザーが実際に読み書きでアクセスするデータベースだけを表示するもので、このオプションを指定しないと、MySQLによってすべてのデータベースが全ユーザーに表示される。
[client]
port=29912
[mysqld]
port=29912
bind-address=127.0.0.1
skip-name-resolve
safe-show-database
タイトルに沿った解説は以上だが、LAMPに関する記事でphpMyAdminに触れないわけにはいかないだろう。
Copyright © 2010 OSDN Corporation, All Rights Reserved.