rootを禁止してSSHも22番以外のポートに変更する方法
/ 4 min read
Table of Contents
はじめに
Ubuntuでrootを禁止してSSHも22番以外のポートに変更する方法のまとめです。
方法
実行環境
VPS: Ubuntu22.04LTS
ローカル端末: Windows10 + TeraTerm + WinSCP
rootユーザーの禁止設定
TeraTermでの操作
# とりあえずこれ$ sudo apt update$ sudo apt upgrade
# 新規一般ユーザー作成。-Gでsudoグループに所属させる# hogeがユーザー名(以下同様)$ useradd -G sudo hoge
# パスワードを設定$ passwd hoge
# 一般ユーザーのホームディレクトリを設定$ mkdir /home/hoge$ chown hoge:hoge /home/hoge
# 一般ユーザーに切替$ su - hoge
# 公開鍵用のディレクトリを作成して権限設定$ mkdir /home/hoge/.ssh$ chmod 700 /home/hoge/.ssh
TeraTermで鍵生成
- 設定 > SSH 鍵生成
- 鍵の種類: RSA で生成ボタンを押す
- 鍵のパスフレーズを入力
- 公開鍵の保存ボタンを押す
- 秘密鍵の保存ボタンを押す
WinSCPで鍵転送
作成された id_rsa.pub を /home/hoge/.ssh フォルダに転送
再びTeraTermでの操作
# 所有者情報の設定(rootユーザーで)$ chown hoge:hoge /home/hoge/.ssh/id_rsa.pub
# ファイル名の変更$ mv /home/hoge/.ssh/id_rsa.pub /home/hoge/.ssh/authorized_keys
# sshdファイルのバックアップ$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.old
# sshdファイルの編集$ sudo vim /etc/ssh/sshd_config# -> Rootログインとプレーンパスワードでのログインを禁止# -> PermitRootLogin no# -> PasswordAuthentication no# -> PubkeyAuthentication yes
# SSHサーバー再起動$ sudo systemctl restart sshd.service
SSHのポート番号を変更
Xserver の VPS パネルでは、SSH のポートは 22 番で固定されているため、ufw 側で制御する。
そのため、まず VPS パネルで接続許可ポートの設定を『全て許可』にしておく。
TeraTermでの操作
# 状態確認$ sudo ufw status# -> おそらく非アクティブ
# 有効化$ sudo ufw enable# -> disrupt existing ssh connections. Proceed with operation (y|n)? y
# IPv6は無効化$ sudo vim /etc/default/ufw# -> IPV6=no
# deny(ホワイトリスト)形式にするため、いったん全拒否設定$ sudo ufw default deny
# ポートの追加$ sudo ufw allow 22 # 現状維持$ sudo ufw allow 1111 # 変更予定のポート
# ufwのリロード$ sudo ufw reload
# 設定の確認$ sudo ufw status numbered
# さらに特定のIPアドレスに絞る場合$ sudo ufw allow from xxx.xxx.xxx.xxx to any port 1111
# sshdファイルでのポート変更$ sudo vim /etc/ssh/sshd_config# -> Port 1111
# SSHサーバー再起動$ sudo systemctl restart sshd.service
# 変更後のポートでアクセスできることを確認後、# 22番ポートを閉じる
# 設定の確認$ sudo ufw status numbered
# 22のナンバーを削除$ sudo ufw delete 1 # [1]の場合
# 削除の確認$ sudo ufw status numbered
備考
途中で SSH 接続できなくなった場合、VPS パネル経由で接続し、sshd_config を元に戻せば OK
# sshd_config.oldの確認$ ls -lah
# sshd_config の削除$ sudo rm -rf sshd_config
# バックアップファイルからの戻し$ sudo cp -R sshd_config.old sshd_config
# SSHサーバー再起動$ sudo systemctl restart sshd.service
参考
VPS の root ユーザーログインを禁止しよう!超強力な権限を持たせたまま放置は絶対 NG f13: xserver vps + ubuntu + ssh + python