【入門編】 PLCの通信ポートに対するポートスキャン検知と異常トラフィック分析 – IoT・OT(制御システム) & ブロックチェーンセキュリティ防御ガイド

みなさん、こんにちは!IoT・OT(制御システム)セキュリティのリサーチャーをしている私です。

普段は、工場の機械を動かすコンピューター(PLC)や、最先端のWeb3・ブロックチェーンの世界を行ったり来たりしながら、「どうやったらハッカーの侵入を防げるか」を日々研究しています。

さて、IT企業から「今日から工場のセキュリティもよろしくね!」と配属された新人のみなさんや、普段はWebアプリばかり作っていて「OT(制御システム)って何それ美味しいの?」という開発者のみなさん。突然、工場の裏側にあるPLC(Programmable Logic Controller)の守りを任されて、頭を抱えていませんか?

「ポートスキャン?」「PLCの通信?」なんだか難しそうな言葉が並んでいますが、心配いりません!今回は、身近な「家の防犯」にたとえながら、PLCを守るための技術を一緒に一歩ずつ優しく学んでいきましょう!

—

1. 家の鍵と泥棒にたとえる「PLCの通信ポート」

まずは、私たちが普段暮らしている「お家」を想像してみてください。

あなたのお家には、玄関のドアだけでなく、勝手口、窓、ベランダなど、外につながる「出入り口」がたくさんありますよね。セキュリティの世界では、この出入り口のことを「ポート」と呼びます。

そして、工場を動かす頭脳であるPLCという機械にも、外部からパソコンで設定を変えたり、データを読み取ったりするための「デジタルな出入り口(通信ポート)」がたくさん開いています。たとえば、Modbusという通信方式なら 502 番、Siemens社のPLCなら 102 番といった具合に、出入り口ごとに番号が決まっています。

泥棒(攻撃者)の手口:まずは「ガチャガチャ」確認から

もし、泥棒があなたのお家に入ろうとしたら、いきなり窓をブチ破るでしょうか?
ううん、違いますよね。まずは人目を盗んで近づき、すべての窓やドアを「ガチャガチャ」と手で回して、鍵が掛かっていない(=開いている)出入り口がないかを確認するはずです。

この「家じゅうのドアを片っ端からガチャガチャと試して回る行為」こそが、サイバーセキュリティでいう「ポートスキャン」なんです!

攻撃者は、PLCの通信ポートに対してこのスキャンを行い、「おっ、この工場のPLCは 502 番のドアが開きっぱなしだな!ラッキー!」と、侵入のチャンスを虎視眈々と狙っています。

—

2. OT(制御システム)環境特有の「いつもと違う」を見つける

ITの世界(普段私たちが使うWebサイトやオフィスのPC)なら、誰かが夜中にアクセスしてきても「残業かな?」で済むかもしれません。しかし、工場などのOT(制御システム)の世界では話がまったく違います。

工場のPLCは、毎日決まった時間に、決まった機械とだけ、決まったおしゃべり(通信)を淡々とするのがお仕事です。つまり、「いつ、誰と、どんなおしゃべりをするか」のルーティン(ベースライン)がガチガチに決まっているのです。

ここに、セキュリティの大きなチャンスがあります。

家の防犯カメラと番犬の役割

想像してみてください。あなたの家のまわりを、夜中の3時に見ず知らずの怪しい人物がうろちょろしていて、家中の窓を片っ端から触って歩いていたら……?
「おい、何をしているんだ!」と、すぐに防犯カメラや番犬が気づきますよね。

OT環境におけるIDS(侵入検知システム)も、まさにこの「優秀な番犬」の役割を果たします。
普段は静かな工場ネットワークにおいて、以下のような「いつもと違う動き」をピリッと察知するのが、PLCを守るための鍵になります。

  • 見たこともない知らないIPアドレス(外部の怪しいやつ)からのアクセスがある
  • いつもは1分に1回しか通信しないのに、何万回もパケットを送りつけてきている(ポートスキャンやDDoS攻撃の兆候)
  • 制御に使わない変な言葉(コマンド)でPLCに話しかけている

