GCP上のCentOS8のPortを変更するやり方


前回までのあらすじ

前回はGCP上のマシンを作ってそこにVSCodeを使ってアクセスする方法を説明しました。
VSCodeとGCPを使ってリモート開発マシン作ってみた

ここまでは良かったのですがPort22のままだと僕だけではなく、不正アクセスの人にとっても簡単にアクセスを試せる環境になってしまうと言うことで今回はsshアクセスできるPortを変更していきたいと思います。

今回やること

SELinuxを無効にせずちゃんとPort開ける。

  • /etc/ssh/sshd_configの設定を書き換える(CentOS側)
  • SELinuxの設定を書き換える(CentOS側)
  • ファイアウォール ルールを書き換える(GCP側)

注意

この作業はアクセスできるPortを変更します。
途中でsshの接続を切ってしまうと自分もアクセスできなくなる可能性があります。

設定が全て完了し、別のシェル(ターミナル)で接続確認を完了してから接続を切るようにしてください。

/etc/ssh/sshd_configの設定を書き換える(CentOS側)

ポート番号は0~65535の中から選べますので好きな数字にしてください。

# 設定ファイルのバックアップを行う
$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org

# ポート番号を変更する
$ sudo sed -i -e "s/#Port 22/Port [変更したいポート番号]/g" /etc/ssh/sshd_config

#Port 22の部分を書き換えるコマンドなので、すでに書き換えている場合はそれに置き換えて動作させてください。

SELinuxの設定を書き換える(CentOS側)

# semanageを使うためにsemanageを含むパッケージをインストール
$ sudo dnf install -y policycoreutils-python-utils

# ポート番号を変更
$ sudo semanage port --add --type ssh_port_t --proto tcp [変更したいポート番号]

# 変更できてるか確認
$ sudo semanage port --list | grep ssh
ssh_port_t                    tcp      49152, 22

# 再起動して設定を有効にする
$ sudo systemctl restart sshd

ファイアウォール ルールを書き換える(GCP側)

まずはGCP(Google Cloud Platform)のページを開きファイアウォールの設定画面に移動します。
メニュー>VPCネットワーク>ファイアウォールルール

次にファイアウォールルールを作成をクリックし下記設定を行います。

  • 名前:ssh-[変更したいポート番号] #などわかりやすいルール名
  • 優先度:1000 #数が小さい方が優先なので他の65534より小さい数字
  • トラフィック方向:上り
  • 一致したときのアクション:許可
  • ターゲット:ネットワーク上のすべてのインスタンス
      #プロジェクトごとでいつもやってるけどわかりにくいので一旦これ。
  • ソースフィルタ:IP範囲
  • ソースIPの範囲:0.0.0.0/0 #今回は接続元IPアドレスを固定できないので全開放
  • プロトコルとポート:指定したプロトコルとポート
    • tcpにチェック [変更したいポート番号]を設定

ルールの設定が完了すると他の設定と同じように一覧に表示されるので確認してください。

動作確認

下記でアクセスできるか試してみてください。
今までと違ってポート番号が必要になりますが、アクセスできると思います。
$ ssh [ユーザ名]@[外部IP] -i ~/.ssh/[sshkey名] -p [変更したいポート番号]

もし~/.ssh/configを設定していた場合はPort [変更したいポート番号]を追加することで今まで通りのコマンド・方法でアクセスが可能です。

Host [Host名]
  HostName [外部IP]
  User [ユーザ名]
  Port [変更したいポート番号]
  IdentityFile ~/.ssh/[sshkey名]
  IdentitiesOnly yes

おわりに

これでPort22で不正アクセス出来ちゃう環境から脱することができたと思います!
これからも少しずつセキュアな生活を満喫していきましょう\(^^)/

Twitterフォローもよろしくです!
- @noumi0k

この記事も合わせて読んでみてください。
VSCodeとGCPを使ってリモート開発マシン作ってみた