モダンを極める:優れたセキュリティは優れたコードと同じくらい重要である
私のIBM i マシンもウイルスの被害に遭うことはあるのでしょうか。ランサムウェアの被害に遭うことはあるでしょうか。
これらは、20年以上の経験を持つセキュリティの専門家として、クライアントからいつも尋ねられている質問です。近年、目にするようになった、こうしたランサムウェアの脅威や洗練されたサイバー攻撃の蔓延からすると、こうした脅威に対して細心の注意を払うことは、ごく当然のことだと言えるでしょう。
IBM i のセキュリティというのは複雑なテーマであるため、箇条書きにしてまとめたり、システム設定を微調整したりすることで簡単に取り組めるようなものではありません。さらに言うなら、このプラットフォームでのプログラミングと同様です。そのため、セキュリティに対しても、プログラミングでそうするのと同じような注意を払うことが必要です。近頃では、アプリケーションは、セキュアでなければ、優れたものであるとはみなされません。少なからぬ企業が身をもって知った通りです。これは大きな意識変化であり、多くのIT組織は、これに対する準備を急ぐ必要があります。
それでは、まずはネットワーク脅威やウイルスからのIBM i の保護という観点から概観してから、ネットワーク アクセスおよびIFSのセキュリティを確保する方法について詳しく見て行くこととします。
以下の表は、サイバー犯罪および脅威に関する、最近のいくつかの統計調査のデータです。2021年には、11秒ごとに1件、企業がランサムウェアの被害に遭っていたことをご存じだったでしょうか。ランサムウェアは、勢いが止まるどころか、むしろ、より日常化し、より蔓延し、高度化しています。そして、このような脅威から身を守る準備がまだできていない企業は、驚くほど多いようです。最近の侵入テスト(業界用語では「ペン テスト」とも呼ばれます)の調査で明らかになったのは、サイバー犯罪者は、企業ネットワークの93%に侵入可能だということでした。実に、93%です。自分は7%の側だと誰もが思いたがるものですが、多くはそちら側ではないというのが現実です。そのため、どのようにしたらシステムを保護できるかについて、可能な限り多くのことを学んでおく必要があります。
セキュリティの知識および技能が、ほとんどまたはまったくないとするIBM i のショップは50%近いということです。これは、繰り返し何度も問題視しているものであり、皆さんも解決しようとしていて、私たちもその支援をしようとしている課題です。これは、たとえば、20年間にわたってセキュリティ対策を担当してきた職員が5年前に退職してしまって、それ以降、セキュリティ対策に目を向ける職員がいなかったからかもしれませんし、あるいは、今の担当者が単にどうしたらよいか分からないという状況なのかもしれません。そこで、少しでもそうした状況から脱出するお手伝いができたらと思います。併せて、ここからどこへ向かえばよいか、次のステップをいくつか紹介できればと思います。
ランサムウェアやこうした高度化したサイバー攻撃が話題になっているからといって、ニュース記事をじっくり調べて、最大の脅威がどこから来ているのか確かめようとしたりする必要はありません。主に企業や団体で見受けられるのは、フィッシングが相変わらずリストのトップであるという状況です。最近、目にした統計情報でも、ランサムウェア攻撃の40%以上がフィッシング スキームからのものであるということです。一方、リモート アクセスの脆弱性の悪用によるものも40%以上あったようです。また、ソフトウェアの脆弱性を悪用する、より高度化された脅威もあります。もちろん、組織内でのトレーニング不足もありますが、これについては私たちが取り組みを続けるしかありません。最も脆弱な部分が強化されなければ、セキュリティ全体として意味がないからです。システムで最も脆弱なパスワードが、システム全体のセキュリティの強度レベルとなるということです。
では、これらは具体的にはIBM i にどのように関係してくるのでしょうか。ネットワークへの露出は、IBM i に対する実効性の高い脅威となります。IBM i が組織内でファイアウォールの内側に置かれているからと言って、そのIBM i が、組織の内部側のネットワーク脅威に対して安全であるとは限りません。組織にとっておそらく外部側であるネットワーク脅威と変わるところはありません。多くのケースで、過度に露出されているオブジェクトや、IFSファイルおよびディレクトリーが見受けられます。つまり、許可やオブジェクト権限が正しく設定されていないということです。そこには貴重なデータが置かれていますが、そうしたデータは保護されていません。私たちは、IBM i がこのシステムに提供してきたツールを実装しようとしてもいないし、そこに保管されているデータを保護するために利用可能な構成を使用しようとしてもいないということです。また、あまりに多くの権限が付与されている、認証済みのプロファイルというものもあります。私たちは、これを何度も何度も目にしています。すなわち、全オブジェクト権限が付与されているプロファイルです。この権限は、システム上で極力、制限するべきです。極力、制限し、極めて慎重に管理する必要があるものです。
ところで、ウイルスというのは、IBM i に侵入することができるものです。こう書くと、「自分が何を言っているのか分かっているのか」と思う方もいるかもしれません。IBM i では、システムはEBCDIC文字フォーマットですが、一般に、Windowsなどのシステムを攻撃しているウイルスはASCIIフォーマットです。したがって、「IBM i に侵入する」ということが実際に何を意味するのか考えてみる必要があります。ネットワーク層(特に、ソケット出口点)のセキュリティが確保されていない場合、IBM i ではウイルスがIFS(統合ファイル システム)内に存在している可能性があり、そこから企業ネットワークに感染を広げる可能性があるということです。
QSIS.LIBはIFSの一部でもあります。そのため、IFSは、まるで、EBCDICではないWindowsディレクトリー構造のようなものです。そこにあるデータは破損する可能性があり、QSYS.LIBにあるデータはそうした構造の一部です。したがって、それはIFSを通じてアクセス可能です。それは変更される可能性もあり、破損する可能性もあり、損傷される可能性もあり、削除される可能性もあります。それに対する不正なアクセスがあった場合、そのアクセスが特定のユーザーからであるかどうか、手動であるかどうか、あるいはIFSへ侵入したマルウェアからであるかどうかにかかわらず、そのアクセスは被害を及ぼす可能性があります。IFSに対しては、特有のやり方で注目を払う必要があります。
ネットワークのセキュリティ対策に取り組もうとするときに、自問してみるべき2つの基本的な質問があります。すなわち、誰がシステムに接続しているか把握しているか、望まれていないネットワーク接続をブロックすることができるか、です。
これは、多くのシステムでよく目にするものです。あまりに多くの権限を持っているユーザー、すなわち、全オブジェクト権限を持つユーザーです。オブジェクト、ファイル、プログラム、データ域といったすべてのオブジェクトです。これらのオブジェクトへのアクセスは、たいてい無制限のままにされています。通常、私たちはこう思います。「OK、これがIBM i にサイン オンするやり方だ」 もちろん、何年も前は、いわゆる玄関ドア(ローカル サイン オン画面の玄関ドアと私は呼んでいますが)からサイン オンする方法は、これしかありませんでした。
次に、私たちはファイルやプログラムやデータ域へのアクセスを制御するのにメニューに依存していました。そのため、ユーザーがサイン オンすると、ファイルおよびプログラムへのアクセスは、初期メニューのユーザー パラメーターによって管理され、アプリケーションにはメニュー レベルでアクセスできるものに対する制限がありました。けれども今日では、この方法は、システムへサイン オンする方法として、おそらくあまり使用されなくなっています。IBM i 上のアプリケーションへ接続できるようにする数多くのリモート サーバーがあり、また、WebサーバーやSFTPのようなものを通じて接続するソケット接続もあります。このように、ユーザーは多くの方法で、IBM i 上のアクセス データにサイン オンすることができるようになっています。IBM i では、リモート サーバーはデフォルトでアクティブです。したがって、FTPも稼働し、データベース サーバーも稼働し、ファイル サーバーも稼働し、リモート コマンド サーバーも稼働します。
これらのサーバー(もっと多くのサーバーがあります)は、すべてデフォルトでアクティブであり、起動されています。これらのタイプのアクセスのロギングまたは監視は、デフォルトでは行われません。ソケット通信は有効化されており、それらはリモート サーバーの出口点を迂回します。つまり、リモート サーバーについて言えば、ソケット レイヤーとアプリケーション レイヤーのうち、より低いレベルに、ソケット レイヤーがあります。そのため、アプリケーションがソケットAPIを通じて接続しているときは、すでにセキュリティ設定が行われているかもしれない従来の出口プログラムまたは出口点は迂回されてしまいます。しかし、このことは、必ず念頭に置いて、注意を払うようにするべきことです。典型的または従来の出口点レベルでではなく、こうしたより低いレベルで侵入することができるものが多いからです。
全オブジェクト権限を持つこのユーザーが、システム上のファイルやプログラムやデータ域などへのアクセスを制限するメニュー構成によって制御されないとすれば、PUBLICは「star all(*ALL)」のままです。これは、誰もがそのデータにアクセスすることができることを意味しますが、いずれにしても、このユーザーがあまりに多くの権限を持ち過ぎなのです。では、アクセスを制御するメニューがないとしたら、何がこのユーザーまたはそれに伴う脅威を抑止しているのでしょうか。たとえそれが、ソケット接続を通じて入って来てそのデータにアクセスしようとしているJ. Smithであろうと、J. SmithのノートPCを乗っ取って、IBM i プラットフォーム上のデータへソケット接続しようとしているマルウェアであろうと、関係ありません。門番はどこにいるのでしょうか。これらのタイプのアクセスを監視し、セキュリティを確保してくれる検査は何でしょうか。デフォルトでは監査証跡はないため、デフォルトではセキュリティ対策がないということです。IBM i には、これを解決するインフラストラクチャー アーキテクチャーがありますが、初期状態では、何も行われません。
解決策は出口プログラムです。例としてFTPリモート サーバーを取り上げますが、出口点がいずれかのリモート サーバーに構成可能であり、その出口点に出口プログラムをインストールできる場合、出口プログラムは、出口点が呼び出されるときに処理されるユーザー記述プログラムです。そして、IBM i OSでリモート要求がサーバーに対して行われると、要求が実行される前に出口プログラムが処理されます。出口プログラムでは、要求が拒絶されるかどうか、または、要求が承認されたらデータにアクセスできるかどうかを判定することができます。繰り返すと、たとえそれがJ. Smithであろうと、彼のシステムを乗っ取ったランサムウェアであろうと、彼のシステムを乗っ取ったマルウェアであろうと、あるいは、彼や彼のシステムを乗っ取ったどんなユーザーであろうと、その要求は評価されるのです。飛び入り自由どころではなく、何でも入って来られます。ここに、その要求のセキュリティを確保し、その要求の監査も行うチャンスがあります。システムで起きていることを把握でき、誰がシステムにアクセスしているか確認することができるわけです。
「登録情報処理」を使用すると、IBM i で利用可能な出口点のリストを表示することができます。出口点を指定してオプション8を選択すると、インストールされている出口プログラムを表示することができます。この機能を使用して、出口点にインストールされている出口プログラムが何も表示されない場合は、リモート サーバー出口点でない出口点があるか、または、ネットワーク トラフィックに適用できない出口点があるかです。様々なタイプの出口点があります。ファイル サーバーFTPのようなタイプがなくとも、ソケット レイヤーがあったりします。出口プログラムが表示されない場合は、セキュリティ対策が何もないことを意味します。プログラムが表示されていて、それが何者なのか分からない場合は、脆弱性にもなり得るため、その正体を確かめておく必要もあります。その可能性はおそらく低いでしょうが、それが何を行っているか確認しておきたいものです。これらは強力なプログラムです。
参考情報: ソケットAPIは、特別なタイプの出口点を通じて接続します。それらは、リモート サーバーでありません。それは、異なるタイプの出口点です。IBM i プラットフォームは、ますますオープンソース システム プログラムおよびツールへの移行が進みつつありますが、これは素晴らしいことだと思います。IBM i のPASE環境を通じて、そしてSFTPトランザクションなどのようなものを使用するPuttyのようなクライアントを通じて利用可能なものは非常にたくさんあります。それらは、そうしたタイプを使用して、ソケット レイヤーでIBM i への接続を行います。ここで、Trinity Guardのソフトウェアを使用していたあるシステム管理者の、実際にあった事例を紹介します。その管理者が疑問に思っていたのは、何が原因で、ソケット トランザクション試行の失敗についてのアラートがたくさん送られてくるのかということでした。彼は、ソケット トランザクション失敗時にアラートを送信するようにTGDetectを構成していましたが、誰がIBM i システムにアクセスしようとしているのか見当がつかないようでした。そのため、私たちは、TGSecureおよびネットワーク セキュリティという製品を確認してみました。そこでは、出口プログラムを実装したり、着信トランザクションを確認してトランザクションの発信元のIPを表示したりすることができます。そうするうちに分かったのは、彼が見たIPは彼自身のものだったということです。これは、ちょうどLog4Shellの脆弱性が発表された頃のことでした。彼のWindowsマシンで脆弱性スキャンを実行したところ、案の定、マルウェアが検出されました。そのため、それをクリーン アップして、システムの残りの部分およびネットワークへの感染拡大は防ぐことができたという次第です。ここで取り上げているのは、そのようなことです。それらのソケット トランザクション試行はSFTPを通じてのものでした。この後で、それについての例を紹介するつもりです。
この図は、TGSecureの、着信トランザクションのスクリーンショットです。実に様々なデータが表示されていますが、これらは、出口点に出口プログラムをインストールしておいた場合に収集されるものです。たとえば、これはデータベース サーバーです。このトランザクションが着信すると、発信元のIPアドレス、発生した関数、トランザクションが発生した回数が分かります。これは、トランザクションが通過したことを示しています。そして、これが、アクセスされたオブジェクトが何だったかを示し、そして、もちろん、トランザクションのタイムスタンプもあります。前述の通り、出口プログラムでは、トランザクションを通過させたいか失敗させたいかを構成することができ、ここでそれを行うことができます。収集されたトラフィックを許可または拒否するルールを作成することができます。ここで確認できます。
当然のことながら、着信するものはすべて監視したいものです。これは、ソケット レイヤーで利用可能なデータの例であるに過ぎません。ソケット接続を監視する場合に、これらのタイプの接続が収集されるようにするには、QDレベルのシステム値を、net CMN、net fail、およびnet SOCが含まれるように設定します。
これは、実際のソケット出口点であり、これらのプログラムを書くには、非常に長い時間を要します。そうすることは可能であり、大歓迎ですが、これも自動化してあります。そのような複雑なシステムでは、自動化できるものは自動化するのがベストです。要は、セキュリティが確保されるようにしておきたい極めて重大なものということです。
TGSecureでは、ルールが作成される場合、通過の場合と失敗の場合のアクションを定義することができます。これらのトランザクションでも同様にアラートを受け取るようにすることもでき、誰かがシステムにアクセスしようとしたときにメールでアラートを受け取ることができます。ちなみに、TGCentralは、TGSecurity Suite向けのWebベースのGUIコンソールです。
IFSのセキュリティについて言えば、すべてのリモート アクセス ポイントを通じてのIBM i への接続は、ブロックするか、または、少なくとも監視してから追跡しておきたいものです。IFSは非常にオープンである場合があるため、そのことは重要です。IFSフォルダーのPUBLICの権限設定と、そこにあるファイルに対する許可について把握しておく必要があります。また、IFSの権限の変更を監視できるどうかについても知っておく必要があります。組織によっては、膨大な量になることは承知していますが、行えないことではありません。まず、IFSで許可がどのように指定されているか理解しておく必要があります。それを行うには、コマンド ラインで「WRKLNK」と入力し、オプション9を選択して「権限の処理」に移動します。そこでは、現在のディレクトリーで利用可能なすべての許可を確認できます。
また、QSHELL環境へ移動し、ls - lを実行して、許可および所有権をリストすることもできます。これは、まさにここで確認しようとしているデータのタイプです。基本的には、ディレクトリー リストを確認することになります。次いで、ファイル ディレクトリーであるか、シンボリック リンクであるかなど、項目のタイプを確認できます。それから、許可のタイプです。次いで、項目の所有者、グループ、およびOTHERSに対する読み取り、書き込み、実行の許可です。そして、OTHERSは、基本的にPUBLICです。たとえば、ルート ディレクトリーでOTHERSが読み取り、書き込み、または実行を行える場合は、大きな脆弱性があることになります。そこでは誰もが何にでもアクセスすることができるからです。また、システムに対してランサムウェア攻撃があった場合に、ルートがオープンであると、ルートに侵入され、IFS全体が破壊される可能性があることは言うまでもありません。
IBM i 上のデータへアクセスする方法には様々なものがあり、これは同じタイプの問題です。ここでは、オブジェクト権限としてではなく、IFSファイルおよびディレクトリー、およびそれらに対する許可としてこれを見ることができます。ドライブをIFSへマップさせていない場合でも、このデータはやはり脆弱である可能性があります。何度かSFTPに言及しました。やはり、それは、アプリケーションがファイル サーバーをどのようにして迂回することができるかを示す最たる例です。そのアクセスは、リモート サーバーを経由しません。
IFSで許可がどのように構成されているかは非常に重要です。PUBLICが機微なデータに対して読み取り、書き込み、実行になっていないことを確認し、ルート ディレクトリーをロック ダウンし、時間を掛けて利用可能な許可を分析してから、そうしたセキュリティ スキームを実装する必要があります。それを行うには、強力なIFSアクセス許可を実装して、change authコマンドを使用することができます。また、そこでは、データ権限とオブジェクト権限も設定することができます。また、QSHELLコマンドを使用して、権限の問題を解決することもできます。ファイルまたはディレクトリーに対する許可を変更するには、 chmod コマンドを使用することができ、ファイルまたはディレクトリーの所有者を変更するには、 chown コマンドを使用することができます。
お勧めの方法は、TGSecureを使用することです。リソース マネージャーには、権限スキーマを構成するためのオプションがあります。そのため、IFSで権限がどのように表示されるようにしたいかセットアップすることができます。
たとえば、この画面では、IFSオブジェクトとネイティブ オブジェクトの両方が表示されています。これは、ネイティブ オブジェクトに対するオブジェクト権限も同じように重要だからです。ここでは、どのように設定されているかについて少し見てみましょう。このディレクトリーのオブジェクト所有者がTGOWNERとなるようにして、権限リストでそれを保護しています。また、PUBLICユーザーをEXCLUDEに設定して、誰もこのディレクトリーにアクセスできないようにしています。
次いで、ディレクトリーの所有者に対して、このFINANCEライブラリーに対する読み取り、書き込み、実行の権限を付与しています。PUBLIC権限をAUTLに設定しており、権限リストはTGAUTLです。また、TGOWNERを、このライブラリーに対するすべての権限を持つように設定しています。このツールを使用すると、権限が希望通りのものになるように構成することができます。また、TGSecureには、権限収集のデータをソートするオプションもあります。このオプションは、そのデータが、システムに対する最少の特権モデルを判定するのに使用したいものである場合に使用することで、アプリケーションの稼働のために必要とされる最小限の権限はどのようなものかを把握することができます。
また、権限コンプライアンス レポートを生成することもできます。このレポートは、スキーマの範囲内で、スキーマの現行値と期待値を、スキーマ内にある項目ごとに表示します。これは、権限が何であるべきか、および現在の権限が何であるかを確認するのに非常に便利です。また、それを権限スキーマ全体に適用することができ、さらに自動化することもできます。
まとめると、出口点プログラムは、リモート サーバーおよびソケット接続のネットワーク アクセスを監視したり、セキュリティ設定したりするのに使用することができます。デフォルトではリモート接続の監視は行われないため、データを保護するには、IFSのファイルおよびディレクトリーの許可を保護する必要があり、また、許可が変更されていないか定期的に監視する必要があるということです。
セキュリティに対する取り組みを始めたばかりの場合は、ご使用のシステムに対して 無償のセキュリティ診断 を実施してみることをお勧めします。まずは、IBM i サーバーのセキュリティの現状について把握することです。もう少し経験を積まれている場合は、 TGSuiteに含まれるすべてのツールをダウンロード(30日間の無償トライアル) して、システムに関するいくつかのレポートを実行してみることをお勧めします。これらのツールを利用することで、システムに対する最少の特権モデルの情報を収集でき、生成されるレポート カードを確認することで現在の状況についての理解を深めることができます。また、IFSおよびネットワーク セキュリティをテーマとした こちらのオンデマンド セッションもご覧いただけます (TGSuiteのライブ デモを含む)。