Linuxサーバーセキュリティの基本:初心者が押さえるべき対策とベストプラクティス

Linuxサーバーのセキュリティ対策を初心者向けに解説。基本設定からファイアウォール、SSH強化、アップデート、ログ監視まで、実践的な手法を紹介。

Linuxサーバーセキュリティ基本初心者対策2026/5/25

*この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

Linuxサーバーセキュリティの基本:初心者が押さえるべき対策とベストプラクティス

Linuxサーバーを運用する際、セキュリティ対策は必須です。特に初心者の場合、基本的な設定を怠ると攻撃の標的になりやすくなります。本記事では、Linuxサーバーのセキュリティを強化するための具体的な方法を、実践的なコマンドとともに解説します。

1. 不要なサービスの無効化と最小権限の原則

サーバーにインストールされているサービスは、必要最小限に留めましょう。不要なサービスが動いていると、攻撃経路が増えます。

#### サービスの確認と停止

<h1>アクティブなサービス一覧を表示</h1>
systemctl list-units --type=service --state=running

<h1>不要なサービスを停止(例:cups)</h1> sudo systemctl stop cups sudo systemctl disable cups

#### 最小権限の原則 ユーザーアカウントには必要最小限の権限のみ付与します。root権限は極力避け、sudoで必要なコマンドのみ実行できるようにします。

<h1>一般ユーザーを作成</h1>
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser

<h1>sudo権限を付与</h1> sudo usermod -aG sudo newuser

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

SSHはリモート管理に欠かせませんが、デフォルト設定では脆弱です。以下の設定を施します。

#### 設定ファイルの編集(/etc/ssh/sshd_config)

sudo nano /etc/ssh/sshd_config

  • ポート番号の変更: 22番ポートは攻撃の標的になりやすいため、高番号のポートに変更
  • rootログインの禁止: PermitRootLogin no
  • パスワード認証の無効化: PasswordAuthentication no(公開鍵認証のみ)
  • 公開鍵認証の有効化: PubkeyAuthentication yes
  • 許可するユーザーの制限: AllowUsers yourusername
  • 変更後、SSHサービスを再起動します。

    sudo systemctl restart sshd
    

    #### 公開鍵の設定

    <h1>クライアントで鍵ペア生成</h1>
    ssh-keygen -t rsa -b 4096

    <h1>公開鍵をサーバーにコピー</h1> ssh-copy-id -i ~/.ssh/id_rsa.pub yourusername@server_ip

    3. ファイアウォールの設定

    ファイアウォールで必要なポートだけ開けます。Linuxではufwfirewalldiptablesが一般的です。ここではufwを例に説明します。

    <h1>ufwのインストール(Debian/Ubuntu系)</h1>
    sudo apt update && sudo apt install ufw
    

    <h1>デフォルトポリシー: 入力拒否、出力許可</h1> sudo ufw default deny incoming sudo ufw default allow outgoing

    <h1>SSHポートを許可(変更したポート番号に合わせる)</h1> sudo ufw allow 2222/tcp

    <h1>HTTP/HTTPS(Webサーバー用)</h1> sudo ufw allow 80/tcp sudo ufw allow 443/tcp

    <h1>ファイアウォール有効化</h1> sudo ufw enable

    <h1>状態確認</h1> sudo ufw status verbose

    4. 自動アップデートの設定

    セキュリティパッチを迅速に適用するため、自動更新を設定します。

    #### Debian/Ubuntu系

    sudo apt install unattended-upgrades
    sudo dpkg-reconfigure --priority=low unattended-upgrades
    

    #### RHEL/CentOS系

    sudo yum install yum-cron
    sudo systemctl enable yum-cron
    sudo systemctl start yum-cron
    

    5. ログ監視と侵入検知

    異常を早期発見するため、ログを監視します。logwatchauditdfail2banが役立ちます。

    #### fail2banの導入

    sudo apt install fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    

    設定ファイル(/etc/fail2ban/jail.local)で、SSHのブルートフォース対策を有効にします。

    [sshd]
    enabled = true
    port = 2222
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 5
    bantime = 3600
    

    6. SELinuxまたはAppArmorの活用

    強制アクセス制御(MAC)を有効にすることで、プロセスの動作を制限できます。

  • SELinux: RHEL系で標準。getenforceで状態確認。setenforce 1で有効化。
  • AppArmor: Debian/Ubuntu系で標準。aa-statusで確認。aa-enforce /path/to/profileでプロファイルを有効化。
  • 7. 定期的なセキュリティスキャン

    脆弱性をチェックするツールを活用します。

  • Lynis: システム全体のセキュリティ監査
  •   sudo apt install lynis
      sudo lynis audit system
      
  • ClamAV: ウイルススキャン
  •   sudo apt install clamav
      sudo freshclam
      sudo clamscan -r /
      

    8. バックアップと復旧計画

    セキュリティインシデントに備え、定期的なバックアップを取得します。rsynctarDuplicatiなどを使用します。

    <h1>rsyncでリモートバックアップ</h1>
    rsync -avz --delete /important/data/ user@backup-server:/backup/
    

    バックアップは暗号化し、オフサイトに保存します。

    まとめ

    Linuxサーバーのセキュリティは、基本を徹底することで大きく向上します。本記事で紹介した対策を一つずつ実践し、定期的に見直すことが重要です。特にSSHの強化とファイアウォールの設定は即効性が高いので、最初に取り組みましょう。

    参考:

  • Ubuntu Server Guide
  • Red Hat Enterprise Linux Security Guide