螺子です。本記事では、SSBのパターンデータベースの活用法を紹介します。
はじめに
SSBのパターンデータベースを利用すると以下のことを実現できます。
- リアルタイムアラート(パターンデータベースアラート)
- パターンパーサーマクロの利用
- カスタムレポートの生成
本記事では、以下のログ(SSHアクセスの失敗)について、パターンデータベースを利用して上記のことを実行してみます。
<34>Oct 11 22:14:15 mymachine sshd[12]: Failed password for invalid user root from 192.168.10.169 port 13035 ssh2 // SSHアクセスの失敗ログ例
また、本記事では、ステップバイステップでの操作方法をメインに説明しています。パターンデータベースとは何か?など、概念的な説明などは省いています。これらについては、過去記事「不正アクセスされていない?認証エラーのログを見逃さない!(パターンデータベースアラート)」をご参照ください。
パターンデータベースアラート
パターンデータベース設定
[Log]>[Pattern Database]に移動して、パターンデータベースを作成します。
- ①:パターンデータベース名を設定します。
- ②:プログラムパターンを設定します。ここでは、ログのsshd[12]の部分に該当します。
- ③:パターンルールを設定します。
- ④:クラスを設定します。ここでは、アラートメールを発生させる為、`Violation`を選択します。
パターンルールの説明
パターンルールは、ログメッセージに一致するパターンを入力します。
ログにはSSHアクセスするユーザー、アクセス元IPおよびポート番号が出力されていますが、これらの値は任意(不特定)となります。これらの、任意の値を解釈する為にパターンパーサー(例、@QSTRING:: @
)を使用します。
パターンルールは、ログメッセージを以下のように解釈(パース)して、ログメッセージがパターンルールと一致しているか判断します。
Failed password for invalid user@QSTRING:: @from @IPvANY@ port @NUMBER@ ssh2
└-----------------------------┴----------┴---┴------┴----┴------┴---┘
① ② ③ ④ ⑤ ⑥ ⑦
- ① :”Failed_password_for_invalid_user”までメッセージをパースします。
- ② :@QSTRING::_@は、スペースに囲まれた任意の文字列をパースします。ログ例では、”_root_”部をパースします。
- ③ :”from_”までパースします。
- ④ :@IPvANY@は、任意のIPアドレスをパースします。ログ例では、”192.168.10.169″部をパースします。
- ⑤ :”_port “までパースします。
- ⑥:@NUMBER@は、任意の数値をパースします。ログ例では、”13035”部をパースします。
- ⑦:最後の”_ssh2″までパースします。
※ここでは、スペースを明確に表すために、スペースをアンダースコア(_)に置き換えています。
アラートの有効化
[Log]>[Options]>[Alerting]を有効にします。無効の場合、メールアラートは送信されません。
※[Alert email]が未入力の場合は、[Basic Settings]>[Management]>[Mail settings]で設定したアラートメールアドレスにアラートが送信されます。
※アラートメールが正しく送信されるように、[Basic Settings]>[Management]の[Mail settings]セクションでメールサーバーが適切に設定されている必要があります。
アラートメール
ユーザーやIPアドレスが異なる場合でも、パターンルールに一致したメッセージがアラート送信されています。異なるユーザーや異なるIPアドレスでもアラートが送信されているのがわかります。
また、アラートの発生は、[Search]>[Log Alerts]ページで確認できます。
パターンパーサーマクロの利用
名前付けパーサーの使用
上記で設定したパターンルールを以下のように変更します。
Failed password for invalid user@QSTRING:.ssh.user: @from @IPvANY:.ssh.src@ port @NUMBER:.ssh.srcPort@ ssh2
例えば、@QSTRING:: @を、@QSTRING:.ssh.user: @に変更しました。パーサーに名前をつけて後からマクロとして使用できるようにします。ここでは、パーサー名を”.ssh.user”にしています。
名前付けされたパーサーは、その(パーサー)値をマクロ(name-value)として、検索時の動的カラムやフィルター条件などに使用することができます。
動的カラムの追加
[Search]>[Logspaces]で検索画面に移動し、をクリックします。
[Customize columns]の画面で、パーサー名(マクロ名)の+をクリックして動的カラムを追加します。
動的カラムが追加され、その値がリストされていることがわかります。
動的カラム(name-value)の検索
動的カラムの値を検索するには、マクロ名の前に`nvpair:`プレフィックスを追加して以下の検索式を使用します。
nvpair:.ssh.user=root // 動的カラムの検索式例
ここでは、ユーザーが`root`のログを検索しています。
マクロを使用したフィルター
名前付けされたパーサーの値は、マクロとしてフィルター条件に設定できます。
フィルター条件は、パスのカスタムフィルター(`Custom filter`)に以下のように記述することができます。
match("root" value(".ssh.user")) // カスタマーフィルター式例
カスタムフィルターについては、過去記事「SIEMのコスト削減とパフォーマンス向上(誤検知防止)の技-その2.フィルター(Custom filter)」も参考にしてください。
カスタマーレポート
統計情報の表示
統計情報を表示したいカラムのをくりっくします。ここでは、`.ssh.src`はSSHアクセス元のIPアドレスです。
統計情報が表示されます。[Report settings]をクリックします。
レポートサブチャプター名(ここでは、ssh_src)を入力し、レポートの表示方法(ここでは、Pie chart)を選択し、[Save as Report subchapter]をクリックして、設定を保存します。
同様に`.ssh.user`(アクセスユーザー)についてもレポートサブチャプターを作成し、カスタムレポートに含めます(詳細については割愛します)。
カスタムレポートの作成
[Reports]>[Configuration]に移動し、カスタムレポートを作成します。
カスタムレポートについては、過去記事「サービス残業させていない?レポートを日ごと、週ごと、月ごとに定期的に送信!」も参考にしてください。
新規にレポートを作成し、チャプター名およびサブチャプターを登録します。
カスタムレポートの設定は以下のようになります。
カスタムレポートの出力
カスタムレポートの出力イメージは以下のようになります。レポートは定期的(日次、週次、月次)に生成して管理者に送信できますので、日々の確認業務などに有益に使用できます。
おわりに
いかがでしたでしょうか?
パターンデータベースを利用することで、特定のログメッセージを受信した場合にアラートの生成やメッセージ内の特定の値について検索やフィルター、あるいはレポートの生成ができるようになりました。
SSBの機能
本記事で使用したSSBの機能は以下の通りです。
- パターンデータベース
- カスタム統計情報およびカスタムレポート
参考資料
パターンデータベースおよびカスタム統計情用/カスタムレポートの詳細については、syslog-ng Store Box 7 LTS管理者ガイドの「14 パターンデータベースによるメッセージのクラス分け」および「12.3 ログデータからカスタム統計情報の作成」と「13.7 レポート」を参照してください。
過去連載記事
「SIEMのコスト削減とパフォーマンス向上(誤検知防止)の技」連載記事リスト
- (技1)「フィルター(Add filter)を使用したログ容量削減!」
- (技2)「カスタムフィルター(Custom filter)を使用したログ容量削減!」
- (技3)「Message throttleを使用した転送レート制限!」
- (技4)「Rewritesを使用した正規化!」
「リモートアクセスログを調査」連載記事リスト
- (その1)「フィルターログスペースを使用して必要なログのみ検索・抽出してみる!」
- (その2)「マルチログスペースを使用してログを集約してみる!」
- (その3)「リモートログスペースを使用して他のSSBに保存したログを検索・抽出してみる!」
- (その4)「サービス残業させていない?リライトを使用して日時を指定して検索してみる!」
- (その5)「サービス残業させていない?業務時間外勤務の実態をグラフで見やすく!」
- (その6)「サービス残業させていない?レポートを日ごと、週ごと、月ごとに定期的に送信!」
- (その7)「不正アクセスされていない?アクセス元IPアドレスから国・都市・ASNの調査!」
- (その8)「不正アクセスされていない?認証エラーの確認はしなくて大丈夫?」
- (その9)「不正アクセスされていない?認証エラーのログを見逃さない!(コンテンツベースアラート)」
- (その10)「不正アクセスされていない?認証エラーのログを見逃さない!(パターンデータベースアラート)」
- (その11)「不正アクセスされていない?認証エラーのログを見逃さない!(メッセージレートアラート)」
- (その12)「不正アクセスされていない?認証エラーログを可視化(平常時の確認)」
「syslog-ng Store Box大活用連載企画」連載記事リスト
- 第1回「syslog-ng Store Boxを知る」
- 第2回「syslog-ng Store Boxを仮想環境にインストールする」
- 第3回「syslog-ng Store Boxで出来ることまとめ」
- 第4回「Wiresharkでsyslogプロトコルパケットを覗く」
- 第5回「Ciscoスイッチ、FortigateファイアウォールログをSSBで受信!よりログを検索しやすく」
- 第6回「RPC APIを使ってみる、自社システムに統合!ログ検索の自動化!」
- 第7回「Active Directoryと連携して、Active Directoryユーザー認証!」
- 第8回「SSBをHA(High Availability)構成で構築してみる!」
- 第9回「ログをバイナリおよびテキスト形式で保存、違いを比較してみる」
- 第10回「ログファイルを共有して、外部ホストからアクセスしてみる!」
- 第11回「フィルターを使用して、必要なログのみ保存してみる!」
- 第12回「SSBの監視とアラート!SNMPマネージャーで監視およびSNMPトラップを受信してみる」
- 第13回「コンテンツベースアラート。重要なログを見逃さない!」
- 第14回「設定変更履歴。コンプライアンスにも対応!」
- 第15回「トラブルシューティングに役立つ機能。問題を迅速に解決!」
- 第16回「ユーザーアクセス制御。アクセス権限とタイプを設定してみる!」
- 第17回「リライト機能。ログの整形や正規化!」
- 第18回「バックアップリストア。システムデータおよびログデータをバックアップ、リストアしてみる!」
- 第19回「アーカイブ/クリーンアップ。ログデータをアーカイブ、クリーンアップしてみる!」
- 第20(最終)回「SSBの有効活用および安定稼働のためのポイントを紹介!」
SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。
syslog-ng Store Boxについての詳細は、製品紹介ページ・製品ガイドをご参照ください。