OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク
不要なサービスの無効化、ベースライン設定の適用、CISベンチマークの利用などのOSハードニング技術を適用し、攻撃対象領域を縮小します。
「OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク」はCoddyKit上の無料Security+ Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSecurity+ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Security+ Academyコースには全4レッスンが含まれています。
OSハードニングとは
OSハードニングとは、不要な機能を削除し、セキュリティ設定を適用し、システムにパッチを適用し続けることで、オペレーティングシステムの攻撃対象領域を縮小するプロセスです。インストール直後のオペレーティングシステムは、デフォルトで安全とは限りません。多くのユーザーが必要とする可能性のあるサービスや機能を有効にして、使いやすさを優先しているためです。有効になっているすべてのサービス、開いているポート、デフォルトの認証情報は、攻撃者にとって潜在的な侵入口になります。ハードニングでは、システムを本番環境に導入する前に、これらの侵入口を体系的に閉じます。
パッチ管理
パッチ管理とは、セキュリティ脆弱性を修正するソフトウェア更新を特定、テスト、適用するプロセスです。パッチが適用されていないシステムは、最も悪用されやすい標的の1つです。多くの重大な侵害(2017年のEquifax、2017年のWannaCry)では、既知で、すでにパッチが提供されていた脆弱性が悪用されましたが、組織が適用していなかっただけでした。成熟したパッチ管理プロセスでは、パッチの特定(ベンダーのアドバイザリやCVEフィードの購読)、重大度の分類(緊急/重大/高/中)、テスト期間(多くのフレームワークでは重大なパッチを48~72時間以内に適用)、展開の検証を定義します。
# Patch criticality SLA example
CVSS Score SLA Notes
---------- ---------- ----------------------
9.0 - 10.0 48 hours Emergency patch cycle
7.0 - 8.9 7 days Critical patch cycle
4.0 - 6.9 30 days Standard patch cycle
0.1 - 3.9 90 days Routine patch cycle
# Verify patch application:
# Windows: Get-HotFix | Where-Object {$_.HotFixID -eq 'KB5023706'}
# Linux: dpkg -l | grep package_name不要なサービスの無効化
実行中のサービスはすべて、潜在的な攻撃経路です。OSハードニングは、サービス監査から始めます。実行中のすべてのサービスを一覧化し、目的を確認したうえで、システムの役割に必要のないサービスを無効化します。Windows Serverでは、Print Spooler、Remote Registry、LLMNRなどの役割が、必要とされないサーバー上で無効化されることがよくあります。Linuxでは、rpcbind、cups(印刷)、avahi(mDNS)などが典型的な候補です。原則は、必要がなければ無効化することです。
# Windows: disable unnecessary service
SC config 'Spooler' start= disabled
SC stop 'Spooler'
# Linux: disable unused services
systemctl disable cups
systemctl stop cups
systemctl disable avahi-daemon
systemctl stop avahi-daemon
# Verify no unnecessary ports are listening:
ss -tulnp # Linux
netstat -an | findstr LISTENING # Windows不要なソフトウェアの削除
インストールされていても使用されていないソフトウェアは、不要なリスクになります。パッケージはすべて、潜在的な脆弱性を持ち込みます。十分に保守されているソフトウェアであっても、CVEが存在する可能性があります。OSハードニングでは、アプリケーションに必要のない言語ランタイム(Webサーバー上のPython、Perl、Rubyなど)の削除、本番システム上の開発ツール(コンパイラやデバッガなど)の削除、OSイメージに付属するデフォルトのアプリケーションパッケージ(FTPサーバー、telnetクライアント、SNMPエージェントなど)の削除を行います。同じ理由から、コンテナイメージには最小構成のベースイメージ(Alpine、scratch、distroless)を使用する必要があります。
# Remove unused packages (Debian/Ubuntu)
apt purge telnet ftp netcat python2 perl
apt autoremove
# Remove unused packages (RHEL/CentOS)
yum remove telnet ftp nmap-ncat
# Check what is installed:
dpkg -l | grep -i 'telnet\|ftp\|netcat'デフォルトアカウントのセキュリティ確保
ユーザー名とパスワードが既知のデフォルトアカウントは、攻撃者が最初に試す対象の一つです。強化策として、組み込みのAdministratorアカウントを無効化(Windows)し、無効化できない場合は名前を変更します。Linuxでは、rootアカウントの名前を変更するか、rootによるSSHログインを制限します。本番環境に移行する前に、アプライアンス、データベース、アプリケーションのすべてのデフォルトパスワードを変更し、ゲストアカウントを削除します。また、対話型ログインが不要なサービスアカウントを無効化します。Nessusのようなスキャンツールは、デフォルトの認証情報を重大な検出結果として警告します。
# Linux: disable root SSH login
# Edit /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
AllowUsers admin_user service_user
# Restart SSH:
systemctl restart sshd
# Windows: disable built-in Administrator
net user Administrator /active:no
# Rename (via Group Policy):
# Computer Config > Windows Settings > Security Settings
# > Local Policies > Security Options
# > 'Accounts: Rename administrator account'ファイルシステムの権限と最小権限
安全なファイルシステム権限により、OS上で最小権限の原則を適用できます。Webサーバープロセスには、配信するディレクトリへの書き込み権限を与えないでください。アプリケーションアカウントには、認証情報を含む構成ファイルへの読み取り権限を与えないでください。Linuxでは、setuidおよびsetgidバイナリは、実行者に関係なく昇格された権限で実行されるため、監査する必要があります。Windowsでは、NTFSアクセス許可とDACL監査により、機密性の高いディレクトリ(SAMハイブ、シャドウコピー、認証情報ストア)にアクセスできるプロセスを承認済みのものだけに限定できます。
# Find setuid/setgid binaries (Linux)
find / -perm /4000 -o -perm /2000 2>/dev/null
# Secure web root permissions
chown -R root:www-data /var/www/html
chmod -R 755 /var/www/html
chmod 640 /var/www/html/config.php
# Check overly permissive files
find /etc -perm -o+w 2>/dev/null # world-writable in /etcCIS Benchmarks
CIS Benchmarksは、特定のオペレーティングシステム、アプリケーション、クラウドプラットフォーム向けにコミュニティが開発した無償のセキュリティ強化ガイドです。各ベンチマークには、理由、修正手順、監査コマンドとともに、具体的な構成推奨事項が数百件含まれています。CIS Benchmarksには2つのプロファイルレベルがあります。Level 1 — 機能を制限しない、基本的で幅広く適用できる構成。Level 2 — 使いやすさに影響する可能性がある、高セキュリティ環境向けの高度な構成。Windows Server、Ubuntu/RHEL、macOS、Docker、Kubernetes、AWS、Azure、GCP、ブラウザー、データベース向けのベンチマークが用意されています。
# CIS Benchmark check example (Linux L1)
# CIS Ubuntu 22.04 - 1.1.1.1 Disable cramfs
modprobe -n -v cramfs 2>&1 | grep -q 'Module cramfs not found'
# Expected: Module cramfs not found OR 'install /bin/false'
# Remediate:
echo 'install cramfs /bin/false' >> /etc/modprobe.d/CIS.conf
# CIS Windows - Account Lockout threshold
# secedit /export /cfg secpol.txt
# Check: LockoutBadCount = 5 (not 0)ベースライン構成管理
セキュリティベースラインとは、特定の役割カテゴリに属するすべてのシステムが満たすべき構成設定を文書化したものです。Windowsではグループポリシーオブジェクト(GPO)、LinuxではAnsible playbook、Chef cookbook、Puppet manifestを使用してベースラインを適用します。構成管理ツールを使うとドリフト検出が可能になります。システムが承認済みのベースラインから逸脱した場合(サービスが再有効化された場合など)、自動アラートや自動修復によって準拠状態に戻せます。NIST SP 800-128は、政府機関のシステムを対象としたセキュリティ重視の構成管理に関する指針を示しています。
# Ansible hardening playbook snippet
- name: Disable ICMP redirects
sysctl:
name: net.ipv4.conf.all.accept_redirects
value: '0'
state: present
reload: yes
- name: Enable address space layout randomization
sysctl:
name: kernel.randomize_va_space
value: '2'
state: present
reload: yes監査ログと監視
セキュリティ強化は防御だけを意味するものではありません。ログ記録と監視も同じく重要です。監査ポリシーを構成し、次の情報を取得します。認証イベント(成功と失敗)、権限昇格、オブジェクトアクセス(機密ファイルの読み取り)、プロセス作成(コマンドライン引数を含む)、ネットワーク接続イベント。ローカルの攻撃者が管理者権限を使ってイベントログを消去し、痕跡を隠せないように、ログはほぼリアルタイムで中央のSIEMに転送する必要があります。ほとんどのコンプライアンスフレームワークでは、ログを少なくとも12か月間保持します。
# Enable Windows audit policy (Group Policy)
auditpol /set /category:'Logon/Logoff' /success:enable /failure:enable
auditpol /set /category:'Process Creation' /success:enable
auditpol /set /subcategory:'Privilege Use' /success:enable /failure:enable
# Linux: configure auditd for privilege use
echo '-a always,exit -F arch=b64 -S execve -k exec_track' >> /etc/audit/rules.d/audit.rules
echo '-w /etc/sudoers -p wa -k priv_change' >> /etc/audit/rules.d/audit.rules
augenrules --load自動コンプライアンススキャン
大規模環境で、すべてのシステムのセキュリティ強化ベンチマークを手作業で確認するのは現実的ではありません。コンプライアンススキャンツールを使えば、この確認を自動化できます。OpenSCAP(オープンソース)はSCAPコンテンツをLinuxシステムに適用し、チェック項目ごとに合格、失敗、該当なしを示すHTMLレポートを生成します。NessusにはCISベンチマークポリシーが含まれています。Microsoft Security Compliance Toolkitは、Microsoftのベースラインに照らしてWindowsシステムを評価します。これらのツールは定期的(毎週または毎月)に実行し、逸脱が見つかった場合は変更管理システムで修正チケットを起票します。
# OpenSCAP compliance scan (RHEL/CentOS)
oscap xccdf eval \
--profile xccdf_org.ssgproject.content_profile_cis \
--results results.xml \
--report report.html \
/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
# Generate remediation script
oscap xccdf generate fix \
--fix-type bash \
--result-id '' \
results.xml > remediation.shグループポリシーとセキュリティテンプレート
Windowsドメインでは、グループポリシーオブジェクト(GPO)が、セキュリティベースラインを大規模に適用・強制するための主要な仕組みです。セキュリティテンプレート(あらかじめ用意された、またはカスタム作成した.infファイル)をGPOにインポートすると、アカウントポリシー、監査ポリシー、ユーザー権利の割り当て、セキュリティオプション、レジストリ値など、数百の設定を同時に構成できます。Security Configuration and Analysisスナップインとseceditコマンドラインツールは、現在の設定を定義済みのテンプレートと比較し、コンプライアンスレポートを生成します。GPOは起動時と一定間隔で適用されるため、ベースラインからのドリフトが自動的に修正されます。
# Apply security template via secedit
secedit /configure /db %windir%\security\local.sdb \
/cfg C:\Templates\CIS_Level1_Server2022.inf \
/log secedit_apply.log
# Analyze current config vs template
secedit /analyze /db %windir%\security\local.sdb \
/cfg C:\Templates\CIS_Level1_Server2022.inf \
/log secedit_analysis.log
# View result: settings marked as compliant or non-compliantクイックチェック
このレッスンで扱ったCompTIA Security+(SY0-701)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、OSのセキュリティ強化によって、サービスの無効化、ソフトウェアの削除、アカウントの保護、最小権限のアクセス許可の適用を行い、攻撃対象領域を縮小できることを学びました。また、パッチ管理は、重要度に基づくSLAによって既知の脆弱性を解消し、CIS Benchmarksは、Level 1(基本)とLevel 2(高度)の構成ガイダンスを提供し、自動コンプライアンススキャンツールで適用できることも学びました。次は、モバイルデバイス管理とBYODポリシーについて学びます。
よくある質問
「OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク」レッスンは無料ですか?
はい。「OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Security+ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Security+ Academyコースには全4レッスンが含まれています。
「OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク」で何を学びますか?
不要なサービスの無効化、ベースライン設定の適用、CISベンチマークの利用などのOSハードニング技術を適用し、攻撃対象領域を縮小します。 ブラウザで直接実行するハンズオンコードでSecurity+ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Security+ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSecurity+ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSecurity+ Academyレッスンでコードを書いて実行できますか?
はい。すべてのSecurity+ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- アンチウイルス、EDR、XDRプラットフォーム
- OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク
- モバイルデバイス管理(MDM)とBYODポリシー
- ホストベースファイアウォールとアプリケーション許可リスト