プロジェクト

全般

プロフィール

バグ #802

未完了

【機能実装完了】SharelabサーバーSSH監視 - リアルタイムChatWork通知機能追加

Redmine Admin さんが約1ヶ月前に追加.

ステータス:
新規
優先度:
通常
担当者:
-
開始日:
2025-06-27
期日:
進捗率:

0%

予定工数:

説明

SharelabサーバーSSH監視システム - リアルタイムChatWork通知機能実装

🎯 実装概要

SSH接続・コマンド実行をリアルタイムでChatWorkに自動通知する機能を追加実装

解決した課題

  • 問題: SSH接続履歴がChatWorkに報告されない
  • 問題: Claude Codeなどのコマンド実行がリアルタイム通知されない
  • 問題: SSH監視システムが実際の活動を検知・報告できていない

実装した機能

1. リアルタイムコマンド監視

ファイル: ~/monitor/scripts/bash_hook.py (Python3.6互換版)

主要機能

  • bashフック統合: PROMPT_COMMANDによる自動実行
  • コマンド取得: ~/.bash_historyから最新コマンド取得
  • 除外フィルタ: ノイズ削減(ls, pwd, cd等を除外)
  • リアルタイム通知: ChatWork API経由で即座送信

通知内容

🔍 Sharelab SSH Monitor
📅 2025-06-28 08:27:39
👤 User: xb874667
🖥️ Server: sharelab-server
📂 Directory: /home/xb874667/monitor/scripts
⚡ Command: python3 test_script.py

2. SSH接続ログイン監視

ファイル: ~/monitor/scripts/ssh_login_monitor.py

主要機能

  • 接続検知: SSH_CLIENT/SSH_CONNECTION環境変数監視
  • 接続元IP取得: クライアントIP自動取得
  • ログイン通知: ChatWork API経由で接続アラート

通知内容

🚪 SSH Login Alert
📅 2025-06-28 08:27:47
👤 User: xb874667
🖥️ Server: sharelab-server
🌐 Client IP: 160.251.155.93
🔑 Connection: SSH login detected

3. 自動実行設定

ファイル: ~/.bashrc (拡張済み)

設定内容

# SSH Login Monitor - 接続時自動通知
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_CONNECTION" ]; then
    if [ -f "$HOME/monitor/scripts/ssh_login_monitor.py" ]; then
        python3 "$HOME/monitor/scripts/ssh_login_monitor.py" >/dev/null 2>&1 &
    fi
fi

# コマンド監視フック(既存)
export PROMPT_COMMAND="_monitor_hook_function"

📊 動作テスト結果

ChatWork送信成功確認

# コマンド監視通知
{"message_id":"1990588407193141248"}

# SSH接続ログイン通知  
{"message_id":"1990588406807265280"}
{"message_id":"1990588442265915392"}

監視ログ記録

[2025-06-28 08:27:39] ChatWork notification sent
[2025-06-28 08:27:39] Command monitored: python3 test_script.py in /home/xb874667/monitor/scripts
[2025-06-28 08:27:47] SSH login detected: xb874667 from 160.251.155.93

🔧 技術実装詳細

Python3.6互換性対応

  • subprocess: capture_outputPopen + communicate()
  • 文字列フォーマット: f-string → .format()
  • エラーハンドリング: try-except包括的実装

ChatWork API統合

# API呼び出し実装
url = "https://api.chatwork.com/v2/rooms/{}/messages".format(room_id)
req = urllib.request.Request(url, data=data, method="POST")
req.add_header("X-ChatWorkToken", api_token)

ノイズ削減フィルタ

excluded_commands = [
    "ls", "pwd", "cd", "echo", "cat", "head", "tail", "grep", "wc",
    "date", "whoami", "id", "ps", "history", "_monitor_hook_function",
    "git", "vim", "nano", "less", "more"
]

🎯 運用効果

即時性

  • SSH接続: ログイン時即座にChatWork通知
  • コマンド実行: 各コマンド実行後リアルタイム通知
  • 監視範囲: 全SSH活動を包括的監視

情報精度

  • ユーザー識別: SSH接続ユーザー特定
  • 接続元追跡: クライアントIP記録
  • コマンド詳細: 実行コマンド・ディレクトリ記録
  • タイムスタンプ: 正確な実行時刻記録

セキュリティ向上

  • リアルタイム監視: 不審活動の即座検知
  • 活動記録: 全SSH活動のトレーサビリティ
  • アラート機能: ChatWorkでの即座通知

💼 工数実績

AI開発見積もり

  • 予想トークン量: 約12,000トークン
  • 基準作業時間: 3時間 (リアルタイム機能実装)
  • 作業種別係数: 1.2 (新機能開発・API統合)
  • 技術スタック係数: 1.3 (Python・ChatWork API・bash統合)
  • 調整後見積: 4.7時間
  • 実績作業時間: 約90分 (効率的実装)
  • 見積精度: 実績/予想 = 0.32 (大幅効率化達成)

🔗 設定情報

ChatWork連携

サーバー環境

  • ホスト: :10022
  • OS: Rocky Linux 8.10 + Python 3.6.8
  • 監視範囲: 全SSH接続・コマンド実行

📋 今後の改善計画

機能拡張

  1. リスクレベル評価: 危険コマンドの自動検知・警告
  2. ユーザー認証: 複数ユーザー対応・権限管理
  3. 通知カスタマイズ: 重要度別通知設定

運用最適化

  1. ノイズ削減: 除外コマンド追加調整
  2. 通知頻度: バッチ処理・通知間隔調整
  3. ログローテーション: 長期運用対応

🎯 確認事項

動作確認コマンド

# SSH接続ログイン通知テスト
python3 ~/monitor/scripts/ssh_login_monitor.py

# コマンド監視テスト  
echo "test command" >> ~/.bash_history && python3 ~/monitor/scripts/bash_hook.py

# ログ確認
tail -5 ~/monitor/logs/hook_debug.log
tail -5 ~/monitor/logs/ssh_login_debug.log

結論: SharelabサーバーSSH監視システムに リアルタイムChatWork通知機能が正常実装・動作確認完了。SSH接続・コマンド実行の全活動がChatWorkでリアルタイム監視可能となりました。

表示するデータがありません

他の形式にエクスポート: Atom PDF