Ubuntu 18.04TLSのSSHポートを変更する

こんにちは。今回のテーマは「Ubuntu18.04のSSHポートを変更する」です。サーバーを運用しているとSSHポートを変更したくなる時もあるかと思います。今回はUbuntuで変更する方法です。Deb系のDebianも同様の方法で対応可能です。Red Hat系のCentOSとはファイアーウォールのコマンドが異なる以外は同様の考え方です。


【目次】
SSHのポートは変えたほうが良いのか?
大まかな変更の流れ
sshdの新ポートを設定
ファイアーウォールで新ポートを公開
新ポートでログイン出来ることのテスト
ファイアーウォールで旧ポートを閉鎖

SSHのポートは変えたほうが良いのか?

ときどきネット上でSSHポート変更に関する議論を見かけます。変更無意味派はポートスキャンで分かるからセキュリティが向上したとは言えないという意見ですし、変更有意義派はポートを変更する知識も持たないと攻撃者に思われることが狙われる原因を生み出すと主張・・・簡単にまとめるとこんな感じの議論が交わされているようです。(雑でスミマセン)

筆者はポート変更派なのですが、それはポートが特定されても支障ないセキュリティ対策を行った上でというのが大前提です。デフォルトの22で運用しているとログインを試みる(そして失敗する)ログが大量に残り気持ち悪いです。ポートを変えるだけでこれが減少する(ほぼ皆無になる)のであれば大した手間ではないと考えます。

大まかな変更の流れ

大まかには以下の手順で作業を進めていきます。

  1. sshの設定で新ポートを割り当てる
  2. ファイアーウォールで新ポートを公開する
  3. 新ポートでのログインテスト
  4. sshの設定で旧ポートを割当から外す。
  5. ファイアーウォールで新ポートを公開する

まどろっこしい手順を踏んでいますが、これは設定に失敗したままログアウトして二度とログインできなくなることを防ぐ目的です。では、早速設定を見ていきましょう。今回は現行のポート(旧ポート)を22、移行後のポート(新ポート)を2022として話を進めます。

sshdの新ポートを設定

まずはSSHの設定を変更していきます。以下コマンドではvimで編集していますが、お好みのエディタで作業して下さい。

$ sudo vim /etc/ssh/sshd_config

以下のように編集します。マイナス記号が削除、プラス記号が追記です。

    - #Port 22
    + Port 22
    + Port 2022

sshd_config設定終了後に以下コマンドでsshdを再起動します。

$ sudo systemctl restart sshd

ファイアーウォールで新ポートを公開

ファイアーウォールが導入されている場合はファイアーウォールでポートを開いて上げる必要があります。以下コマンドを実行してポートを開放します。

$ sudo ufw allow 2022/tcp
$ sudo ufw reload

新ポートでログイン出来ることのテスト

新ポートが使えるようになったら必ずログインテストをしましょう。新ポートでログイン出来ない場合はsshの設定か、ファイアーフォールの設定を見直しましょう。今回はSE Linuxの有効化は考慮していませんが、SE Linuxが有効な場合は設定を見直します。

旧ポートの公開を停止

SSHの設定

まずはSSHの設定ファイルを編集します。vimで編集しましたが、お好みのエディタで編集して下さい。

$ sudo vim /etc/ssh/sshd_config

以下のように編集します。マイナス記号が削除、プラス記号が追記です。

- Port 22
+ #Port 22

sshd_config設定終了後に以下コマンドでsshdを再起動します。

$ sudo systemctl restart sshd

ファイアーウォールで旧ポートを閉鎖

まずはファイアーフォールの状態を確認

$ sudo ufw status

出力例

To                         Action      From
--                         ------      ----
20/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
20/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             

確認で表示された旧ポートのruleを削除しましょう

$ sudo ufw delete allow 22/tcp
$ sudo ufw reload

これで新ポートへの以降は完了しました。

最後に

必ず新ポートでログインできることを確認してから旧ポートを閉じましょう。物理サーバーにアクセス出来きない場合、ログインする術がなくなってしまい困ることになります。

本記事がお役に立てれば幸いです。

※sshd_config設定編集後にsshdを再起動する処理が抜けておりましたので追加修正しました。ご指摘頂いた方誠にありがとうございました。

【関連記事】
Ubuntu 16.10をネットインストールで導入する

Sponsored Link


2件のコメント

  • sshd_config 変更したら service sshd restart 要りません?

    • 通りすがりさん

      コメントありがとうございます。
      ご指摘の通りsshdの再起動で設定を反映させないとダメですね。抜けがあり大変失礼いたしました。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です