デフォルトのLinuxインストールは便利ですが、安全ではありません。Linuxサーバーハードニングとは、サーバーの攻撃対象領域を減らし、設定を厳格にして、インターネットからの避けられない探索が容易に悪用できるものを何も見つけられないようにするプロセスです。このガイドでは、2026年に最も重要となるハードニング手順を、合理的な優先順位で解説します。
TL;DR
- SSHは最大の露出面です。鍵ベースの認証を使用し、rootログインとパスワードを無効化し、接続をレート制限しましょう
- デフォルト拒否のファイアウォールを運用し、不要なサービスとポートをすべて停止しましょう
- システムを自動的にパッチ適用し、カーネルとアカウントのハードニングを適用しましょう
- SELinuxまたはAppArmorを使用し、監査ログを有効化し、ディストリビューション向けのCISベンチマークで自己評価しましょう
1. SSHをロックダウンする
SSHはサーバーを管理する手段であり、攻撃者が侵入を試みる手段でもあります。まずこれを堅牢化しましょう。
- 鍵ベースの認証を使用し、パスワード認証を完全に無効化します(
PasswordAuthentication no)。 - 直接のrootログインを無効化します(
PermitRootLogin no)。通常のユーザーとしてログインし、sudoを使用します。 - SSHでログインできるユーザーを制限します。
- 繰り返される失敗した試行をレート制限し抑制します(たとえば
fail2banを使用)。これによりブルートフォース攻撃を鈍らせます。 - SSHを保守されたバージョンに保ち、弱い暗号方式やレガシーなプロトコルを無効化します。
2. デフォルト拒否のファイアウォールを運用する
- ファイアウォール(
nftables、ufw、firewalld、またはCSF)をデフォルトで拒否するよう設定し、実際に提供しているポートのみを許可します。 - 露出を最小限にします。通常はWebサーバーの場合、SSH(制限付き)、HTTP、HTTPSのみで、それ以外は何も公開しません。
- 可能な場合、管理ポートを既知の送信元アドレスまたはVPNに制限します。
3. 攻撃対象領域を最小化する
- 使用していないサービスやデーモンをアンインストールまたは無効化します。リッスンしているすべてのサービスは潜在的な侵入口です。
- 開いているポートを監査し(
ss -tulpn)、それぞれが意図的であることを確認します。 - 本番ホストから不要なパッケージやコンパイラを削除します。
4. システムをパッチ適用済みに保つ
- 自動セキュリティ更新を有効化します(Debian/Ubuntuでは
unattended-upgrades、RHEL系システムではdnf-automatic)。 - ディストリビューションのサポート終了日を把握し、サポート終了前にアップグレードします。サポートされていないOSを運用することは、常に存在するリスクです。
5. アカウントとアクセスを堅牢化する
- 強力なパスワードおよびアカウントポリシーを適用し、使用していないアカウントを削除します。
- 共有のrootアクセスではなく、最小権限の
sudoを使用し、sudoの使用をログに記録します。 - 適切な
umaskのデフォルト値を設定し、機密ファイルのパーミッションをロックダウンします。 - 管理アクセスには二要素認証を検討します。
6. カーネルとネットワークのハードニングを適用する
sysctl設定を調整してネットワークレベルのリスクを低減します(たとえばIPソースルーティングとICMPリダイレクトを無効化し、リバースパスフィルタリングを有効化します)。- カーネルログやポインタへのアクセスを制限し、利用可能なエクスプロイト緩和策を有効化します。
- 使用していないカーネルモジュールやファイルシステムを無効化します。
7. 強制アクセス制御を有効化する
- SELinux(RHEL系)またはAppArmor(Debian/Ubuntu)を有効かつenforcingモードに保ちます。
- 「動作させるため」に無効化したくなる誘惑に抗いましょう。代わりにポリシーを調整または記述します。MACは、サービスが侵害された際に被害を封じ込めます。
8. ロギング、監査、ファイル整合性
- Linux監査デーモン(
auditd)を有効化し、セキュリティに関連するイベントを記録します。 - ログをホスト外に集約し、攻撃者が単純に消去できないようにします。
- ファイル整合性監視(たとえばAIDE)を導入し、システムファイルへの予期しない変更を検出します。
- ログを定期的にレビューするか、監視とアラートに取り込みます。
9. CISベンチマークで評価する
Center for Internet Security(CIS)は、ディストリビューションごとの詳細なハードニングベンチマークを公開しています。ご利用のOS向けのCISベンチマーク を、客観的なチェックリストおよびギャップ分析として使用しましょう。これにより「堅牢化されていると思う」という状態が、時間をかけて監査できる測定可能なベースラインに変わります。
重要なポイント
- SSHから始めましょう。鍵のみ、rootログインなし、レート制限。
- デフォルト拒否のファイアウォールと、不要なサービスの排除。
- パッチ適用を自動化し、アカウント、カーネル、MAC(SELinux/AppArmor)のハードニングを適用。
- 監査ログとファイル整合性を有効化し、CISでベンチマークしてハードニングを測定可能にする。
専門家によるLinuxサーバーハードニングを
1台のサーバーを手作業で堅牢化することは可能ですが、アプリケーションを壊さずにサーバー群全体で一貫して行うことは、専門知識が真価を発揮する領域です。Linuxサーバーハードニングサービス は、SSHのロックダウン、ファイアウォールアーキテクチャ、カーネルチューニング、SELinux/AppArmorポリシー、CISギャップ分析、保守ランブックを網羅します。ファイアウォール中心の解説については、古いものの依然として有用なCSFによるLinuxサーバーの保護ガイド が、ConfigServer Security & Firewallを詳しく扱っています。
よくある質問(FAQ)
最も重要なLinuxハードニングの手順は何ですか? SSHのロックダウンです。鍵ベースの認証を使用し、パスワードログインと直接のrootログインを無効化し、失敗した試行をレート制限します。SSHは、インターネットに公開されたサーバーで最も頻繁に攻撃される侵入口です。
問題を解決するためにSELinuxやAppArmorを無効化すべきですか? いいえ。強制アクセス制御を無効化すると、封じ込めの主要な層が失われます。代わりに、正当な動作を許可するようポリシーを調整または記述してください。enforcingモードに保つことで、サービスが侵害された場合の被害を抑えられます。
CISベンチマークとは何ですか? Center for Internet Securityが公開する、ディストリビューションごとの詳細なハードニング標準です。設定の基準となり、時間をかけてサーバーを監査できる客観的なチェックリストを提供し、ハードニングを測定可能なものにします。
ホストにネットワークファイアウォールがある場合でもファイアウォールは必要ですか? はい、両方を使用してください。ホストベースのデフォルト拒否ファイアウォールは、ネットワーク制御が誤って設定されたり回避されたりした場合でもサーバーを保護し、実際に提供するポートのみを公開する原則を強制します。
堅牢化されたサーバーはどのくらいの頻度でレビューすべきですか? 定期的に行いましょう。設定はずれていき、新たな脆弱性が現れるためです。大きな変更の後および定期的なスケジュールでCISベースラインに対して再確認し、その間は自動セキュリティ更新を有効に保ってください。
コメント