ByteScope

23

ポート 23 · Telnet

TCPIANA 割り当てありリモート接続

平文のまま端末をつなぐポート。スイッチやカメラ、組み込みボードでは今も出荷時の管理口で、そしてうっかり開けると数分でスキャナーに見つかるポートでもあります。

ポート 23 を使っているプロセスを特定する

自分の環境の行をそのまま実行してください。ポートを掴んでいるプロセス名と、バインドしているアドレスが出ます。たいていはそれだけで答えが分かります。

外側から確かめる

`nmap -Pn -p 23 192.0.2.10` は、ホストの外側から見て本当に知りたい一点だけを答えます。`-Pn` を付けるのは、ping を無視する機器をスキャン対象から外させないためです。`open` なら TCP ハンドシェイクが成立したということ。意図して開けた覚えのない機器なら、これはインシデントとして扱ってください。`closed` はホストがリセットを返した、つまり到達はできるが誰も待ち受けていない状態。`filtered` は何も返ってこなかった、つまりファイアウォールや ACL が拒否ではなく破棄しているということです。どれだったかは `--reason` で分かりますし、`-sV` を付ければ telnet のバナーを読んで、たいていは機器のベンダー名まで教えてくれます。スキャンは自分が責任を持つホストにだけ。

23 につながらないときの読み方

出ているもの意味
telnet: connect to address 192.0.2.10: Connection refusedパケットはホストまで届き、23 番を持つプロセスがないのでカーネルがリセットを返しました。デーモンが止まっているか、そもそも入っていないか、あなたが叩いたアドレスを含まない場所にバインドしています。上のコマンドは手元のノート PC ではなく、対象のホスト側で実行してください。
telnet: connect to address 192.0.2.10: Operation timed out何も返ってきていません。パケットフィルタが SYN を黙って捨てています。ホスト上のファイアウォール、ネットワーク ACL、あるいはそもそも別の VLAN にいるかのどれかです。拒否なら即座に返り、破棄なら数十秒待たされます。この待ち時間そのものが診断結果です。
Connected to 192.0.2.10. ... Connection closed by foreign host.ポートは開いていてハンドシェイクも成立し、そのあとサーバー側から切られました。よくあるのは、接続は受け入れてから送信元アドレスで弾く TCP wrappers やアクセスリストの設定、同時に 1 セッションしか許さない機器に既に誰かがつながっている状態、あるいは起動直後に落ちたデーモンです。ネットワークの問題ではありません。アプリケーション層の手前までは全部成功しています。
telnetd: bind: Address already in use指定したアドレスの 23 番は既に誰かが持っています。自分の環境のコマンドを実行して出力のバインドアドレスを見て、本当に衝突しているのか確かめてください。`0.0.0.0:23` を持つプロセスがいると `192.0.2.10:23` への二度目の bind は失敗しますが、別々の具体的なアドレスに 2 つ並ぶぶんには問題なく共存します。
bind: Permission denied when starting a listener on 23 as a normal userUnix 系では 1024 未満が特権ポートなので、カーネルは他を何も見ずに EACCES で bind を断ります。init システム経由で root として起動するか、Linux ならバイナリに `CAP_NET_BIND_SERVICE` を与えるか、高い番号で待ち受けて転送してください。ポートは空いています。あなたに使う権限がないだけです。

ポート 23 で動いているもの

IANA は 23 番を TCP・UDP 両方で `telnet` に割り当てていて、根拠は RFC 854 ですが、実際に使われるのは TCP だけです。Telnet は文字ストリームをそのまま流す端末プロトコルで、暗号化も完全性の検査も一切ありません。ログイン名もパスワードも、その後のキー入力も、すべて読めるバイト列のまま流れます。汎用マシンのまともなログイン手段としては 20 年前に役目を終えているのに、ネットワークスイッチ、IP カメラ、DVR、セットトップボックス、シリアルコンソールサーバー、産業機器、ホビーボードの工場出荷時の管理インターフェイスとしては生き残っていて、誰も出すつもりのなかったネットワークに顔を出し続けています。エンジニアがこの番号を調べる理由には、まったく別のものがもう一つあります。`telnet host 25` のように、何か応答するかを確かめるだけの素の TCP 叩きです。こちらはクライアント側の話でリスクは何もありません。同じことは `nc -vz host 25` でもできますし、macOS といくつかの Linux ディストリビューションは telnet クライアントを既定で入れなくなったので、今はそちらが主流です。プロセスを探しに行く前に一つだけ。telnetd は常駐せず必要になってから起動する作りが伝統なので、socket activation の効いた systemd ホストや、古い inetd・xinetd のマシンでは、23 番を掴んでいるのは `systemd` や `inetd` として出てきます。telnetd 自体は接続が来て初めて存在します。

