Linuxサーバーの初期設定——SSH鍵認証からfirewalld設定まで
はじめに
クラウドやVPSでLinuxサーバーを立ち上げた直後は、セキュリティ的にほぼ無防備な状態です。rootのパスワードログインが有効だったり、すべてのポートが開放されていたりすることも珍しくありません。本記事ではUbuntu 22.04 LTSを前提に、最初にやるべき初期設定をまとめます。
1. 一般ユーザーの作成とsudo権限の付与
rootのまま作業するのはリスクが高いため、まず一般ユーザーを作成します。
| |
2. SSH鍵認証の設定
パスワード認証はブルートフォース攻撃の標的になるため、鍵認証に切り替えます。
クライアント側:鍵ペアの生成
| |
RSA-4096でも問題ありませんが、Ed25519はよりコンパクトで安全です。
サーバー側:公開鍵の配置
| |
sshd_config の変更
| |
以下の項目を変更します。
Port 2222 # デフォルトの22番から変更(任意)
PermitRootLogin no # rootログインを禁止
PasswordAuthentication no # パスワード認証を無効化
PubkeyAuthentication yes # 鍵認証を有効化
設定を反映します。
| |
注意: sshd を再起動する前に、必ず別ターミナルで鍵認証によるログインができることを確認してください。設定ミスで締め出されるとコンソール接続が必要になります。
3. ファイアウォールの設定(ufw)
Ubuntuには ufw(Uncomplicated Firewall)が標準で入っています。
| |
4. 自動アップデートの設定
脆弱性パッチを自動適用するために unattended-upgrades を有効化します。
| |
設定ファイルは /etc/apt/apt.conf.d/50unattended-upgrades で細かく制御できます。再起動が必要なアップデートの自動再起動などはここで設定します。
5. タイムゾーンとNTPの設定
ログのタイムスタンプがUTCのままだと調査時に混乱するため、JST に変更します。
| |
NTPはUbuntu 22.04では systemd-timesyncd がデフォルトで動いています。
| |
NTPSynchronized: yes になっていれば問題ありません。
まとめ
| 設定項目 | コマンド / ファイル |
|---|---|
| 一般ユーザー作成 | adduser + usermod -aG sudo |
| SSH鍵認証 | ~/.ssh/authorized_keys + sshd_config |
| rootログイン禁止 | PermitRootLogin no |
| ファイアウォール | ufw |
| 自動アップデート | unattended-upgrades |
| タイムゾーン | timedatectl set-timezone Asia/Tokyo |
これらを最初に済ませておけば、その後のサービスのインストールや設定に安心して進めます。特にSSH鍵認証とrootログイン禁止は必須で、後回しにするほどリスクが高まります。