Telnet サーバには inetd などのインターネットスーパーサーバを必要としない utelnetd を使うことにした。つまりはスタンドアローンの Telnet デーモンである。
ネットの情報では「あらかじめ root のパスワードを外しておく必要がある」という記述を見かけたが、そんなことはなかった。そもそもログイン認証を経由しないので Telnet 接続時にいきなりプロンプトが返される(苦笑)。プレーンテキスト認証でもないよりはあったほうがマシだと思うのだが、起動オプションがマズイんだろうか・・・。ちなみにハックマニュアルを参考に /etc/init.d 下に作成した起動スクリプト telnet の内容は以下の通り。
#!/bin/sh
/sbin/utelnetd -l /bin/bash &
一応 usage をチェックしてみた(最初確認方法がわからなかったのでソースを参照したが、その後、シェル上で適当なオプションを付けて実行したら invalid option エラーで usage が出てきた)。
Usage: telnetd [-p port] [-i interface] [-l loginprogram] [-d]
-p port specify the tcp port to connect to
-i interface specify the network interface to listen on
(default: all interfaces)
-l loginprogram program started by the server
-d daemonize
うーん、何となくわかった気がする・・・。色々と試した結果、loginprogram を /bin/login に切り替えることでログイン認証を経由することが確認できた。まずはあらかじめ root に設定されていたパスワードを無効にする。これは /etc/shadow を開き、root ユーザの暗号化されたパスワードを削除すればよい。
root:Yx976tFwkdj5W:14121:0:99999:7:::
となっていれば、Yx976tFwkdj5W の部分がパスワード。
root::14121:0:99999:7:::
ただこのままだとログイン認証する意味がないので passwd コマンドで新規にパスワードを作成する。続いて /etc/init.d/telnet を開き、起動コマンドを以下のように修正。
/sbin/utelnetd -l /bin/login &
一応これでセキュリティがほんの少しだけ上がった(苦笑)。
最終更新:2008年08月30日 19:33