ICS/SCADA プロトコルをテストするためのラボの作成
Resolution
概要
産業用制御システム (ics) を持つ組織は、しばらくの間、IT (企業ネットワーク) と OT (ics ネットワーク) との境界を確保するための道筋をとっています。多くの最初のステップは、パロアルトネットワークからファイアウォールを使用して、2つのネットワーク間の簡単なセグメンテーションを提供することでした。これは、悪意のある活動の可視性とパケット検査の初期要件を満たしています。企業は、ICS 内のセキュリティの姿勢を改善するために努力するように, 実装前にテストするための強力な必要性がある. このドキュメントでは、パロアルトネットワークファイアウォール内の appID、ユーザ id、およびその他の機能をテストするために、IT/OT 境界をシミュレートする方法について説明します。このラボ全体を1台のラップトップで仮想化できます。
要件
必須項目 | ノート |
パロアルトネットワーク仮想アプライアンス | VM50、パノス8.0.6 でテスト。 |
Windows 仮想マシン | Java でシミュレートされた HMI インタフェース用。 |
MAC OSX 版 | 10.12.6 でテスト, Xcode の環境が必要です (同様に、カリの Linux VM にインストールすることができます). |
MAC 用の VM フュージョン | フュージョンプロ v 8.5.8 でテスト。Windows 用の VM ワークステーションも使用できます。 |
ModBusPal Java マシン | v 1.6 b でテストされています。ポーリング PLC デバイスをシミュレートします。 |
MBTGET | Github からクローンを作成します。ポーリングサーバーをシミュレートします。 |
Java (Windows VM の場合) | JRE v9、64ビットでテスト。 |
図
VM フュージョンを構成する
ラボで使用される2つのネットワークは、ラベル vmet2 (PLC ゾーンの場合) と vmnet3 (ポーリングゾーンの場合) です。ここで示す例は、MAC での vm フュージョン用ですが、vm ワークステーションにも同じ原理が適用されます。注: VM50 ファイアウォールの電源をオンにしないでくださいまだ、最初に行う2つの重要な手順があります。
Vmnet2
Vmnet3
3番目のネットワークアダプタは、VM フュージョンの VM50 ファイアウォール設定で追加する必要があります。
アダプタを次のように割り当てます。
- vmnet3 へのネットワークアダプタ
- ネットワークアダプタ 2 ~ vmnet 3
- ネットワークアダプタ 3 ~ vmnet2
VM 構成ファイルは、3つのrdネットワークアダプター 用に編集する必要があります。フュージョンでは、ライブラリに移動し、VM50 を右クリックし、"Finder で設定ファイルを表示" を選択します。
その後、フォルダ内の VM ファイルを右クリックし、[パッケージの内容を表示] を選択します。
vmx ファイルを検索し、TextEdit または別のテキストエディタで編集します。次に示すように、ethernet2 の仮想デバイスを "vmxnet3" に変更してください。ファイルを保存します。[パッケージコンテンツ] フォルダが閉じている可能性があります。Fusion ライブラリから、VM50 ファイアウォールが起動されることがありました。
ファイアウォールの管理 IP アドレスを構成するには、次の手順に従います。
デバイスライセンスと登録を適用するには:
初期ファイアウォールポリシーの構成
最初のファイアウォールポリシーにより、ポーリングゾーンと PLC ゾーン間のすべてのアプリケーションが許可されます。すべてのアクティビティがログに記録され、この時点で構成するプロファイルがありません。
セキュリティ ポリシー
NAT のポリシー
イーサネット インターフェース
既定の静的ルートを覚えておいてください。私はデフォルトの仮想ルータを使用しています。VMWare Fusion の場合、予約されたデフォルトゲートウェイ IP は vmnet3 に192.168.55.2 ます。
アドレスオブジェクト
サーバーとクライアントの構成
PLC デバイスとして機能する Windows マシンでは、vmnet2 (ファイアウォールの PLCZone) にイーサネットインターフェイスを置くようにしてください。ファイアウォールインターフェイスへのデフォルトゲートウェイポイントであることを確認してください: 192.168.45.20.
ModbusPal は PLC レジスタのシミュレーションに使用されます。あなたはここでそれをダウンロードすることができます:
https://sourceforge.net/projects/modbuspal/files/modbuspal/RC%20version%201.6b/
Java ランタイム環境が必要です。要件が満たされたら、コマンドウィンドウを開き、ModbusPal が常駐しているディレクトリに移動して、次のように起動します。
「追加」を選択することで、「スレーブ」セクションを追加します。
今のところ1つのスレーブを追加し、[追加] をクリックします。
新しいスレーブに名前を入力し、目をクリックして設定します。
[レジスタの保持] タブで、テストするレジスタの量を追加します。
作成したアドレスの値と、必要に応じて名前を指定します。
[コイル] タブでも同じ操作を行います。バイナリ値と、必要に応じて名前を追加します。
完了したら、スレーブウィンドウを閉じます。[すべて有効] ボタンをクリックして、スレーブが有効になっていることを確認します。[実行] をクリックしてシミュレーターを起動します。
MBTGET ツールを使用してポーリングサーバーをシミュレートするには、GitHub からツールを複製する必要があります。あなたはここに無料の MAC/Windows クライアントをダウンロードすることができます:
オプションで、このツールは、カリの Linux 仮想マシン上に複製することができます。MBTGET ツールのクローンを作成するには、ターミナルまたはコマンドプロンプトから次の手順に従います。
MBTGET のヘルプ画面:
静的なルートは、PLC シミュレータに到達するために、画像をホストするラップトップ上に作成する必要があります。
MAC の場合:
#須藤ルート-n を追加ネット 192.168.45.0/24192.168.55.20
環境のテスト
画像が正常に動作していることを確認するには、ターミナルウィンドウを開き、MBTGET を使用してポーリングを開始します。結果のポーリングには、ModbusPal 内の保持レジスタで作成した値が表示されます。"-n" の後の値は、作成したレジスタの数と一致する必要があります。
appID でのテスト
より肯定的なセキュリティの姿勢に向けて移動するには、appID を実装することから始めることができます。ここでは、我々は単に我々が許可したいサブファンクションのアプリケーションとを追加します。私の例では、私は、PLCZone に PollingZone から使用される唯一の許可されたアプリケーションとして、ベースとレジスタをリードしています。
MBTGET ツールを実行した後、ログを確認してアプリケーションの recogniztion を確認し、ポリシーによってアクションが許可されました。
appID ルールでは、レジスタのみを保持するための読み取り要求を許可しています。我々は、コイルを読み取るために要求する MBTGET を使用することができます。要求は失敗します。
ログには、要求が失敗したことと、コイルレジスタを読み取ろうとしたことが示されていますが、これはポリシーで許可されているものではありません。
appID とユーザ id を使用したテスト
攻撃面をさらに減少させるには、特定のユーザーからのレジスタ読み取りのみを許可するようにユーザ id を適用します。
[デバイス/ローカルユーザーデータベース/ユーザー] で、2つのテストユーザーを追加します。
[デバイス/ローカルユーザーデータベース/ユーザーグループ] で、各ユーザーを別のグループに配置します。私の例では、グループ "CanReadHolding" に user1 を追加し、グループ "CanReadCoils" には、。
[デバイス/認証プロファイル] で、新しい認証プロファイルを作成します。種類の [ローカルデータベース] を選択します。
[詳細設定] タブで、[すべてのユーザー] を選択します。
[ネットワーク/インターフェイス/ループバック] で、認証のためにユーザーをリダイレクトするループバックアドレスを作成します。
[IPv4] タブの下に IP アドレスを入力します。それはあなたの PollingZone と同じ範囲からであることを確認してください。
[デバイス/ユーザー id/キャプティブポータル] で、表示されているキャプティブポータルの設定を編集します。先ほど作成した IPv4 ループバックアドレスを使用します。
[ポリシー/認証] で、表示された値を使用して新しい認証ポリシーを作成します。
[ポリシー/セキュリティ] で、最初のルールを編集し、保持レジスタを読み取るためのユーザーグループを追加します。
変更されたルールは次のようになります。
ループバックへの認証トラフィックを許可する新しいルールを追加して、キャプティブポータルが機能するようにします。
変更をコミットします。
MBTGET で保持レジスタを読み取ろうとすると、失敗したことがわかります。
トラフィックログによって、読み取り要求が ExplicitDeny ルールによって拒否されたことがわかります。これは、ユーザ id の要件が満たされていないためです。
このセットアップでユーザー認証を開始するには、キャプティブポータル用に作成されたループバックアドレスを参照し、保持レジスタの読み取りを許可されているユーザーとログインします。
[監視/ユーザー ID] の下の一覧で、認証されたユーザーを参照します。
MBTGET 世論調査を再試行し、それが再び成功する必要があります。
トラフィックログには、レジスタ読み取りに関連付けられた認証済みユーザーも表示されます。
ファイアウォール CLI から、これら2つのコマンドを発行して、すべてのユーザ id データを消去します。
保持レジスタの読み取りを許可されていない別のユーザーを使用して、再度ログインを開始します。
MBTGET レジスタの読み取りを試行し、それが $ a に対して失敗することを確認します。
トラフィックログに失敗した理由は、トラフィックが他のルールと一致しなかったため、ExplicitDeny が原因であることに注意してください。特に、CanReadHolding グループのメンバではないため、レジスタの読み取りは失敗します。
概要
この仮想ラボでは、より多くのシナリオを使用して、ICS 環境内のセキュリティの姿勢をさらに高めることができます。たとえば、OT ネットワークにアクセスするユーザーのための多要素認証の追加。ルールセットへのセキュリティプロファイルの追加は別です。攻撃は、metasploit などのツールを使用してシミュレートすることもできます。この記事では、PAN-OS 8.0 のログプロファイル機能を使用して悪意のある動作を監視し、違反があった場合に ICS ユーザーを隔離された状態で配置する方法について説明します。https://live.paloaltonetworks.com/t5/Learning-Articles/保護-ICS と-SCADA の-ネットワーク-と-PAN-OS の-8-0/ta-p/ 180651