【入門編】 Modbus/TCPプロトコルの脆弱性と認証欠如への対策 – IoT・OT(制御システム) & ブロックチェーンセキュリティ防御ガイド

皆さん、こんにちは!日々進化するIT技術ですが、最近は「IoT(モノのインターネット)」や、工場・インフラを支える「OT(制御システム)」のセキュリティがとても注目されています。

「工場のシステムって、インターネットに繋がっていなければ安全なんじゃないの?」と思われがちですが、実は近年、スマート工場化や遠隔メンテナンスの導入によって、オフィスネットワークやインターネットと繋がる機会が急増しています。

そこで今回は、多くの産業現場で長年使われている通信規格「Modbus/TCP(モドバス・ティーシーピー)」にスポットを当てます。このプロトコルが抱える「認証がない」という弱点と、それを狙う攻撃からシステムを守るための「カプセル化(VPN)」や「産業用ファイアウォール」の仕組みについて、身近な「防犯」の例えを交えながら優しく紐解いていきます。

セキュリティに初めて触れる新人のIT担当者の方も、一歩ずつ一緒に対策を学んでいきましょう!

—

1. Modbus/TCPとは?:工場で働く「超・素直なメッセンジャー」

まず、Modbus/TCPがどんなものかを知ることから始めましょう。

Modbus/TCPは、工場の中にある「PLC(プログラマブルロジックコントローラ)」と呼ばれる制御装置や、温度センサー、モーターなどの機器同士が会話をするための共通言語(プロトコル)です。

これを人間の世界に例えるなら、「工場の監督(SCADAや監視端末)」から「現場の作業員(PLC)」へ、指示書を届けるメッセンジャーです。

  • 監督(SCADA):「おーい、温度を30度にしてくれ!」
  • メッセンジャー(Modbus/TCP):指示を預かって走る
  • 作業員(PLC):「了解!30度にします!」

このように、とてもシンプルかつ確実に指示を届けてくれる優秀なメッセンジャーとして、世界中の工場で大活躍しています。

—

2. なぜ危険なの?:鍵のない手紙と、誰でも入れる泥棒の盲点

非常に便利なModbus/TCPですが、実は生まれた時代が「インターネットやサイバー攻撃」なんて想定もされていなかった数十年前であるため、セキュリティ機能がまったく考慮されていません。

具体的には、以下の2つの大きな弱点があります。

弱点①:相手を確かめる「鍵(認証機能)」がない

Modbus/TCPには、「本当に監督が書いた指示書なのか?」を確認するサイン(パスワードや暗号鍵)がありません。
作業員(PLC)は、届いた指示書(Modbusコマンド)を「すべて本物」だと信じ込んで、そのまま実行してしまいます。

弱点②:中身が丸見え(暗号化されていない)

指示書はハガキのように、誰でも読める平文(暗号化されていない状態)で送られます。

泥棒が狙う攻撃のメカニズム

この弱点があるネットワークに、もし悪意を持った泥棒(サイバー攻撃者)が忍び込んだらどうなるでしょうか?

【正常な通信】
 監視端末 (SCADA)  -------- [指示:バルブを開けろ] -------->  制御装置 (PLC)

【攻撃者による割り込み(中間者攻撃 & コマンド注入)】
 監視端末 (SCADA)                                            制御装置 (PLC)
        |                                                           ^
        +---> [盗み見] ---> 攻撃者が通信を乗っ取り ---> [偽の指示] ---+

1. 中間者攻撃(MitM:Man-in-the-Middle)
泥棒は、監督と作業員の間に入り込み、ハガキ(通信データ)を盗み見ます。これで「どの番号(レジスタ)が何のスイッチなのか」をすべて把握されてしまいます。
2. 不正コマンド注入(インジェクション)
仕組みを理解した泥棒は、監督のフリをして「バルブを限界まで開けろ!」「モーターを緊急停止しろ!」といった偽の指示書を勝手に送りつけます。作業員は「監督からの指示だ!」と信じて実行してしまい、最悪の場合、工場の設備が物理的に破壊されてしまいます。

—

3. 工場を守る防犯対策:2つの強力な盾

この「素直すぎるメッセンジャー」をそのまま放置するのは危険です。とはいえ、工場の機械をすべて最新のセキュリティ対応製品に買い替えるには、数千万円〜数億円もの莫大なコストと時間がかかります。

そこで活躍するのが、既存の設備を活かしたまま周りをガードする「VPNによるカプセル化」と「産業用ファイアウォール」です。

身近な防犯に例えて、この2つの対策を見ていきましょう。

対策①:VPNによるトンネリング(カプセル化)

「専用の頑丈な現金輸送車で手紙を運ぶ」

ハガキ(Modbus通信)が盗み見られるのは、普通の道路(一般的なネットワーク)をそのまま歩いて運んでいるからです。
そこで、工場の入り口と本社の入り口の間に「VPN(仮想専用線)」という頑丈な地下トンネルを掘ります。

