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 トラフィックを深く解析して意味を読み取るセマンティック解析エンジンを使うと説明しています。料金表では、セマンティック解析による検知とルールによる防御が無償版にも含まれています。
ライセンスとエディション
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 はホストオンリーなど、インターネットから届かないネットワークにつなぎます。作り方は安全な検証環境の作り方を参照してください。
-
VM の条件を確かめます。公式の最小構成は、Linux、x86_64 または arm64、1 コア / 1 GB メモリ / 5 GB ディスク、CPU の ssse3 命令、Docker 20.10.14 以上、Docker Compose 2.0.0 以上です。
-
同じ VM で OWASP Juice Shop を Docker で起動します。
-
公式のインストールスクリプトで SafeLine を入れます。root 権限が要ります。流す前にスクリプトを保存して中身を読んでください(下の「注意点」を参照)。
bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en -
管理者のパスワードを発行します。表示されたパスワードは控えておきます。
docker exec safeline-mgt resetadmin -
ブラウザで
https://<VM の IP>:9443/を開き、ユーザー名adminと手順 4 のパスワードでログインします。 -
「Applications」画面の「Add Application」で、待ち受けるドメイン(VM の IP でもよい)とポート(例:80)を入れ、Upstream に Juice Shop のアドレス(例:
http://<VM の IP>:3000)を入れます。 -
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)を丸ごと保存してください。
次に読む
出典
- 公式リポジトリ(README)github.com/chaitin/SafeLine
- 公式リポジトリ:LICENSEgithub.com/chaitin/SafeLine/blob/main/LICENSE.md
- 公式ドキュメント:概要docs.waf.chaitin.com/en/home
- 公式ドキュメント:インストールdocs.waf.chaitin.com/en/GetStarted/Deploy
- 公式ドキュメント:アプリケーションの追加docs.waf.chaitin.com/en/GetStarted/AddApplication
- 公式ドキュメント:エディションと機能比較docs.waf.chaitin.com/en/License/Plan
- 公式ドキュメント:検知効果の検証docs.waf.chaitin.com/en/tutorials/Effect
- 公式ドキュメント:FAQdocs.waf.chaitin.com/en/faq/home
- 公式サイト(料金プラン)cyberserval.tech/landing/safeline
確認日 2026-10-25
似たツール
OWASP Juice Shop
影響範囲 手元だけわざと脆弱に作られた練習用のネットショップ。自分のパソコンで動かし、Web の脆弱性探しや診断ツールの練習に使える。
- 用途
- 学習
- 形式
- 練習用の環境
- 難易度
- 初級
- ライセンス
- 自由に使えるMIT
- 分類
- 学習・演習環境/Web セキュリティ
ZAP
影響範囲 相手に実害ブラウザと Web アプリの間に入って通信を記録し、脆弱性を探す無料の Web アプリ診断ツール。旧称 OWASP ZAP、現在は ZAP by Checkmarx。
- 用途
- 診断・監査
- 形式
- デスクトップアプリ
- 難易度
- 中級
- ライセンス
- 自由に使えるApache-2.0
- 分類
- Web セキュリティ/脆弱性スキャン