まえがき
※初めに明記しておきますがあくまで自分用の備忘録兼投稿のテストです。
似たような記事やより高品質な記事は探せばごまんと出てくるので、詳細が知りたい方は別の記事をご参考ください。
この記事の目標
なるべく簡潔に、VPS契約後の初期設定における最低限の諸々を漏れなくまとめる
(筆者は頻繁に環境の構築作業をするのですがその度にやり方を忘れたり抜けたりして調べているので...)
WebArenaは若干ほかと仕様が異なるのでメモ
実行する環境
Kagoya VPS / WebArena Indigo
Ubuntu (22.04 LTS)
この記事の手順ではUbuntuのバージョンによる差異はありません。
開始
VPS側のファイアウォール設定
サービスによって設定方法は異なるが、とりあえず22番ポートと任意のssh用ポート以外はまず閉める
後でsshポートの変更が済んだら22番も閉める
IP制限もかけるとなお良い
パッケージ群のアップデート
# パッケージリストの更新
$ sudo apt update
# パッケージリストのアップデート
$ sudo apt upgrade -y
SSHポートの変更
コンフィグファイルをエディタで開く
$ sudo vim /etc/ssh/sshd_config
コメントアウト削除、ポートは任意(この記事では40022に設定)
変更前
#Port 22
変更後
Port 40022
sshdを再起動して設定を反映
$ sudo systemctl restart sshd
これが済んだら、変更したポートでssh接続し直す
OS側のファイアウォール設定
# 大体最初から入っているとは思うが、念のため
$ sudo apt install ufw
# デフォルト設定をアクセス拒否に変更
$ sudo ufw default deny
# sshポートの開放
$ sudo ufw allow 40022
# ufwの有効化
$ sudo ufw enable
ユーザの作成
主要なVPSでは初めはrootでログインしている(例外あり)と思うので、別の作業用のユーザを作成する
# 新規ユーザを作成(以下、YOURNAMEを任意のユーザ名に読み替えてください)
$ sudo adduser YOURNAME
# パスワードを2回入力、フルネームや部屋番号などは空欄でよい
# 作成したユーザをsudoグループに追加してsudo権限を付与
$ sudo gpasswd -a YOURNAME sudo
公開鍵の設定
VPSからダウンロードした秘密鍵はrootユーザの公開鍵とのペアなので、先ほど作成したユーザのログインでは使用できない
そのため今回は公開鍵をコピーして流用するが、これによりrootと一般ユーザが同一の鍵を持つことになるので一応注意
今回は後でrootログインを禁止する
# rootの公開鍵を新規ユーザにコピー
$ sudo cp -r .ssh/ /home/YOURNAME/
# コピーした鍵に新規ユーザがアクセスできるよう権限付与
$ sudo chown -R YOURNAME:YOURNAME /home/YOURNAME/.ssh/
ここまで終わったら、新規ユーザでssh接続し直す
例外:WebArena Indigoの場合
初期ユーザはrootではなくubuntuという名前のsudoユーザとなっている
そのため、上の手順の実行はrootではなくubuntuユーザで行う
また、鍵のコピー後ubuntuユーザは不要となるのでリスク低減のため削除
# ubuntuユーザから新規ユーザにログイン切り替え
$ su - YOURNAME
# ubuntuユーザで実行中のプロセスを確認
$ ps aux | grep ubuntu
# ↑で出力された中に、ubuntuユーザが実行中のプロセスがあれば停止
$ sudo kill <プロセスID>
# ubuntuユーザを消去
$ sudo userdel -r ubuntu
rootログインの禁止
コンフィグファイルをエディタで再度開く
$ sudo vim /etc/ssh/sshd_config
rootログインとパスワード認証を禁止
変更する箇所のコメントアウトは削除する
変更前
#PermitRootLogin prohibit-password
変更後
PermitRootLogin no
---------------------------
変更前
#PasswordAuthentication yes
変更後
PasswordAuthentication no
sshdを再起動して設定を反映
$ sudo systemctl restart sshd
ホスト名の変更
# HOSTNAMEを任意の名前に読み替え
$ sudo hostnamectl set-hostname HOSTNAME
ここまで出来たら、作業は一区切りついたので一度システムを再起動
$ sudo systemctl reboot
(WebArenaのみ)タイムゾーンの変更
デフォルトタイムゾーンがUTCなのでJSTに変更
# 日本時間(Asia/Tokyoゾーン)に変更
$ sudo timedatectl set-timezone Asia/Tokyo