SafeLine

自分の Web アプリの手前に置き、届いた HTTP リクエストを調べて攻撃を遮断するリバースプロキシ型の WAF。Docker で自前のサーバーに入れる。

cat safeline/meta.yml確認日 2026-10-25

安全性

影響範囲 外に届く他人の通信を見る、または他人の機器へ通信を送る
管理者権限
必要
検証環境
必要

使い方

用途
防御
難易度
中級
形態
サーバーで動かす
対応環境
Linux / Docker

信頼性

リポジトリ
chaitin/safeline
ライセンス
条件つきGPL-3.0
GitHub
スター22,9482026-10-25 時点
メンテ状況
更新が続いている最終更新 2026-10-22
目次
  1. はじめに
  2. WAF の役割
  3. SafeLine でできること
  4. ライセンスとエディション
  5. 安全な試し方:Juice Shop を後ろに置く
  6. ログで遮断を確かめる
  7. 主な使い方
  8. 注意点
  9. 次に読む
  10. 出典

SafeLine は、自分の Web アプリの前に置いて使う WAF(Web アプリケーションファイアウォール)です。利用者からのリクエストはいったん SafeLine を通り、攻撃と判定されたものはアプリに届く前に止められます。

この記事は、自分で Web アプリを運用している人や、守る側の仕組みを手を動かして知りたい人に向けています。読み終えると、次のことができるようになります。

  • 検証用の Linux VM に SafeLine を入れて、管理画面にログインする
  • 練習用アプリ OWASP Juice Shop を SafeLine の後ろに置く
  • 管理画面のログで、遮断された記録を確かめる

WAF の役割

WAF は、アプリに届く HTTP リクエストを手前で調べて、危ないものを落とす層です。アプリそのものの脆弱性は直しません。WAF が見逃したリクエストはそのままアプリに届くので、入力の検証や更新といったアプリ側の対策は WAF を入れても必要です。SafeLine の公式ドキュメントも、自前の測定で攻撃サンプルの検知率を 71.65%(バランスモード)と 76.17%(厳格モード)と載せています。全部を止める道具とは考えず、アプリへ届く攻撃を減らすための追加の層として使ってください。

SafeLine でできること

公式ドキュメントによると、SafeLine は nginx をもとに作られた HTTP/HTTPS のリバースプロキシです。主な機能は次のとおりです。

  • Web 攻撃の遮断:SQL インジェクション、XSS、コードインジェクション、OS コマンドインジェクション、XXE、SSRF、パストラバーサルなど
  • レート制限:決めた上限を超えたアクセスを絞り、総当たりやアクセスの急増を抑える
  • ボット対策:CAPTCHA などの確認を挟み、人は通してクローラーやボットを止める
  • 認証画面:有効にすると、パスワードを入れた訪問者だけがサイトを見られる
  • 動的保護:アクセスのたびに HTML と JavaScript を暗号化して返す

検知の仕組みについて、公式サイトは、HTTP トラフィックを深く解析して意味を読み取るセマンティック解析エンジンを使うと説明しています。料金表では、セマンティック解析による検知とルールによる防御が無償版にも含まれています。

しないことSafeLine はアプリの脆弱性を見つけたり直したりしません。脆弱性を探すときは ZAP のような診断ツールを使います。また、公式 FAQ によると macOS と Windows には対応していません。

ライセンスとエディション

GitHub のリポジトリ表示と LICENSE ファイルは、どちらも GPL-3.0 です。開発元は GitHub の Chaitin Tech(chaitin)で、英語版の公式サイトと有償版の販売は CyberServal の名前で運営されています。両者の関係は未確認です。配布される Docker イメージのすべての部品のソースがこのリポジトリにあるかも未確認です。

エディションは 3 つあります。

エディション 料金 主な違い
Personal 無償 登録できるアプリは 10 個まで。シングルスレッド動作
Lite 有償 アプリ 20 個まで。地域でのブロック、攻撃ログの書き出し、Discord・Telegram 通知
Pro 有償 アプリ数の上限なし。負荷分散、複数ユーザー管理、ARM での動作など

ARM のサーバーで動かすには Pro のライセンスが要ります。無償版は x86_64 で使ってください。

安全な試し方:Juice Shop を後ろに置く

