連載第30回
2014年3月15日
初めて使うwebminでやっておくべき事(その6)

 先月の大雪で推定98%の葉が枯れ落ちてしまったカネノナルキ続報です。3月になっても、まだまだ肌寒さは続いていますが、次第に春の雰囲気も感じられるようになった頃合い、すっかり「茎だけの存在」になっていたカネノナルキに、小さな小さな葉っぱの子供が出てきているのを見つけました。ここまで来れば大丈夫。彼等は驚くべき成長力を見せ、桜の花が咲く頃には再び肉厚の葉っぱをいくつも広げていることでしょう。
 久々にそんな楽しいイントロで始まった今回は、前回の一般ユーザー追加に引き続きwebmin周りのセキュリティ関連最終回、「IPアドレスのアクセス制御について」です。

 さて。ServersMan@VPSにインストールしたwebminは、デフォルトのままだと、外部・内部問わず、ネットに繋がった全てのコンピューターからアクセスを受け入れている状態らしい。僕のメリットとしては、家からでも外出先からでも、日本以外の国からでも(国外に出た事無いけど)アクセス出来るので都合よいのだけれど、それはやはり問題あるんじゃなかろうか…と見る向きに対しての処方として、そもそもwebminにアクセス出来るパソコンを限定してしまおう、という試み。その範囲の指定をIPアドレスで行うという事らしい。

IPアドレスとは

 しかし、自分が日常で使っているAirたんのIPアドレスって何番なのか…。普段、IPアドレスの事なんて考えもしないし、また改めてIPアドレスって何?って思ってしまう始末。インターネットに接続する際に、必要と言われれば、言われた通りの数値を入力する、その程度しか接する機会もなく20年近くが経ってしまったワケです。そこでいつものようにググってみて、何となく噛み砕いて分かり易そうに説明してくれている記事に目を通してみました。また、IPアドレスの範囲指定ってどういう書式で記述するのかも不明だったので合わせて。

外部サイト参考記事
プライベートIPアドレス (private IP address)(@IT)
NAT (Network Address Translation)(@IT)
用語集「IPアドレスとは?」(CMANインターネットサービス)
IPアドレス(ネットワークエンジニアとして)
IPアドレスとは何か?
IPアドレスの範囲指定 – CIDRとサブネットマスク(Linuxで自宅サーバ構築)

テストユーザーで実験してみる

 何となくIPアドレスの概要を掴めたような気がしたところで、実際にIPアドレスによるアクセス制御を施してみたい。そこで、いろいろ参考記事を読むと「webmin設定」>「IPアドレスのアクセス制御」で設定するみたいなのですが、実はこれと同じような設定画面を前回のユーザー追加設定画面でも見た気がします…。いや、見た。

 これだ!個別ユーザー設定下にある「セキュリティ&リミットオプション」内の「IPアクセスコントロール」です。ここは英語表記で日本語化はまだですが。
 選択肢も「全て許可」「リストだけ許可」「リストを拒否」の3択で、webmin全体の「IPアドレスのアクセス制御」と同様です。

 そこでまずwebmin全体の入り口の「IPアドレスのアクセス制御」はまだ開放したままにして(ミスするとログイン出来なくなるらしい)、前回の要領でテスト専用ユーザー「test」を追加作成し、そのtestユーザーに対してアクセス制御設定してみてみることにしました。「Only allow 〜」を選択し、そこにログイン出来るIPアドレスを記入します。

 参考記事を読んでみると、サーバーホスト自体のIPアドレス「127.0.0.1」を記入しておくのは必須らしい(何ソレ?→ローカルホスト)。webminではサイドメニューの「ネットワーク設定」>「ホストアドレス」で確認出来ました。ピンクの塗り潰しは、僕の登録したドメイン名になっていて、IPv6ではまだ紐付けされてない事が分かります。

 加えて、自分のMacBook AirのプライベートIPアドレスも追記するのですが、これは「システム環境設定」の中にある「ネットワーク設定」>「詳細」を開いてみると「10.0.1.3」が割り当てられているようなので、それを入力。

 ひとまずこれで大丈夫なのではあるまいか。そう楽観して新規作成した「test」のユーザー設定を保存し、webminのユーザー切替えで、新規IDの「test」とパスワードにてログインを試みたところ…。エラー来たーー!

外部サイト参考記事
Webmin について(Linuxで自宅サーバー)
雑多な設定 Webminの設定(釣ったよ! 釣りとコンピューター)
Webminネットワーク(CMSでホームページ作成)

