職場ではグループウェアとしてGroupSessionを使ってきた。ずっと閉鎖されたLANの中で使っていて、拠点間の接続はVPNで解決していた。つまりネットワーク的には理論上は社外からはアクセス出来ない状態にしていた。
ところが最近事情が変わった。その発端はSoftbankのiPhoneである。会社の経営陣がiPhoneに一気に変更したのである。色々便利さを味わうと人間逆戻りできなくなるもので、GroupSessionからのショートメール通知では物足りなくなって来てしまい、iPhoneからGroupSessionに直にアクセスしてスケジュールを確認したいと言い出したのだ。そりゃその方が便利だし(GroupSessionにはケータイ向けの有償アプリもある)
さて、ネットワークやサーバーを預かっているインフラ屋としては、ファイヤウォールに穴を開けるのはやぶさかではないとしても、出来るだけ被害の少ない方法を考えなくてはならない。つまり、GroupSessionに入り込まれた時の二次災害を防ぐことだ。GroupSessionに社内のシステムの情報を仮に誰かが記述していたとしても、外部からアクセスできない状態にしておくのが好ましい。
少し考えて幸いなことを思い出した。GroupSessionはTomcat上で稼動させている。例えば、見かけ上はApacheがフロントエンドとして働いているが、例えばAJPコネクタで8009ポート、そしてTomcat標準の8080ポートも同時に開くことが出来る。幸いなのはここで言う8080ポート(Tomcat)で動かしているものがGroupSessionしかないのである。という事は8080ポートだけ開放すれば、被害はTomcatだけで済むことになる。(色々抜け道は考えられるが80番ポートを開放するよりは懸念すべき事項を1/10以下に減らせる)
という訳で、ここで言う8080番ポートなら開放してもいいだろうという判断にした(実際に何番を開放しているかはもちろん明記しない・・当然だよね)。問題は携帯電話では8080ポート指定でアクセスすることが出来ないことだ。実のところiPhoneはよく知らないが、私の705NKでは8080ポートで公開している自宅サーバにアクセスすることが出来ず、Softbankに何度か問い合わせてようやく技術的に明るい者から、80ポート以外へのアクセスは禁止していると回答をもらった経験があるのだ。しかし断っておくがあれから1年以上経過しており現状はどうだか知らない。
ともかく80番ポートでしか携帯電話はサイトにアクセスできないと前提して作業を進める。だけど8080ポートしか開放したくない。ならばルーター(YAMAHA RTX1100のNAT-MASQUERADE機能によって、ポート変換して解決すればよいだろうと判断した。つまり下の様なイメージになるはずだ。
具体的にRTX1100に施す設定の肝は下記の部分になると思う。
ip filter 200096 pass * * tcp * 8080
nat descriptor type 1 nat-masquerade
nat descriptor masquerade static 1 5 192.168.0.100 tcp www=8080
フィルタールールで8080ポートを通す。概念図上はファイヤウォールは80を通すかの様に記したが、ルーターの定義上は8080ポートを通すフィルタを書かないと通れない。もしかすると80ポートを制限するフィルタが書かれていると目的を達することが出来ないかも知れないが、その時は臨機応変に・・
nat descriptor typeは、nat-masqueradeを定義。masqueradeだと静的NAT変換が効かないのがうっかりはまってしまいそうな落とし穴だ。
そしてnat descriptor masqueradeとして、tcpの80ポート(www)へのパケット到着があった場合、RTX1100のNATで8080に変換して192.168.0.100にパケットをフォワードしてもらう。これで表向きは80番ポートで公開しているかの様に見えるが、実際のサーバーはTomcatで8080ポートでサービスを提供出来る。ルーターが高機能であればこういうことが出来るのでありがたいことだ。
後はTomcatがのっとられない様に、脆弱性の情報には注意しながら維持管理していかなくてはならないだろう。こればっかりは手放しでメンテナンスフリーとは行かない。ネットワークに穴を開けるという事は本当に頭の中に一つ課題を置き続けることになるので、出来ればやりたくないことではある。(そういう意味ではレンタルサーバを借りるのは理にかなっているというか、金で事を済ませられるならそうすべきなのかも知れない。ビジネスでそれが利益を生むなら投資も安いものだと考えよう。)



コメント