CentOS Stream 9インストール後にすぐやるべき10のこと:本番環境での「サバイバル」チェックリスト

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

CentOS Stream 9のインストールが完了しました。次はどうしますか?

黒い画面にコマンドプロンプトが表示されています。OSのインストールは道のりの10%に過ぎません。そのままアプリケーションを動かしてしまうと、遅かれ早かれセキュリティ侵害に遭うか、動作が非常に重くなってしまいます。信じてください。デフォルトの22番ポートを15分間開放しているだけで、システムログはボットネットからの総当たり攻撃(ブルートフォース攻撃)で埋め尽くされます。

私たちのチームは、CentOS 7からCentOS Stream 9への移行時に、混乱の対応で徹夜をしたことがあります。その血の滲むような教訓をこのチェックリストにまとめました。これにより、ただインストールしただけの状態から、真の本番環境に耐えうる「要塞」へと変貌させることができます。

どちらの道を選びますか:最小限か、それとも完全か?

システム管理者は通常、次の2つの派閥に分かれます:

  • 最小限派 (Minimalist): 必要なものだけをインストールします。メリットは軽量で攻撃対象領域(アタックサーフェス)が狭いこと. デメリットは?サーバーがダウンした際、デバッグツールの不足に困ることです。
  • 完全派 (Full-stack): セキュリティからカーネルの最適化まで、徹底的に設定します。これが、私が毎晩安心して眠るために選んでいる方法です。

ニーズとリスクのバランス

デフォルトの状態では、CentOS Stream 9は非常に「クリーン」です。EPELのような重要なリポジトリが不足しているため、使い慣れたツールのインストールで行き詰まることがあります。しかし、不要なものを詰め込みすぎるとサーバーが重くなります。最も合理的な戦略は、次の3つの柱に集中することです:パッケージ管理 – セキュリティ – パフォーマンス

詳細なチェックリストの実行

1. システムの更新とホスト名の設定

この手順を飛ばしてはいけません。セキュリティパッチは、ISOファイルが作成された直後からリリースされます。すぐにすべてを最新バージョンに更新しましょう。

# システム全体を更新
sudo dnf update -y

# サーバーに明確な名前を設定(例:srv-web-prod-01)
sudo hostnamectl set-hostname srv-web-prod-01

2. EPELとCRBリポジトリの有効化

htopやngit、あるいは補助ライブラリをEPELなしでインストールしようとするのは、まさに苦行です。CentOS 9では、すべてをスムーズに進めるためにCRB (CodeReady Builder) リポジトリも有効にする必要があります。

sudo dnf install epel-release epel-next-release -y
sudo dnf config-manager --set-enabled crb
sudo dnf update -y

3. 管理用ユーザーの作成(Rootは絶対に使わない)

rootで直接ログインするのは、家の玄関にマスターキーを置きっぱなしにするようなものです。専用のユーザーを作成し、sudo権限を付与しましょう。

# 新規ユーザーの作成
useradd itfromzero
passwd itfromzero

# wheelグループを通じてsudo権限を付与
usermod -aG wheel itfromzero

4. SSHのセキュリティ強化

パスワード認証はもう時代遅れです。SSHキー(公開鍵認証)に切り替えましょう。デフォルトの22番ポートをランダムなポート(例:2222)に変更するだけで、自動スキャンツールによる不要なログの90%を削減できます。

/etc/ssh/sshd_config ファイルを開き、以下の行を編集します:

  • PasswordAuthentication no: パスワード認証を禁止。
  • PermitRootLogin no: リモートからのrootログインを禁止。
  • Port 2222: 接続ポートを変更。
sudo systemctl restart sshd

5. タイムゾーンの設定(日本標準時に同期)

システムログの時刻が間違っていると、トラブルシューティングが悲惨なことになります。タイムゾーンをJST(GMT+9)に設定しましょう。

sudo timedatectl set-timezone Asia/Tokyo

# 設定を確認
timedatectl status

6. SWAPによるメモリ不足の解消

1GBや2GBのメモリしかないVPSを借りている場合、MySQL 8PHP-FPMなどのプロセスは、簡単にOOM (Out Of Memory) に陥り停止してしまいます。2GBのSwapファイルを作成することは、トラフィックが急増したときにサーバーを維持するための最も安価な方法です。

# 2GBのSwapファイルを作成
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 再起動時に自動有効化
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

7. Tunedによるパフォーマンス最適化

CentOS 9には「秘密兵器」である tuned があります。このツールは、特定の用途に合わせてカーネルパラメータを自動的に調整します。

sudo dnf install tuned -y
sudo systemctl enable --now tuned

# WebやDBを運用する場合は、throughput-performanceプロファイルを使用
sudo tuned-adm profile throughput-performance

8. ファイアウォールは絶対に無効にしない

systemctl stop firewalld (致命的なミスです) を行う代わりに、正しくポートを開放する方法を学びましょう。これが素人と本物のシステムエンジニアの境界線です。

# 新しいSSHポートと基本的なWebサービスを開放
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

9. 監視ツールのセットアップ

トラブルが発生した際、何がリソースを消費しているかを確認するツールが必要です。私はすべてのサーバーに、これらの基本的なツールセットをあらかじめインストールしています。

sudo dnf install htop nmap-ncat bmon vim traceroute -y

特に、Cockpitを忘れないでください。これは標準搭載されている非常に強力なWeb管理インターフェースで、コマンドを入力することなくリソースのグラフを監視できます。

sudo systemctl enable --now cockpit.socket

10. パッチの自動更新設定

毎日サーバーをチェックする余裕はないでしょう。あなたが眠っている間に、dnf-automatic に重要なセキュリティアップデートをダウンロードとインストールを自動で行わせましょう。

sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

実戦経験からのまとめ

これらのステップは一見単純に見えますが、非常に強固な基盤となります。私がよく目にする最大のミスは、初心者がSSHのセキュリティやSwapの設定を忘れて、いきなりDockerやNginxのインストールに飛びつくことです。その結果はどうなるでしょうか?わずか1週間後、サーバーがマイニング用のマルウェアに感染したり、ログの時刻が狂っていてデバッグが悪夢になったりするのです。

このチェックリストが、皆さんの試行錯誤の時間を数時間節約するのに役立てば幸いです。もっと良いヒントがあれば、ぜひ共有してください!

Share: