サーバーハードニング - サーバーハードニング
サーバーの攻撃対象領域を最小化するセキュリティ強化プロセス。不要なサービスの無効化、パッチ管理、アクセス制御の適切な設定を含む。
概念図
実例
不要なサービスを無効化
bash
sudo systemctl disable bluetooth
sudo systemctl disable cupsSSH のルートログインを禁止
bash
sudo chmod 600 /etc/ssh/sshd_config
sudo sed -i "s/#PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_configハードニングの主要な対策
サーバーハードニングは攻撃対象領域(Attack Surface)を最小化することが目的です。
- 不要なサービスの無効化: インストール時にデフォルトで有効になっているサービスを精査し、不要なものを停止・無効化する
- パッチ管理: OS やミドルウェアのセキュリティパッチを迅速に適用する。自動更新の設定を検討する
- ユーザー管理: 不要なアカウントを削除し、root の直接ログインを禁止する。sudo を適切に設定する
- ファイルシステムの保護: 重要なファイルのパーミッションを制限し、SUID/SGID ビットが不要なファイルから除去する
- カーネルパラメータの調整: sysctl で IP フォワーディングの無効化やSYN Cookie の有効化など
ハードニングチェックリスト
- SSH: パスワード認証を無効にし、鍵認証のみ許可する。ポート番号を変更する
- ファイアウォール: デフォルト拒否ポリシーを設定し、必要なポートのみ開放する
- SELinux / AppArmor: 強制アクセス制御(MAC)を有効にする
- 自動セキュリティ更新:
unattended-upgrades(Debian/Ubuntu)等を設定する - CIS Benchmark: Center for Internet Security のベンチマークに沿って設定を検証する
- 監査ログ: auditd を設定し、重要なファイルやコマンドの実行を記録する
