はじめに
「OSパッチ適用」という言葉は知っていても、実際に何をしているのか分からなかった私が、学習プロジェクトをIBM Bobで作成して実際にパッチ適用を体験してみました。
この記事では、実際に何をやったのかを詳しく解説します。
今回やったこと
1. 学習プロジェクトの作成
パッチ適用を安全に学べる環境を作成しました。
0424_os_patch/
├── original/sample_config.txt # パッチ適用前の設定ファイル
├── patches/security_patch.patch # セキュリティパッチ
├── scripts/apply_patch.sh # パッチ適用スクリプト
└── scripts/mac_patch_management.sh # macOS用パッチ管理スクリプト
2. パッチ適用前の設定ファイル
まず、セキュリティ的に問題のある設定ファイルを用意しました。
ファイル: original/sample_config.txt
[システム設定]
バージョン=1.0.0
最終更新日=2026-04-01
[セキュリティ設定]
パスワード最小文字数=6 # 短すぎる!
ログイン試行回数=5 # 多すぎる!
セッションタイムアウト=30 # 長すぎる!
[ネットワーク設定]
ポート番号=8080
最大接続数=100
タイムアウト=60
問題点:
- パスワードが6文字以上でOK → 脆弱
- ログイン試行が5回まで可能 → ブルートフォース攻撃に弱い
- セッションタイムアウトが30分 → 長すぎる
3. セキュリティパッチの作成
上記の問題を修正するパッチファイルを作成しました。
ファイル: patches/security_patch.patch
--- original/sample_config.txt 2026-04-01 10:00:00.000000000 +0900
+++ original/sample_config.txt 2026-04-24 23:00:00.000000000 +0900
@@ -1,6 +1,6 @@
# サンプルシステム設定ファイル
[システム設定]
-バージョン=1.0.0
-最終更新日=2026-04-01
+バージョン=1.0.1
+最終更新日=2026-04-24
@@ -8,8 +8,8 @@
[セキュリティ設定]
-パスワード最小文字数=6
-ログイン試行回数=5
-セッションタイムアウト=30
+パスワード最小文字数=12
+ログイン試行回数=3
+セッションタイムアウト=15
+二要素認証=有効
パッチの内容:
- バージョンを1.0.1に更新
- パスワード最小文字数を12文字に強化
- ログイン試行回数を3回に制限
- セッションタイムアウトを15分に短縮
- 二要素認証を追加
4. パッチ適用スクリプトの作成
安全にパッチを適用できる対話型スクリプトを作成しました。
ファイル: scripts/apply_patch.sh
スクリプトの機能:
- 現在の状態確認 - パッチ適用前のファイル内容を表示
- バックアップ作成 - 自動でバックアップファイルを作成
- パッチ内容確認 - 何が変更されるか確認
- ドライラン - 実際には適用せず、適用可能かテスト
- パッチ適用 - 実際にパッチを適用
- 変更確認 - 適用後のファイル内容を表示
- 差分表示 - 変更前後の違いを表示
5. 実際にパッチを適用
スクリプトを実行してパッチを適用しました。
bash scripts/apply_patch.sh
実行結果:
================================
OSパッチ適用スクリプト
================================
📋 ステップ1: 現在のファイル内容を確認
-----------------------------------
[セキュリティ設定]
パスワード最小文字数=6
ログイン試行回数=5
セッションタイムアウト=30
💾 ステップ2: バックアップを作成
-----------------------------------
✓ バックアップ作成完了: original/sample_config.txt.backup.20260424_232107
🔍 ステップ3: パッチ内容を確認
-----------------------------------
このパッチは以下の変更を行います:
(パッチファイルの内容を表示)
🧪 ステップ4: ドライラン(テスト実行)
-----------------------------------
✓ パッチは正常に適用できます
🚀 ステップ5: パッチを適用
-----------------------------------
patching file original/sample_config.txt
✓ パッチ適用完了!
✅ ステップ6: 変更後のファイル内容を確認
-----------------------------------
[セキュリティ設定]
パスワード最小文字数=12
ログイン試行回数=3
セッションタイムアウト=15
二要素認証=有効
📊 ステップ7: 変更の差分
-----------------------------------
-パスワード最小文字数=6
+パスワード最小文字数=12
-ログイン試行回数=5
+ログイン試行回数=3
-セッションタイムアウト=30
+セッションタイムアウト=15
+二要素認証=有効
🎉 パッチ適用が完了しました!
6. macOSでの実践的なパッチ管理
次に、実際のmacOSでパッチ管理を体験しました。
ファイル: scripts/mac_patch_management.sh
bash scripts/mac_patch_management.sh
実行内容:
ステップ1: システム情報の確認
📋 ステップ1: システム情報
-----------------------------------
macOSバージョン:
ProductName: macOS
ProductVersion: 14.3.1
BuildVersion: 23D60
ハードウェア情報:
Model Name: MacBook Pro
Processor: Apple M1 Pro
Memory: 16 GB
ステップ2: Homebrewの確認
🍺 ステップ2: Homebrewの確認
-----------------------------------
✓ Homebrewがインストールされています
Homebrewバージョン: Homebrew 4.2.9
ステップ3: Homebrewのアップデート
⬆️ ステップ3: Homebrewのアップデート
-----------------------------------
Homebrewを最新版に更新します...
Updated 2 taps (homebrew/core and homebrew/cask).
✓ Homebrewのアップデート完了
ステップ4: アップデート可能なパッケージの確認
📦 ステップ4: アップデート可能なパッケージの確認
-----------------------------------
以下のパッケージがアップデート可能です:
openssl@3 (3.1.0 -> 3.1.4)
python@3.11 (3.11.5 -> 3.11.7)
git (2.42.0 -> 2.43.0)
これらのパッケージをアップデートしますか? (y/n): y
パッケージをアップデート中...
==> Upgrading 3 outdated packages:
openssl@3 3.1.0 -> 3.1.4
python@3.11 3.11.5 -> 3.11.7
git 2.42.0 -> 2.43.0
✓ パッケージのアップデート完了
ステップ5: 診断の実行
🔍 ステップ5: Homebrewの診断
-----------------------------------
Homebrewの問題をチェックします...
Your system is ready to brew.
ステップ6: クリーンアップ
🧹 ステップ6: クリーンアップ
-----------------------------------
古いバージョンのパッケージを削除しますか? (y/n): y
クリーンアップ中...
Removing: /usr/local/Cellar/openssl@3/3.1.0... (6,874 files, 28.5MB)
Removing: /usr/local/Cellar/python@3.11/3.11.5... (3,156 files, 61.2MB)
✓ クリーンアップ完了
解放されたディスク容量:
89.7MB
ステップ7: macOSシステムアップデートの確認
🍎 ステップ7: macOSシステムアップデートの確認
-----------------------------------
利用可能なmacOSアップデートを確認します...
Software Update Tool
Finding available software
No new software available.
ステップ8: セキュリティ情報の表示
🛡️ ステップ8: セキュリティ情報
-----------------------------------
インストール済みの重要なセキュリティ関連パッケージ:
✓ openssl: 3.1.4
✓ openssh: 9.5p1
✓ gnupg: 2.4.3
✓ git: 2.43.0
実際にやってみて分かったこと
- パッチ適用で、色々なバージョンアップデートが行われたり、ソフトウェアのパッケージがインストールされる。
- バックアップが大事
- ドライランで、実際にパッチ適用する前にテストをすると失敗のリスクを減らせる。