# Ubuntu サーバー初期設定手順

Ubuntu サーバーを新規インストールした後の基本的な初期設定手順を解説します。セキュリティを重視した設定を中心に、実用的な設定方法をまとめています。

# 初期設定の目的

新規インストール直後の Ubuntu サーバーは、デフォルト設定のままではセキュリティリスクが高い状態です。以下の設定を行うことで、安全で運用しやすいサーバー環境を構築できます。

  • ユーザー作成と権限設定
  • SSH 設定の強化
  • ファイアウォール設定
  • パッケージの更新
  • タイムゾーン設定
  • 基本的なセキュリティ設定

# 1. パッケージの更新

まず、システムのパッケージを最新の状態に更新します。

# パッケージリストの更新
sudo apt update

# インストール済みパッケージのアップグレード
sudo apt upgrade -y

# 不要なパッケージの削除
sudo apt autoremove -y

定期的な更新

セキュリティパッチを含む重要な更新があるため、定期的に apt update && apt upgrade を実行することを推奨します。

# 2. タイムゾーンの設定

サーバーのタイムゾーンを日本時間(JST)に設定します。

# タイムゾーン設定の対話形式
sudo dpkg-reconfigure tzdata

# または、コマンドで直接設定
sudo timedatectl set-timezone Asia/Tokyo

# 現在のタイムゾーン確認
timedatectl

# 3. ユーザーの作成と権限設定

root ユーザーでの直接ログインを避け、専用のユーザーを作成します。

# 新しいユーザーの作成
sudo adduser username

# 作成したユーザーに管理者権限(sudo)を付与
sudo usermod -aG sudo username

# ユーザーの確認
id username

root ユーザーについて

root ユーザーでの直接ログインはセキュリティリスクが高いため、通常の運用では専用ユーザーを作成して sudo 権限を付与する方法を推奨します。

# 4. SSH 設定の強化

SSH のセキュリティを強化するため、設定ファイルを編集します。

# SSH 設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

# SSH 設定ファイルの編集
sudo vi /etc/ssh/sshd_config

# 推奨される SSH 設定

# ポート番号の変更(デフォルト22から変更)
Port 2222

# root ログインの無効化
PermitRootLogin no

# パスワード認証の無効化(公開鍵認証のみ)
PasswordAuthentication no
PubkeyAuthentication yes

# 空のパスワードでのログインを禁止
PermitEmptyPasswords no

# 最大認証試行回数の制限
MaxAuthTries 3

# 接続タイムアウトの設定(秒)
ClientAliveInterval 300
ClientAliveCountMax 2

設定変更後、SSH サービスを再起動します。

# 設定ファイルの構文チェック
sudo sshd -t

# SSH サービスの再起動
sudo systemctl restart sshd

# SSH サービスの状態確認
sudo systemctl status sshd

SSH 設定変更時の注意

SSH 設定を変更する際は、別のターミナルセッションを開いておくか、設定ミスで接続できなくなる可能性があるため、慎重に行ってください。

# 5. SSH 公開鍵認証の設定

パスワード認証よりも安全な公開鍵認証を設定します。

# クライアント側での鍵ペア生成

# クライアント側で鍵ペアを生成
ssh-keygen -t ed25519 -C "your_email@example.com"

# または RSA 鍵を使用する場合
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# サーバー側での公開鍵の登録

# サーバー側で .ssh ディレクトリを作成
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 公開鍵を authorized_keys に追加
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

# 権限の設定
chmod 600 ~/.ssh/authorized_keys

# クライアント側から公開鍵をコピーする方法

# ssh-copy-id コマンドを使用(推奨)
ssh-copy-id -p 2222 username@server_ip

# または手動でコピー
cat ~/.ssh/id_rsa.pub | ssh -p 2222 username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# 6. ファイアウォール(UFW)の設定

Ubuntu の標準ファイアウォール UFW(Uncomplicated Firewall)を設定します。

# UFW の状態確認
sudo ufw status

# UFW の有効化
sudo ufw enable

