此處提供了使用 Firezone GUI 部署 Hailbytes VPN 的分步說明。
管理:設置服務器實例與這部分直接相關。
用戶指南:可以教您如何使用 Firezone 並解決典型問題的有用文檔。 服務器部署成功後,請參考本節內容。
拆分隧道:使用 VPN 僅將流量發送到特定的 IP 範圍。
白名單:設置 VPN 服務器的靜態 IP 地址以使用白名單。
反向隧道:使用反向隧道在多個對等點之間創建隧道。
如果您在安裝、定製或使用 Hailbytes VPN 時需要幫助,我們很樂意為您提供幫助。
在用戶可以生成或下載設備配置文件之前,可以將 Firezone 配置為需要身份驗證。 用戶可能還需要定期重新進行身份驗證,以保持其 VPN 連接處於活動狀態。
雖然 Firezone 的默認登錄方法是本地電子郵件和密碼,但它也可以與任何標準化的 OpenID Connect (OIDC) 身份提供者集成。 用戶現在可以使用他們的 Okta、Google、Azure AD 或私有身份提供商憑據登錄 Firezone。
集成通用 OIDC 提供程序
下面的示例顯示了 Firezone 允許使用 OIDC 提供程序進行 SSO 所需的配置參數。 在 /etc/firezone/firezone.rb 中,您可以找到配置文件。 運行 firezone-ctl reconfigure 和 firezone-ctl restart 以更新應用程序並使更改生效。
# 這是使用 Google 和 Okta 作為 SSO 身份提供者的示例。
# 可以將多個 OIDC 配置添加到同一個 Firezone 實例。
# 如果嘗試檢測到任何錯誤,Firezone 可以禁用用戶的 VPN
# 刷新他們的 access_token。 這已驗證適用於 Google、Okta 和
# Azure SSO 並用於在用戶被刪除時自動斷開用戶的 VPN
# 來自 OIDC 提供商。 如果您的 OIDC 提供商,請將此禁用
# 刷新訪問令牌有問題,因為它可能會意外中斷
# 用戶的 VPN 會話。
默認['firezone']['身份驗證']['disable_vpn_on_oidc_error'] = false
默認['firezone']['authentication']['oidc'] = {
谷歌: {
discovery_document_uri:“https://accounts.google.com/.well-known/openid-configuration”,
client_id:“ ”,
客戶秘密:“ ”,
redirect_uri:“https://instance-id.yourfirezone.com/auth/oidc/google/callback/”,
響應類型:“代碼”,
範圍:“openid 電子郵件配置文件”,
標籤:“谷歌”
},
確定:{
discovery_document_uri: “https:// /.well-known/openid-configuration”,
client_id:“ ”,
客戶秘密:“ ”,
redirect_uri:“https://instance-id.yourfirezone.com/auth/oidc/okta/callback/”,
響應類型:“代碼”,
範圍:“openid 電子郵件配置文件 offline_access”,
標籤: “Okta”
}
}
集成需要以下配置設置:
對於每個 OIDC 提供商,都會創建一個相應的漂亮 URL,用於重定向到已配置的提供商的登錄 URL。 對於上面的示例 OIDC 配置,URL 是:
我們有文檔的提供者:
如果您的身份提供商具有通用 OIDC 連接器並且未在上面列出,請轉到其文檔以獲取有關如何檢索必要配置設置的信息。
設置/安全下的設置可以更改為需要定期重新驗證。 這可用於強制要求用戶定期進入 Firezone 以繼續其 VPN 會話。
會話長度可以配置為一小時到九十天之間。 通過將此項設置為從不,您可以隨時啟用 VPN 會話。 這是標準。
用戶必須終止他們的 VPN 會話並登錄到 Firezone 門戶,以便重新驗證過期的 VPN 會話(在部署期間指定的 URL)。
您可以按照此處找到的精確客戶端說明重新驗證您的會話。
VPN 連接狀態
用戶頁面的 VPN 連接表列顯示用戶的連接狀態。 這些是連接狀態:
ENABLED – 連接已啟用。
DISABLED – 連接被管理員禁用或 OIDC 刷新失敗。
EXPIRED – 由於身份驗證過期或用戶未首次登錄,連接被禁用。
通過通用 OIDC 連接器,Firezone 支持使用 Google Workspace 和 Cloud Identity 進行單點登錄 (SSO)。 本指南將向您展示如何獲取下面列出的配置參數,這些參數是集成所必需的:
如果這是您第一次創建新的 OAuth 客戶端 ID,系統會要求您配置同意屏幕。
*為用戶類型選擇內部。 這樣可以確保只有屬於您 Google Workspace 單位中的用戶的帳號才能創建設備配置。 不要選擇外部,除非您想讓擁有有效 Google 帳戶的任何人都可以創建設備配置。
在應用程序信息屏幕上:
本節基於谷歌自己的文檔 設置 OAuth 2.0.
訪問谷歌云控制台 憑據頁面 頁面,單擊 + 創建憑據並選擇 OAuth 客戶端 ID。
在 OAuth 客戶端 ID 創建屏幕上:
創建 OAuth 客戶端 ID 後,您將獲得一個客戶端 ID 和客戶端密碼。 這些將在下一步中與重定向 URI 一起使用。
編輯 /etc/firezone/firezone.rb 包括以下選項:
# 使用 Google 作為 SSO 身份提供者
默認['firezone']['authentication']['oidc'] = {
谷歌: {
discovery_document_uri:“https://accounts.google.com/.well-known/openid-configuration”,
client_id:“ ”,
客戶秘密:“ ”,
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)。 本教程將向您展示如何獲取下面列出的配置參數,這些參數是集成所必需的:
本指南的這一部分是基於 Okta 的文檔.
在管理控制台中,轉到“應用程序”>“應用程序”,然後單擊“創建應用程序集成”。 將登錄方法設置為 OICD – OpenID Connect 並將應用程序類型設置為 Web 應用程序。
配置這些設置:
保存設置後,您將獲得一個客戶端 ID、客戶端密碼和 Okta 域。 這 3 個值將在第 2 步中用於配置 Firezone。
編輯 /etc/firezone/firezone.rb 包括以下選項。 你的 發現_文檔_url 會 /.well-known/openid-configuration 附加到你的末尾 okta_域.
# 使用 Okta 作為 SSO 身份提供者
默認['firezone']['authentication']['oidc'] = {
確定:{
discovery_document_uri: “https:// /.well-known/openid-configuration”,
client_id:“ ”,
客戶秘密:“ ”,
redirect_uri:“https://instance-id.yourfirezone.com/auth/oidc/okta/callback/”,
響應類型:“代碼”,
範圍:“openid 電子郵件配置文件 offline_access”,
標籤: “Okta”
}
}
運行 firezone-ctl reconfigure 和 firezone-ctl restart 來更新應用程序。 您現在應該會在根 Firezone URL 處看到一個使用 Okta 登錄按鈕。
Okta 可以限制可以訪問 Firezone 應用程序的用戶。 轉到 Okta 管理控制台的 Firezone 應用程序集成的分配頁面來完成此操作。
通過通用 OIDC 連接器,Firezone 支持使用 Azure Active Directory 進行單點登錄 (SSO)。 本手冊將向您展示如何獲取下面列出的配置參數,這些參數是集成所必需的:
本指南摘自 Azure 活動目錄文檔.
轉到 Azure 門戶的 Azure Active Directory 頁面。 選擇“管理”菜單選項,選擇“新註冊”,然後通過提供以下信息進行註冊:
註冊後,打開應用的詳情視圖,複製 應用程序(客戶端)ID. 這將是 client_id 值。 接下來,打開端點菜單以檢索 OpenID Connect 元數據文檔. 這將是 discovery_document_uri 值。
通過單擊“管理”菜單下的“證書和機密”選項來創建新的客戶端機密。 複製客戶端密碼; 客戶秘密值將是這個。
最後,選擇“管理”菜單下的“API 權限”鏈接,單擊 添加權限,然後選擇 Microsoft Graph, 添加 電子郵件, Openid, 離線訪問 輪廓 到所需的權限。
編輯 /etc/firezone/firezone.rb 包括以下選項:
# 使用 Azure Active Directory 作為 SSO 身份提供者
默認['firezone']['authentication']['oidc'] = {
天藍色:{
discovery_document_uri:“https://login.microsoftonline.com/ /v2.0/.well-known/openid-configuration”,
client_id:“ ”,
客戶秘密:“ ”,
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 的文檔。
Firezone 使用 Chef Omnibus 來管理任務,包括發布打包、流程監督、日誌管理等。
Ruby 代碼構成了位於 /etc/firezone/firezone.rb 的主要配置文件。 修改此文件後重新啟動 sudo firezone-ctl reconfigure 會使 Chef 識別更改並將它們應用到當前操作系統。
有關配置變量及其描述的完整列表,請參閱配置文件參考。
您的 Firezone 實例可以通過 火區控制 命令,如下圖。 大多數子命令需要前綴 須藤.
root@demo:~# firezone-ctl
omnibus-ctl:命令(子命令)
通用命令:
潔淨
刪除*所有* firezone 數據,並從頭開始。
創建或重置管理員
使用默認指定的電子郵件重置管理員的密碼 ['firezone']['admin_email'] 或者如果該電子郵件不存在則創建一個新的管理員。
幫助
打印此幫助消息。
重新配置
重新配置應用程序。
重置網絡
將 nftables、WireGuard 接口和路由表重置為 Firezone 默認值。
顯示配置
顯示將由重新配置生成的配置。
拆解網絡
刪除 WireGuard 接口和 firezone nftables 表。
強制證書更新
立即強制更新證書,即使它尚未過期。
停止證書更新
刪除更新證書的 cronjob。
卸載
終止所有進程並卸載進程主管(數據將被保留)。
版本
顯示 Firezone 的當前版本
服務管理命令:
優雅的殺死
嘗試正常停止,然後 SIGKILL 整個進程組。
哈普
向服務發送 HUP。
INT
向服務發送 INT。
殺
向服務發送 KILL。
一次
如果服務已關閉,請啟動服務。 如果它們停止,請勿重新啟動它們。
重新開始
如果服務正在運行,請停止它們,然後重新啟動它們。
服務列表
列出所有服務(已啟用的服務帶有 *.)
開始
如果服務關閉則啟動服務,如果服務停止則重新啟動它們。
狀態
顯示所有服務的狀態。
停止
停止服務,不要重新啟動它們。
尾巴
查看所有已啟用服務的服務日誌。
術語
向服務發送 TERM。
usr1
向服務發送 USR1。
usr2
向服務發送 USR2。
在升級 Firezone 之前必須終止所有 VPN 會話,這也需要關閉 Web UI。 如果升級過程中出現問題,我們建議預留一個小時進行維護。
要增強 Firezone,請執行以下操作:
如果出現任何問題,請通過以下方式告知我們 提交支持票。
0.5.0 中有一些必須解決的重大更改和配置修改。 在下面了解更多信息。
從 0.5.0 版本開始,Nginx 不再支持強制 SSL 和非 SSL 端口參數。 因為 Firezone 需要 SSL 才能工作,我們建議通過設置 default['firezone']['nginx']['enabled'] = false 並將反向代理定向到端口 13000 上的 Phoenix 應用程序(默認情況下)來刪除捆綁 Nginx 服務).
0.5.0 引入了 ACME 協議支持,用於使用捆綁的 Nginx 服務自動更新 SSL 證書。 啟用,
添加具有重複目的地的規則的可能性在 Firezone 0.5.0 中消失了。 我們的遷移腳本會在升級到 0.5.0 的過程中自動識別這些情況,並且只保留目的地包含其他規則的規則。 如果沒問題,您無需執行任何操作。
否則,在升級之前,我們建議更改您的規則集以消除這些情況。
Firezone 0.5.0 移除了對舊式 Okta 和 Google SSO 配置的支持,支持新的、更靈活的基於 OIDC 的配置。
如果您在 default['firezone']['authentication']['okta'] 或 default['firezone']['authentication']['google'] 鍵下有任何配置,您需要將它們遷移到我們的 OIDC -based 配置使用下面的指南。
現有的 Google OAuth 配置
從位於 /etc/firezone/firezone.rb 的配置文件中刪除這些包含舊 Google OAuth 配置的行
默認['firezone']['authentication']['google']['enabled']
默認['firezone']['authentication']['google']['client_id']
默認['firezone']['authentication']['google']['client_secret']
默認['firezone']['authentication']['google']['redirect_uri']
然後,按照此處的過程將 Google 配置為 OIDC 提供商。
(提供鏈接說明)<<<<<<<<<<<<<<<<
配置現有的 Google OAuth
從位於的配置文件中刪除包含舊 Okta OAuth 配置的這些行 /etc/firezone/firezone.rb
默認['firezone']['authentication']['okta']['enabled']
默認['firezone']['authentication']['okta']['client_id']
默認['firezone']['authentication']['okta']['client_secret']
默認['firezone']['authentication']['okta']['site']
然後,按照此處的過程將 Okta 配置為 OIDC 提供程序。
根據您當前的設置和版本,請遵循以下說明:
如果您已有 OIDC 集成:
對於某些 OIDC 提供者,升級到 >= 0.3.16 需要為離線訪問範圍獲取刷新令牌。 通過這樣做,可以確保 Firezone 使用身份提供者進行更新,並且在刪除用戶後關閉 VPN 連接。 Firezone 的早期版本缺少此功能。 在某些情況下,從您的身份提供商中刪除的用戶可能仍連接到 VPN。
對於支持離線訪問範圍的 OIDC 提供商,有必要在 OIDC 配置的範圍參數中包含離線訪問。 必須執行 Firezone-ctl reconfigure 才能將更改應用到位於 /etc/firezone/firezone.rb 的 Firezone 配置文件。
對於已通過 OIDC 提供商身份驗證的用戶,如果 Firezone 能夠成功檢索刷新令牌,您將在 Web UI 的用戶詳細信息頁面中看到 OIDC 連接標題。
如果這不起作用,您將需要刪除現有的 OAuth 應用程序並重複 OIDC 設置步驟以 創建一個新的應用程序集成 .
我有一個現有的 OAuth 集成
在 0.3.11 之前,Firezone 使用預配置的 OAuth2 提供程序。
遵循指示 點擊這裡 遷移到 OIDC。
我沒有集成身份提供者
無需任何操作。
您可以按照說明進行操作 點擊這裡 通過 OIDC 提供商啟用 SSO。
取而代之的是 default['firezone']['external url'] 替換了配置選項 default['firezone']['fqdn']。
將此設置為公眾可以訪問的 Firezone 在線門戶的 URL。 如果未定義,它將默認為 https:// 加上服務器的 FQDN。
配置文件位於 /etc/firezone/firezone.rb。 有關配置變量及其描述的完整列表,請參閱配置文件參考。
從 0.3.0 版開始,Firezone 不再將設備私鑰保存在 Firezone 服務器上。
Firezone Web UI 不允許您重新下載或查看這些配置,但任何現有設備都應繼續按原樣運行。
如果您從 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 “默認['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 隧道時 Internet 連接惡化,請確保 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 | 上游 elixir 應用服務器使用的僅限本地的端口。 |
我們建議您考慮限制對 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 隧道。
Firezone 捆綁了一個 Postgresql 服務器和匹配 PSQL 可以從本地 shell 使用的實用程序,如下所示:
/opt/firezone/嵌入式/bin/psql \
-U火區\
-d火區\
-h 本地主機\
-p 15432 \
-c“SQL_語句”
這有助於調試目的。
常見任務:
列出所有用戶:
/opt/firezone/嵌入式/bin/psql \
-U火區\
-d火區\
-h 本地主機\
-p 15432 \
-c“從用戶中選擇*;”
列出所有設備:
/opt/firezone/嵌入式/bin/psql \
-U火區\
-d火區\
-h 本地主機\
-p 15432 \
-c“從設備中選擇*;”
更改用戶角色:
將角色設置為“admin”或“unprivileged”:
/opt/firezone/嵌入式/bin/psql \
-U火區\
-d火區\
-h 本地主機\
-p 15432 \
-c “更新用戶 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
成功部署 Firezone 後,您必須添加用戶以向他們提供對您網絡的訪問權限。 Web UI 用於執行此操作。
通過選擇 /users 下的“添加用戶”按鈕,您可以添加用戶。 您將需要向用戶提供電子郵件地址和密碼。 為了允許自動訪問您組織中的用戶,Firezone 還可以與身份提供者進行交互和同步。 更多詳細信息,請訪問 認證. < 添加一個鏈接到 Authenticate
我們建議要求用戶創建自己的設備配置,以便私鑰僅對他們可見。 用戶可以按照上面的說明生成自己的設備配置 客戶須知 頁。
所有用戶設備配置都可以由 Firezone 管理員創建。 在位於 /users 的用戶配置文件頁面上,選擇“添加設備”選項來完成此操作。
[插入屏幕截圖]
創建設備配置文件後,您可以通過電子郵件向用戶發送 WireGuard 配置文件。
用戶和設備是關聯的。 有關如何添加用戶的更多詳細信息,請參閱 新增用戶.
通過使用內核的 netfilter 系統,Firezone 啟用出口過濾功能以指定 DROP 或 ACCEPT 數據包。 通常允許所有流量。
分別通過允許列表和拒絕列表支持 IPv4 和 IPv6 CIDR 和 IP 地址。 您可以選擇在添加規則時將規則範圍限定到用戶,這會將規則應用於該用戶的所有設備。
安裝和配置
要使用本機 WireGuard 客戶端建立 VPN 連接,請參閱本指南。
位於此處的官方 WireGuard 客戶端與 Firezone 兼容:
訪問 WireGuard 官方網站 https://www.wireguard.com/install/ 了解上述未提及的操作系統。
您的 Firezone 管理員或您自己都可以使用 Firezone 門戶生成設備配置文件。
訪問 Firezone 管理員提供的 URL 以自行生成設備配置文件。 您的公司將為此擁有一個唯一的 URL; 在這種情況下,它是 https://instance-id.yourfirezone.com。
登錄到 Firezone Okta SSO
[插入截圖]
通過打開 .conf 文件將其導入 WireGuard 客戶端。 通過翻轉激活開關,您可以啟動 VPN 會話。
[插入截圖]
如果您的網絡管理員已強制執行重複身份驗證以保持您的 VPN 連接處於活動狀態,請按照以下說明進行操作。
你需要:
Firezone 門戶的 URL:請向您的網絡管理員請求連接。
您的網絡管理員應該能夠提供您的登錄名和密碼。 Firezone 站點將提示您使用您的雇主使用的單點登錄服務(例如 Google 或 Okta)登錄。
[插入截圖]
轉到 Firezone 門戶的 URL 並使用您的網絡管理員提供的憑據登錄。 如果您已經登錄,請在重新登錄前單擊重新驗證按鈕。
[插入截圖]
[插入截圖]
要在 Linux 設備上使用 Network Manager CLI 導入 WireGuard 配置文件,請按照這些說明 (nmcli) 進行操作。
如果配置文件啟用了 IPv6 支持,嘗試使用網絡管理器 GUI 導入配置文件可能會失敗並出現以下錯誤:
ipv6.method:WireGuard 不支持方法“auto”
有必要安裝 WireGuard 用戶空間實用程序。 對於 Linux 發行版,這將是一個名為 wireguard 或 wireguard-tools 的包。
對於 Ubuntu/Debian:
sudo apt 安裝 wireguard
要使用 Fedora:
sudo dnf 安裝 wireguard-tools
Arch Linux:
sudo pacman -S 線衛工具
訪問官方 WireGuard 網站 https://www.wireguard.com/install/ 獲取上面未提及的發行版。
您的 Firezone 管理員或自生成可以使用 Firezone 門戶生成設備配置文件。
訪問 Firezone 管理員提供的 URL 以自行生成設備配置文件。 您的公司將為此擁有一個唯一的 URL; 在這種情況下,它是 https://instance-id.yourfirezone.com。
[插入截圖]
使用 nmcli 導入提供的配置文件:
sudo nmcli 連接導入類型 wireguard 文件 /path/to/configuration.conf
配置文件的名稱將對應於 WireGuard 連接/接口。 導入後,如有必要,可以重命名連接:
nmcli 連接修改 [舊名稱] connection.id [新名稱]
通過命令行,連接到 VPN,如下所示:
nmcli 連接 [VPN 名稱]
斷開連接:
nmcli 連接斷開 [vpn 名稱]
如果使用 GUI,適用的網絡管理器小程序也可用於管理連接。
通過為自動連接選項選擇“是”,可以將 VPN 連接配置為自動連接:
nmcli 連接修改 [vpn 名稱] 連接。 <<<<<<<<<<<<<<<<<<<<<<
自動連接是
要禁用自動連接,請將其設置回否:
nmcli 連接修改 [vpn 名稱] 連接。
自動連接號
激活 MFA 轉到 Firezone 門戶的 /user account/register mfa 頁面。 生成二維碼後,使用您的驗證器應用程序掃描二維碼,然後輸入六位數代碼。
如果您放錯了身份驗證器應用程序,請聯繫您的管理員以重置您帳戶的訪問信息。
本教程將引導您完成使用 Firezone 設置 WireGuard 的拆分隧道功能的過程,以便僅通過 VPN 服務器轉發到特定 IP 範圍的流量。
客戶端將為其路由網絡流量的 IP 範圍在位於 /settings/default 頁面上的 Allowed IPs 字段中列出。 只有 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 在確定將數據包路由到何處時,首先選擇與最精確路由關聯的出口接口。
用戶必須重新生成配置文件並將它們添加到其本機 WireGuard 客戶端,以便使用新的拆分隧道配置更新現有用戶設備。
有關說明,請參見 添加設備. <<<<<<<<<<< 添加鏈接
本手冊將演示如何使用 Firezone 作為中繼來鏈接兩個設備。 一個典型的用例是使管理員能夠訪問受 NAT 或防火牆保護的服務器、容器或機器。
此圖顯示了設備 A 和 B 構建隧道的簡單場景。
[插入火區建築圖片]
首先通過導航到 /users/[user_id]/new_device 創建設備 A 和設備 B。 在每個設備的設置中,確保將以下參數設置為下面列出的值。 您可以在創建設備配置時設置設備設置(請參閱添加設備)。 如果您需要更新現有設備上的設置,您可以通過生成新的設備配置來實現。
請注意,所有設備都有一個 /settings/defaults 頁面,可以在其中配置 PersistentKeepalive。
允許的 IP = 10.3.2.2/32
這是設備 B 的 IP 或 IP 範圍
持續保持活動 = 25
如果設備位於 NAT 後面,這可確保設備能夠保持隧道活動並繼續從 WireGuard 接口接收數據包。 通常值 25 就足夠了,但您可能需要根據您的環境減小該值。
允許的 IP = 10.3.2.3/32
這是設備 A 的 IP 或 IP 範圍
持續保持活動 = 25
此示例顯示設備 A 可以通過 D 與設備 B 雙向通信的情況。 此設置可以表示工程師或管理員跨各種網絡訪問大量資源(服務器、容器或機器)。
【架構圖】<<<<<<<<<<<<<<<<<<<<<
請確保在每個設備的設置中將以下設置設置為相應的值。 創建設備配置時,您可以指定設備設置(請參閱添加設備)。 如果需要更新現有設備上的設置,則可以創建新的設備配置。
允許的 IP = 10.3.2.3/32、10.3.2.4/32、10.3.2.5/32
這是設備 B 到 D 的 IP。設備 B 到 D 的 IP 必須包含在您選擇設置的任何 IP 範圍內。
持續保持活動 = 25
這保證了設備可以維護隧道並繼續從 WireGuard 接口接收數據包,即使它受到 NAT 的保護。 在大多數情況下,值 25 就足夠了,但是根據您周圍的環境,您可能需要降低此數字。
要為您團隊的所有流量提供一個單一的靜態出口 IP,可以將 Firezone 用作 NAT 網關。 這些情況涉及它的頻繁使用:
諮詢服務:要求您的客戶將單個靜態 IP 地址列入白名單,而不是將每個員工的唯一設備 IP 地址列入白名單。
出於安全或隱私目的使用代理或屏蔽您的源 IP。
本文將演示一個簡單示例,該示例將對自託管 Web 應用程序的訪問限制為運行 Firezone 的單個列入白名單的靜態 IP。 在此圖中,Firezone 和受保護資源位於不同的 VPC 區域中。
此解決方案經常用於代替管理眾多最終用戶的 IP 白名單,隨著訪問列表的擴展,這可能會非常耗時。
我們的目標是在 EC2 實例上設置一個 Firezone 服務器,將 VPN 流量重定向到受限資源。 在這種情況下,Firezone 充當網絡代理或 NAT 網關,為每個連接的設備提供唯一的公共出口 IP。
在本例中,一個名為 tc2.micro 的 EC2 實例上安裝了一個 Firezone 實例。 有關部署 Firezone 的信息,請參閱部署指南。 關於 AWS,請確保:
Firezone EC2 實例的安全組允許出站流量到受保護資源的 IP 地址。
Firezone 實例帶有彈性 IP。 通過 Firezone 實例轉發到外部目的地的流量將以此作為其源 IP 地址。 有問題的 IP 地址是 52.202.88.54。
[插入截圖]<<<<<<<<<<<<<<<<<<<<<<<
在這種情況下,自託管 Web 應用程序充當受保護的資源。 Web 應用只能通過來自 IP 地址 52.202.88.54 的請求訪問。 根據資源的不同,可能需要允許各種端口和流量類型上的入站流量。 這在本手冊中沒有涉及。
[插入屏幕截圖]<<<<<<<<<<<<<<<<<<<<<<<
請告知負責受保護資源的第三方,必須允許來自步驟 1 中定義的靜態 IP 的流量(在本例中為 52.202.88.54)。
默認情況下,所有用戶流量都將通過 VPN 服務器並來自步驟 1 中配置的靜態 IP(在本例中為 52.202.88.54)。 但是,如果啟用了拆分隧道,則可能需要進行設置以確保受保護資源的目標 IP 列在允許的 IP 中。
下面顯示的是可用配置選項的完整列表 /etc/firezone/firezone.rb.
選項 | 描述 | 默認值 |
默認[‘firezone’][‘external_url’] | 用於訪問此 Firezone 實例的 Web 門戶的 URL。 | “https://#{節點['fqdn'] || 節點[‘主機名’]}” |
默認['firezone'] ['config_directory'] | Firezone 配置的頂級目錄。 | /etc/火區' |
默認['firezone']['install_directory'] | 安裝 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’] | 隧道流量將退出的接口名稱。 如果為零,將使用默認路由接口。 | 零 |
默認[‘firezone’][‘fips_enabled’] | 啟用或禁用 OpenSSL FIPs 模式。 | 零 |
默認['firezone']['記錄']['啟用'] | 啟用或禁用跨 Firezone 的日誌記錄。 設置為 false 以完全禁用日誌記錄。 | TRUE |
默認['企業']['名稱'] | Chef“企業”食譜使用的名稱。 | 火區' |
默認[‘firezone’][‘install_path’] | Chef 'enterprise' cookbook 使用的安裝路徑。 應設置為與上面的 install_directory 相同。 | 節點['firezone']['install_directory'] |
默認['firezone']['sysvinit_id'] | /etc/inittab 中使用的標識符。 必須是 1-4 個字符的唯一序列。 | 槳板' |
默認['firezone']['authentication']['local']['enabled'] | 啟用或禁用本地電子郵件/密碼身份驗證。 | TRUE |
默認['firezone']['身份驗證']['auto_create_oidc_users'] | 自動創建首次從 OIDC 登錄的用戶。 禁用以僅允許現有用戶通過 OIDC 登錄。 | TRUE |
默認['firezone']['身份驗證']['disable_vpn_on_oidc_error'] | 如果在嘗試刷新用戶的 OIDC 令牌時檢測到錯誤,則禁用用戶的 VPN。 | 假 |
默認['firezone']['authentication']['oidc'] | OpenID Connect 配置,格式為 {“provider” => [config…]} – 請參閱 OpenIDConnect 文檔 配置示例。 | {} |
默認['firezone']['nginx']['enabled'] | 啟用或禁用捆綁的 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'] | TRUE | |
默認['firezone']['nginx']['hsts_header']['include_subdomains'] | 為 HSTS 標頭啟用或禁用 includeSubDomains。 | TRUE |
默認['firezone']['nginx']['hsts_header']['max_age'] | HSTS 標頭的最大年齡。 | 31536000 |
默認['firezone']['nginx']['redirect_to_canonical'] | 是否將 URL 重定向到上面指定的規範 FQDN | 假 |
默認['firezone']['nginx']['緩存']['啟用'] | 啟用或禁用 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'] | 設置用於壓縮響應的緩衝區的數量和大小。 如果為零,則使用 nginx 默認值。 | 零 |
默認['firezone']['nginx']['gzip_types'] | 啟用 gzip 壓縮的 MIME 類型。 | ['text/plain', 'text/css', 'application/x-javascript', 'text/xml', 'application/xml', 'application/rss+xml', 'application/atom+xml', '文本/javascript','應用程序/javascript','應用程序/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'] | worker 應該一次接受一個連接還是多個連接。 | TRUE |
默認['firezone']['nginx']['event'] | 指定在 nginx 事件上下文中使用的連接處理方法。 | epoll' |
默認['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 代理讀取超時。 設置為 nil 以使用 nginx 默認值。 | 零 |
默認['firezone']['nginx']['client_body_buffer_size'] | nginx 客戶端正文緩衝區大小。 設置為 nil 以使用 nginx 默認值。 | 零 |
默認['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 速率限制。 | 10轉/秒' |
默認['firezone']['nginx']['ipv6'] | 除了 IPv6 之外,還允許 nginx 偵聽 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 共享緩衝區大小。 | “#{(node['memory']['total'].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 將用於連接到數據庫的用戶名。 | 節點['firezone']['postgresql']['用戶名'] |
默認['firezone']['數據庫']['密碼'] | 如果使用外部數據庫,請指定 Firezone 將用於連接到數據庫的密碼。 | 改變我自己' |
默認['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 網絡應用程序。 | TRUE |
默認[‘firezone’][‘鳳凰’][‘listen_address’] | Firezone 網絡應用監聽地址。 這將是 nginx 代理的上游監聽地址。 | 127.0.0.1“ |
默認['firezone']['phoenix']['port'] | Firezone Web 應用程序偵聽端口。 這將是 nginx 代理的上游端口。 | 13000 |
默認['firezone']['phoenix']['log_directory'] | Firezone Web 應用程序日誌目錄。 | “#{node['firezone']['log_directory']}/phoenix” |
默認['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'] | 專用網絡 HTTP 客戶端列表,格式化為 IP 和/或 CIDR 數組。 | [] |
默認['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 允許 IP 用於生成的設備配置。 | 0.0.0.0/0,::/0′ |
默認['firezone']['wireguard']['persistent_keepalive'] | 生成的設備配置的默認 PersistentKeepalive 設置。 值為 0 禁用。 | 0 |
默認['firezone']['wireguard']['ipv4']['enabled'] | 為 WireGuard 網絡啟用或禁用 IPv4。 | TRUE |
默認['firezone']['wireguard']['ipv4']['masquerade'] | 為離開 IPv4 隧道的數據包啟用或禁用偽裝。 | TRUE |
默認['firezone']['wireguard']['ipv4']['網絡'] | 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']['masquerade'] | 為離開 IPv6 隧道的數據包啟用或禁用偽裝。 | TRUE |
默認['firezone']['wireguard']['ipv6']['網絡'] | WireGuard 網絡 IPv6 地址池。 | fd00::3:2:0/120′ |
默認['firezone']['wireguard']['ipv6']['地址'] | WireGuard 接口 IPv6 地址。 必須在 IPv6 地址池中。 | fd00::3:2:1′ |
默認['firezone']['runit']['svlogd_bin'] | 運行 svlogd bin 位置。 | “#{node['firezone']['install_directory']}/embedded/bin/svlogd” |
默認['firezone']['ssl']['目錄'] | 用於存儲生成的證書的 SSL 目錄。 | /var/opt/firezone/ssl' |
默認['firezone']['ssl']['email_address'] | 用於自簽名證書和 ACME 協議續訂通知的電子郵件地址。 | 你@example.com' |
默認['firezone']['ssl']['acme']['enabled'] | 假 | |
默認['firezone']['ssl']['acme']['server'] | letsencrypt | |
默認['firezone']['ssl']['acme']['keylength'] | 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'] | 自簽名證書的狀態名稱。 | ' |
默認['firezone']['ssl']['locality_name'] | 自簽名證書的位置名稱。 | 舊金山' |
默認['firezone']['ssl']['company_name'] | 公司名稱自簽名證書。 | 我的公司' |
默認['firezone']['ssl']['organizational_unit_name'] | 自簽名證書的組織單位名稱。 | 操作' |
默認['firezone']['ssl']['密碼'] | 供 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'] | FIPs 模式的 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 機器人不允許。 | 零 |
默認['firezone']['outbound_email']['from'] | 來自地址的出站電子郵件。 | 零 |
默認['firezone']['outbound_email']['provider'] | 出站電子郵件服務提供商。 | 零 |
默認['firezone']['outbound_email']['configs'] | 出站電子郵件提供商配置。 | 參見 omnibus/cookbooks/firezone/attributes/default.rb |
默認['firezone']['遙測']['啟用'] | 啟用或禁用匿名產品遙測。 | TRUE |
默認['firezone']['connectivity_checks']['enabled'] | 啟用或禁用 Firezone 連接檢查服務。 | TRUE |
默認['firezone']['connectivity_checks']['interval'] | 連接檢查之間的間隔(以秒為單位)。 | 3_600 |
________________________________________________________________
在這裡您會找到與典型 Firezone 安裝相關的文件和目錄列表。 這些可能會根據配置文件的更改而更改。
路徑 | 描述 |
/var/opt/firezone | 包含 Firezone 捆綁服務的數據和生成配置的頂級目錄。 |
/選擇/火區 | 包含 Firezone 所需的構建庫、二進製文件和運行時文件的頂級目錄。 |
/usr/bin/firezone-ctl | 用於管理 Firezone 安裝的 firezone-ctl 實用程序。 |
/etc/systemd/system/firezone-runsvdir-start.service | 用於啟動 Firezone runsvdir 主管進程的 systemd 單元文件。 |
/etc/火區 | 火區配置文件。 |
__________________________________________________________
此頁面在文檔中為空
_____________________________________________________________
以下 nftables 防火牆模板可用於保護運行 Firezone 的服務器。 該模板確實做了一些假設; 您可能需要調整規則以適合您的用例:
Firezone 配置自己的 nftables 規則,以允許/拒絕到 Web 界面中配置的目的地的流量,並處理客戶端流量的出站 NAT。
在已經運行的服務器上應用以下防火牆模板(不是在啟動時)將導致 Firezone 規則被清除。 這可能具有安全隱患。
要解決此問題,請重新啟動 phoenix 服務:
firezone-ctl 重啟鳳凰
#!/usr/sbin/nft -f
## 清除/刷新所有現有規則
刷新規則集
################################變量################# ###############
## 互聯網/廣域網接口名稱
定義 DEV_WAN = eth0
## WireGuard 接口名稱
定義 DEV_WIREGUARD = wg-firezone
## WireGuard 監聽端口
定義 WIREGUARD_PORT = 51820
############################## 變量結束################## ############
# 主 inet 家族過濾表
表 inet 過濾器 {
# 轉發流量的規則
# 該鏈在 Firezone 前向鏈之前處理
連鎖前進{
類型過濾器掛鉤前向優先級過濾器 – 5; 政策接受
}
# 輸入流量規則
鏈輸入{
type filter hook 輸入優先過濾器; 政策下降
## 允許入站流量到環回接口
iif lo \
接受 \
評論 “允許來自環回接口的所有流量”
## 允許建立和相關的連接
ct狀態成立,相關\
接受 \
評論 “允許建立/相關連接”
## 允許入站 WireGuard 流量
if $DEV_WAN udp傳輸端口 $WIREGUARD_PORT \
櫃檯 \
接受 \
評論 “允許入站 WireGuard 流量”
## 記錄並丟棄新的 TCP 非 SYN 數據包
tcp 標誌 != syn ct state new \
限價 100/分鐘爆發 150 數據包\
日誌前綴 “在——新的!SYN:” \
評論 “未設置 SYN TCP 標誌的新連接的速率限制日誌記錄”
tcp 標誌 != syn ct state 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 類型 { echo-reply, echo-request } \
限價 2000/第二 \
櫃檯 \
接受 \
評論 “允許入站 IPv4 回顯 (ping) 限制為 2000 PPS”
## 允許所有其他入站 IPv4 ICMP
ip 協議 icmp \
櫃檯 \
接受 \
評論 “允許所有其他 IPv4 ICMP”
## 允許 IPv6 ping/ping 響應但速率限制為 2000 PPS
icmpv6 類型 { echo-reply, echo-request } \
限價 2000/第二 \
櫃檯 \
接受 \
評論 “允許入站 IPv6 回顯 (ping) 限制為 2000 PPS”
## 允許所有其他入站 IPv6 ICMP
元 l4proto { icmpv6 } \
櫃檯 \
接受 \
評論 “允許所有其他 IPv6 ICMP”
## 允許入站 traceroute UDP 端口但限制為 500 PPS
udp傳輸端口 33434-33524\
限價 500/第二 \
櫃檯 \
接受 \
評論 “允許入站 UDP traceroute 限制為 500 PPS”
## 允許入站 SSH
TCP傳輸端口 SSH ct狀態新\
櫃檯 \
接受 \
評論 “允許入站 SSH 連接”
## 允許入站 HTTP 和 HTTPS
tcp dport { http, https } ct 狀態新\
櫃檯 \
接受 \
評論 “允許入站 HTTP 和 HTTPS 連接”
## 記錄任何不匹配的流量,但將記錄速率限制為最多 60 條消息/分鐘
## 默認策略將應用於不匹配的流量
限價 60/分鐘爆發 100 數據包\
日誌前綴 “IN——掉落:” \
評論 “記錄任何不匹配的流量”
## 統計不匹配的流量
櫃檯 \
評論 “計算任何不匹配的流量”
}
# 輸出流量的規則
鏈輸出{
type filter hook 輸出優先過濾器; 政策下降
## 允許出站流量到環回接口
奧伊夫洛\
接受 \
評論 “允許所有流量流出到環回接口”
## 允許建立和相關的連接
ct狀態成立,相關\
櫃檯 \
接受 \
評論 “允許建立/相關連接”
## 在丟棄狀態不佳的連接之前允許出站 WireGuard 流量
油煙機 $DEV_WAN 體育運動 $WIREGUARD_PORT \
櫃檯 \
接受 \
評論 “允許 WireGuard 出站流量”
## 丟棄連接狀態無效的流量
ct狀態無效\
限價 100/分鐘爆發 150 數據包\
日誌標記所有前綴 “OUT——無效:” \
評論 “具有無效連接狀態的流量的速率限制日誌記錄”
ct狀態無效\
櫃檯 \
降低 \
評論 “丟棄連接狀態無效的流量”
## 允許所有其他出站 IPv4 ICMP
ip 協議 icmp \
櫃檯 \
接受 \
評論 “允許所有 IPv4 ICMP 類型”
## 允許所有其他出站 IPv6 ICMP
元 l4proto { icmpv6 } \
櫃檯 \
接受 \
評論 “允許所有 IPv6 ICMP 類型”
## 允許出站 traceroute UDP 端口但限制為 500 PPS
udp傳輸端口 33434-33524\
限價 500/第二 \
櫃檯 \
接受 \
評論 “允許出站 UDP traceroute 限制為 500 PPS”
## 允許出站 HTTP 和 HTTPS 連接
tcp dport { http, https } ct 狀態新\
櫃檯 \
接受 \
評論 “允許出站 HTTP 和 HTTPS 連接”
## 允許出站 SMTP 提交
tcp dport 提交 ct 狀態 new \
櫃檯 \
接受 \
評論 “允許出站 SMTP 提交”
## 允許出站 DNS 請求
udp傳輸端口 53 \
櫃檯 \
接受 \
評論 “允許出站 UDP DNS 請求”
TCP傳輸端口 53 \
櫃檯 \
接受 \
評論 “允許出站 TCP DNS 請求”
## 允許出站 NTP 請求
udp傳輸端口 123 \
櫃檯 \
接受 \
評論 “允許出站 NTP 請求”
## 記錄任何不匹配的流量,但將記錄速率限制為最多 60 條消息/分鐘
## 默認策略將應用於不匹配的流量
限價 60/分鐘爆發 100 數據包\
日誌前綴 “OUT——掉落:” \
評論 “記錄任何不匹配的流量”
## 統計不匹配的流量
櫃檯 \
評論 “計算任何不匹配的流量”
}
}
# 主 NAT 過濾表
表 inet nat {
# NAT 流量預路由規則
鏈預路由{
鍵入 nat hook 預路由優先級 dstnat; 政策接受
}
# NAT 流量後路由規則
# 這個表在 Firezone 後路由鏈之前被處理
鏈後路由{
輸入 nat hook postrouting priority srcnat – 5; 政策接受
}
}
防火牆應存儲在正在運行的 Linux 發行版的相關位置。 對於 Debian/Ubuntu,這是 /etc/nftables.conf,對於 RHEL,這是 /etc/sysconfig/nftables.conf。
nftables.service 將需要配置為在啟動時啟動(如果尚未設置):
systemctl 啟用 nftables.service
如果對防火牆模板進行任何更改,可以通過運行檢查命令來驗證語法:
nft -f /path/to/nftables.conf -c
請務必驗證防火牆是否按預期工作,因為某些 nftables 功能可能不可用,具體取決於服務器上運行的版本。
_______________________________________________________________
本文檔概述了 Firezone 從您的自託管實例收集的遙測數據以及如何禁用它。
火區 依靠 在遙測上優先考慮我們的路線圖並優化我們擁有的工程資源,使 Firezone 對每個人都更好。
我們收集的遙測數據旨在回答以下問題:
Firezone 中收集遙測數據的三個主要位置:
在這三種情況中的每一種情況下,我們都會獲取回答上一節中的問題所需的最少數據量。
僅當您明確選擇加入產品更新時才會收集管理員電子郵件。 否則,個人身份信息是 決不 集。
Firezone 將遙測數據存儲在運行在私有 Kubernetes 集群中的自託管 PostHog 實例中,只能由 Firezone 團隊訪問。 以下是從您的 Firezone 實例發送到我們的遙測服務器的遙測事件示例:
{
“ID”: “0182272d-0b88-0000-d419-7b9a413713f1”,
“時間戳”: “2022-07-22T18:30:39.748000+00:00”,
“事件”: “fz_http_started”,
“不同的_id”: “1ec2e794-1c3e-43fc-a78f-1db6d1a37f54”,
“特性”:{
“$geoip_city_name”: “阿什伯恩”,
“$geoip_大陸_代碼”: “北美”,
“$geoip_大陸_名稱”: “北美”,
“$geoip_country_code”: “我們”,
“$geoip_country_name”: “美國”,
“$geoip_緯度”: 39.0469,
“$geoip_經度”: -77.4903,
“$geoip_postal_code”: “20149”,
“$geoip_subdivision_1_code”: “弗吉尼亞州”,
“$geoip_subdivision_1_name”: “弗吉尼亞”,
“$geoip_time_zone”: “美國/紐約”,
“$ip”: “52.200.241.107”,
“$plugins_deferred”:[],
“$plugins_失敗”:[],
“$plugins_成功”[
“地理IP(3)”
],
“不同的_id”: “1zc2e794-1c3e-43fc-a78f-1db6d1a37f54”,
“域名”: “awsdemo.firezone.dev”,
“內核版本”: “Linux 5.13.0”,
“版”: “0.4.6”
},
“元素鏈”: “”
}
注意
Firezone 開發團隊 依靠 產品分析,讓 Firezone 對每個人都更好。 啟用遙測是您可以為 Firezone 的開發做出的最有價值的貢獻。 也就是說,我們知道一些用戶有更高的隱私或安全要求,並且更願意完全禁用遙測。 如果是你,請繼續閱讀。
默認情況下啟用遙測。 要完全禁用產品遙測,請在 /etc/firezone/firezone.rb 中將以下配置選項設置為 false 並運行 sudo firezone-ctl reconfigure 以獲取更改。
默認['火區']['遙測']['啟用'] = 假
這將完全禁用所有產品遙測。
冰雹
9511 皇后衛隊 Ct。
勞雷爾,MD 20723
電話:(732) 771-9995
郵箱:info@hailbytes.com
直接在您的收件匣中接收最新的網路安全新聞。