このIPアドレスの持ち主は誰?

 幾度か試しても頑として拒否される、まわるフリフリのフリ。残念ながらtestユーザーでログインは出来ないようです。とりあえずSafariを終了させて、改めて従来の一般ユーザーIDでログインし直しました。しかし分からないのはエラー表示時に現れたIPアドレス「270.xxx.xxx.x」。初めて見る数字の羅列で、一体これが何のデバイスに割り当てられているアドレスなのか全く思い付かない…。

 時間をかけてアレコレ思い付く事を試し、最後にtestユーザーの設定画面で、上で記入したIPアドレス欄にエラー表示された「270.xxx.xxx.x」をそのまま追加してみると…何と無事ログインすることが出来ました。一体この数値は何なのだろうか、と。実はローカルホストは127.0.0.1じゃなくて、270.xxx.xxx.xだったのだろうか…等々。

 いつものように珈琲を飲みながらぼんやり考えていて、ふと、MacBook AirにIPアドレスを割り振ってくれている親元である「AirMac express」の事を思い出しました。久しく使ってなかったAirMacユーティリティを起動し、すっかり忘れていたパスワードを必死に思い出してアクセスしてみると果たしてそこには「270.xxx.xxx.x」が!このIPアドレスは、AirMac expressが使っていたものなのか。そりゃ、AirMac expressのIPアドレスを拒否していたら、ログインは出来ないですね。久し振りに起動したついでに、通知が来ていたので最新ファームウェアへ更新しておきました(全くの余談)。

IPアドレスの制限は難しい?

 謎だったIPアドレスの主が判明したところで、エラーが出た理由も、それを回避する為にリストに記入しておくべき理由もようやく理解出来たのですが、問題はその運用についてです。AirMac expressに割り当てられていたこの数値は、おそらくAirMac expressを再起動したり、あるいはNTTから貸出しされているモデム&ルーターを再起動したり、住んでいる地域が地震やカミナリで停電したり、あるいは引っ越しなんかしたりした際に変わってしまうのではないか。いや、きっと変わるに違いない。

 実験してみました。AirMac expressをコンセントから引き抜いて、再び差し込み再起動するのを待ちます。ランプがオレンジからグリーン色に切り替わった後にアドレスを調べてみると…。さっきとは全く別のIPアドレスが割り当てられていました。
 もしかしたらNTTからレンタルされているルーターに、子機(AirMac express)に割り振るIPアドレスの範囲を指定できる機能があるのかもしれないのですが、手元に資料が無いため分かりません。

 しかしこれだと制限設定は難しい。ガチガチにピンポイントでアドレス制限しちゃうと、何かの拍子にAirMac expressのIPアドレスが変わってしまったらwebminにログイン出来なくなってしまいます(末尾だけが変わるのなら/255.255.255.0を付け足しておけば大丈夫なのですが、それ以外の箇所も大胆に変化しています。ワイルドカードも使えないようですしねえ…)。サーバーにまつわる諸設定を一度済ませてしまえば、今後webminが必要になる場面はほとんどないとは言え、いざIPアドレスが変わってしまった後、webminで何かの設定変更をしなければならなくなった時は結構面倒くさい状況に陥るかも。

外部サイト参考記事
ワイルドカードマスクを理解する(みんなの受験記)

その他のセキュリティ対策

 今回の迷走を通し、大学の研究室内とか小規模の事務所内で独自にサーバーを運営していて、それと同じローカルなLAN内にぶらさがっているユーザーを個別にアクセス制限する意味や方法は理解できたと思っているのですが、今更だけどかなり勉強になりました。webmin自体については、rootを廃止して専用ユーザーIDを使うことにしたし、ポート番号も変えたし、Xinetdで普段はサービス停止させておくことにもしたし、これくらいでイイかな…という気もしてきています。

 ところで、今回いろいろ参考記事を読んでいる中で「SSHのポートフォワーディングで接続する」という方法があるのを知りました。ポート番号を変えるのではなく、普段sshで使っているポート番号を通してwebminに割り当てているポート番号に接続する(?)という技なんだそうな…。実はこれが一番安全なんじゃないかと思ったりしたのですが、理解不足もあって実験は保留しています。機会があれば試してみたいのだけれど、とりあえず先に進みたいので、今回にてwebmin周りの「初心者がやっておくべき事シリーズ」は一旦終了。
 次回は永らくペンディングしたままになっていた「iptables」関連に戻ります。つづく(もう終わりたい)。