Deep Securityで不正なSSH接続を検知してみた

はじめに

Trend Micro Deep Securityのセキュリティログ監視モジュールを使って、不正なSSH接続を検知してみました。
Deep Securityには、OSSECのセキュリティログ監視エンジンが統合されています。
存在しないユーザーでの接続と、存在するユーザーで誤ったキーペアを指定する接続の2パターンを試してみました。
前者は標準の監視ルールセットで検知しました。
後者はカスタムルールで検知しました。

セキュリティログ監視の有効化

EC2にDeep Security Agentをインストールします。
手順はこちらをご覧ください。

セキュリティログ監視を有効化します。
コンピュータエディタまたは、ポリシーエディタを開きます。
セキュリティログ監視 > 一般 を選択し、有効化します。

1

コンピュータエディタを開きます。
セキュリティログ監視 > 一般 を選択し、推奨設定を検索します。
推奨設定の検索では、OSやインストール済みのアプリケーションを検索しセキュリティログ監視ルールを作成出来ます。

2

4つのルールが未解決の推奨設定と出ています。
割り当て/割り当て解除を選択します。

3

[割り当てを推奨]から、4つの標準ルールを選択し割り当てます。

  • 1002792 - Default Rules Configuration
  • 1002815 - Authentication MOdule - Unix Pluggable Authentication Module
  • 1002828 - Application - Secure Shell Daemon (SSHD)
  • 1002831 - Unix - Syslog

4

"1002828 - Application - Secure Shell Daemon (SSHD)"を選択します。
Log Files to monitorから、/var/log/secureをモニタする事がわかります。

6

不正なSSH接続の検知

存在しないユーザーでのログイン

存在しないユーザーで6回ログインに失敗すると、標準ルールに一致しイベントが作成されました。

01

イベントを選択すると、詳細を確認できます。
ログインを試みたユーザー名、送信元IP、一致したルール(=5712)などを確認できます。

02

「5712 - SSHD brute force trying to get access to the system」ルールの内容を確認します。
5710と5712は親子関係になっています。
親ルールがtrueと評価されない場合、セキュリティログ監視エンジンはその親の子を無視します。

7

ルールの表示から、詳しい内容を確認できます。
5710のルールは、"illegal user|invalid user"のマッチングを確認します。
5712のルールは、120秒以内に6回、5710にマッチするか確認します。

9_

存在するユーザーで誤ったキーペアを指定

カスタムルールを作成し検知してみました。
ルールを作成する前に該当の操作を行った時に残るログを確認します。
存在するユーザー(ec2-user)で誤ったキーを指定すると、/var/log/secureに以下のようにロギングされました。
以下にマッチするルールを作成します。

Jul  8 07:47:22 ip-172-31-8-54 sshd[26413]: Connection closed by 送信元IPアドレス [preauth]

デフォルトのセキュリティログ監視ルールは編集できませんが、コピーしたものを編集出来ます。
ポリシーメニューから、SSHDルールを複製します。
複製されたルールを選択しわかりやすい名前に変更します。

10

ルールを2つ追加します。
ルールID:100000では、誤ったキーを指定した場合のログのマッチングを確認します。マッチングには正規表現を使えます。
ルールID:100001は、ルール100000が120秒間に6回マッチした場合にマッチングします。

<rule id="100000" level="5">
  <if_sid>5700</if_sid>
  <regex>^Connection closed by \d+.\d+.\d+.\d+ [preauth]</regex>
  <description>SSHD authentication failed</description>
  <group>authentication_failed,</group>
</rule>  

<rule id="100001" level="13" frequency="6" timeframe="120" ignore="60">
  <if_matched_sid>100000</if_matched_sid>
  <description>Multiple SSHD authentication failures</description>
  <group>authentication_failures,</group>
</rule>  

コンピュータエディタから、作成したセキュリティログ監視ルールを割り当てます。

11

存在するユーザーで誤ったキーペアを指定して接続すると、6回目の接続でイベントが記録されました。

13

ルールID100000では、level="5"を指定しました。
重要度のクリッピングで指定した値以下のため、単発のログイン失敗はイベントに出ません。
ルールID100001で設定したように複数回失敗した場合に通知すると、悪意のある接続を認識しやすくなるでしょう。

14

終わりに

Trend Micro Deep Securityのセキュリティログ監視モジュールを使って、不正なSSH接続を検知してみました。
推奨設定を割り当てることで、存在しないユーザーでのログインを検知しました。
また、標準ルールを複製し追加することで存在するユーザーで誤ったキーを指定した時にイベントを発生させました。

検証環境

  • Trend Micro Deep Security as a Service
  • Amazon Linux AMI 2017.03
  • Deep Security Agent 10.0.0.2240

参考