Webサーバの改造


トップページの変更

LANDISKにはWebサーバApacheが最初から組み込まれていますが、初期状態ではLANDISKのセットアップ用cgiしか使えない状態になっています。これを自分のコンテンツを公開できるように改造していきます。いわゆる家庭内Webサーバ。 共有ディスクをWebサーバのドキュメント領域にすることができれば、WindowsやMacからマウントしたLANDISKにコンテンツをドラッグするだけで、Webサーバから公開できるようになります。

まずLANDISKのセットアップでWeb公開用の共有ディスクを作成する (とりあえずwwwという名前にした)

作成した共有ディスクwwwの実体は、/mnt/hda3/share/www

Apacheのコンフィグレーションファイル /usr/local/share/apache/conf/httpd.confを書き換える。 書き換え箇所は以下のようなかんじです。
MinSpareServers 2
MaxSpareServers 3
StartServers 2

Alias /www/ "/mnt/hda3/share/www/"

<Directory "/mnt/hda3/share/www">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

LANDISKの最初の設定では、http://landisk/でいきなり設定画面になっていましたが、設定画面はhttp://landisk/setup/で出るように変更し、http://landisk/では家庭内Webサーバのトップページ、(すなわち/mnt/hda3/share/wwwに置いたindex.html)が出るように変更しました。

アクセスカウンターのインストール

LANDISKにはPerl5があらかじめ組み込まれていますから、cgiを組み込むことは容易です。まずは手始めにアクセスカウンターをインストールしてみました。インストールしたのは、夢カウンタです。ドキュメントに従えば難なくインストールできます。

インストール先は、/mnt/hda3/share/www/の下にcgi-binというディレクトリを作り、その中のcounterという名前のディレクトリです。apacheのhttpd.confに以下の記述を追加しておくと、
Alias /cgi-bin/ "/mnt/hda3/share/www/cgi-bin/"

<Directory "/mnt/hda3/share/www/cgi-bin">
    Options Indexes MultiViews ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

次の記述をhtmlドキュメントに埋め込むことでアクセスカウンタを使用できる。
<img src="http://landisk/cgi-bin/count/dream.cgi?id=index">

掲示板のインストール

家庭内LAN上に立てるサーバで掲示板なんてどんな意味があるんだといぶかる向きもあるでしょうが、要は家庭内伝言板です。例えば、「おやつ冷蔵庫に入ってるよ〜」的な使い方です。

インストールしたのは、投稿者アイコンが使えるわいわいボードです。こちらも、ドキュメントに従えば難なくインストールできます。インストール先は、/mnt/hda3/share/www/の下にcgi-binというディレクトリを作り、その中のyybbsという名前のディレクトリです。

ここまでやると、このサーバを外向きに公開したくなるかも知れませんが、それはやめておいたほうが賢明です。LANDISKにはアップデート機能があり、これは結局はWebサーバからroot権限のスクリプトが実行できることを意味しています。こんなものを外向きに公開するのはさすがにまずいでしょう。LANDISKは簡単セットアップが「ウリ」なんでしょうが、初期状態でadminのパスワード無しでこんな状態なのは、かなりやばい問題と思えます。外向きに公開する場合は、ちゃんと設定してからにしましょう。

外向きの公開

私の場合、何のためにWebサーバを外向きに公開するのかというと、自分の携帯から使うためであり、決して不特定多数にLANDISKサーバにアクセスしてもらうためではありません。そのため、httpd.confにアクセス制限に関する設定を追記して、ルート「/」やセットアップ用cgiは内側(192.168.0.x)からしかアクセスできないようにします。そうした上で、特定のページだけを外側からアクセスできるようにします。

ルートを内側(192.168.0.x)からしかアクセスできないようにするには、次のような設定にします。すべてのアクセスを拒否した上で、192.168.0.xからのアクセスを許可する記述です。
<Directory />
    Options Includes FollowSymLinks ExecCGI
    AllowOverride None                     
    Order deny,allow  
    Deny from all   
    Allow from 192.168.0.0/24
</Directory>  

