Deep Securityで不正なSSH接続を検知してみた
はじめに
Trend Micro Deep Securityのセキュリティログ監視モジュールを使って、不正なSSH接続を検知してみました。
Deep Securityには、OSSECのセキュリティログ監視エンジンが統合されています。
存在しないユーザーでの接続と、存在するユーザーで誤ったキーペアを指定する接続の2パターンを試してみました。
前者は標準の監視ルールセットで検知しました。
後者はカスタムルールで検知しました。
セキュリティログ監視の有効化
EC2にDeep Security Agentをインストールします。
手順はこちらをご覧ください。
セキュリティログ監視を有効化します。
コンピュータエディタまたは、ポリシーエディタを開きます。
セキュリティログ監視 > 一般 を選択し、有効化します。
コンピュータエディタを開きます。
セキュリティログ監視 > 一般 を選択し、推奨設定を検索します。
推奨設定の検索では、OSやインストール済みのアプリケーションを検索しセキュリティログ監視ルールを作成出来ます。
4つのルールが未解決の推奨設定と出ています。
割り当て/割り当て解除を選択します。
[割り当てを推奨]から、4つの標準ルールを選択し割り当てます。
- 1002792 - Default Rules Configuration
- 1002815 - Authentication MOdule - Unix Pluggable Authentication Module
- 1002828 - Application - Secure Shell Daemon (SSHD)
- 1002831 - Unix - Syslog
"1002828 - Application - Secure Shell Daemon (SSHD)"を選択します。
Log Files to monitorから、/var/log/secureをモニタする事がわかります。
不正なSSH接続の検知
存在しないユーザーでのログイン
存在しないユーザーで6回ログインに失敗すると、標準ルールに一致しイベントが作成されました。
イベントを選択すると、詳細を確認できます。
ログインを試みたユーザー名、送信元IP、一致したルール(=5712)などを確認できます。
「5712 - SSHD brute force trying to get access to the system」ルールの内容を確認します。
5710と5712は親子関係になっています。
親ルールがtrueと評価されない場合、セキュリティログ監視エンジンはその親の子を無視します。
ルールの表示から、詳しい内容を確認できます。
5710のルールは、"illegal user|invalid user"のマッチングを確認します。
5712のルールは、120秒以内に6回、5710にマッチするか確認します。
存在するユーザーで誤ったキーペアを指定
カスタムルールを作成し検知してみました。
ルールを作成する前に該当の操作を行った時に残るログを確認します。
存在するユーザー(ec2-user)で誤ったキーを指定すると、/var/log/secureに以下のようにロギングされました。
以下にマッチするルールを作成します。
Jul 8 07:47:22 ip-172-31-8-54 sshd[26413]: Connection closed by 送信元IPアドレス [preauth]
デフォルトのセキュリティログ監視ルールは編集できませんが、コピーしたものを編集出来ます。
ポリシーメニューから、SSHDルールを複製します。
複製されたルールを選択しわかりやすい名前に変更します。
ルールを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>
コンピュータエディタから、作成したセキュリティログ監視ルールを割り当てます。
存在するユーザーで誤ったキーペアを指定して接続すると、6回目の接続でイベントが記録されました。
ルールID100000では、level="5"
を指定しました。
重要度のクリッピングで指定した値以下のため、単発のログイン失敗はイベントに出ません。
ルールID100001で設定したように複数回失敗した場合に通知すると、悪意のある接続を認識しやすくなるでしょう。
終わりに
Trend Micro Deep Securityのセキュリティログ監視モジュールを使って、不正なSSH接続を検知してみました。
推奨設定を割り当てることで、存在しないユーザーでのログインを検知しました。
また、標準ルールを複製し追加することで存在するユーザーで誤ったキーを指定した時にイベントを発生させました。
検証環境
- Trend Micro Deep Security as a Service
- Amazon Linux AMI 2017.03
- Deep Security Agent 10.0.0.2240