【入門編】 製造業における生産ラインの可用性を維持するセキュリティ対策 – IoT・OT(制御システム) & ブロックチェーンセキュリティ防御ガイド

製造業の現場で働く新人IT担当者や、セキュリティの世界に足を踏み入れたばかりの開発者の皆さん、こんにちは!

「工場を止めるな。しかし、セキュリティは妥協するな」――これは、OT(制御システム)やIoTの世界に身を置く私たちにとって、永遠の十字架のようなテーマです。

オフィスで使っているパソコンなら、調子が悪くなれば再起動すればいいですし、重要なセキュリティアップデート(パッチ)があれば、夜間にこっそり適用して翌朝には何食わぬ顔で動かすことができますよね。
しかし、ひとたび製造現場の生産ラインに目を向けると、話は180度変わります。何億円もする巨大な工作機械を動かしているのは、なんと10年以上前に発売されたWindows XPやWindows 7といった「レガシーOS」だったりします。しかも、「この制御プログラムをアップデートすると、最悪の場合ライン全体の動作がおかしくなり、1時間止まるだけで数千万円の損害が出る」なんてことが日常茶飯事なのです。

「じゃあ、パッチを当てずにそのまま放置するの?」
「いやいや、それじゃあサイバー攻撃の格好の餌食だよ!」

そんなジレンマに頭を抱えているあなたへ。今回は、工場を絶対に止めずに、古いシステムをサイバー脅威から守り抜くための「仮想パッチ」と「ネットワーク分離」の最適解について、身近な防犯の例えを交えながら、一歩ずつ優しく紐解いていきたいと思います。

—

1. 家の鍵に例える「レガシーOSとパッチ適用のジレンマ」

まずは、なぜ工場でパッチをすぐに当てられないのか、皆さんの身近な「家」に例えて考えてみましょう。

想像してください。あなたが住んでいる古民家(レガシーOS)には、とても頑丈だけど古い木製の鍵がついています。ある日、大工さん(OSのベンダー)がやってきて、こう言いました。
「おいおい、この鍵の構造に新しい弱点が見つかったぞ! 空き巣が特殊な工具を使えば、簡単に開けられちまうんだ。この最新の電子ロック(パッチ)に全取り替えしなきゃいけない!」

さて、ここで問題です。その電子ロックを取り付けるためには、分厚い木の扉を豪快にノミで削り、配線を這わせる大工事が必要です。工事の間は、玄関の扉を丸一日外しっぱなしにしなくてはなりません。

……困りましたよね。あなたの家は「24時間365日、常に家族が出入りするコンビニ」のような場所です。そんな大工事をして扉を外していたら、工事の隙に泥棒に入られてしまいます。だから、「うーん、危ないのは分かってるけど、このまま騙し騙し使うしかないか……」と、そのままにしてしまうのです。

これが、製造業の現場で起きていることの正体です。パッチを当てたい。でも、システムを止めるわけにはいかない。このジレンマを鮮やかに解決するのが「仮想パッチ」というアプローチです。

—

2. 仮想パッチとネットワーク分離の仕組み

では、家を丸ごとリフォーム(パッチ適用)できないなら、どうすればいいでしょうか?

「家そのものをいじるのは無理でも、敷地の入り口に屈強なガードマンを置いたり、怪しい奴が近づいたら門前払いするセキュリティゲートを作ればいいのでは?」

その通り!それがネットワーク分離と仮想パッチの考え方です。

ネットワーク分離:そもそも怪しい奴を近づけない

工場の生産ライン(OTネットワーク)と、私たちが普段メールをしたりネットサーフィンをしたりするオフィスネットワーク(ITネットワーク)、そして外部のインターネットは、絶対に同じ部屋(同じネットワーク空間)に同居させてはいけません。

オフィス側からマルウェア(悪意あるプログラム)が侵入したとしても、工場の扉の手前で頑丈な鉄格子(ファイアウォール)がガッチリとガードしていれば、レガシーOSが眠る心臓部までたどり着くことはできません。

仮想パッチ:傷口に絆創膏を貼るように「通信の不正」を検知して遮断する

古いOS自体のプログラムを書き換える(パッチを当てる)のが無理なら、そのOSに向かって飛んでくる「怪しい通信(攻撃のパケット)」を、手前の番人(IDS/IPS:侵入検知・防御システム)に見張ってもらい、不正なものだけを途中でスバッと切り捨てる技術、それが仮想パッチです。

これは、古い鍵穴の構造そのものを直すのではなく、「鍵穴にピッキングツールを差し込もうとする手」を、番人が見つけてその場でガッチリ押さえるようなものです。これなら、家の大工事(システムの停止)をする必要がありませんよね!

—

3. 実践!ネットワークの番人「ファイアウォール」の設定を覗いてみよう

百聞は一見にしかず。現場のインフラエンジニアがよく使う、ネットワークの境界を守るための設定サンプルを見てみましょう。

