ページへ戻る

− Links

 印刷 

Telnet :: Nest Of Hawk

xpwiki:Telnet

自宅鯖計画[1]

ページ内コンテンツ
  • 他のホストからログインできるようにしてみよう
  • これだけではなんなので
  • では一般論
    • inetdスーパーサーバ
      • なぜに2段がまえ??
      • んじゃー全部そいつにやらせてしまへ
      • 「じゃあどーやってinetdから起動するのと直接起動するのと分けるねん」
      • ちなみに

他のホストからログインできるようにしてみよう anchor.png[2]

Telnet?かんたんっす。RedHatならば

/sbin/chkconfig telnet on

なおかつ、xinetdの設定で、自分以外のホストからのログインを許容しないような設定になっていますので、/etc/xinetd.d/telnetを

service telnet
{
        disable = no
        flags           = REUSE
#        only_from      = 127.0.0.1 ←コメントd (>◇< ) アウト!
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
}

と変更しましょう♪そのあとは

service xinetd restart

ほらできるようになったでしょう(笑)

Page Top

これだけではなんなので anchor.png[3]

Telnetは古くからある外部からのログイン用プロトコルで、私がはじめてUNIX触ったころは、1つの端末から他のPCをいじれるなんてすごい!と思いました。

しかし、今となっては時代遅れプロトコルです。

  • 通信内容が暗号化されていないため、ログインパスワードが見られてしまう

近年のセキュリティとしては、これはかなり痛いです。間違っても「これを設定しておけば仕事場からも自分のパソコンにログインできるね♪」なんてことは絶対にしない方が無難です。あくまでも自宅のイントラネット内で行う分には自分ちネットワーク内にクラッカーがいない限り(笑)問題ないはず。

Page Top

では一般論 anchor.png[4]

Telnetはもともとinetdスーパーサーバを経由して起動されます。inetdスーパーサーバってなんじゃい?と思われる方もいらっしゃるでしょうから一応説明。

Page Top

inetdスーパーサーバ anchor.png[5]

inetdスーパーサーバは名前を聞くとなんとなく凄そうですね♪スーパーですから。何を受け持つかというと、こやつがクライアントからのリクエストを受け付けて、ターゲットのサーバを起動する仕事をします。つまり

Telnetクライアント→inetdスーパーサーバ→telnetデーモン起動

と動くわけですね。

Page Top

なぜに2段がまえ?? anchor.png[6]

サーバというと、いろいろあります。HTTP,メール,Telnet,FTP,DNS,NFS。他にもチャットやら、IP電話、なんやらかんやら。全て挙げていくと、現時点で存在するもので1000個以上もサーバはあります。これを使うためにあらかじめサーバをぜーんぶ立ち上げておくと~、プロセスが一杯になってUNIXカーネルさんが「こんなに一杯仕事でけまへんがな」*1言ってきます。じゃ立ち上げなきゃいいじゃん?そーなんです。立ち上げなければいいんですが、立ち上げてないサーバ機能は結局使えません。じゃーダメじゃんー。

ここで昔のえらい人は考えました

「代表でリクエスト受けてくれる人が1人いて、必要に応じてサーバ立ち上げればええやん?」

でました、ここでinetdスーパーサーバさんの登場です。つまり、inetdスーパーサーバ1つ立ち上げておけば、たくさんあるサーバに成り代わってリクエストを受けてくれます。んで、リクエストの仕分けをして、適宜必要なサーバを立ち上げてくれます。立ち上げられたサーバは仕事が終わると消えてくれます。難しく言うとオンデマンドでサーバを起動してくれるサーバと言えますね。

Page Top

んじゃー全部そいつにやらせてしまへ anchor.png[7]

いや、そりは現実的ではありません。なぜかと言うと、プロセスを作ったり消したりはOSさんの大仕事だからです。プロセス起動は

  • ハードディスクから実行イメージをメモリにロード
  • メモリに展開された実行イメージと、実行用仮想メモリ領域をOS内に準備
  • タスクをOSのスケジューラに登録

と瞬間的に動作します。プロセス削除はこの逆ですね。 メモリに立ち上げっぱなしにしておけば、この作業を省くことができます。なので軽く動かせるわけです。

Page Top

「じゃあどーやってinetdから起動するのと直接起動するのと分けるねん」 anchor.png[8]

はい、そうきますよね。一般的にはユーザからのリクエストが頻繁にかかるサービスは直接起動、そうでもないやつはinetd経由です。例を出すと、頻繁にかかる奴は、メール、DNS、ファイルサーバ、HTTPサーバ…特にユーザが意識してないところでがつがつ動くやつです。対してそうでもない奴は、Telnet,FTP,チャットなど…ユーザが意識してサービスを使おうとするような奴は(コンピュータからみると)頻繁ではないサービスです。

Page Top

ちなみに anchor.png[9]

スーパーサーバはいくつかございまして、散々出てきたinetd、inetdを拡張して、セキュリティ面を強化したxinetd、inetdとTCPwrapperを組み合わせたtcpserverがございます。inetdが古のスーパーサーバーですが、セキュリティ面で非常に弱いです。立ち上げてしまえば誰からでも接続要求を受け付けます。悪意攻撃をしてくることが分かっているホストであっても回避不可能です。このため、その他のスーパーサーバは設定が柔軟にできるように改良されています。 設定方法についてはこちら[10]をご覧下さい。


*1 No more processと言われます

Last-modified: 2009-08-16 (日) 22:40:12 (JST) (5359d) by maruo