# SSH ポートの許可(設定変更前に必ず実行)
sudo ufw allow 2222/tcp

# HTTP と HTTPS の許可
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 特定の IP アドレスからのみ SSH を許可する場合
sudo ufw allow from 192.168.1.100 to any port 2222

# ファイアウォールルールの確認
sudo ufw status verbose

# ファイアウォールの無効化(必要な場合)
sudo ufw disable

ファイアウォール設定の順序

SSH ポートを許可してから UFW を有効化しないと、SSH 接続ができなくなる可能性があるため、順序に注意してください。

# 7. Fail2ban のインストールと設定

Fail2ban は、不正なログイン試行を検出して自動的に IP アドレスをブロックするツールです。

# Fail2ban のインストール
sudo apt install fail2ban -y

# Fail2ban サービスの起動と有効化
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 状態確認
sudo systemctl status fail2ban

# Fail2ban の設定

# 設定ファイルのコピー
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# 設定ファイルの編集
sudo vi /etc/fail2ban/jail.local

主要な設定項目:

[DEFAULT]
# 禁止時間(秒)
bantime = 3600

# 検出期間(秒)
findtime = 600

# 最大試行回数
maxretry = 5

[sshd]
enabled = true
port = 2222

設定変更後、Fail2ban を再起動します。

sudo systemctl restart fail2ban

# 禁止されている IP アドレスの確認
sudo fail2ban-client status sshd

# 8. 自動セキュリティ更新の設定

重要なセキュリティ更新を自動的にインストールするように設定します。

# unattended-upgrades のインストール
sudo apt install unattended-upgrades -y

# 設定ファイルの編集
sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

設定例:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
};

Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

自動更新を有効化:

# 自動更新の有効化
sudo dpkg-reconfigure -plow unattended-upgrades

# 設定の確認
sudo unattended-upgrades --dry-run --debug

# 9. システム監視ツールのインストール

サーバーの状態を監視するための基本的なツールをインストールします。

# htop(プロセス監視)
sudo apt install htop -y

# netstat(ネットワーク接続確認)
sudo apt install net-tools -y

# iotop(ディスク I/O 監視)
sudo apt install iotop -y

# ncdu(ディスク使用量確認)
sudo apt install ncdu -y

# 10. ログローテーションの確認

ログファイルがディスク容量を圧迫しないよう、ログローテーション設定を確認します。

# ログローテーション設定の確認
sudo vi /etc/logrotate.conf

# 特定のログのローテーション設定
sudo vi /etc/logrotate.d/application

# 設定確認チェックリスト

初期設定が完了したら、以下の項目を確認してください。

  • [ ] パッケージが最新の状態になっている
  • [ ] タイムゾーンが正しく設定されている
  • [ ] 専用ユーザーが作成され、sudo 権限が付与されている
  • [ ] SSH 設定が強化され、root ログインが無効化されている
  • [ ] 公開鍵認証が正常に動作している
  • [ ] ファイアウォールが有効化され、必要なポートのみが開放されている
  • [ ] Fail2ban がインストールされ、動作している
  • [ ] 自動セキュリティ更新が設定されている

# トラブルシューティング

# SSH 接続できない場合

  1. ファイアウォールで SSH ポートが許可されているか確認
  2. SSH サービスが起動しているか確認:sudo systemctl status sshd
  3. SSH 設定ファイルの構文エラーを確認:sudo sshd -t
  4. ログを確認:sudo tail -f /var/log/auth.log

# ファイアウォールで接続がブロックされる場合

# UFW のログを確認
sudo tail -f /var/log/ufw.log

# 特定のポートが開いているか確認
sudo ufw status | grep ポート番号

# 実装時の注意点

Ubuntu サーバーの初期設定は、セキュリティを最優先に考えることが重要。この記事で紹介した設定を行うことで、基本的なセキュリティ対策が完了する。ただし、セキュリティは継続的なプロセスであるため、定期的な更新と監視を忘れずに行う。

# 参考リンク

2025-12-29

同じタグを持つ記事をピックアップしました。