ルート以下を内側(192.168.0.x)からしかアクセスできないようにした上で、/i ディレクトリだけを携帯からアクセスできるようにします。携帯だけじゃなく、全く無防備になってしまいますけど。
Alias /i/ "/mnt/hda3/share/www/i/"
<Directory "/mnt/hda3/share/www/i">
    Options -Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

LANDISKのWebサーバは標準ではアクセスログをとる設定にはなっていませんから、アクセスログを有効にしておきます。
CustomLog /var/log/httpd/logs/access_log common

アクセスログを有効にすると、access_logにおびただしい量のウイルスの攻撃の痕跡が残るのが判ります。以下はたった2日分の不審なアクセスです。

これはトップページに対するアクセスの痕跡です。DNSに登録している訳でもない、プロバイダから付与された動的アドレスに、なんでこんなにアクセスがあるのでしょう。
67.98.5.161 - - [27/Mar/2004:03:51:11 +0900] "GET / HTTP/1.0" 403 264
61.132.92.182 - - [27/Mar/2004:04:29:20 +0900] "GET / HTTP/1.1" 403 276
67.112.84.81 - - [27/Mar/2004:15:52:22 +0900] "GET / HTTP/1.1" 403 276
221.216.105.244 - - [27/Mar/2004:18:50:36 +0900] "GET / HTTP/1.1" 403 276
69.157.6.53 - - [27/Mar/2004:21:22:51 +0900] "GET / HTTP/1.1" 403 276

次は、「CodeRed」からの攻撃。未だに蔓延しているんですね。
219.235.110.136 - - [27/Mar/2004:00:44:54 +0900] "GET /default.ida?XXXXXXXXXXXXXX
219.147.60.2 - - [27/Mar/2004:12:17:35 +0900] "GET /default.idaXXXXXXXXXXXXXXXXXX
219.154.203.26 - - [27/Mar/2004:14:33:30 +0900] "GET /default.ida?XXXXXXXXXXXXXXX
219.233.15.228 - - [27/Mar/2004:17:54:21 +0900] "GET /default.ida?XXXXXXXXXXXXXXX

これも何かのウイルスかワームだろうが、
219.157.221.134 - - [27/Mar/2004:18:51:34 +0900] "SEARCH /\x90\x02\xb1\x02\xb1\x02\xb
219.253.163.32 - - [27/Mar/2004:20:00:17 +0900] "SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1
219.252.83.224 - - [28/Mar/2004:10:11:53 +0900] "SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1
219.95.58.131 - - [28/Mar/2004:13:42:54 +0900] "SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1
219.252.83.47 - - [28/Mar/2004:20:07:47 +0900] "SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1

これもいかにもIISのセキュリティホールを突いてますといったアクセスですね。
218.22.166.211 - - [27/Mar/2004:14:35:27 +0900] "GET /scripts/..%255c%255c../winnt/system32/cmd.exe?/c+dir" 403 -

インターネットはまさに無法地帯といったところか。LANDISKの場合、access_logなどを書くための/varディレクトリはRAMディスクに設定されていますから、長期間運用すると/varが容量不足に陥ること必至です。特に、ウイルスは1回に大量のログを残します。/varを定期的にお掃除するとか、最初からハードディスクを/varにしておくかが必要です。

かんじんのコンテンツですが、私の場合、相場が趣味なもので、自分の携帯からいつでも見たい銘柄の値動きを確認するためのページを作成しました。携帯向けにこのようなサービスを提供しているサイトや証券会社もあるのですが、登録できる銘柄数に制限があったり、やりとりするデータ量が大きくてパケ代がばかにならなかったりで、いまいちしっくりくるのはありませんでした。

そこで、Yahoo! Finance.から自分の登録した銘柄の株価データをwgetで取得し、取得したhtmlデータを、銘柄名と時価だけのシンプルなテキストに整形して携帯に送りつける、簡単なCGIを作成しました。Yahoo! Finance.の無料サービスを利用しているので、時価は20分遅れのデータなのですが、パケ代も少なくてすみ、なかなか快適です。


   前(ファイルサーバの改造) 目次 次(WebDAVサーバのインストール)