サイバー攻撃対策として、外部からポートスキャンの実行がないか、イベントログを常時監視することは非常に重要です。
今回はそもそも「ポート番号、ポートスキャンとは何か」から、「侵入された後にサイバー攻撃が行われた場合の被害例やその対策」までご紹介します。
ポート番号とは
ポート番号とは、サーバーのプログラムを識別するために、プログラムごとに割り振られた番号のことです。クライアントからサーバーのプログラムにアクセスする際は、IPアドレスとポート番号の組合せでアクセスします。
例えば、遠隔の端末からサーバーをネットワーク経由で管理するには、SSHで22番ポートを使用しサーバーにアクセスします。

ポートスキャンとは
ポートスキャンは、悪意のある第三者が、サイバー攻撃を行う際の「侵入経路の下調べ」をするために行われます。
ポートスキャンを実施し、ポートの開放状況やプログラムの稼働状況を調べます。
例えば、22番ポートは、遠隔の端末から機器をリモート管理する場合に使用されるので、ポートを開いた状態(アクセス可能である状態)のままにしている場合、サイバー攻撃の入口として狙われることが多いです。
そのため、保守に必要な短い時間のみ、アクセス元を限定して22番ポートを開き、作業が終了後は速やかにポートを閉じる運用にするのが一般的です。
サイバー攻撃の被害
ポートから侵入された後にサイバー攻撃が行われた場合の被害の例です。被害に遭うことで、会社のデータ管理やリスク管理ができていないなど、社会的な信頼を失うこともあります。
被害の例
・システムの不正ログイン、不正利用
・マルウェアの感染
・サイバー攻撃の踏み台に利用される
・重要なサーバー停止やデータの消失により事業に甚大な影響を受ける
・機密情報・顧客情報の漏洩
サイバー攻撃への対策
基本的な対策は以下の通りです。日頃から通信に問題がないか機器の状況を調べたり、サイバーセキュリティ対策ツールによる分析結果を見ることが大切です。
・不要なポートは閉じる。例として、サーバーのメンテナンスで必要な時だけSSHの22番ポートを開け、作業終了後は速やかにポートを閉じる。
・ファイアウォールのログを確認し、ポートスキャンなど疑わしいアクセスを検知した場合は、そのアクセス元からの接続を遮断するようにファイアウォールのポリシーを変更する。
・IPSなどセキュリティ機器を設置する。サイバー攻撃の可能性が高いアクセスを検知した場合は、嫌疑のある機器からのアクセスを自動で遮断する。
SEMでできるポートスキャン対策
SEMには標準機能で、ポートスキャンを監視するルール・テンプレートを用意しています。
テンプレートの各項目を設定するだけで、自動でポートスキャンのイベントを検知し、アクション発動を行います。
今回は、以下を設定します。
・ポートスキャンの発生条件と発生イベントのプロパティ
・ポートスキャン検知後のアクションとして以下を設定
– Infer Alert(インシデント管理用)
– 管理者へEメール通知
※アクションは複数登録可能です。
ポートスキャン対策のルール条件
検知したいイベントの発生条件を設定します。
今回は、ポートスキャンを検知したいので、例として、1台の機器から標的の1台の機器に対して、短時間に多数のポートへのアクセスがあった場合、という設定を行います。基本的に、テンプレートのポートスキャン・ルールの設定をそのまま使用します。
以下の手順でポートスキャン検知ルールのテンプレートを使用します。
ルールタブをクリックし、ルール設定画面にて[Create rule from template]をクリックし設定画面を開きます。Select rule templateにて「PortScan」を検索し、「PortScans」テンプレートを選択します。

