John the Ripper スイートの一部である racf2john を活用して、IBM メインフレームのセキュリティを向上させる方法
はじめに:メインフレームセキュリティと racf2john の役割
IBM メインフレームは、長年にわたり基幹業務システムの中核として、多くの企業や組織で利用され続けています 🏦。その堅牢性や信頼性は高く評価されていますが、セキュリティ対策は現代の脅威に合わせて常に進化させる必要があります。特に、ユーザー認証の根幹であるパスワードの管理は極めて重要です。
メインフレーム環境における代表的なセキュリティサブシステムの一つが RACF (Resource Access Control Facility) です。RACF は、ユーザー認証、アクセス制御、監査ログなどの機能を提供し、システムリソースを保護します。しかし、設定されたパスワードが推測しやすいものであったり、古くから使われている脆弱なものであったりすると、セキュリティリスクとなります 😨。
ここで登場するのが、オープンソースのパスワードクラッキングツールとして広く知られる John the Ripper (JtR) と、そのスイートに含まれるユーティリティの一つである racf2john
です。racf2john
は、RACF データベースからパスワードハッシュ情報を抽出し、John the Ripper が解析できる形式に変換する役割を担います。
このプロセスを通じて、システム管理者は自社のメインフレーム環境で使用されているパスワードの強度を評価し、脆弱なパスワードを持つユーザーアカウントを特定できます。これは、不正アクセスを未然に防ぎ、セキュリティポリシーの遵守を確認するための重要な監査活動となります ✨。
この記事では、racf2john
の基本的な使い方から、John the Ripper と連携したパスワード監査の実践的な手順までを詳しく解説します。メインフレームのセキュリティに関わる方、特に RACF の管理や監査を担当されている方にとって、有用な情報となることを目指します。
racf2john の入手と準備
racf2john
は単体のツールではなく、John the Ripper スイートの一部として提供されています。そのため、まずは John the Ripper を入手し、セットアップする必要があります。
1. John the Ripper のインストール
John the Ripper は、公式サイトや GitHub リポジトリから入手できます。主要な Linux ディストリビューションでは、パッケージマネージャを通じて簡単にインストールできる場合が多いです。
公式サイト: https://www.openwall.com/john/
GitHub リポジトリ (Bleeding-jumbo ブランチが推奨されることが多い): https://github.com/openwall/john-jumbo
Debian/Ubuntu 系 Linux の場合:
Red Hat/CentOS/Fedora 系 Linux の場合:
ソースからビルドする場合 (最新機能を利用したい場合):
ビルド後、実行ファイルは `john-jumbo/run/` ディレクトリ内に生成されます。
2. racf2john の場所
John the Ripper をインストールまたはビルドすると、通常、実行ファイルと同じディレクトリ (多くの場合 `run` ディレクトリ) に racf2john
スクリプト (または実行ファイル) が配置されます。
このコマンドで racf2john
(または racf2john.py
など) が見つかれば準備OKです 👍。
3. 必要な RACF データの準備
racf2john
を使用するには、入力データとして RACF データベースの情報が必要です。一般的には、IBM が提供するユーティリティ IRRDBU00 (RACF Database Unload Utility) を使用して、RACF データベースの内容をフラットファイル (シーケンシャルデータセット) にアンロード(出力)したものを使用します。
IRRDBU00 ユーティリティの実行には、メインフレーム上での適切な権限と JCL (Job Control Language) の知識が必要です。生成されるアンロードデータには、ユーザー情報、パスワード情報(ハッシュ化されています)、アクセス権限など、非常に機密性の高い情報が含まれます 🔒。
具体的な IRRDBU00 の実行手順や JCL の例については、IBM の公式ドキュメントや、所属する組織のメインフレーム運用手順を参照してください。
アンロード処理によって生成されたデータファイルを、racf2john
を実行する環境 (Linux, macOS, Windows など) に安全な方法で転送する必要があります。転送時には、ファイルの機密性を保つために、暗号化された通信路 (SFTP, SCP など) を使用することが強く推奨されます。
racf2john の基本的な使い方
RACF のアンロードデータを準備できたら、いよいよ racf2john
を使ってパスワードハッシュを抽出します。使い方は非常にシンプルです。
コマンドライン構文
基本的な構文は以下の通りです。
/path/to/john/run/racf2john
:racf2john
スクリプトまたは実行ファイルへのパスを指定します。John the Ripper の `run` ディレクトリにいる場合は、単に./racf2john
で実行できます。<racf_unload_file>
: IRRDBU00 によって生成され、転送してきた RACF アンロードデータファイルの名前を指定します。> <output_hash_file>
: 抽出されたパスワードハッシュを保存するファイル名を指定します。リダイレクト (>
) を使ってファイルに出力するのが一般的です。
実行例
例えば、RACF アンロードデータファイルが racf_data.unload
で、抽出したハッシュを racf_hashes.txt
というファイルに保存したい場合は、次のように実行します。
処理が完了すると、racf_hashes.txt
ファイルが生成されます。
出力ファイルの形式
racf2john
によって生成される出力ファイル (上記の例では racf_hashes.txt
) には、John the Ripper が理解できる形式でパスワードハッシュが記述されます。一般的な形式は以下のようになります。
USERNAME
: RACF 上のユーザー ID (ユーザー名)$RACF$
: John the Ripper がハッシュの種類を識別するためのプレフィックス*userid*hash
: ユーザー ID と実際のパスワードハッシュ(エンコードされている場合もあります)を組み合わせた文字列。アスタリスク (*
) が区切り文字として使われることが多いです。
このファイルには、パスワードが設定されているユーザーアカウントの情報が含まれます。パスワードが設定されていない、または無効化されているアカウントの情報は通常含まれません。
racf2john
はこれらの違いを認識し、John the Ripper が適切に処理できる形式に変換しようと試みます。
racf2john のオプション解説
racf2john
自体には、通常、多くのコマンドラインオプションは用意されていません。主な機能は、入力ファイルを受け取り、標準出力にハッシュを出力することに特化しています。
もし特定のオプションが存在する場合、John the Ripper のバージョンや racf2john
の実装 (Perl スクリプトか Python スクリプトかなど) によって異なる可能性があります。ヘルプオプション (--help
など) が実装されていれば、それを試すことで利用可能なオプションを確認できます。
しかし、多くの場合、特別なオプションを指定せずとも、基本的な使い方(入力ファイルを与えて出力をリダイレクトする)で十分なことが多いでしょう。
重要なのは、racf2john
で生成したハッシュファイルを、後続の John the Ripper によるクラック処理で正しく指定することです。John the Ripper 側で、RACF ハッシュ形式を明示的に指定する必要がある場合があります。
抽出したハッシュを John the Ripper でクラックする 🔨
racf2john
でパスワードハッシュを抽出したら、次はそのハッシュファイルを使って John the Ripper によるパスワードクラッキング (監査) を実行します。これにより、脆弱なパスワードが実際に特定されます。
基本的なクラック実行
John the Ripper を実行する最も基本的なコマンドは以下の通りです。
先ほどの例で作成した racf_hashes.txt
を使う場合:
John the Ripper は、ハッシュファイル内の $RACF$
プレフィックスを認識し、自動的に適切なクラッキングモード (racf フォーマット) を選択しようとします。
処理が開始されると、John the Ripper はデフォルトのモード(シングルクラックモード、ワードリストモード、インクリメンタルモードを組み合わせたもの)でパスワードの推測を試みます。
フォーマットの明示的な指定
ハッシュ形式が自動で認識されない場合や、特定の形式で処理を強制したい場合は、--format
オプションを使用します。
RACF のハッシュにはいくつかのバリエーションがあるため、John the Ripper のドキュメントや ./john --list=formats
コマンドで利用可能なフォーマット名を確認し、適切なものを指定することが有効な場合があります (例: --format=racf-kdfaes
)。
ワードリストモード
特定の単語リスト (辞書ファイル) を使ってパスワードを推測させたい場合は、--wordlist
オプションを使用します。これは、よく使われる単語や、組織に関連する用語などがパスワードに使われていないかを確認するのに効果的です 📚。
password.lst
の部分には、使用したいワードリストファイルのパスを指定します。John the Ripper にはデフォルトでいくつかのワードリストが含まれていることもありますし、インターネット上で公開されている様々なワードリストを利用することも可能です。
インクリメンタルモード
特定の文字種 (数字のみ、英小文字のみ、など) や長さの組み合わせを総当たりで試す場合は、インクリメンタルモードを使用します。--incremental
オプションで指定します。
利用可能なモード名は john.conf
ファイルで定義されています。このモードは時間がかかる可能性がありますが、単純なパターンを持つパスワードを発見できることがあります。
クラック結果の確認
John the Ripper は、クラックに成功したパスワードを john.pot
(デフォルトのポットファイル名) というファイルに記録します。クラックされたパスワードを確認するには、--show
オプションを使用します。
このコマンドは、racf_hashes.txt
に含まれるハッシュのうち、john.pot
ファイルに記録されている(つまりクラック済みの)パスワードを表示します。出力形式は通常 USERNAME:PASSWORD:...(他の情報)
のようになります。
この結果から、どのユーザーが推測されやすいパスワードを使用しているかが判明します 😲。
john.rec
ファイルに保存されます)。長時間のクラック処理も安心して実行できますね 😊。
実践的なシナリオと注意点
racf2john
と John the Ripper を組み合わせることで、単にパスワードをクラックするだけでなく、より広範なセキュリティ監査と改善活動に繋げることができます。
パスワードポリシーの評価
クラック結果を分析することで、現在のパスワードポリシーが有効に機能しているか評価できます。例えば、
- 単純な単語や短いパスワードが多くクラックされた場合 → より複雑なパスワード(長さ、文字種)を要求するポリシーへの見直しが必要かもしれません 🤔。
- ユーザー ID と類似したパスワードが多く見つかった場合 → そのようなパスワードを禁止する設定が RACF で有効になっているか確認が必要です。
- 特定の部署や役割のユーザーに脆弱なパスワードが集中している場合 → そのグループに対するセキュリティ教育や注意喚起が必要かもしれません 📣。
定期的にこの監査を実施し、結果をフィードバックすることで、パスワードポリシーの実効性を高めることができます。
定期的な監査の実施
パスワード監査は一度実施して終わりではありません。新しいユーザーの追加、パスワードの変更などにより、状況は常に変化します。四半期に一度、半年に一度など、定期的に racf2john
と John the Ripper を用いた監査を実施し、継続的にパスワードの強度を監視することが重要です 📅。
監査結果は記録し、前回からの変化や傾向を把握することで、より効果的な対策を計画できます。
RACF データの取り扱いに関するセキュリティ上の注意点
繰り返しになりますが、IRRDBU00 のアンロードデータは極めて機密性の高い情報です。
- アクセス制御: アンロードデータの生成、転送、保管、そして
racf2john
や John the Ripper を実行する環境へのアクセスは、必要最小限の権限を持つ担当者に限定してください 👤。 - データ保管: 監査が終了したら、アンロードデータファイル、
racf2john
の出力ファイル (ハッシュファイル)、John the Ripper のポットファイル (john.pot
) は、不要になったら速やかに安全な方法で削除してください 🗑️。これらのファイルが不正にアクセスされると、パスワード情報が漏洩するリスクがあります。 - 実行環境:
racf2john
や John the Ripper を実行するマシン自体も、適切なセキュリティ対策 (OS のパッチ適用、アクセス制御、マルウェア対策など) が施されている必要があります。 - 転送: メインフレームから監査用マシンへのデータ転送は、必ず暗号化された経路 (SFTP, SCP など) を使用してください 🛡️。
権限管理の重要性
この種のパスワード監査ツールを使用する行為自体が、組織のセキュリティポリシーや情報管理規定に準拠している必要があります。必ず、システムオーナーやセキュリティ部門からの正式な承認と、適切な権限を得た上で実施してください。許可なくこれらのツールを使用することは、内部不正とみなされる可能性があります。
まとめ
racf2john
は、John the Ripper スイートの強力なユーティリティであり、IBM メインフレームの RACF 環境におけるパスワードセキュリティ監査に不可欠なツールです。IRRDBU00 でアンロードした RACF データベースからパスワードハッシュを抽出し、John the Ripper で解析可能な形式に変換することで、システム管理者は組織内で使用されているパスワードの強度を評価し、潜在的な脆弱性を特定できます。
この記事で解説した手順に従い、racf2john
と John the Ripper を適切に使用することで、以下のようなメリットが期待できます。
- 脆弱なパスワードを使用しているアカウントの特定 ✅
- パスワードポリシーの有効性の評価と改善点の発見 ✅
- メインフレーム環境全体のセキュリティレベルの向上 ✅
- コンプライアンス要件への対応支援 ✅
ただし、これらのツールが扱うデータの機密性は非常に高いため、その取り扱いには細心の注意が必要です。適切な権限、厳格なアクセス管理、安全なデータ保管・削除を徹底し、組織のセキュリティポリシーに従って運用することが絶対条件となります。
racf2john
を活用した定期的なパスワード監査は、メインフレーム環境を保護するための重要なプロアクティブなセキュリティ対策です。ぜひ、このツールを理解し、責任ある方法で活用して、組織の貴重な情報資産を守りましょう 💪🛡️。
参考情報
より詳細な情報については、以下の公式リソースをご参照ください。
- John the Ripper official website: https://www.openwall.com/john/
- John the Ripper Community Wiki (使い方やフォーマットに関する情報): https://openwall.info/wiki/john/
- John the Ripper GitHub Repository (ソースコード、最新情報): https://github.com/openwall/john-jumbo
- IBM Documentation (RACF, IRRDBU00 に関する情報): IBM の公式ドキュメントサイトで関連情報を検索してください (URL はバージョン等により変動するため、直接のリンクは控えます)。