インストールと実行
5 分で URSUS を起動し、最初のアラートを観測する
URSUS の sensor は netlink ソケットへのバインドや /proc 経由の
プロセス情報読み取りで root 権限を要求します。学習用途として
お使いのホスト OS には影響を出したくないので、Parrot OS / Kali / Ubuntu 等の
仮想マシンを用意してそこで実行するのがおすすめです。
動作環境
システム要件
- OS: Linux (x86_64 / arm64) ※サービスの常駐に systemd を使用します
- Kernel: 3.10 以上(プロセス監視用の
cn_procnetlink サポート必須) - Python: 3.11 以上
- 依存ツール:
curl,python3-venvなどの基本パッケージ - 実行権限: root 権限(
sudo実行可能であること)
推奨スペック
厳密な要求性能は未検証ですが、検証用の軽量仮想マシン(VM)でも十分に動作します。
1. インストール
# リポジトリ取得
$ git clone https://github.com/akinosora501/ursus-micro-edr.git
$ cd ursus-micro-edr/
# 実行権限の付与
$ chmod +x scripts/*.sh
# インストーラの実行
$ sudo ./scripts/install.sh
インストーラは /opt/ursus にソースをコピーし、システムユーザーの作成、
仮想環境の構築、および systemd ユニットの登録を自動で行います。
2. サービスの起動
# サービスの開始
$ sudo /opt/ursus/scripts/start.sh
# 自動起動の有効化
$ sudo systemctl enable ursus-sensor ursus-detector ursus-ui
# ログの確認 (リアルタイム表示)
$ journalctl -u ursus-sensor -u ursus-detector -u ursus-ui -f
start.sh を実行すると、sensor, detector, ui の 3 つのサービスが
systemd 配下でバックグラウンド起動します。
起動後にブラウザで http://127.0.0.1:8080/
にアクセスするとダッシュボードが表示されます。
スクリプトを使わずに、標準のコマンドで個別に操作することもできます:
sudo systemctl start ursus-sensor ursus-detector ursus-ui
ログは JSON 形式で出力されます。sensor が起動し、各コレクタ(process, file, network, auth) が "started" を出力していることを確認してください。
3. config.yml の確認
インストール先の /opt/ursus/config.yml がシステムの設定ファイルになります。
学習用途ではデフォルトのままで動作するように構成されています。
database:
path: ./data/edr.db # SQLite ファイルパス
retention_days: 3 # 古いイベントの自動削除日数
sensor:
hostname: auto
process: { enabled: true }
file:
enabled: true
watch_paths: [/etc, /tmp, /var/tmp, /home]
exclude_patterns: ["*.swp", "*~", "*/.cache/*"]
modify_debounce_sec: 2.0
network:
enabled: true
poll_interval_sec: 2.0
established_debounce_sec: 5.0
auth:
enabled: true
journal_units: [ssh.service, sshd.service]
journal_comms: [sudo]
detector:
enabled: true
poll_interval_sec: 1.0
rules_dir: ./rules
response:
dry_run: true # 既定で全レスポンス dry-run
allowed_actions: [alert]
ui:
bind_host: 127.0.0.1 # ループバック固定(外部公開禁止)
bind_port: 8080
4. サービスの停止
一時的に監視を停止したい場合は、stop.sh を使用します。
# サービスの一時停止
$ sudo /opt/ursus/scripts/stop.sh
5. アンインストール
URSUS をシステムから削除するには、uninstall.sh を使用します。
# アンインストール (コードのみ削除。データは保持)
$ sudo /opt/ursus/scripts/uninstall.sh
# 完全削除 (データや DB、ursus ユーザーも含めて全削除)
$ sudo /opt/ursus/scripts/uninstall.sh --purge
uninstall.sh でサービス定義だけを削除した場合、
data/ ディレクトリと SQLite DB はそのまま残ります。
次回 install.sh を実行したときは、既存の DB に上書きされるため
検知ルールやアラート履歴は維持されます。
完全に初期状態に戻したい場合は、手動で data/
を削除するか、uninstall.sh --purge を実行してください。
6. 最初のアラートを発火させる
URSUS には rules/ 配下に予めデフォルトルールセットが用意されています。
そのうち R010(sudo 経由での悪意あるコマンド実行)を試してみます。
# ターミナルで以下を実行
$ sudo chmod u+s /bin/bash
数秒後、UI の /alerts ページに R010 — sudo 経由での悪意あるコマンド実行
のアラートが表示されているはずです。アラート行をクリックすると詳細画面に飛び、
発火したコマンドラインや前後のプロセスコンテキストが見られます。
- bash プロセスが起動 →
cn_procnetlink がカーネルから sensor に届く - sensor が
events表にprocess_name=bash, cmdline="..."を INSERT - detector が次のポーリングで新しい event を SELECT
- R004 ルールの condition (
cmdline regex "(curl|wget).+\\|\\s*(sh|bash)") にマッチ alerts表に INSERT、response_logに "alert" 動作を dry_run で記録- UI がブラウザに表示
次のステップ
- Architecture — 3 プロセスがどう連携しているか
- センサーの仕組み — 各コレクタの技術詳細とコード
- Rules DSL — 自分でルールを書く
- Operations — systemd で常駐させる