何もない

ページビューの合計

このブログを検索

written by hiro. Powered by Blogger.

2013年6月1日土曜日

TS-220のWebアクセスを制限する(不完全)


QNAPのNASは非常に高機能で素晴らしい。
NASとはいえほとんどLinuxが動いている小さなPCのようなものなので、これだけの機能が実現できるのだろう。

しかしながらアクセス制限において多少の不安要素が残る。
QNAPのNASは、管理画面とは別にWebサーバー専用のポートが開けるようになっている。
デフォルトでは80番ポートだ。

このポートはQnapのアプリ、例えばMusic Stationや(インストールしていれば)phpMyAdminにもアクセスできるようになっている。

http://"NAS IP"/musicstation/
http://"NAS IP"/MSV2/
http://"NAS IP"/photo/
http://"NAS IP"/phpMyAdmin/

などがそうである。

これらのページは設定変更していなければ内部から80番ポートでアクセスでき、UPnPや静的IPマスカレードを設定していれば、外部に公開できてしまう。

このような内部ユーザーに関わるログインフォームを持つページを外部に公開したくはない。
ではどうするか、考えてみることにする。
NASに向けてわざと間違ったアドレスにアクセスしてみるともちろん404が返されるが、エラーメッセージを見てみるとどうもWebサーバーにApacheを使っているようだ。
Apache Serverとある。

Apacheサーバーでggってみると、どうやら「.htaccess」ファイルを弄ればいいらしい。

Apacheサーバーの根幹の設定ファイルである「httpd.conf」の設定項目の一部をこの.htaccessというファイルに記述することでこのファイルが存在する階層のページに設定を適用できるというものらしい。
httpd.confは管理者権限が無いと変更できない所以、設定が個別に行えるこのファイルができたらしい。

そんなことは置いといて、今回の場合wordpress以外のアクセスは同じサブネット以外からのアクセスを拒否する事が出来ればいい。

まずNASにWinSCPでSSHを使いadminでNASへログイン。
するとFTPからアクセスしたときと違ったフォルダが見える。
NASの根幹が見える。


Webサーバーのconfig(httpd.conf相当)はapache.confとして「/etc/.config/apache/apache.conf」として保存されている。
.configそのものは/mnt/HDx_ROOT/.configにリンクが貼られている。環境によって保存先HDDが違うためこのようになっているのだろう。

adminでapache.confを見てみる。adminでログインしているので修正も可能だ。
このファイルの30行目辺りが今回変更する場所だ。


Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all

このように書かれている箇所がある。
「Order allow,deny」で
その下にAllow from allがあるので、どこから接続してもallowになっているということみたいだ。
調べてみたら
こういった記事を見つけた。

要は

allow,denyとなっているものは
とりあえず全部拒否。denyリストは拒否しallowリストを通す。

逆にdeny,allowとなっているものは
とりあえず全部許可。allowリストを通し、denyで拒否。
みたいなかんじかな?よくわかr(ry

今回の場合は後者の設定が好ましい。
「全部を拒否する中で、家庭内からはアクセス可能」

以下の様に書き換える。

Options FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Deny from All
Allow from 192.168.1.0/24


Allow from ~の部分は自分のネットワークのアドレス。

192.168.10.0/24と書いても192.168.10と書いてもどちらも「192.168.10.1~192.168.10.254」まで指定されるようになっている。

変更を保存したらサーバーを再起動させる。

TeraTermでssh接続し、

/etc/init.d/Qthttpd.sh restart
と打てばApacheサーバーが再起動する。

こうすることで、/share/Web内のフォルダは外部から見えないようになったはずだ。
試しに外部からNASの80番ポートへアクセスしてみよう。

しっかりと403(アクセス拒否)が出た。
家庭内からのアクセスにはきちんと表示される。


しかしながらこのままでは肝心のwordpressまでもが外部から見えなくなってしまう。
そこでapache.confにもう一手間加える。

さきほど変更した箇所のすぐ下に以下の画像のような記述を追加する。

このようにすれば、/share/Web/wordpress以下のアクセスはどこからでも許可、それ以外のディレクトリへのアクセスは拒否されるようになっているはずだ。

...と思ったら、まだMSV2やらmusicstationなどのアクセスは相変わらずAllowになってしまっている。
これらは/Webに存在しないフォルダなので別のフォルダにアクセスされて先ほど設定した値が有効にならないようだ。ナンテコッタイ!!!

こいつらも無効にするにはapache/extra内のファイルを変更せねばならない。
変更箇所はファイルを読めばわかる。上と同じような変更をすればよい。
変更するファイルは

apache-msv2.conf
apache-musicstation.conf
apache-photo.conf

の3つを変更すればたぶん良いだろう。

変更した後はApacheを再起動させる。

ここまでやって、晴れてやっとwordpressを一般に公開できる環境ができ.......てない。

なぜか上記した書き換えた3つのファイルが元に戻ってしまっている!

なぜだ....?

どこかからデフォルト設定を持ってきているのか、再起動時に設定が元に戻されてしまうようだ。

ぐぬぬ。

とりあえず、一旦放置だ。










んで、ここまで来て何かにお気づきの方もいるかもしれない、そう、

.htaccessを使っていないのだ。

なぜ今回使わなかったのかというと、この程度の規模では使う必要がないことと、Apacheチュートリアルには積極的に使うべきではない、と書かれていたからだ。

恐らく /wordpress に.htaccessファイルを先ほど追記した内容と同じ物を書いて保存すればいいのだとは思うが、それ以上のことはやるつもりはない。

ちなみにこの.htaccessを使えるようにするためにはapache.confの変更が必要になるハズだったが、今のファームウェアではデフォルトで有効になっているようでそのままファイルを設置すれば良いようだ。

0 コメント:

コメントを投稿