Conoha VPSでサーバー作成した際のメモ。
PCはMac、サーバーOSはRocky Linux(CentOS系)です。
Todo
- SSHで接続
- ユーザー作成
- ポート変更
- rootユーザー&パスワード認証を不可にする(ポート変更でついでにやる)
- 自動OSセキュリティアップデート設定
SSHキーで接続
cohoha vpsでサーバーを作成した場合、作成する際にSSHキーを作れるので、作っときます。
あとセキュリティーグループがdefaultのままだと接続できないので、SSHで接続できるグループを選択しとく。

SSHキー作成の際にダウンロードしたプライベートキーの権限を変更。
chmod 600 (ダウンロードしたpemファイル)
ssh -i ~/.ssh/(pemファイル) root@(VPSのIPアドレス)
これで繋がるようになる。
「初めて接続する場合は公開鍵を信用して良いのか」という警告が出るが、サーバー立てたばかりなのでyesを入力して問題なし。
以前に接続したことがあるのに出たら、MITM攻撃の可能性あり。
ユーザー作成
# 新しいユーザー作成(yourname を好きな名前に)
adduser yourname
passwd yourname
# sudo権限付与
usermod -aG sudo yourname
# 作成したユーザーで鍵認証できるように設定
mkdir -p /home/yourname/.ssh
cp /root/.ssh/authorized_keys /home/yourname/.ssh/
chown -R yourname:yourname /home/yourname/.ssh
chmod 700 /home/yourname/.ssh
chmod 600 /home/yourname/.ssh/authorized_keys
ポート変更
これが意外と大変だったので、最初はubuntuでやってたけどCentOSベースのRocky Linuxに変えた。(Ubuntuはやや特殊で結局解決できなかったから・・)
設定を変えるのは以下の3つ。
- セキュリティグループ
- sshd_config
- 01-permitrootlogin.conf
- ファイアウォール
セキュリティグループ
自分でSSH用のセキュリティグループをConohaのコンソールから作成する。
ポート番号は49152 ~ 65535の範囲で選ぶのが無難みたい。

作成したセキュリティグループをサーバーに適用するのも忘れずに!

sshd_config
以下のように追加。ポートはセキュリティーグループで追加したものを入れてください。
rootユーザー&パスワード認証を不可にする設定もついでに入れる。
Port (セキュリティーグループで追加したポート番号)
PermitRootLogin no
PasswordAuthentication no
sshdをリスタートして適用。
systemctl restart sshd
01-permitrootlogin.conf
sshd_config.dフォルダ以下の設定がsshd_configより優先されるようなので、以下のファイルもnoに変更。
PermitRootLogin no
ファイアウォール
ファイアウォールが起動されていれば、firewall-cmd --list-allコマンドで、空いているポートを確認可能。
コマンド実行後、セキュリティーグループで追加したポート番号が追加され、sshが削除されていればOK。
firewall-cmd --list-all
firewall-cmd --add-port=(セキュリティーグループで追加したポート番号)/tcp --zone=public --permanent
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
firewall-cmd --list-all
ここまでできたら疎通確認してみる。
注意点:ロックアウトしないように、rootでログインした状態のまま、別のターミナルを開いて疎通確認すること。
新しく設定したポート&作成したユーザーでのログインができたら、ConohaでデフォルトのSSHセキュリティグループ(22番)を外しておく。
Fail2banの設定
Fail2banは不正アクセスからサーバを守るツールです。
sshはセキュリティグループで接続元IPアドレスを指定すれば良いので、今回はhttp,httpsで不正アクセスしようとしているIPアドレスをブロックします。
# Fail2banのインストール
sudo dnf install -y fail2ban
# 設定ファイルを作成
sudo vi /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[nginx-404]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 60
bantime = 86400
# Fail2banを起動
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
自動OSセキュリティアップデート設定
これは大事といえば大事なんだけど、手動で定期的にやっても良いし、本番環境で全自動はリスクなので、お好みで。
自分はセキュリティのみ自動アップデートにしといた。
sudo dnf install -y dnf-automatic
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak
以下はGithub Copilotに聞いたものをそのまま参考にした。
メールの設定もやった方が良いと思うけど、サービスリリースした後でもいいかっと思い後回しにした。
[commands]
# セキュリティ更新のみ
upgrade_type = security
# ダウンロードして自動適用する
download_updates = yes
apply_updates = yes
# 起動時間帯の集中を避ける(秒)
random_sleep = 120
[emitters]
# 標準出力(systemd journal に記録される)に出すのが手軽
emit_via = stdio
# もしメール通知を使うなら email を設定する(MTA が必要)
# emit_via = email
# email_from = root@yourhost
# email_to = you@example.com
dnf-automatic関連のログが出てれば大丈夫。
すぐに実行してログ確認もできるけど、なんかフリーズしたので、翌日に確認したら、ちゃんとログ出てた。
sudo systemctl enable --now dnf-automatic.timer
sudo systemctl status dnf-automatic.timer
# 以下は明日以降に実行した
sudo journalctl -u dnf-automatic.service -n 200 --no-pager
終わりに
ほぼ一日使った・・
一応これで、VPSを作成した直後の最低限のセキュリティは大丈夫だと思う。使わない時は停止しとけばいいし。
VPSを使ってWEBサービスを公開したい人の参考になれば幸いです。(自分のメモのために書いただけなんだけどね)
参考
Github Copilot
https://aulta.co.jp/technical/server-build/rocky-linux94-sakura-vps/setup/dnf-auto-update
https://aulta.co.jp/technical/server-build/rocky-linux94-sakura-vps/setup/ssh-port-22#i-10
https://qiita.com/free-coder/items/0c4b3b447ef279941568