Firezone ファイアウォールを使用した Hailbytes VPN のドキュメント

目次

始める

Firezone GUI を使用して Hailbytes VPN を展開するための段階的な手順については、こちらを参照してください。 

管理: サーバー インスタンスの設定は、この部分に直接関係します。

ユーザー ガイド: Firezone の使用方法と一般的な問題の解決方法を説明する役立つドキュメント。 サーバーが正常にデプロイされたら、このセクションを参照してください。

一般的な構成のガイド

スプリット トンネリング: VPN を使用して、トラフィックを特定の IP 範囲にのみ送信します。

ホワイトリスト: ホワイトリストを使用するには、VPN サーバーの静的 IP アドレスを設定します。

リバース トンネル: リバース トンネルを使用して、複数のピア間にトンネルを作成します。

お問い合わせ

Hailbytes VPN のインストール、カスタマイズ、または利用についてサポートが必要な場合は、喜んでお手伝いいたします。

認証

ユーザーがデバイス構成ファイルを作成またはダウンロードする前に、認証を要求するように Firezone を構成できます。 ユーザーは、VPN 接続をアクティブに保つために、定期的に再認証する必要がある場合もあります。

Firezone のデフォルトのログイン方法はローカルの電子メールとパスワードですが、標準化された OpenID Connect (OIDC) ID プロバイダーと統合することもできます。 ユーザーは、Okta、Google、Azure AD、またはプライベート ID プロバイダーの資格情報を使用して Firezone にログインできるようになりました。

 

汎用 OIDC プロバイダーを統合する

OIDC プロバイダーを使用して SSO を許可するために Firezone が必要とする構成パラメーターを以下の例に示します。 /etc/firezone/firezone.rb で、構成ファイルを見つけることができます。 firezone-ctl reconfigure と firezone-ctl restart を実行してアプリケーションを更新し、変更を有効にします。

 

# これは、Google と Okta を SSO ID プロバイダーとして使用する例です。

# 複数の OIDC 構成を同じ Firezone インスタンスに追加できます。

 

# 試行中にエラーが検出された場合、Firezone はユーザーの VPN を無効にすることができます

# access_token を更新します。 これは、Google、Okta、および

# Azure SSO は、ユーザーが削除された場合にユーザーの VPN を自動的に切断するために使用されます

# OIDC プロバイダーから。 OIDC プロバイダーの場合は、これを無効のままにしてください。

# 予期せず中断する可能性があるため、アクセス トークンの更新に問題があります。

# ユーザーの VPN セッション。

default['firezone']['authentication']['disable_vpn_on_oidc_error'] = false

 

default['firezone']['authentication']['oidc'] = {

  グーグル: {

    Discovery_document_uri: “https://accounts.google.com/.well-known/openid-configuration”,

    クライアントID: " 」、

    client_secret: “ 」、

    redirect_uri: “https://instance-id.yourfirezone.com/auth/oidc/google/callback/”,

    応答タイプ: 「コード」,

    スコープ: 「openid メール プロファイル」,

    ラベル: 「グーグル」

  },

  オクタ: {

    discovery_document_uri: 「https:// /.well-known/openid-configuration”,

    クライアントID: " 」、

    client_secret: “ 」、

    redirect_uri: “https://instance-id.yourfirezone.com/auth/oidc/okta/callback/”,

    応答タイプ: 「コード」,

    スコープ: 「openid メール プロファイル offline_access」,

    レーベル:「オクタ」

  }

}



