Skip to content

Latest commit

 

History

History
149 lines (120 loc) · 8.27 KB

Configuration.ja.md

File metadata and controls

149 lines (120 loc) · 8.27 KB

English | 日本語

設定

⚠️セキュリティ上の留意事項 (FYI)

  • Mirakurun は LAN 内専用サーバーです。
  • デフォルト設定でアクセス元をプライベート IP のみに制限しています。
  • 任意のホスト名・ドメイン上のページからのアクセスを禁止しています。 → DNS Rebinding / CSRF 攻撃対策
    • hostname: Web UI にアクセスするためのホスト名を設定してください。
    • allowOrigins: 必要に応じて、許可するホスト名・ドメインを明示的に設定してください。
  • 複数の手法を組み合わせて攻撃のリスクを緩和しています。
  • 無暗に全てのドメインから API アクセスできるようにしたり、リバースプロキシの下に置かないでください。下記のような攻撃に対して脆弱になります。
    • 認証済みの BASIC 認証やセッション情報などを流用して攻撃する手法が存在します。
    • 最近はブラウザ自体もある程度保護していますが、過信しないでください。
    • リバースプロキシで HTTPS 化した場合、ブラウザ自体と Mirakurun の保護機能をいくつかバイパスする可能性があり、逆に危険度が増します。 → 保護されたコンテキスト
    • 代わりに VPN や SSH トンネル、トンネルサービスを活用してください。
      • 一部のトンネルサービスは allowIPv4CidrRanges の設定が必要です。第三者がアクセスできないように注意して設定してください。

DNS Rebinding 攻撃: 攻撃者が管理するドメインで最初に正規サイトを返し、TTL期限後に攻撃者のサーバーを指すように変更する攻撃。これによりブラウザの同一オリジンポリシーを迂回し、ブラウザ経由で LAN 内のサーバーに不正アクセスする攻撃。

XSS/CSRF 攻撃: 攻撃者が悪意のあるコードをウェブサイトに埋め込み、ブラウザ経由で LAN 内のサーバーに不正アクセスする攻撃。

  • 攻撃例:
    • チューナーコマンド等を利用して任意のコードを実行
    • サーバーに不正なコードを仕込み、botnet 化
  • 上記はあくまで攻撃の一例です。ブラウザやミドルウェアの脆弱性等により、日々様々な攻撃手法が考えられています。
  • 近年増加傾向の Web ベースのアプリでは、ブラウザと同様の攻撃が可能な場合があります。注意しましょう。

🗒️server.yml

📛 Web UI 設定一部対応

ファイルパス

  • 環境変数: SERVER_CONFIG_PATH
  • Docker ホスト (デフォルト): /opt/mirakurun/config/server.yml
  • Linux (レガシー): /usr/local/etc/mirakurun/server.yml

サーバー設定一覧

