はじめに
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