今回は、パケットをフィルタリングするルーターやファイアウォールの設定をイメージした、擬似的な設定ファイル(YAML形式)です。難しそうに見えますが、日本語のコメントを読めば「何を許可して何を拒否しているのか」がスッと頭に入ってくるはずです。

# 制御システム(OTネットワーク)を守るためのファイアウォールルール例
firewall_rules:
  - rule_id: 101
    action: allow
    source: "192.168.10.0/24"      # 管理者のメンテナンス用端末が置かれたセグメント
    destination: "10.100.50.0/24"  # 製造ラインのPLC(制御用コンピュータ)が眠るセグメント
    protocol: tcp
    port: 502                      # Modbus(産業用制御ネットワークの標準プロトコル)のポート
    description: "【正常な通信】指定された管理者端末からの制御指令のみ許可する"

  - rule_id: 102
    action: deny
    source: "192.168.20.0/24"      # 社員の一般オフィスLAN(インターネットに繋がっている)
    destination: "10.100.50.0/24"  # 製造ラインのセグメント
    protocol: any
    port: any
    description: "【鉄則の分離】オフィスLANから工場ネットワークへの直接アクセスは一切禁止!"

  - rule_id: 999
    action: deny
    source: "any"                  # すべての送信元
    destination: "10.100.50.0/24"  # 工場ネットワーク
    protocol: any
    port: any
    description: "【デフォルト拒否】上記で許可されていない通信は、すべて問答無用でブロックする"

この設定のポイントは、rule_id: 102 と rule_id: 999 です。「オフィスからは工場を絶対に覗かせない」「許可されていない怪しい通信はすべて追い返す(デフォルト・デンジャーならぬデフォルト・デンナイ)」という鉄則をコードで表現しています。

—

4. 仮想パッチ(IPS)で不正な侵入を防ぐ仕組み

次に、ネットワークの番人に「怪しい攻撃パターン」を覚え込ませる仕組みを見てみましょう。
レガシーOS(例えばWindows 7など)の特定の脆弱性を狙った攻撃は、通信の中に決まった「合言葉(シグネチャ)」が含まれています。

以下のサンプルコード(Python風の疑似スクリプト)は、ネットワークを流れるパケットを監視し、既知の攻撃パターンを見つけたら即座に遮断する仮想パッチの動作イメージです。

# 仮想パッチ(IPS)のパケット検査エンジン(概念コード)

# 制御システムを狙う有名な脆弱性(例:MS17-010 EternalBlueなど)の攻撃シグネチャ
KNOWN_ATTACK_SIGNATURES = [
    b"\x00\x00\x00\x90\xff\x53\x4d\x42",  # レガシーOSの共有フォルダを狙う不審なバイト列
    b"A" * 1024,                           # バッファオーバーフローを狙う異常な長さのデータ
]

def inspect_and_filter_packet(packet_data):
    """
    ネットワークを流れるパケットを検査し、仮想パッチとして機能させる関数
    """
    for signature in KNOWN_ATTACK_SIGNATURES:
        # パケットの中に攻撃のシグネチャが含まれているかチェック
        if signature in packet_data:
            # 攻撃と判定した場合の処理
            log_security_alert("【警告】レガシーOSの脆弱性を突く攻撃を検知しました!通信を遮断します。")
            return "DROP"  # パケットを即座に破棄する(仮想パッチによる防御発動!)

    # 異常がなければ通信を通す
    return "ALLOW"

def log_security_alert(message):
    # 現場のセキュリティ担当者の画面にアラートを飛ばす処理
    print(f"[SECURITY ALERT] {message}")

このように、OSの内部をいじらなくても、手前のゲートウェイやセキュリティアプライアンスでパケットを検査し、仮想パッチとして機能させることで、レガシーな制御システムを安全に延命させることができるのです。

—

まとめ:一歩ずつ、確実な防犯の網を広げよう

いかがでしたでしょうか?
「パッチが当てられないレガシーOS=もう打つ手なしの欠陥住宅」ではありません。

1. ネットワークを綺麗にゾーニング(分離)し、オフィスと工場を行き来させない。
2. 工場の手前に番人(ファイアウォールやIDS/IPS)を置き、仮想パッチによって古い傷口を狙う攻撃を水際でブロックする。

この2つを組み合わせることで、稼働停止が絶対に許されない製造現場の可用性を守りつつ、サイバー脅威からシステムを堅牢にガードすることが可能になります。

セキュリティ対策は、一気にすべてを完璧にやろうとすると必ずどこかで歪みが生じ、現場の反発を招きます。「まずはここを塞ごう」「次にこの番人を置こう」と、一歩ずつ、現場のエンジニアと対話しながら進めていくことが何よりも大切です。

さあ、今日からあなたの現場でも、できることから一歩ずつ対策を学んで、実践していきましょう!

コメント

タイトルとURLをコピーしました