# 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 接続できない場合
- ファイアウォールで SSH ポートが許可されているか確認
- SSH サービスが起動しているか確認:
sudo systemctl status sshd - SSH 設定ファイルの構文エラーを確認:
sudo sshd -t - ログを確認:
sudo tail -f /var/log/auth.log
# ファイアウォールで接続がブロックされる場合
# UFW のログを確認
sudo tail -f /var/log/ufw.log
# 特定のポートが開いているか確認
sudo ufw status | grep ポート番号
# 実装時の注意点
Ubuntu サーバーの初期設定は、セキュリティを最優先に考えることが重要。この記事で紹介した設定を行うことで、基本的なセキュリティ対策が完了する。ただし、セキュリティは継続的なプロセスであるため、定期的な更新と監視を忘れずに行う。