プロパティ (🗒️server.yml) 環境変数 (🐋Docker) タイプ デフォルト 説明
logLevel LOG_LEVEL Integer 2 ログレベル (-1: FATAL から 3: DEBUG)
maxLogHistory MAX_LOG_HISTORY Integer 1000 ログの最大保持行数
path - String, null 🗒️/var/run/mirakurun.sock Unix Socket Path ※Docker ではデフォルトパスに固定
port - Integer, null 40772 サーバーポート ※Docker ではコンテナ側 40772 固定
hostname HOSTNAME String localhost ホスト名
disableIPv6 - Boolean false IPv6の無効化 ※Docker では常に無効
jobMaxRunning JOB_MAX_RUNNING Integer 論理コア数 / 2, 最低 1, 最大 100 同時実行できる最大ジョブ数
jobMaxStandby JOB_MAX_STANDBY Integer 論理コア数 - 1, 最低 1, 最大 100 同時実行できる最大ジョブ準備数
maxBufferBytesBeforeReady MAX_BUFFER_BYTES_BEFORE_READY Integer 8388608 準備完了前の最大バッファサイズ (バイト)
※番組開始の頭が欠ける場合は増やす
eventEndTimeout EVENT_END_TIMEOUT Integer 1000 イベント終了タイムアウト (ミリ秒)
※番組終了が誤判定される場合は長くする
programGCJobSchedule PROGRAM_GC_JOB_SCHEDULE String 45 * * * * 番組一覧の GC スケジュール (cron 風形式)
epgGatheringJobSchedule EPG_GATHERING_JOB_SCHEDULE String 20,50 * * * * EPG 収集スケジュール (cron 風形式)
epgRetrievalTime EPG_RETRIEVAL_TIME Integer 600000 EPG 取得時間 (ミリ秒)
logoDataInterval LOGO_DATA_INTERVAL Integer 604800000 ロゴデータ更新間隔 (ミリ秒)
disableEITParsing DISABLE_EIT_PARSING Boolean false ⚠️EIT パースの無効化
disableWebUI DISABLE_WEB_UI Boolean false ⚠️Web UI の無効化
allowIPv4CidrRanges ALLOW_IPV4_CIDR_RANGES String[] ["10.0.0.0/8", "127.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] ⚠️許可する IPv4 CIDR ブロック
allowIPv6CidrRanges ALLOW_IPV6_CIDR_RANGES String[] ["fc00::/7"] ⚠️許可する IPv6 CIDR ブロック
allowOrigins ALLOW_ORIGINS String[] ["https://mirakurun-secure-contexts-api.pages.dev"] ⚠️🧪許可するオリジン (実験中)
allowPNA ALLOW_PNA Boolean true 🧪PNA/LNA 許可設定 (実験中)
tsplayEndpoint TSPLAY_ENDPOINT String https://mirakurun-secure-contexts-api.pages.dev/tsplay/ 🧪TSPlay エンドポイント (実験中)

🗒️tuners.yml

💯 Web UI 設定完全対応

ファイルパス

  • 環境変数: TUNERS_CONFIG_PATH
  • Docker ホスト (デフォルト): /opt/mirakurun/config/tuners.yml
  • Linux (レガシー): /usr/local/etc/mirakurun/tuners.yml

構造

# 配列
- name: チューナー識別名 # String
  types: # (GR|BS|CS|SKY)[]
    - GR
    - BS
    - CS
    - SKY
  # chardev/dvb用
  # "<template>"は`commandVars[template]`または"(空)"に置き換えられます *@4.0.0~
  command: cmd <channel> --arg1 --arg2 <exampleArg1> <exampleArg2>... # String
  # dvb用
  dvbDevicePath: /dev/dvb/adapter/dvr/path # String
  # リモートMirakurunとの多重化用
  remoteMirakurunHost: 192.168.x.x # String
  remoteMirakurunPort: 40772 # Integer
  remoteMirakurunDecoder: false # Boolean
  # 以下はオプション
  decoder: cmd # String
  isDisabled: false # Boolean

decoder

必要に応じてCAS処理コマンドを指定します。

# 参考: MPEG-2 TS の流れ
+-------------+    +----------+    +---------+    +--------+
| TunerDevice | -> | TSFilter | -> | decoder | -> | (user) |
+-------------+    +----------+    +---------+    +--------+
               RAW           STRIPPED      DESCRAMBLED
# これは実装例です。テスト用のみ。
sudo npm install arib-b25-stream-test -g --unsafe-perm

🗒️channels.yml

💯 Web UI 設定完全対応

ファイルパス

  • 環境変数: CHANNELS_CONFIG_PATH
  • Docker ホスト (デフォルト): /opt/mirakurun/config/channels.yml
  • Linux (レガシー): /usr/local/etc/mirakurun/channels.yml

構造

# 配列
- name: チャンネル識別名 # String
  type: GR # 列挙型 [GR|BS|CS|SKY]
  channel: '0' # String
  # 以下はオプション
  serviceId: 1234 # Integer - 指定しない場合、サービスは自動的にスキャンされます。
  tsmfRelTs: 1 # 数値: 1~15
  commandVars: # オプションのコマンド変数 *@4.0.0~
    satellite: EXAMPLE-SAT4A
    space: 0
    freq: 12345
    polarity: H
    exampleArg1: -arg0 -arg1=example
    exampleArg2: -arg2 "引用符を使用して空白を含むことができます"
  isDisabled: false # Boolean