/etc/apache2/conf/commonapache2.confの設定編。
まずは、セキュリティ対策としてServerTokensディレクティブを変更する。ServerTokensディレクティブは、クライアントに返信するサーバ応答ヘッダに含める情報を制御する。デフォルトでは
ServerTokens Full
となっており、Apacheのバージョン、OS、PHPのバージョンなど、サーバの詳しい情報をクライアントに送り返す。例えば、
Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
こんな感じ。
これでは、クラッカーに対して、クラッキングのための情報を与えているようなものである。
» 続きを読む
Webサイト全体の動作にかかわるApacheの設定。これも/etc/apache2/conf/commonapache2.confで行う。
まずは、Charset(文字コードと考えればよい)の設定。デフォルトは、
AddDefaultCharset ISO-8859-1
になっているため、WebページをISO-8859-1(Latin 1)つまり西欧文で表示しようとする。ウチのサイトはUTF-8で統一しているので、
AddDefaultCharset UTF-8
としている。
#AddDefaultCharset ISO-8859-1
とコメントアウトするか、
AddDefaultCharset Off
としてもよい。ただ、ウチのサイトではAddDefaultCharsetを無効化するとタグでcharsetを指定してもなぜか文字化けすることがあったので、UTF-8を明示することにした。
» 続きを読む
「指定したページが見つからない」(404エラー)など、Webサーバが表示するエラーページをカスタマイズしてオリジナルページにする。これも/etc/apache2/conf/commonapache2.confで行う。
すべての17種類すべてのエラーページを用意するのは大変なので、よく使う(?)4種類のページだけオリジナルにした。commonapache2.confのデフォルト設定は、
# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
になっている。
» 続きを読む
mod_perlと不要なディレクトリを無効化する。
まずは、mod_aliasの設定。
<IfModule mod_alias.c>
から
</IfModule>
の範囲にある不要なエイリアスの削除とディレクトリ修正。
Alias /icons/ /var/www/localhost/icons/
Alias /doc /usr/share/doc
ScriptAlias /cgi-bin/ /var/www/localhost/cgi-bin/
ScriptAlias /protected-cgi-bin/ /var/www/localhost/protected-cgi-bin/$2
のうち、ドキュメントと/protected-cgi-bin/は不要なので、
Alias /icons/ /home/httpd/icons/
# Alias /doc /usr/share/doc
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
# ScriptAlias /protected-cgi-bin/ /var/www/localhost/protected-cgi-bin/$2
のようにコメントアウトする。ついでに、ディレクトリを修正。
» 続きを読む
最期に、使用するディレクトリのパスとOptionsを設定する。
まずはドキュメントルート。
<Directory /var/www/localhost/htdocs>
Options -Indexes FollowSymLinks MultiViews
</Directory>
を
<Directory /home/httpd/html>
Options -Indexes Includes FollowSymLinks
</Directory>
に修正。
» 続きを読む
MySQLのインストールは簡単。
# emerge mysql
でソースのダウンロードからコンパイル、インストールまで完了する。
インストールが終わったら、
# mysql_install_db
を実行してデータベースを初期化する。初期化が終わったら、動作確認。
» 続きを読む
忘れないうちに、MySQLのrootパスワードを設定しておく。設定には、SET PASSWORDを使う。
# mysql
でmysqlツールを起動し、
mysql> SET PASSWORD FOR root@localhost=PASSWORD('hoge');
Query OK, 0 rows affected (0.00 sec)
とやって(「hoge」は任意のパスワード)、
mysql> exit
でmysqlツールを終了する。
» 続きを読む
個人的な方針により、Apacheのドキュメントルートと同じくMySQLのデータベースも/homeに移動する。
まず、
# /etc/init.d/mysql stop
でMySQLを停止し、
# mv /var/lib/mysql /home
でMySQLのデータベースディレクトリを/homeに。
これをやった場合は、MySQLの設定ファイルを修正しなければならない。
» 続きを読む
MySQLの操作を容易にするため、phpMyAdminをインストールする。
基本的に、この手のツールを公開サーバ上で運用するのはセキュリティ上好ましくない。非公開サーバで運用してデータベースだけを公開サーバに転送するのが望ましいが、公開サーバで運用する場合は分かりにくいディレクトリにインストールしてアクセス制御をしっかり行うこと。
まずは、
# emerge phpmyadmin
でインストール。emergeが終わったら、
# mysql -u root -p < /usr/share/webapps/
phpmyadmin/2.6.0_p2/sqlscripts/mysql/2.6.0_p2_create.sql
を実行してphpMyAdmin用のデータベースを作成する。この処理は一瞬で終わる。終わったら、
# /etc/init.d/mysql restart
しておく。
» 続きを読む
NTPをインストールして、タイムサーバと時刻を同期させる。
# emerge ntp
でインストールした後、/etc/ntp.confを編集する。
まず、
#restrict default ignore
の#を削除して有効化し、デフォルトでは全NTPアクセスを拒否する。
restrict default ignore
その少し下にある
#restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
も有効化して、ネットワークアドレスを自分の環境に合わせて修正する。
restrict 192.168.xxx.0 mask 255.255.255.0 nopeer nomodify notrap
これで、ローカルネットワークからの問い合わせが許可される。
» 続きを読む


Reichsarchiv ~世界帝王事典~
京極夏彦作品人名辞典