—

3. 実践!Snortを使ったPLC用ネットワークIDSのチューニング

「じゃあ、その番犬はどうやって設定すればいいの?」という声が聞こえてきそうですね。
ここからは、実際にネットワークの監視によく使われるオープンソースのIDS(例:Snortなど)をイメージしながら、PLCの通信ポート(今回はModbusの 502 番ポートを例にします)を守るための設定ルールを見ていきましょう!

難しそうに見えますが、一行ずつ意味を解説するので安心してくださいね。

# 【Snortルール設定例】見知らぬIPからのModbusポートスキャンや異常なアクセスを検知する
alert tcp any any -> 192.168.10.50 502 (
    msg:"[OT-SECURITY] 警告: 未知のホストからPLC(Modbus)への不審なスキャンまたはアクセスを検知";
    flow:to_server,established;
    threshold: type threshold, track by_src, count 5, seconds 10;
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
)

設定ルールの優しい解説

1. alert tcp any any -> 192.168.10.50 502

  • 「もし、どこかの誰か (any) から、我が工場のPLC(192.168.10.50)のModbusポート(502)宛てにTCP通信が来たら、アラート(警報)を鳴らしなさい!」という意味です。

2. msg:"..."

  • 警報画面に表示されるメッセージです。日本語で分かりやすく書いておくと、後でインシデント(事件)が起きたときに慌てずに済みます。

3. threshold: type threshold, track by_src, count 5, seconds 10;

  • ここが今回のミソです!「同じIPアドレスから、10秒間に5回以上の不審なアクセス(ガチャガチャ)があったときだけ、本気のアラートを鳴らす」という設定です。これによって、ちょっとした通信エラーでの「誤検知(オオカミ少年)」を防ぎます。

4. sid:1000001

  • ルールを管理するための固有のID番号(背番号のようなもの)です。

—

4. 現場の泥臭いインシデントハンドリング:アラートが鳴ったらどうする?

さて、夜中に「ピピッ!」とスマホが鳴り、先ほど設定したIDSがアラートをキャッチしました。新人のみなさん、ここでパニックになっていきなり工場のブレーカー(電源)を落としてはいけません!現場の対応には、ちょっとしたコツと「泥臭さ」が必要です。

ステップ1:本当に「怪しい奴」か落ち着いて確認する

まずは、アラートを出した相手のIPアドレスを確認します。
もしかすると、それは先週新しく入った社内のメンテナンス用PC(保守員さんの端末)で、新しい担当者がうっかりマニュアルを見ながら接続テストをしていただけ……なんてことは、現場ではよくある話です。

「誰が、何の目的で、そのポートを叩いているのか」を、社内の台帳や現場のエンジニアに声をかけて泥臭く確認しましょう。「すいません、今そちらのPLCに繋ぎました?」と一言聞くだけで、大体の誤解は解けます。

ステップ2:ベースライン(普段の姿)を常にアップデートする

工場は生き物です。新しい機械が導入されたり、システムのバージョンアップが行われたりすると、通信のパターン(ベースライン)も変わります。
「一度ルールを作ったら終わり」ではなく、現場の生産スケジュールに合わせて、セキュリティのルールも定期的に見直し(チューニング)していくことが、優秀なエンジニアへの第一歩です。

—

まとめ:一歩ずつ、確実な守りを固めよう

今回は、PLCの通信ポートに対するポートスキャンと、異常トラフィックの検知について、お家の防犯にたとえながら解説しました。

  • ポートスキャン = 泥棒が家中の窓をガチャガチャと確認する行為
  • OT環境のIDS = 工場を守る優秀な番犬
  • チューニング = 誤報を防ぎ、本当に危ないときだけ吠えるように調教すること

初めてセキュリティの世界に触れるときは、覚えることが多くて圧倒されてしまうかもしれません。でも、一つひとつの仕組みを「身近なもの」に置き換えて考えていけば、必ず本質が見えてきます。

焦らず、一歩ずつ、安全で強いシステムを一緒に作っていきましょうね!それではまた次回の記事でお会いしましょう!

コメント

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