Rocky Linux 9 は RHEL 互換の無料の選択肢です。同じパッケージ、同じ dnf、同じ firewalld と SELinux。Debian や Ubuntu をセットアップしたことがあれば、手順の順番は同じで、違うのはツールだけです。ここでは新しい Rocky 9 サーバーでの最初の 10 分を紹介します。
以下のコマンドはすべて、公開前に当社の Rocky Linux 9 イメージで実行しました。クリーンなサーバーなら、一連の作業は数分で終わります。
1. システムを更新する
ダッシュボードのパスワードで root としてログインし、更新します。
dnf -y upgrade
当社のイメージではテスト時に数秒で終わりました。イメージがすでに最新だったためです。
2. sudo ユーザーを作成して SSH 鍵を追加する
Rocky では管理者グループは sudo ではなく wheel です。
useradd -m -G wheel deploy
passwd deploy # sudo will ask for this password
公開鍵をサーバーに置きます(鍵の作り方)。/root/key.pub にコピーした場合:
install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
install -m 600 -o deploy -g deploy /root/key.pub /home/deploy/.ssh/authorized_keys
restorecon -R /home/deploy/.ssh
restorecon は sshd が期待する SELinux ラベルを付けます。ラベルが違うと、分かりやすいエラーもなく鍵でのログインが失敗します。
2 つ目のターミナルを開き、ssh deploy@YOUR.SERVER.IP が使えること、sudo -v がパスワードを受け付けることを確認してください。それまでは root のセッションを開いたままにします。
3. root ログインとパスワードログインを無効にする
ここが教科書どおりの sshd_config 編集と違う点です。設定は /etc/ssh/sshd_config.d/ 配下の個別ファイルにあり、sshd は最初に見つけた値を使います。当社のイメージでは最初のファイルが 00-eqvps.conf で、初日にログインできるよう root とパスワードを許可しています。そこを変更します。
sed -i -e 's/^PermitRootLogin .*/PermitRootLogin no/' \
-e 's/^PasswordAuthentication .*/PasswordAuthentication no/' \
/etc/ssh/sshd_config.d/00-eqvps.conf
sshd -t && systemctl reload sshd
sshd -T | grep -E '^(permitrootlogin|passwordauthentication) '
最後のコマンドは、sshd が実際に適用する値を表示します。次のように表示されれば正解です。
permitrootlogin no
passwordauthentication no
これで ssh root@… は鍵があっても拒否され、deploy は鍵でのみログインできます。
4. ファイアウォール:firewalld
クラウドイメージには firewalld が入っていません。インストールして起動し、必要なものだけを開けます。
dnf -y install firewalld
systemctl enable --now firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --remove-service=cockpit
firewall-cmd --reload
firewall-cmd --list-services
既定のゾーンは cockpit(ポート 9090)と dhcpv6-client を開けています。Cockpit はインストールされていませんが、そのポートを開けておく理由はありません。アプリを追加したら、同じ方法でポートを開けます。例:firewall-cmd --permanent --add-service=https。
5. セキュリティ更新の自動化
dnf-automatic はタイマーで更新をダウンロードします。既定ではインストールしないので、有効にします。
dnf -y install dnf-automatic
sed -i 's/^apply_updates = .*/apply_updates = yes/' /etc/dnf/automatic.conf
systemctl enable --now dnf-automatic.timer
systemctl list-timers dnf-automatic.timer
セキュリティ修正だけにしたい場合は、同じファイルで upgrade_type = security も設定します。
6. SELinux は有効のままに
新しいサーバーで getenforce は Enforcing を返し、上記の手順はすべてその状態で動きます。アプリが標準外のポートやディレクトリを必要とするときの対処はラベル付け(semanage port、restorecon)であり、setenforce 0 ではありません。
どのプランを選ぶか
Rocky 9 はアイドル時に約 400 MB の RAM を使います。Nano(1 GB、月 $3)なら小さなサービス 1 つに十分で、Micro(2 GB、月 $5)ならデータベースを置く余裕があります。NAT プランでは、SSH はダッシュボードに表示される専用ポートから入ります。ポート 80/443 を誰にでも開けたい場合は、Micro-IP(月 $10)のような専用 IPv4 付きプランを選んでください。
Rocky Linux 9 は RHEL 系 OS のページにあるイメージの一つで、VPS のすべてのプランで選べます。支払いは Base、Ethereum、Polygon 上の USDT、USDC、ETH で、本人確認書類もカードも不要です。スクリプトでサーバーを操作したい場合は、API ドキュメントに注文、再インストール、更新の方法があります。
コメント
まだコメントはありません。最初になりましょう。