SSHに利用可能なポート番号は、49152〜!?

松尾くんと共同で、サーバのセキュリティ強化作業。

アクセス制限を徐々に強めていく際、どちらかがログインしたままで、他方が一旦抜けて、入り直す作業の繰り返し。
今日だけで、相当にセキュリティは強化されて、普通にアクセスして来ても、まず、rootには辿り着けないようにはなった、と思う。が、問題はその操作にかかった時間で、当初の予定としては、「ちょいちょいっと、1時間程度」のつもりが、7時間かかってしまった。

どこでドツボったか。(たぶん、似たようなトラブルにハマる人もいるかも、と思うので、アップしておきます。ご参考までに。)

SSHで、暗号鍵を使ったログインの設定をする際に、そのデフォルトポートを22から変更したのに、変更後のポートが全く開けない、という現象が起きた。言うまでもなく、いくつに変更したかは書けない。中国からのアクセスみたいに、片っ端から繋ぎに来ていれば、いつかは見つかるかも知れないけれども、こんなもん、ネットに書いたら変更した意味がない。(余談ながら、今は、pingも返さないし、そのポートにSSHでアクセスされても、アクセス方法が正しくなければ一切返事しない、はず、なんだが、返事を返さなくてもしつこく繋ぎに来るハッキング・ツールがあるみたいだ。)

結論から言えば、IANAに登録がないポート番号でも、どれでも使える訳ではない、ということのようだった。(間違いなく、昔は、使っていなければ任意のポート番号に設定できたはず、なんだけれども・・・)
問題解決に時間がかかりすぎて、何が原因だったか確認する余力が、僕にも、松尾くんにも残っていない気分でした。

最初は、ファイアウォールに蹴られているか、と思い、ufwの設定を変えて、試しまくった。何よりも、初期状態では inactive だったのに・・・。activeにして、明示的にそのポートを開いても、22番は通るものの、新しいポートにつながらない。散々時間を潰した挙句に、ufwのログを調べたら、ufwがそのポートへのアクセスを蹴った記録が一切残っていない。ということは、ufwは切っていない。

次に試したのは、/etc/ssh/sshd_config のポート以外の指定。効果なし。 /etc/ssh/ssh_config も試した。iptablesのツールも入れて調べたけれど、ポート自体は「許可」になっている。どこをどう見ても、そのポートは「口を開いて待っている」設定になっている。
あぁでもない、こうでもないと、延々と試行錯誤した。ネット検索しても、どのサイトも「ここだけ直せばすぐに変更できる」となっている。何で俺たちだけ?と、無力感に晒されてくる。

結論:開いていても、ssh deamonには、使えないポート番号がある。

TCPやUDPにおけるポート番号の一覧

このサイトで、

ウェルノウンポート番号 (0–1023)
登録済みポート番号 (1024–49151)

となっているのが気になった。ここを外して設定してみようか。40152-65535の範囲にある別のポートに切り替えたら、瞬殺で、動作した。何で、こんなところに時間を費やして・・・

ググると、「こうやれば、簡単にできます」のサンプルでは、この1024-49151の範囲にあるポート番号が「適当に」設定されて、使えることになっている。「適当な値に変えて下さい」その「適当」とは、0-49151以外のようだ。(もう、試す元気がない。)

SSHのポート変更で、うまく動かなかったら、「使われていないポート番号」を探すだけではなく、0〜49151を避けるというのも、重要なことのように、自分は理解した。(間違っているかも知れないけれども、経験則として・・・)あるいは、ちょっと試してつなげなかったら、すぐに別のポート番号を試す、というのが、おそらく正解なんだろうと思う。二人して、ほぼ一日浪費した気分。(こうして、どんどんと予定がずれ込む。)

最近、仕事の仕方が「きれい」じゃない。とにかく動けばそれでいい、そんな感じになって来た。でも、これほど調べたのに、SSHに「使える」ポート番号について書かれたサイトが、一つもなかった。もう、結果オーライ。

もう22番はファイアウォールも閉じているから、これでだいぶ静かになってくれたらありがたい、と思ったのだけれども、結局認証ログは静かになったのに、ファイアウォールのログが、凄まじい勢いで膨らんでいる。認証ログが騒がしいよりは、心が穏やかだけど。こういうアクセスをする人たちには、この世界から消えて欲しいよなぁ。

長い名前

デバッグを終えた。手持ちのデータでは動作確認した。ただ・・・

テストスクリプト、テスト手順書を書かないと不安は残る、けれども、網羅テストの手順を書くのは、詳細設計書を書き上げるのと同じくらい時間がかかる。これ以上、余計なことは書きませんが・・・

人名ではないけれど、長い名前で「表示が重なる」バグを出した。最初の設計で、25文字で行分割した。その後で、少しでも「きれいに見えるように」表示のレイアウトを調整し、フォントの大きさも調整した、その後で、実際の「長い名前」のテストをしていなかった。僕の不注意。(細かいところに、神経が回り切れていない。正直な話、紛争のニュースなんかに反応している暇があったら、目の前の仕事に集中しろ、という感じだろうか。今後は、そうする。何が起きても、一切反応しない。そう決めました。)ご迷惑をおかけした皆様、ごめんなさい。

実際、折り返しはプログラムできていたのだけれども、調整後に「折り返す」位置は22文字目になっていた。バグのご指摘をいただいた「長い名前」は24文字だった。対応していなかった訳じゃないのだけれど。言い訳ですねぇ。見苦しい。今後は、プログラムだけを考えるように意識を切り替えます。「ニュース禁止」の張り紙をしようか。

学生によく、「日本で一番長い名前」の話をした。名前の入力フィールドの、上限とか画面上の枠の大きさとか、の話題。漢字4文字くらいの姓までは、時々見かける。ざっと、姓も名も、5文字くらいで大丈夫かなと思うけど、なんていう話をしたことがあった。ちょっと待て、と思った。

道端アンジェリカさん、名前が6文字。高橋メアリージュンさん、7文字。外国人の名前を忘れていた。そういえば、高校時代の同級生のタイ人。彼の名前はカタカナで7文字。8文字の留学生もいたなぁ。カタカナ表記だと、10文字くらいは普通にいそうだ。忘れていました。頭が固い。今時、これに対応しないと「使えねぇソフト」になってしまう。(おっと、「外国人」の名前じゃなく、外国系の日本人の名前、か。)

なんてことを、ぼんやり考えつつ。バグの連絡を受ける前の仕事に頭を切り替える。本当に、切り替えが下手だ。別のコードを頭の中に広げる。

事務所に一人でいると、ついつい、こういう時に何か書きたくなる。松尾さんに、シェアオフィスでも借りて、必要な時に活用したら、なんて助言ももらったけど、そんなことをしたら、相手の迷惑も考えずに、のべつまくなし話しかけて、顰蹙を買いそうだ。

とにかく、次。