5分間のタイムスパンで、30秒間に10回以上、1台の機器から標的の1台の機器の様々なポートにアクセスが発生した場合を検知する条件を設定します。
■発生条件
発生条件では、5分間のタイムスパンで、30秒間に10回以上発生する条件を設定します。
Conditions must happen
10 times(回) within 30 seconds(秒)
In response window(タイムスパン):5 分
■発生イベントのプロパティ
ポートスキャンの特性から、同じ1台の機器から宛先マシンの複数のポートに対して通信した場合に、ポートスキャンの疑いを検知する条件を設定します。
Occurrence instance properties
TCPTrafficAudit with same SourceMachine(同じ送信元マシンからのTCP通信)
TCPTrafficAudit with distinct DestinationPort(異なる宛先ポートへのTCP通信)
TCPTrafficAudit with same DestinationMachine(同じ宛先マシンへのTCP通信)
上記設定でポートスキャン検知ルールを設定しました。

次に、アクションを設定します。イベントの検知後に実行するアクションを設定をすることで、管理者への通知やブロックなどの対応を自動で行うことができます。
今回は例として、「Infer Alert」アクションを設定します。
Infer Alert は、ルールで検知したアラートをインシデントとしてSEM自身に保管できます。
これにより、アラートをインシデントとして管理することができ、アラート発生後にインシデントを容易に調査することが可能になります。
次に、Infer AlertをSEMに通知する設定を行います。ルール設定画面で予め「ACTIONS」にある「Infer Alert」の編集マークをクリックします。

Alert Type 名は、 “TCPPortScan”をそのまま設定します。これにより、SEMコンソールのHistorical Eventsタブのクエリで、EventType = “TCPPortScan”を実行し、Infer Alertを検索することができます。ログの内容は、EventInfo項目のメッセージなどを分かりやすいように自由に設定することができます。(日本語可)
Alert Type:TCPPortScan
Your value:”ポートスキャンを検知しました!Trigeo Rules Detected a PortScan!”

次に、Emailで管理者に通知する設定を行います。アクション設定画面で「Send Email Message」を選択します。

Emailメッセージには、検知したポートスキャン情報を設定します。(日本語可)
・発生日時
・送信元マシン
・宛先マシン
・検知した機器
・検索クエリ
・SEMコンソールURL

以下は、実際に送信されるアラートメールの例です。受信後、さらに状況を調べる場合は、SEMコンソールにログインし、検索クエリを使用してログを閲覧します。メールは、件名や本文を自由に編集し、項目を追加することもできます。

検知したInfer Alertを閲覧する手順を説明します。
Historical Eventsタブの画面を開きます。下記の検索クエリのひとつめを実行し、Infer Alertのログを確認することができます。

アラートログの検索クエリの例:
EventType = “TCPPortScan” AND SourceMachine = “<送信元マシン>”
AND DestinationMachine = “<宛先マシン>”
検索結果では、アラートが発報された時間帯に1件アラートログがあることを確認しました。

次に、ポートスキャンのルールが検知したイベントログ(同じ標的のマシンへのアクセス件数:30秒間に10件以上)を検索するクエリです。受信したポートスキャン・アラートメール本文の2つめのクエリをHistorical Eventタブを開き、検索フィールドに入力し実行します。
該当するイベントログの検索するクエリの例:
EventType = “Any Alert” AND SourceMachine = “<送信元マシン>”
AND DestinationMachine = “<宛先マシン>”
下記の検索結果の例では、ログをひとつずつ開き、送信元マシンが宛先マシンにどのような内容の通信をしているか確認を行います。これらの通信が、サイバー攻撃などの疑いがある場合は、送信元マシンのIPをブロックするなど対策を検討します。

まとめ
今回はSEMでサイバー攻撃の前兆とも言えるポートスキャンの監視を行う設定を行いました。サイバー攻撃対策として、外部からポートスキャンの実行がないか、イベントログを常時監視することは非常に重要です。
SEMでは、流入するログを常時監視し、自動で分析します。ポートスキャン以外の攻撃にも、予兆となる動きを想定し、攻撃を検知するためのルールを予め作成し、フィルタリングを行うことで監視することができます。
SEMに流入するログを全てリアルタイムで監視するので、サイバー攻撃の予兆を見逃さず発見することができます。