試すのは、自分だけが使う検証用の VM にしてください。VM はホストオンリーなど、インターネットから届かないネットワークにつなぎます。作り方は安全な検証環境の作り方を参照してください。

  1. VM の条件を確かめます。公式の最小構成は、Linux、x86_64 または arm64、1 コア / 1 GB メモリ / 5 GB ディスク、CPU の ssse3 命令、Docker 20.10.14 以上、Docker Compose 2.0.0 以上です。

  2. 同じ VM で OWASP Juice Shop を Docker で起動します。

  3. 公式のインストールスクリプトで SafeLine を入れます。root 権限が要ります。流す前にスクリプトを保存して中身を読んでください(下の「注意点」を参照)。

    bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en
  4. 管理者のパスワードを発行します。表示されたパスワードは控えておきます。

    docker exec safeline-mgt resetadmin
  5. ブラウザで https://<VM の IP>:9443/ を開き、ユーザー名 admin と手順 4 のパスワードでログインします。

  6. 「Applications」画面の「Add Application」で、待ち受けるドメイン(VM の IP でもよい)とポート(例:80)を入れ、Upstream に Juice Shop のアドレス(例:http://<VM の IP>:3000)を入れます。

  7. SafeLine 経由で Juice Shop を開き、普通に画面が出ることを確かめます。

ログで遮断を確かめる

公式の「アプリケーションの追加」ページには、遮断を確かめるためのテスト用 URL の例があります。自分の Juice Shop に対してだけ試してください。

  • 遮断されると、Juice Shop の画面の代わりに SafeLine のブロック画面が返ります。
  • 管理画面の攻撃の一覧に記録が増えます。「detail」を開くと、そのリクエストの詳しい内容を見られます。
  • 公式 FAQ によると、「遮断数」と攻撃ログの件数は一致しないことがあります。レート制限やボット確認、認証画面で止めたアクセスは攻撃イベントとして記録されないためです。

普通の操作がブロック画面になったら誤検知です。どの操作で起きたかをログで確かめてから設定を見直します。

主な使い方

やりたいこと 方法
管理者パスワードを再発行する docker exec safeline-mgt resetadmin
動的パスワード(TOTP)を登録し直す docker exec safeline-mgt resettotp
管理画面のポートを変える インストール先の .env に MGT_PORT を書き、docker compose down && docker compose up -d
止めて削除する インストール先で docker compose down の後、ディレクトリを削除

管理画面は 9443 番を使い、ほかに 65508 番(ヘルスチェック)と 65443 番(カスタムページ)も使います。

注意点

  • 公式のインストールスクリプトは、curl に証明書の確認を省く -k を付けて取得する形です。そのまま流さず、いったんファイルに保存して中身を読んでから実行することをおすすめします。手動で入れる手順も公式ドキュメントにあります。
  • 管理画面(9443 番)をインターネットに公開しないでください。公式ドキュメントでこの点を明記した記載は見つけられませんでしたが、WAF の設定を握る画面なので、自分の端末か VPN からだけ開ける状態にしておくのが安全です。
  • 本番で使うと、訪問者のリクエストの内容がログに残ります。ログの保存先と閲覧できる人を決めてから運用してください。
  • テスト用の攻撃リクエストを送るのは、自分の環境か、書面で許可を得た環境だけにしてください。
  • 複数の大きなバージョンをまたいで更新するとデータが合わなくなることがあると、公式 FAQ は書いています。更新の前にインストール先(既定は /data/safeline)を丸ごと保存してください。

次に読む

出典

  1. 公式リポジトリ(README)github.com/chaitin/SafeLine
  2. 公式リポジトリ:LICENSEgithub.com/chaitin/SafeLine/blob/main/LICENSE.md
  3. 公式ドキュメント:概要docs.waf.chaitin.com/en/home
  4. 公式ドキュメント:インストールdocs.waf.chaitin.com/en/GetStarted/Deploy
  5. 公式ドキュメント:アプリケーションの追加docs.waf.chaitin.com/en/GetStarted/AddApplication
  6. 公式ドキュメント:エディションと機能比較docs.waf.chaitin.com/en/License/Plan
  7. 公式ドキュメント:検知効果の検証docs.waf.chaitin.com/en/tutorials/Effect
  8. 公式ドキュメント:FAQdocs.waf.chaitin.com/en/faq/home
  9. 公式サイト(料金プラン)cyberserval.tech/landing/safeline

確認日 2026-10-25

似たツール

OWASP Juice Shop

影響範囲 手元だけ
juice-shop/juice-shop

わざと脆弱に作られた練習用のネットショップ。自分のパソコンで動かし、Web の脆弱性探しや診断ツールの練習に使える。

用途
学習
形式
練習用の環境
難易度
初級
ライセンス
自由に使えるMIT
分類
学習・演習環境/Web セキュリティ
更新が続いているスター14,228最終更新 2026-10-23
OWASP Juice Shopの解説を読む

ZAP

影響範囲 相手に実害
zaproxy/zaproxy

ブラウザと Web アプリの間に入って通信を記録し、脆弱性を探す無料の Web アプリ診断ツール。旧称 OWASP ZAP、現在は ZAP by Checkmarx。

用途
診断・監査
形式
デスクトップアプリ
難易度
中級
ライセンス
自由に使えるApache-2.0
分類
Web セキュリティ/脆弱性スキャン
更新が続いているスター16,025最終更新 2026-10-23
ZAPの解説を読む