Linuxサーバーセキュリティの基本:初心者が押さえるべき対策とベストプラクティス
Linuxサーバーのセキュリティ対策を初心者向けに解説。基本設定からファイアウォール、SSH強化、アップデート、ログ監視まで、実践的な手法を紹介。
*この記事は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
PermitRootLogin noPasswordAuthentication no(公開鍵認証のみ)PubkeyAuthentication yesAllowUsers 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ではufwやfirewalld、iptablesが一般的です。ここでは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. ログ監視と侵入検知
異常を早期発見するため、ログを監視します。logwatchやauditd、fail2banが役立ちます。
#### 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)を有効にすることで、プロセスの動作を制限できます。
getenforceで状態確認。setenforce 1で有効化。aa-statusで確認。aa-enforce /path/to/profileでプロファイルを有効化。7. 定期的なセキュリティスキャン
脆弱性をチェックするツールを活用します。
sudo apt install lynis
sudo lynis audit system
sudo apt install clamav
sudo freshclam
sudo clamscan -r /
8. バックアップと復旧計画
セキュリティインシデントに備え、定期的なバックアップを取得します。rsyncやtar、Duplicatiなどを使用します。
<h1>rsyncでリモートバックアップ</h1>
rsync -avz --delete /important/data/ user@backup-server:/backup/
バックアップは暗号化し、オフサイトに保存します。
まとめ
Linuxサーバーのセキュリティは、基本を徹底することで大きく向上します。本記事で紹介した対策を一つずつ実践し、定期的に見直すことが重要です。特にSSHの強化とファイアウォールの設定は即効性が高いので、最初に取り組みましょう。
参考: