ServersMan@VPS(Ubuntu14.04-64)のウェブサーバ

ServersMan@VPS(Ubuntu14.04-64)のvpsでは
ウェブサーバとして最初からapache2が動いています。
これを調整してウェブコンテンツの公開等を行っていきます。
なお設定を変更したら、それを反映するために以下を実行しましょう。

# /etc/init.d/apache2 restart

まずはPHPのインストールです。以下を実行します。

# apt-get install php5

スクリプトを書くときに楽なので”<?”でPHPが開始できるよう
設定ファイル"/etc/php5/apache2/php.ini"を

short_open_tag = On

に変更します。

リクエスト処理中にURLの書き換えができるようにしておきます。
設定ファイル内でRewriteRuleディレクティブが利用できるようにします。
私は独自ドメインから外部のブログにリダイレクトするように

RewriteEngine On
RewriteRule ^/(.*)$ /redirect.php?file=$1 [PT,L]

などと設定したりしており、この機能は必須です。
余談になりますが、先の”redirect.php”の内容は以下のようになります。

<?
$file=$_GET["file"];
$url="<リダイレクト先URL>".$file;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
?>

話を戻して、とりあえず以下を実行します。

# a2enmod rewrite

またウェブブラウザからmanualディレクトリにアクセスできるのが鬱陶しいので、
以下を実行して無効にしておきます。

# a2disconf apache2-doc

AirDisplay@VPSはセキュリティ上問題になり得るので

# a2disconf proxy_ajaxterm

で無効にしてしまうのがいいのでしょうが、使えると便利なので、
ウェブページへのアクセスをパスワードで制限し、
SSL接続のみを許すことで安全を担保することにします。

# mkdir -p /etc/apache2/passwd
# htpasswd -c /etc/apache2/passwd/.airdisplay <ユーザ名>

でパスワードファイルを作成し、
設定ファイル”/etc/apache2/conf-available/proxy_ajaxterm.conf”のProxyディレクティブ内に

        SSLRequireSSL
        AuthType Basic
        AuthName "AirDisplay"
        AuthUserFile /etc/apache2/passwd/.airdisplay
        Require valid-user

を追加します。
ちなみにAirDisplay@VPSではApacheは8022ポートへのプロキシサーバとして動作します。
そのプログラム本体は”/usr/share/ajaxterm/ajaxterm.py”です。

ApacheではリクエストURLのホスト名により返すコンテンツを変える
バーチャルホストをサポートしており、それら各サイトの設定ファイル1つを
“/etc/apache2/sites-available/”ディレクトリに置きます。
デフォルトのhttpサイトの設定ファイルが”000-default.conf”、
httpsサイトが”default-ssl.conf”となります。
まずはこの2つのファイルのServerAdminディレクティブで
管理者のメールアドレスを設定します。
これらのファイルをコピーして他サイトの設定ファイル”<ホスト名>.conf”を作りますが、
最低でもServerNameディレクティブでホスト名、
DocumentRootディレクティブでコンテンツを置くパスを設定します。
実際にコンテンツを作成して

# a2ensite <ホスト名>
# service apache2 reload

を実行すればそのサイトが見られるようになります。
sslサイトについては上記に加えて証明書ファイル等の設定が必要になります。
私はStartSSLから発行してもらっており、
SSLCertificateFileにサーバ証明書、SSLCertificateKeyFileにサーバ証明書の秘密鍵、
SSLCertificateChainFileに中間証明書、SSLCACertificateFileにルート証明書を
適切に設定することで動作するようにしています。

最後に有名どころの脆弱性をチェックします。
Symantecのtoolboxでチェックすると、
HeartbleedもPoodleも大丈夫とのことですが、
SSL LabsでテストするとPoodleはあると言われてしまいました。
そこで、設定ファイル”/etc/apache2/mods-available/ssl.conf”の

SSLProtocol all

SSLProtocol all -SSLv3

に変更することで対策しました。
Poodleが世の中を騒がせてだいぶ経つので、
インストールイメージの修正は運営側でしてくれてるかと思っていたのですが、
どうやらこの辺りは自分でしっかりやっていかなければならないようです。
まあそれが面倒ならIaaSでなくPaaSを選ぶべきなんでしょうね。