対象:個人開発者・小規模運営者で、「セキュリティ対策、何をどこまでやれば"最低限"なのか分からない」人。ここでは攻撃手順は一切扱わず、業界標準とされる基本対策だけを、優先順位つきで1枚にまとめます。各項目は深掘り記事へリンクしているので、ここを起点に必要な所だけ読み進められます。
当サイトの視点:『全部やる』ではなく『この順で埋める』
個人や小規模では、できることを全部いっぺんにやる余力はありません。だからこそ順序が重要です。一番上の管理者アカウント・ドメイン・メールを乗っ取られると、下のどんな対策も無意味になります(攻撃者があなたとして全部リセットできる)。逆に重要なものから順に対策すれば、限られた時間で被害確率を最大に下げられます。この記事は知識の網羅ではなく、「次にどこを埋めるか」をすぐ決めるための一覧として書いています。
Tier 0 — 管理者アカウント・ドメイン・メール
多要素認証・ドメイン・DNS・メール・決済
Tier 1 — 秘密とコード
秘密をgitに入れない・コミット前検出・鍵の分離と失効
Tier 2 — アプリ本体
入力検証・認証/セッション・TLS/ヘッダ・メール認証
Tier 3 — パッチ・検知・復元
依存CVE監視・OS更新・SSH/FW・ログ・バックアップ
Tier 0:管理者アカウント・ドメイン・メールを守る(最優先)
ここが全ての前提です。ドメイン・メール・サーバ管理パネルを乗っ取られたら、他のどんな対策も無効化されます。攻撃者はあなたとしてパスワードをリセットし、DNSを書き換え、サーバに入れてしまう。だから最初に固めるのはここです。
フィッシング耐性のある多要素認証をかける
メールを最も厳重に守る
復旧手段とバックアップコードを安全に保管
アカウントを使い分けて単一障害点を減らす
Tier 1:秘密とコードを漏らさない
当サイトの発端も、世の中の多くの事故も、ここの抜けから起きています。.envやAPIキーといった秘密が、コードや公開リポに紛れて流出するパターンです。
秘密はソースにもドキュメントにも書かない
.env等に分離し、gitから除外(.gitignore)。そもそも書かないのが最強の対策。コミット前に秘密を機械で止める
漏れたら『全部漏れた』前提で全ローテーション
トークンはスコープ限定・短命に
自前Gitなら特に注意
GitHubの「誤公開」が怖くて自前運用にしても、誤コミットは消えません。むしろGitHubが標準で持つ秘密ブロックが無い分、コミット前の秘密検出フックは自前運用では必須です。詳しくは 自前のGitサーバーとGitHub、どっちが安全か に整理しています。
Tier 2:アプリ本体を堅くする
公開するWebアプリ自体の最低限です。新種の攻撃を防ぐより、よく知られた脆弱性を塞ぐことが中心です。当サイトはそれぞれを用語ページで防御の観点から解説しています。
入力を信用しない(よくある脆弱性を防ぐ)
認証・セッション・権限を正しく
TLSとセキュリティヘッダを効かせる
メールのなりすましを防ぐ
Tier 3:パッチ・検知・復元
「侵入された後でも被害を小さく、早く立て直す」ための対策です。osv-scannerのような依存監視もここに入ります。
依存のCVEを機械で継続監視
OS・サーバを自動で更新
SSH・ファイアウォールを固める
最小権限で被害の範囲を小さくする
3-2-1バックアップ+復元テスト
ログを残して異常に気づけるように
どこから手を付けるか
「全部いますぐ」は現実的ではありません。やりがちな順序と、当サイトが勧める順序を比べます。
やりがちな順序(非効率)
- まず派手なアプリの脆弱性対策から始める
- 多要素認証は「後で」のまま放置
- バックアップは取っているが復元は試したことがない
- 秘密はとりあえず
.envにしたが検出フックは無し
当サイトが勧める順序
- Tier 0:管理者アカウント・メール・ドメインの多要素認証を最初に固める
- Tier 1:秘密の流出を構造的に止める(コミット前検出+全ローテ方針)
- Tier 2:アプリのよくある脆弱性を塞ぐ
- Tier 3:依存監視・更新・バックアップ復元で"立て直せる"状態に
当サイト自身もこの順で守っている
当サイトは、ここに書いた基本対策を自分自身に適用しています。アプリとDBを別コンテナに分離しDBは内部ネットワークのみに置く(コンテナ/ネットワーク層で被害範囲を分離)/ホストごとに別の鍵/秘密はgitにもドキュメントにも書かない/依存のCVE監視を毎デプロイ前+日次で自動実行/別サーバへオフサイトバックアップ/外部リクエストは安全境界を通す。セキュリティを教えるサイトが自分のサイトに脆弱性を残すわけにはいかないので、この優先順位を、まず自分で実行しています。発端になった事故も、新種の攻撃ではなく、これら基本対策の1つの抜けから起きました。だからこそ、派手な対策より先に基本対策を、と繰り返し言っています。
次に読む
- 組織・チーム版:中規模〜大規模組織のセキュリティ最低限
- FW別:フレームワーク別セキュリティ対策(WordPress・Laravel など技術ごとの守り方)
- 自前運用:自前のGitサーバーとGitHub、どっちが安全か
- 依存監視:osv-scannerの導入と使い方 / CVEに後れを取らないしくみ
- 秘密:.envファイルと秘密情報 / 事故 キー漏洩で不正課金された話
- 全体像:よくある失敗は「前提」の失敗(4つの思い込みで整理する)
- ヘッダ:今も効くヘッダと、もう要らないヘッダ(廃止済みを外す判断まで)
- ツール:セキュリティヘッダ診断 / メール認証チェッカー / CVE/KEVルックアップ