技術(非IT系)

ハードニングとは?意味や目的をわかりやすく解説(セキュリティ強化・システム・設定・脆弱性対策・IT用語など)

当サイトでは記事内に広告を含みます

ハードニングとは、ITシステムやサーバーのセキュリティを強化するために、不必要なサービスの無効化・セキュリティ設定の適切な構成・脆弱性の修正などを行う一連の作業を指します。

英語の「Harden(硬くする・強化する)」から来た言葉で、システムを攻撃に対して「硬い」状態にすることから「ハードニング(堅牢化)」と呼ばれています。

サイバー攻撃の入口となりうる攻撃面(アタックサーフェス)を最小化することで、システムのセキュリティリスクを根本的に低減する重要な対策です。

本記事では、ハードニングとは何か、意味や目的、セキュリティ強化・システム・設定・脆弱性対策・IT用語などについてわかりやすく解説していきます。

ハードニングは不要な機能を排除しセキュリティ設定を最適化するシステム堅牢化作業

それではまず、ハードニングの基本的な定義と、セキュリティにおける位置づけについて解説していきます。

ハードニング(System Hardening:システム堅牢化)とは、OSやミドルウェア・アプリケーション・ネットワーク機器などの設定を見直し、不要なサービスの無効化・デフォルト設定の変更・アクセス制御の強化・パッチ適用などを通じてシステムの攻撃面を最小化するセキュリティ対策です。

新規にシステムを構築した直後のデフォルト状態は、利便性を優先して多くのサービスが有効になっていることが多く、攻撃者に利用されやすい脆弱な状態です。

ハードニングによってこの状態を「最小権限・最小機能」の原則に基づいて適切に設定し直すことが目的です。

ハードニングの基本原則「最小権限(Least Privilege)」と「最小機能(Minimal Footprint)」:必要最低限の権限と機能のみを有効にし、不要なものはすべて無効化・削除することで、攻撃者が悪用できる入口を根本から減らします。

ハードニングが必要な理由

多くのOSやソフトウェアはインストール直後のデフォルト設定において、利便性を重視した設定になっています。

たとえばデフォルトで有効になっている不要なサービス(Telnet・FTP・Webサーバー等)・デフォルトの管理者パスワード・不必要に広い権限設定・開放されているネットワークポートなどが攻撃の起点となります。

ハードニングを行うことで、これらの「攻撃されうる入口」を物理的に閉じることができます。

ハードニングの主な対象領域

ハードニングの対象はシステムの各レイヤーにわたります。

対象領域 主なハードニング項目
OS(Linux/Windows) 不要サービスの無効化、パスワードポリシー強化、ファイル権限設定
ネットワーク 不要ポートのクローズ、ファイアウォール設定、暗号化通信の強制
Webサーバー(Apache/Nginx) バージョン情報の非表示、ディレクトリリスティングの無効化、HTTPSの強制
データベース デフォルトアカウントの削除、不要な権限の削除、リモートアクセス制限
アプリケーション デバッグ機能の無効化、エラーメッセージの非公開化、不要な機能の無効化

CIS Benchmarksとハードニング基準

ハードニングの実施基準として最もよく参照されるのが「CIS Benchmarks(Center for Internet Security Benchmarks)」です。

CIS BenchmarksはOSの種類(Windows Server・Ubuntu・CentOS等)やミドルウェア(Apache・MySQL等)ごとに具体的な設定値とその理由を提供する無料のガイドラインです。

NIST SP 800-123(Guide to General Server Security)やIPA(情報処理推進機構)が公開しているセキュリティ設定ガイドも、国内外で広く参照されているハードニングの実施基準です。

Linuxサーバーのハードニングの具体的な手順

続いては、最も広く利用されているLinuxサーバーに対するハードニングの具体的な作業内容を確認していきます。

SSHのハードニング

リモート管理に使われるSSHは攻撃者に狙われやすいサービスであり、ハードニングの最優先項目です。

/etc/ssh/sshd_configの主要なハードニング設定:

PermitRootLogin no # rootでの直接ログインを禁止

PasswordAuthentication no # パスワード認証を禁止(公開鍵認証のみ)

Port 2222 # デフォルトポート22から変更

MaxAuthTries 3 # 認証試行回数の制限

AllowUsers deployuser # ログイン許可ユーザーの制限

Protocol 2 # SSHプロトコルバージョン2のみ使用

これらの設定を行うだけで、SSH経由のブルートフォース攻撃のリスクを大幅に低減できます。

パッケージとサービスの最小化

インストールされているパッケージとサービスを必要最低限に絞ることも重要なハードニングです。

不要なサービスの確認と停止(systemd環境):

systemctl list-units –type=service –state=running

systemctl stop サービス名

systemctl disable サービス名

使用していないサービスを停止・無効化することで、そのサービスの脆弱性を悪用される可能性をゼロにできます。

ファイアウォールの設定

iptablesまたはfirewalldを使って、必要なポートのみを開放し他はすべてデフォルト拒否に設定します。

「Allow necessary, deny all else(必要なものだけ許可し、残りはすべて拒否)」がファイアウォール設定のハードニング原則です。

定期的なポートスキャン(nmapなど)で不要なポートが開いていないか確認することも継続的なハードニングの一部です。

まとめ

本記事では、ハードニングとは何か、意味や目的、セキュリティ強化・システム・設定・脆弱性対策・IT用語などについて解説しました。

ハードニングは不要な機能を排除し、セキュリティ設定を最適化することでシステムの攻撃面を最小化する重要なセキュリティ対策です。

CIS BenchmarksやNISTガイドラインを参照しながら、OS・ネットワーク・ミドルウェアの各レイヤーでハードニングを実施することが推奨されます。

ハードニングは一度実施すれば終わりではなく、新たな脆弱性が発見されるたびにパッチ適用と設定見直しを繰り返す継続的なプロセスです。

組織のセキュリティポリシーに組み込み、システム構築時の標準作業として定着させることが理想的でしょう。