ポート 23 を外部に開けてよいか

23 番はインターネットに出さないでください。できればオフィスのネットワークにも出さないほうがいいです。クライアントとサーバーの間にいるもの——スイッチ、乗っ取られたルーター、同じ Wi-Fi にいる別のマシン——はパスワードを平文で読めますし、サーバー証明書もないので、間に誰かが入っていても気づく手段がありません。公開された telnet のリスナーは全世界を舐めるスキャナーに絶えず見つけられ、見つかった瞬間からベンダーの初期パスワード一覧を片端から試されます。家庭用機器で組み上げられた大規模なボットネットは、歴史的にこの手口で作られてきました。しかも組み込み機器で動いているのは、たいてい更新の止まった古いデーモンです。正しい置き換えは 22 番の SSH で、同じシェルをホスト鍵の検証と暗号化つきで使えます。どうしても telnet しか話さない機器なら、管理用 VLAN に閉じ込めて SSH の踏み台か VPN 経由でしか届かないようにし、ネットワークに繋ぐ前に工場出荷時のパスワードを変え、ルーターが実際に何を転送しているかを確認してください。UPnP には、頼んでもいないポートを勝手に公開してきた長い前科があります。「NAT の内側だから大丈夫」は検証できない対策です。ポート転送のルールや UPnP のマッピング一つで、黙って無効になります。

サービス
Telnet
トランスポート
TCP
登録状況
IANA 割り当てあり
カテゴリ
リモート接続

このサイトのツール

どれもブラウザ内で完結します。アップロードは発生しません。

関連するポート

23 を調べているとき、ついでに確認することになりがちなポートです。

よくある質問

明らかに使用中なのに、コマンドが何も表示しないのはなぜ?

ほぼ権限の問題です。lsofss はソケット自体は出しますが、他ユーザーのプロセスは所有者の列を伏せるので、システムアカウントやコンテナランタイム、launchd が起動したサーバーは sudo を付け直すまで持ち主不明のリスナーに見えます。Windows は逆で、netstat には何も出ないのに bind だけ失敗します。これは Hyper-V や WSL2、Docker Desktop が起動時に予約したポート帯に当たっている状態です。

ポートを掴んでいるプロセスは kill してよい?

何なのかを先に見てください。取り残された開発サーバーなら問題ありませんが、書き込み中のデータベースは別ですし、他が依存しているシステムサービスも同様です。持ち主がコンテナならコンテナごと停止してください。ホストから見えるプロセスを kill してもランタイムが再起動するだけです。どうしても止められないものなら、自分のサービスを別のポートへ移すほうが早く片付きます。

ローカルからは届くのに、別のマシンからは届かないのはなぜ?

0.0.0.0 ではなく 127.0.0.1 にバインドしているからです。各ページのコマンドがプロセス名と並べてバインド先アドレスを出しているのはこのためで、ループバックにバインドしたものはファイアウォールの設定に関係なく自分のマシンからしか届きません。最近は意図的にそれを既定にしているフレームワークも多いので、たいていはバグではなくフラグの問題です。すでに 0.0.0.0 なのに届かないなら、次に疑うのはホストのファイアウォールかクラウドのセキュリティグループです。

珍しいポート番号に移すと安全になる?

ほとんどなりません。インターネット全体を舐めるスキャナーはポート範囲を丸ごと走査し続けているので、稼げるのは数時間であって安全ではなく、代わりに関係者全員がその番号を覚える羽目になります。既定ポートを狙う無差別スキャンのログが減るという効果は確かにありますが、それだけです。結果を変えるのは認証と、送信元アドレスを絞ったファイアウォールと、そもそも外に出さないことです。

ポート 23 でまだ詰まっていますか。ポート一覧をすべて見る。あるいは上に戻って、実際に出たエラー文から追ってください。