統合には、次の構成設定が必要です。

  1. discovery_document_uri: OpenID Connect プロバイダー構成 URI これは、この OIDC プロバイダーへの後続の要求を構築するために使用される JSON ドキュメントを返します。
  2. client_id: アプリケーションのクライアント ID。
  3. client_secret: アプリケーションのクライアント シークレット。
  4. redirect_uri: 認証後にリダイレクトする場所を OIDC プロバイダーに指示します。 これは、Firezone EXTERNAL_URL + /auth/oidc/ である必要があります。 /callback/ (例: https://instance-id.yourfirezone.com/auth/oidc/google/callback/)。
  5. response_type: コードに設定します。
  6. 範囲: OIDC スコープ OIDC プロバイダーから取得します。 これは、プロバイダーに応じて、openid 電子メール プロファイルまたは openid 電子メール プロファイル offline_access に設定する必要があります。
  7. label: Firezone ログイン画面に表示されるボタン ラベル テキスト。

きれいな URL

OIDC プロバイダーごとに、構成されたプロバイダーのサインイン URL にリダイレクトするために、対応するプリティ URL が作成されます。 上記の OIDC 構成の例では、URL は次のとおりです。

  • https://instance-id.yourfirezone.com/auth/oidc/google
  • https://instance-id.yourfirezone.com/auth/oidc/okta

一般的な ID プロバイダーを使用した Firezone のセットアップ手順

ドキュメントがあるプロバイダー:

  • でログイン
  • Azure Active Directory
  • ワンログイン
  • ローカル認証

 

ID プロバイダーに汎用 OIDC コネクタがあり、上記に記載されていない場合は、必要な構成設定を取得する方法について、そのプロバイダーのドキュメントを参照してください。

定期的な再認証を維持する

設定/セキュリティの下の設定は、定期的な再認証を要求するように変更できます。 これは、VPN セッションを継続するために、ユーザーが定期的に Firezone に入るという要件を強制するために使用できます。

セッションの長さは、XNUMX 時間から XNUMX 日の間で構成できます。 これを Never に設定すると、いつでも VPN セッションを有効にできます。 これが標準です。

再認証

ユーザーは、期限切れの VPN セッション (デプロイ時に指定された URL) を再認証するために、VPN セッションを終了し、Firezone ポータルにログインする必要があります。

ここにある正確なクライアントの指示に従うことで、セッションを再認証できます。

 

VPN 接続のステータス

[ユーザー] ページの [VPN 接続] テーブル列には、ユーザーの接続ステータスが表示されます。 接続ステータスは次のとおりです。

ENABLED – 接続は有効です。

DISABLED – 管理者または OIDC 更新の失敗により、接続が無効になっています。

EXPIRED – 認証の有効期限が切れているか、ユーザーが初めてサインインしていないため、接続が無効になっています。

でログイン

一般的な OIDC コネクタを介して、Firezone は Google Workspace と Cloud Identity でのシングル サインオン (SSO) を有効にします。 このガイドでは、統合に必要な以下の構成パラメーターを取得する方法について説明します。

  1. discovery_document_uri: OpenID Connect プロバイダー構成 URI これは、この OIDC プロバイダーへの後続の要求を構築するために使用される JSON ドキュメントを返します。
  2. client_id: アプリケーションのクライアント ID。
  3. client_secret: アプリケーションのクライアント シークレット。
  4. redirect_uri: 認証後にリダイレクトする場所を OIDC プロバイダーに指示します。 これは、Firezone EXTERNAL_URL + /auth/oidc/ である必要があります。 /callback/ (例: https://instance-id.yourfirezone.com/auth/oidc/google/callback/)。
  5. response_type: コードに設定します。
  6. 範囲: OIDC スコープ OIDC プロバイダーから取得します。 返されたクレームで Firezone にユーザーの電子メールを提供するには、これを openid 電子メール プロファイルに設定する必要があります。
  7. label: Firezone ログイン画面に表示されるボタン ラベル テキスト。

構成設定の取得

1. OAuth設定画面​,war

新しい OAuth クライアント ID を初めて作成する場合は、同意画面を構成するよう求められます。

※ユーザー種別は「社内」を選択してください。 これにより、Google Workspace 組織内のユーザーに属するアカウントのみがデバイス構成を作成できるようになります。 有効な Google アカウントを持つユーザーがデバイス構成を作成できるようにする場合を除き、[外部] を選択しないでください。

 

アプリ情報画面で:

  1. アプリ名:ファイアーゾーン
  2. アプリのロゴ: ファイアーゾーンのロゴ (リンクを名前を付けて保存)。
  3. アプリケーションのホームページ: Firezone インスタンスの URL。
  4. 承認済みドメイン: Firezone インスタンスの最上位ドメイン。

 

 

2. OAuth クライアント ID を作成する​,war

このセクションは、Google 独自のドキュメントに基づいています。 OAuth 2.0 の設定.

Google Cloud Console にアクセス 資格情報ページ ページで、[+ 資格情報の作成] をクリックし、[OAuth クライアント ID] を選択します。

OAuth クライアント ID 作成画面で:

  1. アプリケーションの種類を Web アプリケーションに設定する
  2. Firezone EXTERNAL_URL + /auth/oidc/google/callback/ (例: https://instance-id.yourfirezone.com/auth/oidc/google/callback/) を承認済みリダイレクト URI へのエントリとして追加します。

 

OAuth クライアント ID を作成すると、クライアント ID とクライアント シークレットが提供されます。 これらは、次のステップでリダイレクト URI と一緒に使用されます。

Firezoneの統合

編集 /etc/firezone/firezone.rb 以下のオプションを含めます。

 

# Google を SSO ID プロバイダーとして使用する

default['firezone']['authentication']['oidc'] = {

  グーグル: {

    Discovery_document_uri: “https://accounts.google.com/.well-known/openid-configuration”,

    クライアントID: " 」、

    client_secret: “ 」、

    redirect_uri: “https://instance-id.yourfirezone.com/auth/oidc/google/callback/”,

    応答タイプ: 「コード」,

    スコープ: 「openid メール プロファイル」,

    ラベル: 「グーグル」

  }

}

 

firezone-ctl reconfigure と firezone-ctl restart を実行して、アプリケーションを更新します。 Firezone のルート URL に [Google でサインイン] ボタンが表示されます。

Firezone は汎用 OIDC コネクタを使用して、Okta でのシングル サインオン (SSO) を容易にします。 このチュートリアルでは、統合に必要な以下の構成パラメーターを取得する方法を示します。

  1. discovery_document_uri: OpenID Connect プロバイダー構成 URI これは、この OIDC プロバイダーへの後続の要求を構築するために使用される JSON ドキュメントを返します。
  2. client_id: アプリケーションのクライアント ID。
  3. client_secret: アプリケーションのクライアント シークレット。
  4. redirect_uri: 認証後にリダイレクトする場所を OIDC プロバイダーに指示します。 これは、Firezone EXTERNAL_URL + /auth/oidc/ である必要があります。 /callback/ (例: https://instance-id.yourfirezone.com/auth/oidc/okta/callback/)。
  5. response_type: コードに設定します。
  6. 範囲: OIDC スコープ OIDC プロバイダーから取得します。 返されたクレームで Firezone にユーザーの電子メールを提供するには、これを openid 電子メール プロファイル offline_access に設定する必要があります。
  7. label: Firezone ログイン画面に表示されるボタン ラベル テキスト。

 

Okta アプリの統合

ガイドのこのセクションは、以下に基づいています。 Okta のドキュメント.

管理コンソールで、[アプリケーション] > [アプリケーション] に移動し、[アプリ統合の作成] をクリックします。 サインイン方法を OICD – OpenID Connect に設定し、アプリケーションの種類を Web アプリケーションに設定します。

次の設定を構成します。

  1. アプリ名:ファイアーゾーン
  2. アプリのロゴ: ファイアーゾーンのロゴ (リンクを名前を付けて保存)。
  3. 付与タイプ: [更新トークン] ボックスをオンにします。 これにより、ユーザーが削除されると Firezone が ID プロバイダーと同期し、VPN アクセスが終了することが保証されます。
  4. サインイン リダイレクト URI: Firezone EXTERNAL_URL + /auth/oidc/okta/callback/ (例: https://instance-id.yourfirezone.com/auth/oidc/okta/callback/) を承認済みリダイレクト URI へのエントリとして追加します。 .
  5. 割り当て: Firezone インスタンスへのアクセスを提供するグループに制限します。

設定が保存されると、クライアント ID、クライアント シークレット、および Okta ドメインが提供されます。 これら 3 つの値は、手順 2 で Firezone を構成するために使用されます。

ファイアーゾーンを統合

編集 /etc/firezone/firezone.rb 以下のオプションを含めます。 あなたの Discovery_document_url なります /.well-known/openid-構成 あなたの末尾に追加 オクタ_ドメイン.

 

# SSO ID プロバイダーとして Okta を使用する

default['firezone']['authentication']['oidc'] = {

  オクタ: {

    discovery_document_uri: 「https:// /.well-known/openid-configuration”,

    クライアントID: " 」、

    client_secret: “ 」、

    redirect_uri: “https://instance-id.yourfirezone.com/auth/oidc/okta/callback/”,

    応答タイプ: 「コード」,

    スコープ: 「openid メール プロファイル offline_access」,

    レーベル:「オクタ」

  }

}

 

firezone-ctl reconfigure と firezone-ctl restart を実行して、アプリケーションを更新します。 Firezone のルート URL に [Okta でサインイン] ボタンが表示されます。

 

特定のユーザーへのアクセスを制限する

Firezone アプリにアクセスできるユーザーは、Okta によって制限できます。 これを行うには、Okta 管理コンソールの Firezone アプリ統合の [割り当て] ページに移動します。

Azure Active Directory

汎用 OIDC コネクタを通じて、Firezone は Azure Active Directory でのシングル サインオン (SSO) を有効にします。 このマニュアルでは、統合に必要な以下の構成パラメーターを取得する方法を説明します。

  1. discovery_document_uri: OpenID Connect プロバイダー構成 URI これは、この OIDC プロバイダーへの後続の要求を構築するために使用される JSON ドキュメントを返します。
  2. client_id: アプリケーションのクライアント ID。
  3. client_secret: アプリケーションのクライアント シークレット。
  4. redirect_uri: 認証後にリダイレクトする場所を OIDC プロバイダーに指示します。 これは、Firezone EXTERNAL_URL + /auth/oidc/ である必要があります。 /callback/ (例: https://instance-id.yourfirezone.com/auth/oidc/azure/callback/)。
  5. response_type: コードに設定します。
  6. 範囲: OIDC スコープ OIDC プロバイダーから取得します。 返されたクレームで Firezone にユーザーの電子メールを提供するには、これを openid 電子メール プロファイル offline_access に設定する必要があります。
  7. label: Firezone ログイン画面に表示されるボタン ラベル テキスト。

構成設定の取得

このガイドは、 Azure Active Directory ドキュメント.

 

Azure portal の Azure Active Directory ページに移動します。 [管理] メニュー オプションを選択し、[新規登録] を選択してから、以下の情報を提供して登録します。

  1. 名前:ファイアーゾーン
  2. サポートされているアカウントの種類: (既定のディレクトリのみ – シングル テナント)
  3. リダイレクト URI: これは、firezone EXTERNAL_URL + /auth/oidc/azure/callback/ である必要があります (例: https://instance-id.yourfirezone.com/auth/oidc/azure/callback/)。 必ず末尾のスラッシュを含めてください。 これが redirect_uri 値になります。

 

登録後、アプリケーションの詳細ビューを開き、 アプリケーション(クライアント)ID. これが client_id 値になります。 次に、エンドポイント メニューを開いて、 OpenID Connect メタデータ ドキュメント. これが discovery_document_uri の値になります。

 

[管理] メニューの [証明書とシークレット] オプションをクリックして、新しいクライアント シークレットを作成します。 クライアント シークレットをコピーします。 クライアント シークレットの値はこれになります。

 

最後に、[管理] メニューの下にある [API アクセス許可] リンクを選択し、 権限を追加する、および選択 Microsoft Graph、 加えます email, オープンID, offset_access & プロフィール 必要な権限に。

Firezoneの統合

編集 /etc/firezone/firezone.rb 以下のオプションを含めます。

 

# Azure Active Directory を SSO ID プロバイダーとして使用する

default['firezone']['authentication']['oidc'] = {

  紺碧: {

    discovery_document_uri: 「https://login.microsoftonline.com/ /v2.0/.well-known/openid-configuration”,

    クライアントID: " 」、

    client_secret: “ 」、

    redirect_uri: “https://instance-id.yourfirezone.com/auth/oidc/azure/callback/”,

    応答タイプ: 「コード」,

    スコープ: 「openid メール プロファイル offline_access」,

    レーベル:「アズール」

  }

}

 

firezone-ctl reconfigure と firezone-ctl restart を実行して、アプリケーションを更新します。 Firezone のルート URL に [Azure でサインイン] ボタンが表示されます。

方法: 特定のメンバーへのアクセスを制限する

Azure AD を使用すると、管理者はアプリへのアクセスを社内の特定のユーザー グループに制限できます。 これを行う方法の詳細については、Microsoft のドキュメントを参照してください。

管理者

  • 構成
  • インストールの管理
  • アップグレード
  • 解決します
  • セキュリティに関する考慮事項
  • SQL クエリの実行

構成

Chef Omnibus は Firezone で使用され、リリース パッケージング、プロセス監視、ログ管理などのタスクを管理します。

Ruby コードは、/etc/firezone/firezone.rb にあるプライマリ構成ファイルを構成します。 このファイルに変更を加えた後に sudo firezone-ctl reconfigure を再起動すると、Chef は変更を認識し、現在のオペレーティング システムに適用します。

構成変数とその説明の完全なリストについては、構成ファイルのリファレンスを参照してください。

インストールの管理

Firezone インスタンスは、 ファイアゾーン-ctl 以下に示すように、コマンドを実行します。 ほとんどのサブコマンドには、接頭辞を付ける必要があります sudo.

 

root@demo:~# firezone-ctl

omn​​ibus-ctl: コマンド (サブコマンド)

一般的なコマンド:

  清める

    *すべての* firezone データを削除し、最初からやり直します。

  作成またはリセット管理者

    デフォルトで指定された電子メール['firezone']['admin_email']で管理者のパスワードをリセットするか、その電子メールが存在しない場合は新しい管理者を作成します。

  助けます

    このヘルプメッセージを印刷します。

  再構成する

    アプリケーションを再構成します。

  ネットワークのリセット

    nftables、WireGuard インターフェイス、およびルーティング テーブルを Firezone のデフォルトにリセットします。

  設定を表示

    reconfigure によって生成される構成を表示します。

  分解ネットワーク

    WireGuard インターフェイスと firezone nftables テーブルを削除します。

  強制証明書更新

    証明書の有効期限が切れていない場合でも、証明書の更新を強制します。

  停止証明書の更新

    証明書を更新する cronjob を削除します。

  アンインストール

    すべてのプロセスを強制終了し、プロセス スーパーバイザーをアンインストールします (データは保持されます)。

  バージョン

    Firezone の現在のバージョンを表示する

サービス管理コマンド:

  グレースフルキル

    適切な停止を試みてから、プロセス グループ全体を SIGKILL します。

  ハプ

    サービスに HUP を送信します。

  int型

    サービスに INT を送信します。

  kill

    サービスに KILL を送信します。

  かつて

    サービスが停止している場合は、サービスを開始します。 停止した場合は再起動しないでください。

  再起動

    サービスが実行中の場合は停止し、再度開始します。

  サービスリスト

    すべてのサービスを一覧表示します (有効なサービスは * で表示されます)。

  start

    サービスがダウンしている場合はサービスを開始し、サービスが停止している場合は再起動します。

  status

    すべてのサービスのステータスを表示します。

  stop

    サービスを停止し、再起動しないでください。

  tail

    有効なすべてのサービスのサービス ログを監視します。

  期間

    サービスに TERM を送信します。

  usr1

    サービスに USR1 を送信します。

  usr2

    サービスに USR2 を送信します。

アップグレード

Firezone をアップグレードする前に、すべての VPN セッションを終了する必要があります。これには、Web UI のシャットダウンも必要です。 アップグレード中に問題が発生した場合は、メンテナンスのために XNUMX 時間を確保することをお勧めします。

 

Firezone を強化するには、次のアクションを実行します。

  1. ワンコマンド インストールを使用して firezone パッケージをアップグレードします: sudo -E bash -c “$(curl -fsSL https://github.com/firezone/firezone/raw/master/scripts/install.sh)”
  2. firezone-ctl reconfigure を実行して、新しい変更を取得します。
  3. firezone-ctl restart を実行してサービスを再起動します。

問題が発生した場合は、 サポート チケットを送信します。

<0.5.0 から >=0.5.0 にアップグレード

0.5.0 には、対処しなければならない重大な変更と構成の変更がいくつかあります。 詳細は以下をご覧ください。

バンドルされた Nginx non_ssl_port (HTTP) リクエストが削除されました

Nginx は、バージョン 0.5.0 の時点で、強制 SSL および非 SSL ポート パラメーターをサポートしなくなりました。 Firezone が機能するには SSL が必要なため、default['firezone']['nginx']['enabled'] = false を設定してバンドル Nginx サービスを削除し、代わりにリバース プロキシをポート 13000 の Phoenix アプリに転送することをお勧めします (デフォルトでは) )。

ACME プロトコルのサポート

0.5.0 では、バンドルされた Nginx サービスで SSL 証明書を自動的に更新するための ACME プロトコル サポートが導入されています。 有効にする、

  • default['firezone']['external_url'] に、サーバーのパブリック IP アドレスに解決される有効な FQDN が含まれていることを確認してください。
  • ポート 80/tcp が到達可能であることを確認します
  • 構成ファイルで default['firezone']['ssl']['acme']['enabled'] = true を使用して ACME プロトコル サポートを有効にします。

エグレス ルールの送信先の重複

宛先が重複するルールを追加する可能性は、Firezone 0.5.0 ではなくなりました。 移行スクリプトは、0.5.0 へのアップグレード中にこれらの状況を自動的に認識し、移行先に他のルールが含まれるルールのみを保持します。 これでよければ何もする必要はありません。

それ以外の場合は、アップグレードする前に、ルールセットを変更してこのような状況を解消することをお勧めします。

Okta と Google SSO の事前設定

Firezone 0.5.0 は、新しいより柔軟な OIDC ベースの構成を優先して、古いスタイルの Okta および Google SSO 構成のサポートを削除します。 

default['firezone']['authentication']['okta'] または default['firezone']['authentication']['google'] キーの下に構成がある場合は、これらを OIDC に移行する必要があります。以下のガイドを使用したベースの構成。

既存の Google OAuth 構成

/etc/firezone/firezone.rb にある構成ファイルから、古い Google OAuth 構成を含むこれらの行を削除します。

 

デフォルト['firezone']['認証']['Google']['有効化']

デフォルト['firezone']['認証']['google']['client_id']

デフォルト['firezone']['認証']['google']['client_secret']

default['firezone']['authentication']['google']['redirect_uri']

 

次に、こちらの手順に従って Google を OIDC プロバイダーとして構成します。

(リンクの説明を提供)<<<<<<<<<<<<<<<<

 

既存の Google OAuth を構成する 

次の場所にある構成ファイルから、古い Okta OAuth 構成を含むこれらの行を削除します。 /etc/firezone/firezone.rb

 

デフォルト['firezone']['認証']['okta']['有効化']

デフォルト['firezone']['認証']['okta']['client_id']

デフォルト['firezone']['認証']['okta']['client_secret']

デフォルト['firezone']['認証']['okta']['サイト']

 

次に、こちらの手順に従って、Okta を OIDC プロバイダーとして構成します。

0.3.x から >= 0.3.16 にアップグレード

現在のセットアップとバージョンに応じて、以下の指示に従ってください。

すでに OIDC 統合がある場合:

一部の OIDC プロバイダーでは、>= 0.3.16 にアップグレードするには、オフライン アクセス スコープの更新トークンを取得する必要があります。 これにより、Firezone が ID プロバイダーで更新され、ユーザーが削除された後に VPN 接続が遮断されることが保証されます。 Firezone の初期のイテレーションには、この機能がありませんでした。 場合によっては、ID プロバイダーから削除されたユーザーがまだ VPN に接続している可能性があります。

オフライン アクセス スコープをサポートする OIDC プロバイダーの OIDC 構成のスコープ パラメーターにオフライン アクセスを含める必要があります。 /etc/firezone/firezone.rb にある Firezone 構成ファイルに変更を適用するには、Firezone-ctl reconfigure を実行する必要があります。

OIDC プロバイダーによって認証されたユーザーの場合、Firezone が更新トークンを正常に取得できる場合、Web UI のユーザー詳細ページに OIDC 接続の見出しが表示されます。

これが機能しない場合は、既存の OAuth アプリを削除し、OIDC セットアップ手順を繰り返して、 新しいアプリ統合を作成する .

既存の OAuth 統合があります

0.3.11 より前は、Firezone は事前構成された OAuth2 プロバイダーを使用していました。 

指示に従ってください こちら OIDC に移行します。

ID プロバイダーを統合していません

アクションは必要ありません。 

指示に従ってください こちら OIDC プロバイダーを介して SSO を有効にします。

0.3.1 から >= 0.3.2 へのアップグレード

その代わりに、default['firezone']['external url'] が構成オプション default['firezone']['fqdn'] に置き換わりました。 

これを、一般公開されている Firezone オンライン ポータルの URL に設定します。 未定義のままにしておくと、デフォルトで https:// とサーバーの FQDN が追加されます。

構成ファイルは /etc/firezone/firezone.rb にあります。 構成変数とその説明の完全なリストについては、構成ファイルのリファレンスを参照してください。

0.2.x から 0.3.x へのアップグレード

バージョン 0.3.0 以降、Firezone は Firezone サーバーにデバイスの秘密鍵を保持しなくなりました。 

Firezone Web UI では、これらの構成を再ダウンロードしたり表示したりすることはできませんが、既存のデバイスはそのまま動作し続ける必要があります。

0.1.x から 0.2.x へのアップグレード

Firezone 0.1.x からアップグレードする場合、手動で対処しなければならない構成ファイルの変更がいくつかあります。 

/etc/firezone/firezone.rb ファイルに必要な変更を加えるには、root として以下のコマンドを実行します。

 

cp /etc/firezone/firezone.rb /etc/firezone/firezone.rb.bak

sed -i “s/\['enable'\]/\['enabled'\]/” /etc/firezone/firezone.rb

echo “default['firezone']['connectivity_checks']['enabled'] = true” >> /etc/firezone/firezone.rb

echo "default['firezone']['connectivity_checks']['interval'] = 3_600" >> /etc/firezone/firezone.rb

firezone-ctl 再構成

firezone-ctl 再起動

トラブルシューティング

Firezone ログを確認することは、発生する可能性のある問題に対する賢明な最初のステップです。

sudo firezone-ctl tail を実行して、Firezone ログを表示します。

接続の問題のデバッグ

Firezone での接続の問題の大部分は、互換性のない iptables または nftables ルールによって引き起こされます。 有効なルールが Firezone のルールと衝突しないようにする必要があります。

トンネルがアクティブなときにインターネット接続がドロップする

WireGuard トンネルをアクティブにするたびにインターネット接続が低下する場合は、FORWARD チェーンが WireGuard クライアントから Firezone を通過させたい場所へのパケットを許可していることを確認してください。

 

デフォルトのルーティングポリシーが許可されていることを確認することにより、ufw を使用している場合、これを実現できます。

 

ubuntu@fz:~$ sudo ufw デフォルトでルーティングを許可

デフォルトのルーティング ポリシーが「許可」に変更されました

(それに応じてルールを更新してください)

 

A UFW 典型的な Firezone サーバーのステータスは次のようになります。

 

ubuntu@fz:~$ sudo ufw ステータス詳細

ステータス: アクティブ

ロギング: オン (低)

デフォルト: 拒否 (着信)、許可 (発信)、許可 (ルーティング)

新しいプロファイル: スキップ

 

アクションへ から

— — —-

22/tcp どこでも許可

80/tcp どこでも許可

443/tcp どこでも許可

51820/udp どこでも許可

22/tcp (v6) どこでも許可 (v6)

80/tcp (v6) どこでも許可 (v6)

443/tcp (v6) どこでも許可 (v6)

51820/udp (v6) どこでも許可 (v6)

セキュリティに関する考慮事項

以下で説明するように、非常に機密性が高く、ミッション クリティカルな運用展開では、Web インターフェイスへのアクセスを制限することをお勧めします。

サービスとポート

 

カスタマーサービス

デフォルトのポート

リッスン アドレス

説明

nginx

80、443

Firezone を管理し、認証を容易にするためのパブリック HTTP(S) ポート。

ワイヤーガード

51820

VPN セッションに使用されるパブリック WireGuard ポート。 (UDP)

Postgresql

15432

127.0.0.1

バンドルされた Postgresql サーバーに使用されるローカル専用ポート。

フェニックス

13000

127.0.0.1

アップストリームのエリクサー アプリ サーバーが使用するローカル専用ポート。

本番環境への導入

Firezone の一般に公開されている Web UI (デフォルトではポート 443/tcp および 80/tcp) へのアクセスを制限することを検討し、代わりに WireGuard トンネルを使用して、単一の管理者が担当する本番環境および公開環境向けの Firezone を管理することをお勧めします。デバイス構成を作成してエンド ユーザーに配布する。

 

たとえば、管理者がデバイス構成を作成し、ローカル WireGuard アドレス 10.3.2.2 でトンネルを作成した場合、次の ufw 構成により、管理者はデフォルトの 10.3.2.1 を使用してサーバーの wg-firezone インターフェイス上の Firezone Web UI にアクセスできます。トンネル アドレス:

 

root@demo:~# ufw ステータス詳細

ステータス: アクティブ

ロギング: オン (低)

デフォルト: 拒否 (着信)、許可 (発信)、許可 (ルーティング)

新しいプロファイル: スキップ

 

アクションへ から

— — —-

22/tcp どこでも許可

51820/udp どこでも許可

10.3.2.2 でどこでも許可

22/tcp (v6) どこでも許可 (v6)

51820/udp (v6) どこでも許可 (v6)

これだけ残します 22/tcp サーバーを管理するための SSH アクセス用に公開 (オプション)、および 51820/UDP WireGuard トンネルを確立するために公開されます。

SQL クエリを実行する

Firezone には Postgresql サーバーとそれに対応するものがバンドルされています psql 次のようにローカルシェルから使用できるユーティリティ:

 

/opt/firezone/embedded/bin/psql \

  -U ファイアゾーン \

  -d ファイアゾーン \

  -h ローカルホスト\

  -p 15432 \

  -c "SQL_STATEMENT"

 

これは、デバッグ目的で役立ちます。

 

一般的なタスク:

 

  • すべてのユーザーの一覧表示
  • すべてのデバイスの一覧表示
  • ユーザーの役割の変更
  • データベースのバックアップ



すべてのユーザーの一覧表示:

 

/opt/firezone/embedded/bin/psql \

  -U ファイアゾーン \

  -d ファイアゾーン \

  -h ローカルホスト\

  -p 15432 \

  -c 「SELECT * FROM ユーザー;」



すべてのデバイスの一覧表示:

 

/opt/firezone/embedded/bin/psql \

  -U ファイアゾーン \

  -d ファイアゾーン \

  -h ローカルホスト\

  -p 15432 \

  -c 「SELECT * FROM デバイス;」



ユーザーの役割を変更します。

 

ロールを「admin」または「unprivileged」に設定します。

 

/opt/firezone/embedded/bin/psql \

  -U ファイアゾーン \

  -d ファイアゾーン \

  -h ローカルホスト\

  -p 15432 \

  -c 「UPDATE users SET role = 'admin' WHERE email = 'user@example.com';」



データベースのバックアップ:

 

さらに、データベースの定期的なバックアップに使用できる pg dump プログラムが含まれています。 次のコードを実行して、データベースのコピーを一般的な SQL クエリ形式でダンプします (/path/to/backup.sql を SQL ファイルを作成する場所に置き換えます)。

 

/opt/firezone/embedded/bin/pg_dump\

  -U ファイアゾーン \

  -d ファイアゾーン \

  -h ローカルホスト\

  -p 15432 > /path/to/backup.sql

ユーザーガイド

  • ユーザーを追加する
  • デバイスの追加
  • エグレス ルール
  • クライアントの指示
  • スプリット トンネル VPN
  • 逆トンネル 
  • NATゲートウェイ

ユーザーを追加する

Firezone が正常に展開されたら、ユーザーを追加してネットワークへのアクセスを提供する必要があります。 これには Web UI を使用します。

 

Web UI


/users配下の「Add User」ボタンを選択すると、ユーザーを追加できます。 ユーザーにメールアドレスとパスワードを提供する必要があります。 組織内のユーザーへのアクセスを自動的に許可するために、Firezone は ID プロバイダーとインターフェースして同期することもできます。 詳細については、 ブランド. < 認証へのリンクを追加

デバイスの追加

秘密鍵が自分だけに表示されるように、ユーザーが独自のデバイス構成を作成するように依頼することをお勧めします。 ユーザーは、上の指示に従って、独自のデバイス構成を生成できます。 クライアントの指示 ページ。

 

管理デバイス構成の生成

すべてのユーザー デバイス構成は、Firezone 管理者が作成できます。 /users にあるユーザー プロファイル ページで、[デバイスの追加] オプションを選択してこれを実行します。

 

[スクリーンショットを挿入]

 

デバイス プロファイルを作成した後、ユーザーに WireGuard 構成ファイルを電子メールで送信できます。

 

ユーザーとデバイスがリンクされます。 ユーザーを追加する方法の詳細については、次を参照してください。 ユーザーを追加する.

エグレス ルール

カーネルの netfilter システムを使用することで、Firezone はエグレス フィルタリング機能を有効にして、DROP または ACCEPT パケットを指定します。 通常、すべてのトラフィックが許可されます。

 

IPv4 と IPv6 の CIDR と IP アドレスは、それぞれ許可リストと拒否リストを介してサポートされます。 ルールを追加するときに、ルールの範囲をユーザーに限定することを選択できます。これにより、そのユーザーのすべてのデバイスにルールが適用されます。

クライアントの指示

インストールと設定

ネイティブの WireGuard クライアントを使用して VPN 接続を確立するには、このガイドを参照してください。

 

1. ネイティブ WireGuard クライアントをインストールする

 

ここにある公式の WireGuard クライアントは、Firezone と互換性があります。

 

MacOSの

 

Windows

 

iOS

 

Android

 

上記以外の OS システムについては、WireGuard の公式 Web サイト (https://www.wireguard.com/install/) にアクセスしてください。

 

2. デバイス構成ファイルをダウンロードします

 

Firezone 管理者または自分自身が、Firezone ポータルを使用してデバイス構成ファイルを生成できます。

 

Firezone 管理者が提供した URL にアクセスして、デバイス構成ファイルを自己生成します。 あなたの会社には、このための固有の URL があります。 この場合、https://instance-id.yourfirezone.com です。

 

Firezone Okta SSO へのログイン

 

[スクリーンショットを挿入]

 

3. クライアントの構成を追加する

 

.conf ファイルを開いて WireGuard クライアントにインポートします。 アクティベート スイッチをオンにすると、VPN セッションを開始できます。

 

[スクリーンショットを挿入]

セッション再認証

ネットワーク管理者が VPN 接続をアクティブに保つために繰り返し認証を要求している場合は、以下の手順に従ってください。 



次のものが必要です。

 

Firezone ポータルの URL: ネットワーク管理者に接続を依頼してください。

ネットワーク管理者は、ログインとパスワードを提供できるはずです。 Firezone サイトでは、雇用主が使用するシングル サインオン サービス (Google や Okta など) を使用してログインするよう求められます。

 

1. VPN 接続をオフにする

 

[スクリーンショットを挿入]

 

2. 再度認証する 

Firezone ポータルの URL に移動し、ネットワーク管理者から提供された資格情報を使用してログインします。 すでにサインインしている場合は、再度サインインする前に [再認証] ボタンをクリックします。

 

[スクリーンショットを挿入]

 

ステップ 3: VPN セッションを開始する

[スクリーンショットを挿入]

Linux 用ネットワーク マネージャー

Linux デバイスで Network Manager CLI を使用して WireGuard 構成プロファイルをインポートするには、次の手順 (nmcli) に従います。

注意

プロファイルで IPv6 サポートが有効になっている場合、Network Manager GUI を使用して構成ファイルをインポートしようとすると、次のエラーで失敗することがあります。

ipv6.method: メソッド「auto」は WireGuard ではサポートされていません

1. WireGuard ツールをインストールする 

WireGuard ユーザー空間ユーティリティをインストールする必要があります。 これは、Linux ディストリビューション用の wireguard または wireguard-tools と呼ばれるパッケージになります。

Ubuntu / Debianの場合:

sudo apt install ワイヤーガード

Fedora を使用するには:

sudo dnf install Wireguard-tools

アーチLinux:

sudo pacman -S ワイヤーガードツール

上記以外のディストリビューションについては、WireGuard の公式 Web サイト (https://www.wireguard.com/install/) にアクセスしてください。

2.構成のダウンロード 

Firezone 管理者または自己生成のいずれかが、Firezone ポータルを使用してデバイス構成ファイルを生成できます。

Firezone 管理者が提供した URL にアクセスして、デバイス構成ファイルを自己生成します。 あなたの会社には、このための固有の URL があります。 この場合、https://instance-id.yourfirezone.com です。

[スクリーンショットを挿入]

3 設定をインポートする

nmcli を使用して、提供された構成ファイルをインポートします。

sudo nmcli 接続 インポート タイプ ワイヤーガード ファイル /path/to/configuration.conf

注意

構成ファイルの名前は、WireGuard 接続/インターフェースに対応します。 インポート後、必要に応じて接続の名前を変更できます。

nmcli connection modify [古い名前] connection.id [新しい名前]

4.接続または切断

コマンドラインから、次のように VPN に接続します。

nmcli 接続アップ [vpn 名]

切断するには:

nmcli 接続ダウン [vpn 名]

GUI を使用している場合は、該当する Network Manager アプレットを使用して接続を管理することもできます。

自動接続

自動接続オプションで「はい」を選択すると、VPN 接続を自動的に接続するように構成できます。

 

nmcli 接続 [vpn 名] 接続を変更します。 <<<<<<<<<<<<<<<<<<<<<

 

自動接続はい

 

自動接続を無効にするには、no に戻します。

 

nmcli 接続 [vpn 名] 接続を変更します。

 

自動接続しない

多要素認証を利用可能にする

MFA を有効にするには Firezone ポータルの /user account/register mfa ページに移動します。 認証アプリを使用して、生成された QR コードをスキャンし、XNUMX 桁のコードを入力します。

認証アプリを紛失した場合は、管理者に連絡してアカウントのアクセス情報をリセットしてください。

スプリット トンネル VPN

このチュートリアルでは、特定の IP 範囲へのトラフィックのみが VPN サーバー経由で転送されるように、Firezone で WireGuard のスプリット トンネリング機能を設定するプロセスについて説明します。

 

1. 許可された IP を構成する 

クライアントがネットワーク トラフィックをルーティングする IP 範囲は、/settings/default ページにある [許可された IP] フィールドに設定されています。 このフィールドの変更によって影響を受けるのは、Firezone によって生成された、新しく作成された WireGuard トンネル構成のみです。

 

[スクリーンショットを挿入]



デフォルト値は 0.0.0.0/0、::/0 で、クライアントからのすべてのネットワーク トラフィックを VPN サーバーにルーティングします。

 

このフィールドの値の例は次のとおりです。

 

0.0.0.0/0, ::/0 – すべてのネットワーク トラフィックが VPN サーバーにルーティングされます。

192.0.2.3/32 – 単一の IP アドレスへのトラフィックのみが VPN サーバーにルーティングされます。

3.5.140.0/22 – 3.5.140.1 – 3.5.143.254 の範囲の IP へのトラフィックのみが VPN サーバーにルーティングされます。 この例では、ap-northeast-2 AWS リージョンの CIDR 範囲が使用されました。



注意

Firezone は、パケットのルーティング先を決定する際に、最も正確なルートに関連付けられた出力インターフェイスを最初に選択します。

 

2. WireGuard 構成を再生成する

既存のユーザー デバイスを新しい分割トンネル構成で更新するには、構成ファイルを再生成してネイティブの WireGuard クライアントに追加する必要があります。

 

手順については、 デバイスを追加. <<<<<<<<<<< リンクを追加

逆トンネル

このマニュアルでは、Firezone をリレーとして使用して XNUMX つのデバイスをリンクする方法を説明します。 典型的な使用例の XNUMX つは、NAT またはファイアウォールによって保護されているサーバー、コンテナ、またはマシンに管理者がアクセスできるようにすることです。

 

ノードからノードへ 

この図は、デバイス A と B がトンネルを構築する簡単なシナリオを示しています。

 

[firezone の建築写真を挿入]

 

/users/[user_id]/new_device に移動して、デバイス A とデバイス B を作成することから始めます。 各デバイスの設定で、次のパラメーターが以下にリストされている値に設定されていることを確認します。 デバイス構成を作成するときに、デバイス設定を設定できます (「デバイスの追加」を参照)。 既存のデバイスの設定を更新する必要がある場合は、新しいデバイス構成を生成することで実行できます。

 

すべてのデバイスには、PersistentKeepalive を構成できる /settings/defaults ページがあることに注意してください。

 

デバイスA

 

許可されたIP = 10.3.2.2/32

  これは、デバイス B の IP または IP の範囲です。

永続的なキープアライブ = 25

  デバイスが NAT の背後にある場合、これにより、デバイスはトンネルを維持し、WireGuard インターフェイスからパケットを受信し続けることができます。 通常は 25 の値で十分ですが、環境によってはこの値を減らす必要がある場合があります。



B装置

 

許可されたIP = 10.3.2.3/32

これは、デバイス A の IP または IP の範囲です。

永続的なキープアライブ = 25

管理者のケース - XNUMX 対多のノード

この例は、デバイス A がデバイス B から D と双方向で通信できる状況を示しています。 このセットアップは、エンジニアまたは管理者がさまざまなネットワークを介して多数のリソース (サーバー、コンテナー、またはマシン) にアクセスすることを表します。

 

【アーキテクチャ図】<<<<<<<<<<<<<<<<<<<<<

 

各デバイスの設定で、以下の設定が対応する値に行われていることを確認してください。 デバイス構成を作成するときに、デバイス設定を指定できます (「デバイスの追加」を参照)。 既存のデバイスの設定を更新する必要がある場合は、新しいデバイス構成を作成できます。

 

デバイス A (管理者ノード)

 

許可された IP = 10.3.2.3/32、10.3.2.4/32、10.3.2.5/32 

    これはデバイス B から D の IP です。デバイス B から D の IP は、設定する IP 範囲に含まれている必要があります。

永続的なキープアライブ = 25 

    これにより、NAT によって保護されている場合でも、デバイスがトンネルを維持し、WireGuard インターフェイスからパケットを受信し続けることが保証されます。 ほとんどの場合、値は 25 で十分ですが、環境によっては、この値を下げる必要がある場合があります。

 

デバイスB

 

  • AllowedIPs = 10.3.2.2/32: これは、デバイス A の IP または IP の範囲です。
  • 永続的なキープアライブ = 25

デバイスC

 

  • AllowedIPs = 10.3.2.2/32: これは、デバイス A の IP または IP の範囲です。
  • 永続的なキープアライブ = 25

デバイス D

 

  • AllowedIPs = 10.3.2.2/32: これは、デバイス A の IP または IP の範囲です。
  • 永続的なキープアライブ = 25

NATゲートウェイ

チームのすべてのトラフィックが流出する単一の静的な出口 IP を提供するために、Firezone を NAT ゲートウェイとして利用できます。 これらの状況では、頻繁に使用されます。

 

コンサルティング契約: 各従業員の一意のデバイス IP ではなく、単一の静的 IP アドレスをホワイトリストに登録するよう顧客に依頼します。

セキュリティまたはプライバシーの目的で、プロキシを使用するか、ソース IP をマスキングします。

 

この投稿では、Firezone を実行している単一のホワイトリストに登録された静的 IP にセルフホスト Web アプリケーションへのアクセスを制限する簡単な例を示します。 この図では、Firezone と保護されたリソースは異なる VPC エリアにあります。

 

このソリューションは、多数のエンド ユーザーの IP ホワイトリストを管理する代わりに頻繁に使用されますが、アクセス リストが拡大すると時間がかかる可能性があります。

AWS の例

私たちの目的は、EC2 インスタンスに Firezone サーバーをセットアップして、VPN トラフィックを制限されたリソースにリダイレクトすることです。 この例では、Firezone はネットワーク プロキシまたは NAT ゲートウェイとして機能し、接続された各デバイスに一意のパブリック egress IP を提供します。

 

1. Firezone サーバーをインストールする

この場合、tc2.micro という名前の EC2 インスタンスに、Firezone インスタンスがインストールされています。 Firezone の展開については、展開ガイドを参照してください。 AWS に関しては、次のことを確認してください。

 

Firezone EC2 インスタンスのセキュリティ グループは、保護されたリソースの IP アドレスへのアウトバウンド トラフィックを許可します。

Firezone インスタンスにはエラスティック IP が付属しています。 Firezone インスタンスを介して外部の宛先に転送されるトラフィックは、これを送信元 IP アドレスとして持ちます。 問題の IP アドレスは 52.202.88.54 です。

 

[スクリーンショットを挿入]<<<<<<<<<<<<<<<<<<<<<<<<

 

2. 保護されているリソースへのアクセスを制限する

この場合、セルフホステッド Web アプリケーションが保護されたリソースとして機能します。 Web アプリには、IP アドレス 52.202.88.54 からのリクエストのみがアクセスできます。 リソースによっては、さまざまなポートやトラフィック タイプでインバウンド トラフィックを許可する必要がある場合があります。 これについては、このマニュアルでは扱いません。

 

[スクリーンショットを挿入]<<<<<<<<<<<<<<<<<<<<<<<<

 

保護されたリソースを担当するサード パーティに、手順 1 で定義した静的 IP (この場合は 52.202.88.54) からのトラフィックを許可する必要があることを伝えてください。

 

3. VPN サーバーを使用してトラフィックを保護されたリソースに転送する

 

デフォルトでは、すべてのユーザー トラフィックは VPN サーバーを通過し、手順 1 で構成した静的 IP (この場合は 52.202.88.54) から送信されます。 ただし、スプリット トンネリングが有効になっている場合は、保護されたリソースの宛先 IP が許可された IP にリストされていることを確認するための設定が必要になる場合があります。

ここに見出しテキストを追加します

で使用可能な構成オプションの完全なリストを以下に示します。 /etc/firezone/firezone.rb.



オプション

説明

デフォルト値

デフォルト['firezone']['external_url']

この Firezone インスタンスの Web ポータルへのアクセスに使用される URL。

「https://#{node['fqdn'] || ノード['ホスト名']}」

デフォルト['firezone']['config_directory']

Firezone 構成の最上位ディレクトリ。

/etc/firezone'

デフォルト['firezone']['install_directory']

Firezone をインストールする最上位ディレクトリ。

/opt/firezone'

デフォルト['firezone']['app_directory']

Firezone Web アプリケーションをインストールする最上位ディレクトリ。

「#{node['firezone']['install_directory']}/embedded/service/firezone」

デフォルト['firezone']['log_directory']

Firezone ログの最上位ディレクトリ。

/var/log/firezone'

デフォルト['firezone']['var_directory']

Firezone ランタイム ファイルの最上位ディレクトリ。

/var/opt/firezone'

デフォルト['firezone']['ユーザー']

ほとんどのサービスとファイルが属する権限のない Linux ユーザーの名前。

ファイアーゾーン」

デフォルト['firezone']['グループ']

ほとんどのサービスとファイルが属する Linux グループの名前。

ファイアーゾーン」

デフォルト['firezone']['admin_email']

最初の Firezone ユーザーの電子メール アドレス。

「firezone@localhost」

デフォルト['firezone']['max_devices_per_user']

ユーザーが所有できるデバイスの最大数。

10

デフォルト['firezone']['allow_unprivileged_device_management']

管理者以外のユーザーがデバイスを作成および削除できるようにします。

TRUE

デフォルト['firezone']['allow_unprivileged_device_configuration']

管理者以外のユーザーがデバイス構成を変更できるようにします。 無効にすると、権限のないユーザーは、名前と説明を除くすべてのデバイス フィールドを変更できなくなります。

TRUE

デフォルト['firezone']['egress_interface']

トンネリングされたトラフィックが終了するインターフェイスの名前。 nil の場合、デフォルトのルート インターフェイスが使用されます。

ゼロ

デフォルト['firezone']['fips_enabled']

OpenSSL FIP モードを有効または無効にします。

ゼロ

デフォルト['firezone']['logging']['enabled']

Firezone 全体のロギングを有効または無効にします。 ロギングを完全に無効にするには、false に設定します。

TRUE

デフォルト['エンタープライズ']['名前']

Chef 'enterprise' クックブックで使用される名前。

ファイアーゾーン」

デフォルト['firezone']['install_path']

Chef 'enterprise' クックブックで使用されるインストール パス。 上記の install_directory と同じに設定する必要があります。

ノード['firezone']['install_directory']

デフォルト['firezone']['sysvinit_id']

/etc/inittab で使用される識別子。 1 ~ 4 文字の一意のシーケンスである必要があります。

すする'

デフォルト['firezone']['認証']['ローカル']['有効化']

ローカルの電子メール/パスワード認証を有効または無効にします。

TRUE

デフォルト['firezone']['認証']['auto_create_oidc_users']

初めて OIDC からサインインするユーザーを自動的に作成します。 既存のユーザーのみが OIDC 経由でサインインできるようにするには、無効にします。

TRUE

デフォルト['firezone']['認証']['disable_vpn_on_oidc_error']

OIDC トークンを更新しようとしてエラーが検出された場合は、ユーザーの VPN を無効にします。

間違った情報

デフォルト['firezone']['認証']['oidc']

{“provider” => [config…]} の形式の OpenID Connect 構成 – 参照 OpenIDConnect のドキュメント 設定例。

{}

デフォルト['firezone']['nginx']['有効']

バンドルされている nginx サーバーを有効または無効にします。

TRUE

デフォルト['firezone']['nginx']['ssl_port']

HTTPS リッスン ポート。

443

デフォルト['firezone']['nginx']['ディレクトリ']

Firezone 関連の nginx 仮想ホスト構成を格納するディレクトリ。

「#{node['firezone']['var_directory']}/nginx/etc」

デフォルト['firezone']['nginx']['log_directory']

Firezone 関連の nginx ログ ファイルを保存するディレクトリ。

「#{node['firezone']['log_directory']}/nginx」

デフォルト['firezone']['nginx']['log_rotation']['file_maxbytes']

Nginx ログ ファイルをローテーションするファイル サイズ。

104857600

デフォルト['firezone']['nginx']['log_rotation']['num_to_keep']

破棄する前に保持する Firezone nginx ログ ファイルの数。

10

デフォルト['firezone']['nginx']['log_x_forwarded_for']

Firezone nginx x-forwarded-for ヘッダーをログに記録するかどうか。

TRUE

デフォルト['firezone']['nginx']['hsts_header']['enabled']

有効または無効にする HSTS.

TRUE

デフォルト['firezone']['nginx']['hsts_header']['include_subdomains']

HSTS ヘッダーの includeSubDomains を有効または無効にします。

TRUE

デフォルト['firezone']['nginx']['hsts_header']['max_age']

HSTS ヘッダーの最大経過時間。

31536000

デフォルト['firezone']['nginx']['redirect_to_canonical']

上で指定した正規の FQDN に URL をリダイレクトするかどうか

間違った情報

デフォルト['firezone']['nginx']['cache']['enabled']

Firezone nginx キャッシュを有効または無効にします。

間違った情報

デフォルト['firezone']['nginx']['キャッシュ']['ディレクトリ']

Firezone nginx キャッシュのディレクトリ。

「#{node['firezone']['var_directory']}/nginx/cache」

デフォルト['firezone']['nginx']['ユーザー']

Firezone nginx ユーザー。

ノード['firezone']['ユーザー']

デフォルト['firezone']['nginx']['group']

Firezone nginx グループ。

ノード['firezone']['グループ']

デフォルト['firezone']['nginx']['dir']

最上位の nginx 構成ディレクトリ。

ノード['firezone']['nginx']['ディレクトリ']

デフォルト['firezone']['nginx']['log_dir']

最上位の nginx ログ ディレクトリ。

ノード['firezone']['nginx']['log_directory']

デフォルト['firezone']['nginx']['pid']

nginx pid ファイルの場所。

「#{node['firezone']['nginx']['directory']}/nginx.pid」

デフォルト['firezone']['nginx']['daemon_disable']

nginx デーモン モードを無効にして、代わりに監視できるようにします。

TRUE

デフォルト['firezone']['nginx']['gzip']

nginx gzip 圧縮をオンまたはオフにします。

オン'

デフォルト['firezone']['nginx']['gzip_static']

静的ファイルの nginx gzip 圧縮をオンまたはオフにします。

オフ'

デフォルト['firezone']['nginx']['gzip_http_version']

静的ファイルの提供に使用する HTTP バージョン。

1.0」

デフォルト['firezone']['nginx']['gzip_comp_level']

nginx gzip 圧縮レベル。

2」

デフォルト['firezone']['nginx']['gzip_proxied']

リクエストとレスポンスに応じて、プロキシされたリクエストのレスポンスの gzip 圧縮を有効または無効にします。

どれでも'

デフォルト['firezone']['nginx']['gzip_vary']

「Vary: Accept-Encoding」応答ヘッダーの挿入を有効または無効にします。

オフ'

デフォルト['firezone']['nginx']['gzip_buffers']

応答の圧縮に使用されるバッファーの数とサイズを設定します。 nil の場合、nginx のデフォルトが使用されます。

ゼロ

デフォルト['firezone']['nginx']['gzip_types']

gzip 圧縮を有効にする MIME タイプ。

['text/plain', 'text/css','application/x-javascript', 'text/xml', 'application/xml', 'application/rss+xml', 'application/atom+xml', ' text/javascript', 'application/javascript', 'application/json']

デフォルト['firezone']['nginx']['gzip_min_length']

ファイルの gzip 圧縮を有効にする最小ファイル長。

1000

デフォルト['firezone']['nginx']['gzip_disable']

gzip 圧縮を無効にするユーザー エージェント マッチャー。

MSIE [1-6]\.'

デフォルト['firezone']['nginx']['keepalive']

アップストリーム サーバーに接続するためのキャッシュを有効にします。

オン'

デフォルト['firezone']['nginx']['keepalive_timeout']

アップストリーム サーバーへのキープアライブ接続のタイムアウト (秒単位)。

65

デフォルト['firezone']['nginx']['worker_processes']

nginx ワーカー プロセスの数。

ノード['cpu'] && ノード['cpu']['合計'] ? ノード['cpu']['合計']: 1

デフォルト['firezone']['nginx']['worker_connections']

ワーカー プロセスが開くことができる同時接続の最大数。

1024

デフォルト['firezone']['nginx']['worker_rlimit_nofile']

ワーカー プロセスのオープン ファイルの最大数の制限を変更します。 nil の場合、nginx のデフォルトを使用します。

ゼロ

デフォルト['firezone']['nginx']['multi_accept']

ワーカーが一度に XNUMX つの接続を受け入れるか、複数の接続を受け入れるか。

TRUE

デフォルト['firezone']['nginx']['イベント']

nginx イベント コンテキスト内で使用する接続処理方法を指定します。

エポール

デフォルト['firezone']['nginx']['server_tokens']

エラーページと「サーバー」応答ヘッダーフィールドでの nginx バージョンの発行を有効または無効にします。

ゼロ

デフォルト['firezone']['nginx']['server_names_hash_bucket_size']

サーバー名ハッシュ テーブルのバケット サイズを設定します。

64

デフォルト['firezone']['nginx']['sendfile']

nginx の sendfile() の使用を有効または無効にします。

オン'

デフォルト['firezone']['nginx']['access_log_options']

nginx アクセス ログ オプションを設定します。

ゼロ

デフォルト['firezone']['nginx']['error_log_options']

nginx エラー ログ オプションを設定します。

ゼロ

デフォルト['firezone']['nginx']['disable_access_log']

nginx アクセス ログを無効にします。

間違った情報

デフォルト['firezone']['nginx']['types_hash_max_size']

nginx タイプのハッシュの最大サイズ。

2048

デフォルト['firezone']['nginx']['types_hash_bucket_size']

nginx タイプのハッシュ バケット サイズ。

64

デフォルト['firezone']['nginx']['proxy_read_timeout']

nginx プロキシ読み取りタイムアウト。 nginx のデフォルトを使用するには、nil に設定します。

ゼロ

デフォルト['firezone']['nginx']['client_body_buffer_size']

nginx クライアント本体のバッファ サイズ。 nginx のデフォルトを使用するには、nil に設定します。

ゼロ

デフォルト['firezone']['nginx']['client_max_body_size']

nginxクライアントの最大ボディサイズ.

250m '

デフォルト['firezone']['nginx']['デフォルト']['モジュール']

追加の nginx モジュールを指定します。

[]

デフォルト['firezone']['nginx']['enable_rate_limiting']

nginx レート制限を有効または無効にします。

TRUE

デフォルト['firezone']['nginx']['rate_limiting_zone_name']

Nginx レート制限ゾーン名。

ファイアーゾーン」

デフォルト['firezone']['nginx']['rate_limiting_backoff']

Nginx レート制限バックオフ。

10m '

デフォルト['firezone']['nginx']['rate_limit']

Nginx レート制限。

10r/s'

デフォルト['firezone']['nginx']['ipv6']

nginx が IPv6 に加えて IPv4 の HTTP リクエストをリッスンできるようにします。

TRUE

デフォルト['firezone']['postgresql']['有効']

バンドルされた Postgresql を有効または無効にします。 false に設定し、以下のデータベース オプションを入力して、独自の Postgresql インスタンスを使用します。

TRUE

デフォルト['firezone']['postgresql']['ユーザー名']

Postgresql のユーザー名。

ノード['firezone']['ユーザー']

デフォルト['firezone']['postgresql']['data_directory']

Postgresql データ ディレクトリ。

「#{node['firezone']['var_directory']}/postgresql/13.3/data」

デフォルト['firezone']['postgresql']['log_directory']

Postgresql ログ ディレクトリ。

「#{node['firezone']['log_directory']}/postgresql」

デフォルト['firezone']['postgresql']['log_rotation']['file_maxbytes']

ローテーション前の Postgresql ログ ファイルの最大サイズ。

104857600

デフォルト['firezone']['postgresql']['log_rotation']['num_to_keep']

保持する Postgresql ログ ファイルの数。

10

デフォルト['firezone']['postgresql']['checkpoint_completion_target']

Postgresql チェックポイント完了ターゲット。

0.5

デフォルト['firezone']['postgresql']['checkpoint_segments']

Postgresql チェックポイント セグメントの数。

3

デフォルト['firezone']['postgresql']['checkpoint_timeout']

Postgresql チェックポイントのタイムアウト。

5分'

デフォルト['firezone']['postgresql']['checkpoint_warning']

Postgresql チェックポイントの警告時間 (秒単位)。

30年代

デフォルト['firezone']['postgresql']['effective_cache_size']

Postgresql の有効なキャッシュ サイズ。

128MB'

デフォルト['firezone']['postgresql']['listen_address']

Postgresql リッスン アドレス。

127.0.0.1」

デフォルト['firezone']['postgresql']['max_connections']

Postgresql の最大接続数。

350

デフォルト['firezone']['postgresql']['md5_auth_cidr_addresses']

md5 認証を許可する Postgresql CIDR。

['127.0.0.1/32', '::1/128']

デフォルト['firezone']['postgresql']['ポート']

Postgresql リッスン ポート。

15432

デフォルト['firezone']['postgresql']['shared_buffers']

Postgresql 共有バッファーのサイズ。

「#{(ノード['メモリ']['合計'].to_i / 4) / 1024}MB」

デフォルト['firezone']['postgresql']['shmmax']

Postgresql shmmax (バイト単位)。

17179869184

デフォルト['firezone']['postgresql']['shmall']

Postgresql shmall (バイト単位)。

4194304

デフォルト['firezone']['postgresql']['work_mem']

Postgresql の作業メモリ サイズ。

8MB'

デフォルト['firezone']['データベース']['ユーザー']

Firezone が DB への接続に使用するユーザー名を指定します。

ノード['firezone']['postgresql']['ユーザー名']

デフォルト['firezone']['データベース']['パスワード']

外部 DB を使用する場合、Firezone が DB への接続に使用するパスワードを指定します。

change_me'

デフォルト['firezone']['データベース']['名前']

Firezone が使用するデータベース。 存在しない場合は作成されます。

ファイアーゾーン」

デフォルト['firezone']['データベース']['ホスト']

Firezone が接続するデータベース ホスト。

ノード['firezone']['postgresql']['listen_address']

デフォルト['firezone']['データベース']['ポート']

Firezone が接続するデータベース ポート。

ノード['firezone']['postgresql']['ポート']

デフォルト['firezone']['データベース']['プール']

Firezone が使用するデータベース プール サイズ。

[10 など n プロセッサ].max

デフォルト['firezone']['データベース']['ssl']

SSL 経由でデータベースに接続するかどうか。

間違った情報

デフォルト['firezone']['データベース']['ssl_opts']

SSL 経由で接続するときに :ssl_opts オプションに送信するオプションのハッシュ。 見る Ecto.Adapters.Postgres ドキュメント.

{}

デフォルト['firezone']['データベース']['パラメータ']

データベースへの接続時に :parameters オプションに送信するパラメーターのハッシュ。 見る Ecto.Adapters.Postgres ドキュメント.

{}

デフォルト['firezone']['データベース']['拡張機能']

有効にするデータベース拡張。

{ 'plpgsql' => true, 'pg_trgm' => true }

デフォルト['firezone']['phoenix']['enabled']

Firezone Web アプリケーションを有効または無効にします。

TRUE

デフォルト['firezone']['phoenix']['listen_address']

Firezone Web アプリケーションのリッスン アドレス。 これは、nginx がプロキシするアップストリームのリッスン アドレスになります。

127.0.0.1」

デフォルト['firezone']['phoenix']['port']

Firezone Web アプリケーションのリッスン ポート。 これは、nginx がプロキシするアップストリーム ポートになります。

13000

デフォルト['firezone']['phoenix']['log_directory']

Firezone Web アプリケーション ログ ディレクトリ。

「#{node['firezone']['log_directory']}/phoenix」

default['firezone']['phoenix']['log_rotation']['file_maxbytes']

Firezone Web アプリケーション ログ ファイルのサイズ。

104857600

デフォルト['firezone']['phoenix']['log_rotation']['num_to_keep']

保持する Firezone Web アプリケーション ログ ファイルの数。

10

デフォルト['firezone']['phoenix']['crash_detection']['enabled']

クラッシュが検出されたときの Firezone Web アプリケーションの停止を有効または無効にします。

TRUE

デフォルト['firezone']['phoenix']['external_trusted_proxies']

IP や CIDR の配列としてフォーマットされた信頼できるリバース プロキシのリスト。

[]

デフォルト['firezone']['phoenix']['private_clients']

IP や CIDR の配列でフォーマットされたプライベート ネットワーク HTTP クライアントのリスト。

[]

デフォルト['firezone']['wireguard']['enabled']

バンドルされた WireGuard 管理を有効または無効にします。

TRUE

デフォルト['firezone']['wireguard']['log_directory']

バンドルされた WireGuard 管理用のログ ディレクトリ。

「#{node['firezone']['log_directory']}/wireguard」

デフォルト['firezone']['wireguard']['log_rotation']['file_maxbytes']

WireGuard ログ ファイルの最大サイズ。

104857600

デフォルト['firezone']['wireguard']['log_rotation']['num_to_keep']

保持する WireGuard ログ ファイルの数。

10

デフォルト['firezone']['wireguard']['interface_name']

WireGuard インターフェイス名。 このパラメータを変更すると、VPN 接続が一時的に失われる可能性があります。

wg-firezone'

デフォルト['firezone']['wireguard']['port']

WireGuard リッスン ポート。

51820

デフォルト['firezone']['wireguard']['mtu']

このサーバーおよびデバイス構成用の WireGuard インターフェイス MTU。

1280

デフォルト['firezone']['wireguard']['endpoint']

デバイス構成の生成に使用する WireGuard エンドポイント。 nil の場合、デフォルトでサーバーのパブリック IP アドレスになります。

ゼロ

デフォルト['firezone']['wireguard']['dns']

生成されたデバイス構成に使用する WireGuard DNS。

1.1.1.1、1.0.0.1'

デフォルト['firezone']['wireguard']['allowed_ips']

生成されたデバイス構成に使用する WireGuard AllowedIPs。

0.0.0.0/0、::/0'

デフォルト['firezone']['wireguard']['persistent_keepalive']

生成されたデバイス構成のデフォルトの PersistentKeepalive 設定。 値 0 は無効にします。

0

デフォルト['firezone']['wireguard']['ipv4']['enabled']

WireGuard ネットワークの IPv4 を有効または無効にします。

TRUE

デフォルト['firezone']['wireguard']['ipv4']['マスカレード']

IPv4 トンネルを出るパケットのマスカレードを有効または無効にします。

TRUE

デフォルト['firezone']['wireguard']['ipv4']['network']

WireGuard ネットワーク IPv4 アドレス プール。

10.3.2.0/24 '

デフォルト['firezone']['wireguard']['ipv4']['アドレス']

WireGuard インターフェイスの IPv4 アドレス。 WireGuard アドレス プール内にある必要があります。

10.3.2.1」

デフォルト['firezone']['wireguard']['ipv6']['enabled']

WireGuard ネットワークの IPv6 を有効または無効にします。

TRUE

デフォルト['firezone']['wireguard']['ipv6']['マスカレード']

IPv6 トンネルを出るパケットのマスカレードを有効または無効にします。

TRUE

デフォルト['firezone']['wireguard']['ipv6']['network']

WireGuard ネットワーク IPv6 アドレス プール。

fd00::3:2:0/120′

デフォルト['firezone']['wireguard']['ipv6']['アドレス']

WireGuard インターフェイスの IPv6 アドレス。 IPv6 アドレス プール内にある必要があります。

fd00::3:2:1'

デフォルト['firezone']['runit']['svlogd_bin']

runit svlogd bin の場所。

「#{node['firezone']['install_directory']}/embedded/bin/svlogd」

デフォルト['firezone']['ssl']['ディレクトリ']

生成された証明書を格納するための SSL ディレクトリ。

/var/opt/firezone/ssl'

デフォルト['firezone']['ssl']['email_address']

自己署名証明書と ACME プロトコルの更新通知に使用する電子メール アドレス。

you@example.com'

デフォルト['firezone']['ssl']['acme']['enabled']

自動 SSL 証明書プロビジョニングのために ACME を有効にします。 Nginx がポート 80 でリッスンしないようにするには、これを無効にします。 こちら 詳細な手順については。

間違った情報

デフォルト['firezone']['ssl']['acme']['サーバー']

証明書の発行/更新に使用する ACME サーバー。 どれでもいい 有効な acme.sh サーバー

暗号化を許可する

デフォルト['firezone']['ssl']['acme']['keylength']

SSL 証明書の鍵のタイプと長さを指定します。 見る こちら

ec-256

デフォルト['firezone']['ssl']['証明書']

FQDN の証明書ファイルへのパス。 指定されている場合、上記の ACME 設定をオーバーライドします。 ACME と this の両方が nil の場合、自己署名証明書が生成されます。

ゼロ

デフォルト['firezone']['ssl']['certificate_key']

証明書ファイルへのパス。

ゼロ

デフォルト['firezone']['ssl']['ssl_dhparam']

nginx ssl dh_param。

ゼロ

デフォルト['firezone']['ssl']['country_name']

自己署名証明書の国名。

私たち'

デフォルト['firezone']['ssl']['state_name']

自己署名証明書の州名。

CA '

デフォルト['firezone']['ssl']['locality_name']

自己署名証明書の地域名。

サンフランシスコ'

デフォルト['firezone']['ssl']['company_name']

会社名の自己署名証明書。

弊社'

デフォルト['firezone']['ssl']['organizational_unit_name']

自己署名証明書の組織単位名。

オペレーション'

デフォルト['firezone']['ssl']['ciphers']

nginx が使用する SSL 暗号。

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’

デフォルト['firezone']['ssl']['fips_ciphers']

FIP モードの SSL 暗号。

FIPS@STRENGTH:!aNULL:!eNULL'

デフォルト['firezone']['ssl']['プロトコル']

使用する TLS プロトコル。

TLSv1 TLSv1.1 TLSv1.2'

デフォルト['firezone']['ssl']['session_cache']

SSL セッション キャッシュ。

共有:SSL:4m'

デフォルト['firezone']['ssl']['session_timeout']

SSL セッションのタイムアウト。

5m '

デフォルト['firezone']['robots_allow']

nginx ロボットは許可します。

/ '

デフォルト['firezone']['robots_disallow']

nginx ロボットは許可しません。

ゼロ

default['firezone']['outbound_email']['from']

アドレスからの送信メール。

ゼロ

default['firezone']['outbound_email']['provider']

アウトバウンド電子メール サービス プロバイダー。

ゼロ

デフォルト['firezone']['outbound_email']['configs']

送信メール プロバイダーの構成。

omn​​ibus/cookbooks/firezone/attributes/default.rb を参照してください

デフォルト['firezone']['テレメトリ']['有効']

匿名化された製品テレメトリを有効または無効にします。

TRUE

デフォルト['firezone']['connectivity_checks']['enabled']

Firezone 接続チェック サービスを有効または無効にします。

TRUE

デフォルト['firezone']['connectivity_checks']['interval']

接続チェックの間隔 (秒単位)。

3_600



________________________________________________________________

 

ファイルとディレクトリの場所

 

ここには、典型的な Firezone インストールに関連するファイルとディレクトリのリストがあります。 これらは、構成ファイルの変更によって変わる可能性があります。



path

説明

/var/opt/firezone

Firezone バンドル サービスのデータと生成された構成を含む最上位ディレクトリ。

/opt/ファイアゾーン

Firezone に必要なビルド済みライブラリ、バイナリ、およびランタイム ファイルを含む最上位ディレクトリ。

/usr/bin/firezone-ctl

Firezone インストールを管理するための firezone-ctl ユーティリティ。

/etc/systemd/system/firezone-runsvdir-start.service

Firezone runsvdir スーパーバイザー プロセスを開始するための systemd ユニット ファイル。

/etc/firezone

Firezone 構成ファイル。



__________________________________________________________

 

ファイアウォール テンプレート

 

このページはドキュメントでは空でした

 

_____________________________________________________

 

Nftables ファイアウォール テンプレート

 

次の nftables ファイアウォール テンプレートを使用して、Firezone を実行しているサーバーを保護できます。 テンプレートにはいくつかの仮定があります。 ユースケースに合わせてルールを調整する必要がある場合があります。

  • WireGuard インターフェイスの名前は wg-firezone です。 これが正しくない場合は、デフォルトの ['firezone']['wireguard']['interface_name'] 構成オプションと一致するように DEV_WIREGUARD 変数を変更します。
  • WireGuard がリッスンしているポートは 51820 です。デフォルトのポートを使用していない場合は、WIREGUARD_PORT 変数を変更します。
  • 次のインバウンド トラフィックのみがサーバーに許可されます。
    • SSH (TCP ポート 22)
    • HTTP (TCP ポート 80)
    • HTTPS (TCP ポート 443)
    • WireGuard (UDP ポート WIREGUARD_PORT)
    • UDP traceroute (UDP ポート 33434 ~ 33524、レート制限 500/秒)
    • ICMP および ICMPv6 (ping/ping 応答レートは 2000/秒に制限)
  • 次のアウトバウンド トラフィックのみがサーバーから許可されます。
    • DNS (UDP および TCP ポート 53)
    • HTTP (TCP ポート 80)
    • NTP (UDP ポート 123)
    • HTTPS (TCP ポート 443)
    • SMTP 送信 (TCP ポート 587)
    • UDP traceroute (UDP ポート 33434 ~ 33524、レート制限 500/秒)
  • 一致しないトラフィックがログに記録されます。 ロギングに使用されるルールは、トラフィックをドロップするルールから分離されており、レート制限されています。 関連するロギング ルールを削除しても、トラフィックには影響しません。

Firezone マネージド ルール​,war

Firezone は独自の nftables ルールを構成して、Web インターフェイスで構成された宛先へのトラフィックを許可/拒否し、クライアント トラフィックのアウトバウンド NAT を処理します。

以下のファイアウォール テンプレートを既に実行中のサーバー (起動時ではない) に適用すると、Firezone ルールがクリアされます。 これは、セキュリティに影響を与える可能性があります。

この問題を回避するには、phoenix サービスを再起動します。

firezone-ctl フェニックスを再起動します

ベース ファイアウォール テンプレート​,war

#!/usr/sbin/nft -f

 

## 既存のすべてのルールをクリア/フラッシュします

フラッシュルールセット

 

################################ 変数 ################## ##############

## インターネット/WAN インターフェース名

DEV_WAN = eth0 を定義します

 

## WireGuard インターフェイス名

DEV_WIREGUARD = wg-firezone を定義します

 

## WireGuard リッスン ポート

WIREGUARD_PORT を定義 = 51820

############################## 変数の終了 ################## ############

 

# 主な inet ファミリ フィルタリング テーブル

テーブル inet フィルター {

 

 # 転送トラフィックのルール

 # このチェーンは、Firezone フォワード チェーンの前に処理されます

 チェーンフォワード {

   タイプ フィルター フック フォワード プライオリティ フィルター – 5; ポリシーを受け入れる

 }

 

 # 入力トラフィックのルール

 チェーン入力 {

   type filter フック入力優先度フィルター; ポリシー ドロップ

 

   ## ループバック インターフェイスへのインバウンド トラフィックを許可する

   もしそうだったら\

     受け入れる \

     コメント 「ループバック インターフェイスからのすべてのトラフィックを許可する」

 

   ## 確立された関連する接続を許可する

   ct 状態確立、関連 \

     受け入れる \

     コメント 「確立された/関連する接続を許可する」

 

   ## インバウンド WireGuard トラフィックを許可する

   iif $DEV_WAN udp ポート $WIREGUARD_PORT \

     カウンター \

     受け入れる \

     コメント 「インバウンド WireGuard トラフィックを許可する」

 

   ## 新しい TCP 非 SYN パケットをログに記録してドロップする

   tcp フラグ != syn ct 状態 new \

     制限率 100/分のバースト 150 パケット \

     ログプレフィックス 「IN – 新しい !SYN:」 \

     コメント 「SYN TCP フラグが設定されていない新しい接続のレート制限ログ」

   tcp フラグ != syn ct 状態 new \

     カウンター \

     落とす \

     コメント 「SYN TCP フラグが設定されていない新しい接続をドロップする」

 

   ## 無効な fin/syn フラグが設定された TCP パケットをログに記録してドロップする

   tcp フラグ & (fin|syn) == (fin|syn) \

     制限率 100/分のバースト 150 パケット \

     ログプレフィックス 「IN – TCP FIN|SIN:」 \

     コメント 「無効な fin/syn フラグが設定された TCP パケットのレート制限ログ」

   tcp フラグ & (fin|syn) == (fin|syn) \

     カウンター \

     落とす \

     コメント 「無効な fin/syn フラグが設定された TCP パケットをドロップする」

 

   ## 無効な syn/rst フラグが設定された TCP パケットをログに記録してドロップする

   tcp フラグ & (syn|rst) == (syn|rst) \

     制限率 100/分のバースト 150 パケット \

     ログプレフィックス 「IN – TCP SYN|RST:」 \

     コメント 「無効な syn/rst フラグが設定された TCP パケットのレート制限ログ」

   tcp フラグ & (syn|rst) == (syn|rst) \

     カウンター \

     落とす \

     コメント 「無効な syn/rst フラグが設定された TCP パケットをドロップする」

 

   ## 無効な TCP フラグをログに記録してドロップする

   tcp フラグ & (fin|syn|rst|psh|ack|urg) < (fin) \

     制限率 100/分のバースト 150 パケット \

     ログプレフィックス 「イン – フィン:」 \

     コメント 「無効な TCP フラグのレート制限ログ (fin|syn|rst|psh|ack|urg) < (fin)」

   tcp フラグ & (fin|syn|rst|psh|ack|urg) < (fin) \

     カウンター \

     落とす \

     コメント 「フラグ付きの TCP パケットをドロップする (fin|syn|rst|psh|ack|urg) < (fin)」

 

   ## 無効な TCP フラグをログに記録してドロップする

   tcp フラグ & (fin|syn|rst|psh|ack|urg) == (fin|psh|urg) \

     制限率 100/分のバースト 150 パケット \

     ログプレフィックス 「IN – FIN|PSH|URG:」 \

     コメント 「無効な TCP フラグのレート制限ロギング (fin|syn|rst|psh|ack|urg) == (fin|psh|urg)」

   tcp フラグ & (fin|syn|rst|psh|ack|urg) == (fin|psh|urg) \

     カウンター \

     落とす \

     コメント 「フラグ付きの TCP パケットをドロップする (fin|syn|rst|psh|ack|urg) == (fin|psh|urg)」

 

   ## 無効な接続状態でトラフィックをドロップする

   ct 状態が無効です \

     制限率 100/分のバースト 150 パケット \

     ログはすべてのプレフィックスにフラグを立てます 「IN – 無効:」 \

     コメント 「無効な接続状態のトラフィックのレート制限ロギング」

   ct 状態が無効です \

     カウンター \

     落とす \

     コメント 「接続状態が無効なトラフィックをドロップする」

 

   ## IPv4 ping/ping 応答を許可しますが、レート制限は 2000 PPS です

   ip プロトコル icmp icmp タイプ { エコー応答、エコー要求 } \

     制限率 2000/XNUMX番 \

     カウンター \

     受け入れる \

     コメント 「4 PPS に制限されたインバウンド IPv2000 エコー (ping) を許可する」

 

   ## 他のすべてのインバウンド IPv4 ICMP を許可する

   ip プロトコル icmp \

     カウンター \

     受け入れる \

     コメント 「他のすべての IPv4 ICMP を許可する」

 

   ## IPv6 ping/ping 応答を許可しますが、レート制限は 2000 PPS です

   icmpv6 タイプ { エコー応答、エコー要求 } \

     制限率 2000/XNUMX番 \

     カウンター \

     受け入れる \

     コメント 「6 PPS に制限されたインバウンド IPv2000 エコー (ping) を許可する」

 

   ## 他のすべてのインバウンド IPv6 ICMP を許可する

   メタ l4proto { icmpv6 } \

     カウンター \

     受け入れる \

     コメント 「他のすべての IPv6 ICMP を許可する」

 

   ## インバウンド traceroute UDP ポートを許可しますが、500 PPS に制限します

   udp ポート 33434-33524 \

     制限率 500/XNUMX番 \

     カウンター \

     受け入れる \

     コメント 「受信 UDP traceroute を 500 PPS に制限して許可する」

 

   ## インバウンド SSH を許可する

   TCP ポート ssh ct 状態 新しい \

     カウンター \

     受け入れる \

     コメント 「インバウンド SSH 接続を許可する」

 

   ## インバウンド HTTP および HTTPS を許可する

   tcp dport { http, https } ct state new \

     カウンター \

     受け入れる \

     コメント 「受信 HTTP および HTTPS 接続を許可する」

 

   ## 一致しないトラフィックはすべてログに記録しますが、ログのレートを最大 60 メッセージ/分に制限します

   ## デフォルトのポリシーは、一致しないトラフィックに適用されます

   制限率 60/分のバースト 100 パケット \

     ログプレフィックス 「IN – ドロップ:」 \

     コメント 「比類のないトラフィックをログに記録する」

 

   ## 一致しないトラフィックをカウントする

   カウンター \

     コメント 「一致しないトラフィックをカウントする」

 }

 

 # 出力トラフィックのルール

 連鎖出力 {

   type filter フック出力優先度フィルター。 ポリシー ドロップ

 

   ## ループバック インターフェイスへのアウトバウンド トラフィックを許可する

   オイロー\

     受け入れる \

     コメント 「ループバック インターフェイスへのすべてのトラフィックを許可する」

 

   ## 確立された関連する接続を許可する

   ct 状態確立、関連 \

     カウンター \

     受け入れる \

     コメント 「確立された/関連する接続を許可する」

 

   ## 悪い状態の接続をドロップする前にアウトバウンドの WireGuard トラフィックを許可する

   oif $DEV_WAN UDPスポーツ $WIREGUARD_PORT \

     カウンター \

     受け入れる \

     コメント 「WireGuard アウトバウンド トラフィックを許可する」

 

   ## 無効な接続状態でトラフィックをドロップする

   ct 状態が無効です \

     制限率 100/分のバースト 150 パケット \

     ログはすべてのプレフィックスにフラグを立てます 「アウト – 無効:」 \

     コメント 「無効な接続状態のトラフィックのレート制限ロギング」

   ct 状態が無効です \

     カウンター \

     落とす \

     コメント 「接続状態が無効なトラフィックをドロップする」

 

   ## 他のすべてのアウトバウンド IPv4 ICMP を許可する

   ip プロトコル icmp \

     カウンター \

     受け入れる \

     コメント 「すべての IPv4 ICMP タイプを許可する」

 

   ## 他のすべてのアウトバウンド IPv6 ICMP を許可する

   メタ l4proto { icmpv6 } \

     カウンター \

     受け入れる \

     コメント 「すべての IPv6 ICMP タイプを許可する」

 

   ## アウトバウンド traceroute UDP ポートを許可しますが、500 PPS に制限します

   udp ポート 33434-33524 \

     制限率 500/XNUMX番 \

     カウンター \

     受け入れる \

     コメント 「500 PPS に制限されたアウトバウンド UDP traceroute を許可する」

 

   ## 送信 HTTP および HTTPS 接続を許可する

   tcp dport { http, https } ct state new \

     カウンター \

     受け入れる \

     コメント 「アウトバウンド HTTP および HTTPS 接続を許可する」

 

   ## アウトバウンド SMTP 送信を許可する

   tcp dport 送信 ct 状態 new \

     カウンター \

     受け入れる \

     コメント 「アウトバウンド SMTP 送信を許可する」

 

   ## アウトバウンド DNS リクエストを許可する

   udp ポート 53 \

     カウンター \

     受け入れる \

     コメント 「アウトバウンド UDP DNS リクエストを許可する」

   TCP ポート 53 \

     カウンター \

     受け入れる \

     コメント 「アウトバウンド TCP DNS リクエストを許可する」

 

   ## アウトバウンド NTP リクエストを許可する

   udp ポート 123 \

     カウンター \

     受け入れる \

     コメント 「アウトバウンド NTP リクエストを許可する」

 

   ## 一致しないトラフィックはすべてログに記録しますが、ログのレートを最大 60 メッセージ/分に制限します

   ## デフォルトのポリシーは、一致しないトラフィックに適用されます

   制限率 60/分のバースト 100 パケット \

     ログプレフィックス 「アウト – ドロップ:」 \

     コメント 「比類のないトラフィックをログに記録する」

 

   ## 一致しないトラフィックをカウントする

   カウンター \

     コメント 「一致しないトラフィックをカウントする」

 }

 

}

 

# 主な NAT フィルタリング テーブル

テーブル inet nat {

 

 # NAT トラフィックの事前ルーティングのルール

 チェーンの事前ルーティング {

   nat hook prerouting priority dstnat と入力します。 ポリシーを受け入れる

 }

 

 # NAT トラフィック ポストルーティングのルール

 # このテーブルは、Firezone ポストルーティング チェーンの前に処理されます

 チェーン ポストルーティング {

   nat hook postrouting priority srcnat と入力します – 5; ポリシーを受け入れる

 }

 

}

使用法​,war

ファイアウォールは、実行中の Linux ディストリビューションに関連する場所に保存する必要があります。 Debian/Ubuntu の場合、これは /etc/nftables.conf であり、RHEL の場合、これは /etc/sysconfig/nftables.conf です。

nftables.service は、起動時に開始するように構成する必要があります (まだ設定されていない場合)。

systemctl は nftables.service を有効にします

ファイアウォール テンプレートに変更を加える場合は、check コマンドを実行して構文を検証できます。

nft -f /path/to/nftables.conf -c

サーバーで実行されているリリースによっては、特定の nftables 機能が利用できない場合があるため、ファイアウォールが期待どおりに機能することを確認してください。



_______________________________________________________________



テレメトリー

 

このドキュメントでは、Firezone がセルフホステッド インスタンスから収集するテレメトリの概要と、それを無効にする方法について説明します。

Firezone がテレメトリを収集する理由​,war

ファイアゾーン 信頼する ロードマップに優先順位を付け、すべての人にとって Firezone をより良くするために必要なエンジニアリング リソースを最適化します。

私たちが収集するテレメトリは、次の質問に答えることを目的としています。

  • Firezone をインストールして使用し、使用を停止した人は何人ですか?
  • どの機能が最も価値があり、どの機能が役に立たないのでしょうか?
  • 最も改善が必要な機能は何ですか?
  • 何かが壊れたとき、なぜそれが壊れたのか、そして将来それが起こらないようにするにはどうすればよいでしょうか?

テレメトリの収集方法​,war

Firezone でテレメトリが収集される主な場所は XNUMX つあります。

  1. パッケージ テレメトリ。 インストール、アンインストール、アップグレードなどのイベントが含まれます。
  2. firezone-ctl コマンドからの CLI テレメトリ。
  3. Web ポータルに関連付けられた製品テレメトリ。

これら XNUMX つのコンテキストのそれぞれで、上記のセクションの質問に答えるために必要な最小限のデータを取得します。

管理者の電子メールは、製品の更新を明示的にオプトインした場合にのみ収集されます。 それ以外の場合、個人を特定できる情報は 決して 集めました。

Firezone は、Firezone チームのみがアクセスできる、プライベート Kubernetes クラスターで実行されている PostHog の自己ホスト型インスタンスにテレメトリを保存します。 Firezone のインスタンスから当社のテレメトリ サーバーに送信されるテレメトリ イベントの例を次に示します。

{

   「ID」: “0182272d-0b88-0000-d419-7b9a413713f1”,

   「timestamp」: “2022-07-22T18:30:39.748000+00:00”,

   "イベント": 「fz_http_started」,

   「distinct_id」: “1ec2e794-1c3e-43fc-a78f-1db6d1a37f54”,

   "プロパティ":{

       「$geoip_city_name」: 「アッシュバーン」,

       「$geoip_continent_code」: 「な」,

       「$geoip_continent_name」: "北米",

       「$geoip_country_code」: "私たち",

       「$geoip_country_name」: "アメリカ",

       「$geoip_latitude」: 39.0469,

       「$geoip_経度」: -77.4903,

       「$geoip_postal_code」: "20149",

       「$geoip_subdivision_1_code」: 「VA」,

       「$geoip_subdivision_1_name」: 「バージニア」,

       「$geoip_time_zone」: 「アメリカ/ニューヨーク」,

       「$ip」: "52.200.241.107",

       「$plugins_deferred」:[]、

       「$plugins_failed」:[]、

       「$plugins_succeeded」:[

           「GeoIP (3)」

       ],

       「distinct_id」: “1zc2e794-1c3e-43fc-a78f-1db6d1a37f54”,

       「fqdn」: 「awsdemo.firezone.dev」,

       「kernel_version」: 「リナックス 5.13.0」,

       "バージョン": "0.4.6"

   },

   「要素チェーン」: ""

}

テレメトリを無効にする方法​,war

注意

Firezone 開発チーム 信頼する Firezoneをすべての人にとってより良いものにするための製品分析について。 テレメトリを有効にしておくことは、Firezone の開発に貢献できる最も価値のある唯一の方法です。 とはいえ、プライバシーやセキュリティの要件が高く、テレメトリを完全に無効にすることを好むユーザーもいることは理解しています。 それがあなたなら、読み続けてください。

テレメトリはデフォルトで有効になっています。 製品テレメトリを完全に無効にするには、/etc/firezone/firezone.rb で次の構成オプションを false に設定し、sudo firezone-ctl reconfigure を実行して変更を取得します。

デフォルト[「ファイアゾーン」]['テレメトリー'][「有効」] = false

これにより、すべての製品テレメトリが完全に無効になります。