君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

sshのセキュリティ設定で、なぜポートを22から変えるとよいのか〜サーバとポートと/etc/ssh/sshd_configと〜

f:id:karoten512:20180211233659j:plain

サーバのsshdプロセスに対して、1日900回以上の不正アクセスがあった

詳しくはこの記事。

karoten512.hatenablog.com

対応方法の一つ

/etc/ssh/sshd_configを編集し、

sshdがlistenしているポートを22→10022に変える。

そもそもポートとは

サーバでは、いろんなアプリケーションが動いている

f:id:karoten512:20180211231522p:plain

nginx、sshd、mysqld、telnetdなど、

いろんなアプリケーションが動いている。

サーバを利用するときは、このアプリケーションと通信することになる。

nginxアプリケーションと通信したい時

f:id:karoten512:20180211231612p:plain

webサイトを見る場合は、この場合nginxと通信することになる。

ipアドレスによって、サーバにはたどり着くが、

これだけではnginxと通信することが出来ない。

「nginxというアプリケーションと通信したいです、とお願いすればよいのでは?」

と思うかもしれないが、ユーザ側からはサーバの中が見れないので、

webサーバがnginxなのかapacheなのか、

はたまたIISなのかはわからない。

実際は

実際、アプリケーションは「ポート」という部屋のようなものの中にいる。

(正確にはポートをlistenしている、というがわかりやすさのため部屋にいる、とした)

サーバにはポートという部屋がある

f:id:karoten512:20180211232126p:plain

サーバには、

1〜65535の番号が振られた、ポートという部屋を持っている。

それぞれの部屋にはアプリケーションが住んでいる

f:id:karoten512:20180211232310p:plain

上記のように、22番にはsshd、80番にはnginx、、、というように、

部屋の中にはアプリケーションが住んでいる。

通信するときは部屋番号を指定して通信している

f:id:karoten512:20180211232422p:plain

httpアクセスが送られる時、

サーバのipアドレス: ポート番号

という形で送られている。

これで、通信したいアプリケーションと通信ができる。

これは、マンションのある部屋に郵便物をおくるイメージと似ている。

通信は、コンピュータからコンピュータではなく、

ポートからポート、と覚えておくと良い。

アプリケーションには定められた部屋番号がある

22番にはsshd、80番にはnginxというように、

色んな人が使う可能性が高いアプリケーションは、予め決められた部屋番号がある。

これにより、

サーバの中でどんなアプリケーションが動いているかは分かんないけど、

80番ポートにアクセスしたらwebサイトみれるんじゃね?

くらいの知識でwebサービスが使える。

使う側は、ipとポートさえわかっていればよい。

「アプリケーションには定められた部屋番号がある」が逆手に取られることがある

今回、sshdに向けて不正アクセスが大量にあったのは、

f:id:karoten512:20180211233104p:plain

ハッカー「22番ポートにはsshdがすんでるハズだから、鬼ノックしてやろ!!!!」

と思った人がいたからである。

対策としては、sshdのお引っ越し

f:id:karoten512:20180211233215p:plain

こんな感じでsshdを10022番に引越ししてもらう。

(/etc/ssh/sshd_configの設定を変える)

そうすると、

ハッカーは空部屋を鬼ノックし続けるという悲しいことになる。

これでsshdへの不正アクセスがぐんと減るのだ。

まとめ

  • みんなが使うアプリケーションは、予め定められたポート番号に住まわせる

  • 他の人に使ってほしくないアプリケーションは、自分だけが知っていればよいポート番号に住まわせる

とすればよいはず。

今回ポート周りの知識が整理されたので良かった。