指示書はすべてこのトンネルの中で「カプセル(暗号化の殻)」に包まれて運ばれるため、外にいる泥棒からは中身を見ることも、偽物の指示書を途中で混ぜることも絶対にできなくなります。

対策②:産業用ファイアウォール(FW)

「怪しい侵入者をブロックする工場の門番」

工場とオフィスの境界線に、頼れる門番(ファイアウォール)を立たせます。
ただの門番ではありません。「産業用」の門番は、Modbus/TCPの言葉(プロトコル)を理解できる専門家です。

  • 「あれ?この指示書、いつもと違う怪しい書き方(異常なパラメータ)がされているな。通さないぞ!」
  • 「この指示書は、許可された監視端末(特定のIPアドレス)以外から送られてきているな。破棄だ!」

このように、怪しい通信を入り口でシャットアウトしてくれます。

—

4. 実践編:ファイアウォールでModbus/TCPを守る設定例

では、実際にどのようにして門番(ファイアウォール)にルールを教えるのか、具体的な設定例を見てみましょう。

今回は、Linuxシステムなどでよく使われるファイアウォール機能 iptables を使って、「許可された特定の開発用端末や監視サーバー以外からのModbus/TCP(ポート502)通信をすべてブロックする」設定を書いてみます。

新人の皆さんも、コメントを読みながら「なるほど、こうやって門番に命令するんだな」とイメージしてみてくださいね。

#!/bin/bash

# ==============================================================================
# 産業用ネットワーク保護のためのファイアウォール(iptables)設定スクリプト
# 対象プロトコル: Modbus/TCP (デフォルトポート: 502)
# ==============================================================================

# 1. まずはルールをきれいにリセットします
iptables -F
iptables -X

# 2. 基本的な方針(ポリシー)を決めます
# 基本的に「入ってくる通信(INPUT)」はすべて一度拒絶(DROP)し、安全なものだけを通します
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 3. 自分自身(ループバック)の通信は許可します(システム動作に必須なため)
iptables -A INPUT -i lo -j ACCEPT

# 4. すでに接続が確立している通信(やり取りの最中のもの)はそのまま許可します
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ------------------------------------------------------------------------------
# ★ここが重要!Modbus/TCP(ポート502)のアクセス制御ルール
# ------------------------------------------------------------------------------

# 安全な監視端末(SCADAサーバーなど)のIPアドレスを指定します
# ※実際の環境に合わせて変更してください
ALLOWED_SCADA_IP="192.168.1.100"

# ルール適用:
# 「許可されたIP($ALLOWED_SCADA_IP)」から「ポート502(Modbus/TCP)」への通信だけを通します(ACCEPT)
iptables -A INPUT -p tcp -s "$ALLOWED_SCADA_IP" --dport 502 -j ACCEPT

# 5. 上記のルールに当てはまらない、その他の「ポート502」への通信はすべて拒否し、ログに記録します
# これにより、誰が不正にアクセスしようとしたかが後から分かります
iptables -A INPUT -p tcp --dport 502 -j LOG --log-prefix "[Modbus-Alert] Unauth-Access: "
iptables -A INPUT -p tcp --dport 502 -j DROP

echo "=== 産業用ファイアウォールの設定が完了しました! ==="

設定のポイント

  • ポート 502:Modbus/TCPが通信で使用する、世界共通の「専用の窓口番号」です。ここをしっかりと見張ることが基本になります。
  • ホワイトリスト方式:セキュリティの基本は「怪しいものを止める」のではなく、「許可したもの以外はすべて止める」ことです。上記のコードでも、許可されたIPアドレス(192.168.1.100)以外からのアクセスは容赦なくブロック(DROP)しています。

—

5. まとめ:一歩ずつ、安全な工場・ビルを作っていきましょう!

今回は、産業用制御システムの心臓部とも言える「Modbus/TCP」の弱点と、それを守るためのネットワーク防御について解説しました。

最後に、今回学んだポイントをおさらいしましょう。

1. Modbus/TCPは「鍵がない」ため、そのままではデータの改ざんや不正な操作命令にとても弱い。
2. VPN(カプセル化)を使うことで、通信を暗号化のトンネルで包み、盗み見や改ざんから守ることができる。
3. 産業用ファイアウォールを設置し、特定の送信元からのみポート 502 への通信を許可することで、部外者の侵入を徹底的に防ぐ。

「制御システムのセキュリティ」と聞くと、なんだか難しそうなイメージがありますが、基本となる考え方は「お家の玄関に鍵をかけ、不審な人を入れないように門番を立たせる」という、私たちの身の回りの防犯と全く同じです。

まずはネットワークの出入り口をしっかり見直すことから、安全な環境づくりを一歩ずつ進めていきましょう!

コメント

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