セキュリティ管理
Debianシステムのセキュリティを確保することは、システム管理における中心的な課題です。このガイドでは、システムを強化し、潜在的な脅威から守るためのいくつかの重要な分野を紹介します。
🔐 ユーザーとアクセス制御
システムへのアクセスを制限することは、セキュリティの第一の防衛線です。
強力なパスワードポリシーの強制
libpam-pwquality モジュールを使用すると、ユーザーがより安全なパスワードを作成することを強制できます。
モジュールをインストール:
bashsudo apt update sudo apt install libpam-pwqualityポリシーを設定:
/etc/security/pwquality.confファイルを編集してパスワードルールを定義します。ini# 設定例: minlen = 10 # 最小長は 10 dcredit = -1 # 少なくとも 1 つの数字を含む ucredit = -1 # 少なくとも 1 つの大文字を含む lcredit = -1 # 少なくとも 1 つの小文字を含む ocredit = -1 # 少なくとも 1 つの特殊文字を含む difok = 3 # 新しいパスワードには、古いパスワードと少なくとも 3 文字異なる文字が含まれている必要がある
SSH セキュリティ強化
サーバーへのリモートアクセスで最も一般的に使用される方法は SSH です。以下はいくつかの強化の推奨事項です:
SSH 設定ファイルを編集:
bashsudo nano /etc/ssh/sshd_config推奨設定:
- root ログインを無効化:
PermitRootLogin no - パスワード認証を無効化 (キー認証を推奨):
PasswordAuthentication no - 公開鍵認証を有効化:
PubkeyAuthentication yes - デフォルトポートを変更 (オプション):
Port 2222
- root ログインを無効化:
SSH サービスを再起動:
bashsudo systemctl restart sshd
🔥 ファイアウォール設定 (UFW)
Debian はデフォルトでファイアウォールを有効にしていません。UFW (Uncomplicated Firewall) はユーザーフレンドリーなフロントエンドツールです。Debian 13 では、UFW は内部で nftables フレームワークを使用しています(従来の iptables 構文と互換性があります)。
UFW をインストール:
bashsudo apt install ufw基本ルールを設定:
bashsudo ufw default deny incoming # すべての着信接続を拒否 sudo ufw default allow outgoing # すべての発信接続を許可 sudo ufw allow ssh # SSH 接続を許可 (または変更したポート) sudo ufw allow http # Web サーバーの場合は HTTP を許可 sudo ufw allow https # HTTPS を許可UFW を有効化:
bashsudo ufw enableシステムは、これが既存の SSH 接続を切断する可能性があることを警告します。確認してください。
ステータスを確認:
bashsudo ufw status verbose
🔄 自動セキュリティ更新
セキュリティパッチをタイムリーに適用することは非常に重要です。unattended-upgrades はセキュリティ更新を自動的にインストールできます。
インストール:
bashsudo apt install unattended-upgrades有効化: 設定ウィザードを実行すると、基本的な設定ファイルが作成されます。
bashsudo dpkg-reconfigure -plow unattended-upgrades表示されるダイアログで「はい」を選択します。
設定を微調整 (オプション):
/etc/apt/apt.conf.d/50unattended-upgradesファイルを編集して、自動再起動の有効化など、更新動作をカスタマイズできます。
🛡️ 侵入防止 (Fail2Ban)
Fail2Ban はログファイルを監視し、疑わしい行動(例えば、複数回のログイン失敗)に基づいてファイアウォールルールを自動的に更新し、IPアドレスをブロックします。
Fail2Ban をインストール:
bashsudo apt install fail2banローカル設定ファイルを作成:
.confファイルを直接変更するのではなく、.localファイルを作成して上書きします。bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.localSSH 保護を設定:
jail.localで[sshd]セクションを見つけ、enabled = trueであることを確認します。maxretry(最大試行回数) やbantime(ブロック時間) を調整できます。ini[sshd] enabled = true port = ssh maxretry = 3 bantime = 3600 # 1時間ブロックサービスを再起動:
bashsudo systemctl restart fail2ban
📝 ログ管理と監査
システムログを定期的に確認することは、異常な活動を発見するための鍵です。
journalctlを使用してログを表示:bash# すべてのログを表示 (古いものから新しいものへ) journalctl # ログをリアルタイムで監視 journalctl -f # 特定のサービスのログを表示、例えば sshd journalctl -u sshd.service # カーネルログを表示 journalctl -k