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)が出るように変更しました。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp"> <title></title> <meta http-equiv="refresh" content="0;url=/www/index.html"> </head> <body> </body> </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>
|
<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分遅れのデータなのですが、パケ代も少なくてすみ、なかなか快適です。