diff --git a/.gitbook/assets/!new.drawio.svg b/.gitbook/assets/!new.drawio.svg new file mode 100644 index 0000000..1001f09 --- /dev/null +++ b/.gitbook/assets/!new.drawio.svg @@ -0,0 +1,4 @@ + + + +
HTTPS
Wireguard
Internet
Public Proxy
VPN Gateway
Core
GRPC (TLS)
GRPC (TLS)
DMZ
firewall
Internal network
firewall
\ No newline at end of file diff --git a/.gitbook/assets/0257A34A-D5E0-4D6D-9627-EA5149B891A1.PNG b/.gitbook/assets/0257A34A-D5E0-4D6D-9627-EA5149B891A1.PNG new file mode 100644 index 0000000..73ba6d0 Binary files /dev/null and b/.gitbook/assets/0257A34A-D5E0-4D6D-9627-EA5149B891A1.PNG differ diff --git a/.gitbook/assets/1 (1).png b/.gitbook/assets/1 (1).png new file mode 100644 index 0000000..a903844 Binary files /dev/null and b/.gitbook/assets/1 (1).png differ diff --git a/.gitbook/assets/2.png b/.gitbook/assets/2.png new file mode 100644 index 0000000..938e5e6 Binary files /dev/null and b/.gitbook/assets/2.png differ diff --git a/.gitbook/assets/2fa-client.png b/.gitbook/assets/2fa-client.png new file mode 100644 index 0000000..fb18dc9 Binary files /dev/null and b/.gitbook/assets/2fa-client.png differ diff --git a/.gitbook/assets/3.png b/.gitbook/assets/3.png new file mode 100644 index 0000000..5f4b8f7 Binary files /dev/null and b/.gitbook/assets/3.png differ diff --git a/.gitbook/assets/3C830112-BE04-4B62-AFC3-0B8DF04D2C6B.PNG b/.gitbook/assets/3C830112-BE04-4B62-AFC3-0B8DF04D2C6B.PNG new file mode 100644 index 0000000..b70b8e2 Binary files /dev/null and b/.gitbook/assets/3C830112-BE04-4B62-AFC3-0B8DF04D2C6B.PNG differ diff --git a/.gitbook/assets/4.png b/.gitbook/assets/4.png new file mode 100644 index 0000000..14c3558 Binary files /dev/null and b/.gitbook/assets/4.png differ diff --git a/.gitbook/assets/5.png b/.gitbook/assets/5.png new file mode 100644 index 0000000..0e6519c Binary files /dev/null and b/.gitbook/assets/5.png differ diff --git a/.gitbook/assets/6.png b/.gitbook/assets/6.png new file mode 100644 index 0000000..b307bd6 Binary files /dev/null and b/.gitbook/assets/6.png differ diff --git a/.gitbook/assets/93A00C9F-4F80-4B55-8EEE-19A3AB957629.PNG b/.gitbook/assets/93A00C9F-4F80-4B55-8EEE-19A3AB957629.PNG new file mode 100644 index 0000000..fefedff Binary files /dev/null and b/.gitbook/assets/93A00C9F-4F80-4B55-8EEE-19A3AB957629.PNG differ diff --git a/.gitbook/assets/DEFGUARD_ENROLLMENT_URL (2).png b/.gitbook/assets/DEFGUARD_ENROLLMENT_URL (1) (1).png similarity index 100% rename from .gitbook/assets/DEFGUARD_ENROLLMENT_URL (2).png rename to .gitbook/assets/DEFGUARD_ENROLLMENT_URL (1) (1).png diff --git a/.gitbook/assets/F64A30B5-AD40-431A-A72E-467A7EAFDC1F (1).PNG b/.gitbook/assets/F64A30B5-AD40-431A-A72E-467A7EAFDC1F (1).PNG new file mode 100644 index 0000000..131710d Binary files /dev/null and b/.gitbook/assets/F64A30B5-AD40-431A-A72E-467A7EAFDC1F (1).PNG differ diff --git a/.gitbook/assets/F64A30B5-AD40-431A-A72E-467A7EAFDC1F.PNG b/.gitbook/assets/F64A30B5-AD40-431A-A72E-467A7EAFDC1F.PNG new file mode 100644 index 0000000..a608541 Binary files /dev/null and b/.gitbook/assets/F64A30B5-AD40-431A-A72E-467A7EAFDC1F.PNG differ diff --git a/.gitbook/assets/Run gateway modal.png b/.gitbook/assets/Run gateway modal.png deleted file mode 100644 index 874e9f3..0000000 Binary files a/.gitbook/assets/Run gateway modal.png and /dev/null differ diff --git a/.gitbook/assets/Screenshot 2025-07-29 at 17.32.51 (1).png b/.gitbook/assets/Screenshot 2025-07-29 at 17.32.51 (1).png deleted file mode 100644 index 0b16c5f..0000000 Binary files a/.gitbook/assets/Screenshot 2025-07-29 at 17.32.51 (1).png and /dev/null differ diff --git a/.gitbook/assets/Screenshot 2025-08-18 at 13.35.07.png b/.gitbook/assets/Screenshot 2025-08-18 at 13.35.07.png new file mode 100644 index 0000000..0917a65 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-08-18 at 13.35.07.png differ diff --git a/.gitbook/assets/Screenshot 2025-08-18 at 13.56.24.png b/.gitbook/assets/Screenshot 2025-08-18 at 13.56.24.png new file mode 100644 index 0000000..63b14e4 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-08-18 at 13.56.24.png differ diff --git a/.gitbook/assets/Screenshot 2025-08-18 at 13.56.49.png b/.gitbook/assets/Screenshot 2025-08-18 at 13.56.49.png new file mode 100644 index 0000000..304af87 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-08-18 at 13.56.49.png differ diff --git a/.gitbook/assets/Screenshot 2025-09-15 at 11.30.19.png b/.gitbook/assets/Screenshot 2025-09-15 at 11.30.19.png new file mode 100644 index 0000000..4291353 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-09-15 at 11.30.19.png differ diff --git a/.gitbook/assets/Screenshot 2025-09-23 at 22.09.36.png b/.gitbook/assets/Screenshot 2025-09-23 at 22.09.36.png new file mode 100644 index 0000000..e4fa86a Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-09-23 at 22.09.36.png differ diff --git a/.gitbook/assets/Screenshot 2025-09-23 at 22.12.55.png b/.gitbook/assets/Screenshot 2025-09-23 at 22.12.55.png new file mode 100644 index 0000000..8240116 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-09-23 at 22.12.55.png differ diff --git "a/.gitbook/assets/Screenshot 2025-10-01 at 5.43.32\342\200\257PM.png" "b/.gitbook/assets/Screenshot 2025-10-01 at 5.43.32\342\200\257PM.png" new file mode 100644 index 0000000..9a1cdcd Binary files /dev/null and "b/.gitbook/assets/Screenshot 2025-10-01 at 5.43.32\342\200\257PM.png" differ diff --git "a/.gitbook/assets/Screenshot 2025-10-01 at 5.45.59\342\200\257PM.png" "b/.gitbook/assets/Screenshot 2025-10-01 at 5.45.59\342\200\257PM.png" new file mode 100644 index 0000000..fbc3ed9 Binary files /dev/null and "b/.gitbook/assets/Screenshot 2025-10-01 at 5.45.59\342\200\257PM.png" differ diff --git a/.gitbook/assets/Screenshot 2025-10-15 at 13.37.33.png b/.gitbook/assets/Screenshot 2025-10-15 at 13.37.33.png new file mode 100644 index 0000000..9c14a4f Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-10-15 at 13.37.33.png differ diff --git a/.gitbook/assets/Screenshot 2025-10-15 at 13.37.55.png b/.gitbook/assets/Screenshot 2025-10-15 at 13.37.55.png new file mode 100644 index 0000000..d13a16e Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-10-15 at 13.37.55.png differ diff --git a/.gitbook/assets/Screenshot 2025-10-24 at 11.20.24.png b/.gitbook/assets/Screenshot 2025-10-24 at 11.20.24.png new file mode 100644 index 0000000..cc49efc Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-10-24 at 11.20.24.png differ diff --git a/.gitbook/assets/Screenshot 2025-10-29 at 13.14.01.png b/.gitbook/assets/Screenshot 2025-10-29 at 13.14.01.png new file mode 100644 index 0000000..20e5800 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-10-29 at 13.14.01.png differ diff --git a/.gitbook/assets/Screenshot 2025-12-01 at 14.22.10.png b/.gitbook/assets/Screenshot 2025-12-01 at 14.22.10.png new file mode 100644 index 0000000..b742936 Binary files /dev/null and b/.gitbook/assets/Screenshot 2025-12-01 at 14.22.10.png differ diff --git a/.gitbook/assets/Screenshot 2026-01-07 at 09.08.07.png b/.gitbook/assets/Screenshot 2026-01-07 at 09.08.07.png new file mode 100644 index 0000000..e07258c Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-01-07 at 09.08.07.png differ diff --git a/.gitbook/assets/Screenshot 2026-01-07 at 09.11.38.png b/.gitbook/assets/Screenshot 2026-01-07 at 09.11.38.png new file mode 100644 index 0000000..43ff2fb Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-01-07 at 09.11.38.png differ diff --git a/.gitbook/assets/Screenshot 2026-01-09 at 12.23.18.png b/.gitbook/assets/Screenshot 2026-01-09 at 12.23.18.png new file mode 100644 index 0000000..1c80c35 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-01-09 at 12.23.18.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 22.29.27.png b/.gitbook/assets/Screenshot 2026-02-08 at 22.29.27.png new file mode 100644 index 0000000..abcd951 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 22.29.27.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 22.29.56.png b/.gitbook/assets/Screenshot 2026-02-08 at 22.29.56.png new file mode 100644 index 0000000..e5e2d08 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 22.29.56.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 22.30.27.png b/.gitbook/assets/Screenshot 2026-02-08 at 22.30.27.png new file mode 100644 index 0000000..2a4e4bd Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 22.30.27.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 22.30.42.png b/.gitbook/assets/Screenshot 2026-02-08 at 22.30.42.png new file mode 100644 index 0000000..54f29d8 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 22.30.42.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.07.31.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.07.31.png new file mode 100644 index 0000000..dbf5208 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.07.31.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.07.33.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.07.33.png new file mode 100644 index 0000000..ad42f17 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.07.33.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.08.14.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.14.png new file mode 100644 index 0000000..57ba62f Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.14.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.08.38.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.38.png new file mode 100644 index 0000000..3932350 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.38.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.08.41.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.41.png new file mode 100644 index 0000000..0065792 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.41.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.08.49.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.49.png new file mode 100644 index 0000000..80809a6 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.49.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.08.53.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.53.png new file mode 100644 index 0000000..1e9a3a2 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.53.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.08.57.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.57.png new file mode 100644 index 0000000..f0abc0a Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.08.57.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.09.05.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.05.png new file mode 100644 index 0000000..a8379b9 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.05.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.09.22.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.22.png new file mode 100644 index 0000000..af8e4c1 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.22.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.09.24.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.24.png new file mode 100644 index 0000000..672054c Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.24.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.09.37.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.37.png new file mode 100644 index 0000000..0924185 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.37.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.09.42.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.42.png new file mode 100644 index 0000000..d775d6b Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.09.42.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.37.27.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.37.27.png new file mode 100644 index 0000000..6986f22 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.37.27.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.38.28.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.38.28.png new file mode 100644 index 0000000..5f57f18 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.38.28.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.38.31.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.38.31.png new file mode 100644 index 0000000..7df5069 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.38.31.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.38.39.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.38.39.png new file mode 100644 index 0000000..275ce89 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.38.39.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.40.06.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.40.06.png new file mode 100644 index 0000000..88a0c07 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.40.06.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.41.04.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.41.04.png new file mode 100644 index 0000000..bb2a8fe Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.41.04.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.41.07.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.41.07.png new file mode 100644 index 0000000..5d07d00 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.41.07.png differ diff --git a/.gitbook/assets/Screenshot 2026-02-08 at 23.42.14.png b/.gitbook/assets/Screenshot 2026-02-08 at 23.42.14.png new file mode 100644 index 0000000..5ffbff2 Binary files /dev/null and b/.gitbook/assets/Screenshot 2026-02-08 at 23.42.14.png differ diff --git a/.gitbook/assets/Untitled Diagram.drawio (1).png b/.gitbook/assets/Untitled Diagram.drawio (1).png new file mode 100644 index 0000000..f1f2f47 Binary files /dev/null and b/.gitbook/assets/Untitled Diagram.drawio (1).png differ diff --git a/.gitbook/assets/Untitled Diagram.drawio (1).svg b/.gitbook/assets/Untitled Diagram.drawio (1).svg new file mode 100644 index 0000000..30400f2 --- /dev/null +++ b/.gitbook/assets/Untitled Diagram.drawio (1).svg @@ -0,0 +1,4 @@ + + + +
HTTPS
Wireguard
Internet
Public Proxy
VPN Gateway
Core
GRPC (TLS)
GRPC (TLS)
DMZ
firewall
Internal network
firewall
\ No newline at end of file diff --git a/.gitbook/assets/Untitled Diagram.drawio.png b/.gitbook/assets/Untitled Diagram.drawio.png new file mode 100644 index 0000000..d1ca18d Binary files /dev/null and b/.gitbook/assets/Untitled Diagram.drawio.png differ diff --git a/.gitbook/assets/Untitled Diagram.drawio.svg b/.gitbook/assets/Untitled Diagram.drawio.svg new file mode 100644 index 0000000..5c4c138 --- /dev/null +++ b/.gitbook/assets/Untitled Diagram.drawio.svg @@ -0,0 +1,4 @@ + + + +
HTTPS
HTTPS
Wireguard
Wireguard
DMZ Firewall
DMZ Firewall
Internal Network
Firewall
Internal Network...
GRPC (TLS)
GRPC (TLS)
GRPC (TLS)
GRPC (TLS)
Internet
Internet
Public proxy
Public proxy
VPN Gateway
VPN Gateway
Core
Core
\ No newline at end of file diff --git a/.gitbook/assets/add-device-tutorial (1).png b/.gitbook/assets/add-device-tutorial (1).png new file mode 100644 index 0000000..c78cba7 Binary files /dev/null and b/.gitbook/assets/add-device-tutorial (1).png differ diff --git a/.gitbook/assets/add-device-tutorial.png b/.gitbook/assets/add-device-tutorial.png new file mode 100644 index 0000000..c78cba7 Binary files /dev/null and b/.gitbook/assets/add-device-tutorial.png differ diff --git a/.gitbook/assets/add-instance-tutorial.png b/.gitbook/assets/add-instance-tutorial.png new file mode 100644 index 0000000..b450598 Binary files /dev/null and b/.gitbook/assets/add-instance-tutorial.png differ diff --git a/in-depth/puml/architecture-components.svg b/.gitbook/assets/architecture-components.svg similarity index 100% rename from in-depth/puml/architecture-components.svg rename to .gitbook/assets/architecture-components.svg diff --git a/in-depth/puml/architecture-containers.svg b/.gitbook/assets/architecture-containers.svg similarity index 100% rename from in-depth/puml/architecture-containers.svg rename to .gitbook/assets/architecture-containers.svg diff --git a/in-depth/puml/architecture-context.svg b/.gitbook/assets/architecture-context.svg similarity index 100% rename from in-depth/puml/architecture-context.svg rename to .gitbook/assets/architecture-context.svg diff --git a/.gitbook/assets/aws_cloudformation.png b/.gitbook/assets/aws_cloudformation.png new file mode 100644 index 0000000..bf2edcc Binary files /dev/null and b/.gitbook/assets/aws_cloudformation.png differ diff --git a/.gitbook/assets/aws_cloudformation_v2 (1).png b/.gitbook/assets/aws_cloudformation_v2 (1).png new file mode 100644 index 0000000..0c5de59 Binary files /dev/null and b/.gitbook/assets/aws_cloudformation_v2 (1).png differ diff --git a/.gitbook/assets/aws_cloudformation_v2.png b/.gitbook/assets/aws_cloudformation_v2.png new file mode 100644 index 0000000..0c5de59 Binary files /dev/null and b/.gitbook/assets/aws_cloudformation_v2.png differ diff --git a/.gitbook/assets/client-check-for-updates.png b/.gitbook/assets/client-check-for-updates.png new file mode 100644 index 0000000..e61c164 Binary files /dev/null and b/.gitbook/assets/client-check-for-updates.png differ diff --git a/.gitbook/assets/defguard (1) (1).png b/.gitbook/assets/defguard (3).png similarity index 100% rename from .gitbook/assets/defguard (1) (1).png rename to .gitbook/assets/defguard (3).png diff --git a/.gitbook/assets/defguard-architecture.drawio.svg b/.gitbook/assets/defguard-architecture.drawio.svg new file mode 100644 index 0000000..270daf6 --- /dev/null +++ b/.gitbook/assets/defguard-architecture.drawio.svg @@ -0,0 +1,4 @@ + + + +
HTTPS
Wireguard
DMZ
Internal network
GRPC (TLS)
GRPC (TLS)
Internet
Public proxy
VPN Gateway
Core
\ No newline at end of file diff --git a/.gitbook/assets/defguard-desktop-add-instance.png b/.gitbook/assets/defguard-desktop-add-instance.png deleted file mode 100644 index 1acd44d..0000000 Binary files a/.gitbook/assets/defguard-desktop-add-instance.png and /dev/null differ diff --git a/.gitbook/assets/defguard-desktop-provide-url.png b/.gitbook/assets/defguard-desktop-provide-url.png deleted file mode 100644 index 32cf10a..0000000 Binary files a/.gitbook/assets/defguard-desktop-provide-url.png and /dev/null differ diff --git a/.gitbook/assets/defguard-devices-fingerprint-icon.png b/.gitbook/assets/defguard-devices-fingerprint-icon.png new file mode 100644 index 0000000..8f0427d Binary files /dev/null and b/.gitbook/assets/defguard-devices-fingerprint-icon.png differ diff --git a/.gitbook/assets/defguard-enrollment-email-desktop.png b/.gitbook/assets/defguard-enrollment-email-desktop.png deleted file mode 100644 index 56d566f..0000000 Binary files a/.gitbook/assets/defguard-enrollment-email-desktop.png and /dev/null differ diff --git a/.gitbook/assets/defguard-location-overview-tutorial (1).png b/.gitbook/assets/defguard-location-overview-tutorial (1).png new file mode 100644 index 0000000..235f32b Binary files /dev/null and b/.gitbook/assets/defguard-location-overview-tutorial (1).png differ diff --git a/.gitbook/assets/defguard-location-overview-tutorial.png b/.gitbook/assets/defguard-location-overview-tutorial.png new file mode 100644 index 0000000..235f32b Binary files /dev/null and b/.gitbook/assets/defguard-location-overview-tutorial.png differ diff --git a/.gitbook/assets/defguard-mobile-biometry-enabled.png b/.gitbook/assets/defguard-mobile-biometry-enabled.png new file mode 100644 index 0000000..fd8b89a Binary files /dev/null and b/.gitbook/assets/defguard-mobile-biometry-enabled.png differ diff --git a/.gitbook/assets/defguard-mobile-biometry-fail.png b/.gitbook/assets/defguard-mobile-biometry-fail.png new file mode 100644 index 0000000..4f65e69 Binary files /dev/null and b/.gitbook/assets/defguard-mobile-biometry-fail.png differ diff --git a/.gitbook/assets/defguard-mobile-biometry-setup (1).png b/.gitbook/assets/defguard-mobile-biometry-setup (1).png new file mode 100644 index 0000000..d01d4ce Binary files /dev/null and b/.gitbook/assets/defguard-mobile-biometry-setup (1).png differ diff --git a/.gitbook/assets/defguard-mobile-biometry-setup.png b/.gitbook/assets/defguard-mobile-biometry-setup.png new file mode 100644 index 0000000..31df83b Binary files /dev/null and b/.gitbook/assets/defguard-mobile-biometry-setup.png differ diff --git a/.gitbook/assets/defguard-mobile-connect-mfa (1).png b/.gitbook/assets/defguard-mobile-connect-mfa (1).png new file mode 100644 index 0000000..0ac3a42 Binary files /dev/null and b/.gitbook/assets/defguard-mobile-connect-mfa (1).png differ diff --git a/.gitbook/assets/defguard-mobile-connect-mfa.png b/.gitbook/assets/defguard-mobile-connect-mfa.png index 0ac3a42..d23cce9 100644 Binary files a/.gitbook/assets/defguard-mobile-connect-mfa.png and b/.gitbook/assets/defguard-mobile-connect-mfa.png differ diff --git a/.gitbook/assets/defguard-mobile-connecting-to-mfa-location.png b/.gitbook/assets/defguard-mobile-connecting-to-mfa-location.png new file mode 100644 index 0000000..135fcc2 Binary files /dev/null and b/.gitbook/assets/defguard-mobile-connecting-to-mfa-location.png differ diff --git a/.gitbook/assets/defguard-vpn-overview (2).png b/.gitbook/assets/defguard-vpn-overview (2).png deleted file mode 100644 index 7eee1f5..0000000 Binary files a/.gitbook/assets/defguard-vpn-overview (2).png and /dev/null differ diff --git a/screencasts/defguard.gif b/.gitbook/assets/defguard.gif similarity index 100% rename from screencasts/defguard.gif rename to .gitbook/assets/defguard.gif diff --git a/.gitbook/assets/detailed-view-instance (1).png b/.gitbook/assets/detailed-view-instance (1).png new file mode 100644 index 0000000..232eb5c Binary files /dev/null and b/.gitbook/assets/detailed-view-instance (1).png differ diff --git a/.gitbook/assets/detailed-view-instance.png b/.gitbook/assets/detailed-view-instance.png new file mode 100644 index 0000000..232eb5c Binary files /dev/null and b/.gitbook/assets/detailed-view-instance.png differ diff --git a/.gitbook/assets/device-list-biometry.png b/.gitbook/assets/device-list-biometry.png new file mode 100644 index 0000000..8c51c03 Binary files /dev/null and b/.gitbook/assets/device-list-biometry.png differ diff --git a/.gitbook/assets/device-name-tutorial.png b/.gitbook/assets/device-name-tutorial.png new file mode 100644 index 0000000..e2e483c Binary files /dev/null and b/.gitbook/assets/device-name-tutorial.png differ diff --git a/.gitbook/assets/enterprise-features.png b/.gitbook/assets/enterprise-features.png new file mode 100644 index 0000000..8f56940 Binary files /dev/null and b/.gitbook/assets/enterprise-features.png differ diff --git a/.gitbook/assets/finder-go-library.png b/.gitbook/assets/finder-go-library.png new file mode 100644 index 0000000..50a4c5c Binary files /dev/null and b/.gitbook/assets/finder-go-library.png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 0232e5b..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index d7a0144..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 0d50734..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 554f85c..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index d535a09..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index b4c59b6..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index d8ceeb2..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 62a91a2..0000000 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png index e61b990..4680580 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1).png index 872c8db..4680580 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1).png index 72b6271..027adaf 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1).png index 9bcef77..11d467d 100644 Binary files a/.gitbook/assets/image (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png index 8d70d0e..960376d 100644 Binary files a/.gitbook/assets/image (1) (1).png and b/.gitbook/assets/image (1) (1).png differ diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png index b187ad8..406cf40 100644 Binary files a/.gitbook/assets/image (1).png and b/.gitbook/assets/image (1).png differ diff --git a/.gitbook/assets/image (10) (1) (1) (1).png b/.gitbook/assets/image (10) (1) (1) (1).png deleted file mode 100644 index f0d6785..0000000 Binary files a/.gitbook/assets/image (10) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (10) (1) (1).png b/.gitbook/assets/image (10) (1) (1).png deleted file mode 100644 index 3177367..0000000 Binary files a/.gitbook/assets/image (10) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (10) (1).png b/.gitbook/assets/image (10) (1).png index f54c60c..5ecbcbc 100644 Binary files a/.gitbook/assets/image (10) (1).png and b/.gitbook/assets/image (10) (1).png differ diff --git a/.gitbook/assets/image (10).png b/.gitbook/assets/image (10).png index 13ced10..7f5f435 100644 Binary files a/.gitbook/assets/image (10).png and b/.gitbook/assets/image (10).png differ diff --git a/.gitbook/assets/image (100).png b/.gitbook/assets/image (100).png index 34bd6e3..7448c90 100644 Binary files a/.gitbook/assets/image (100).png and b/.gitbook/assets/image (100).png differ diff --git a/.gitbook/assets/image (101).png b/.gitbook/assets/image (101).png index 08c83c9..5b06f11 100644 Binary files a/.gitbook/assets/image (101).png and b/.gitbook/assets/image (101).png differ diff --git a/.gitbook/assets/image (102).png b/.gitbook/assets/image (102).png index 7ce4ea9..8df8915 100644 Binary files a/.gitbook/assets/image (102).png and b/.gitbook/assets/image (102).png differ diff --git a/.gitbook/assets/image (103).png b/.gitbook/assets/image (103).png index 7a016e7..03b1841 100644 Binary files a/.gitbook/assets/image (103).png and b/.gitbook/assets/image (103).png differ diff --git a/.gitbook/assets/image (104).png b/.gitbook/assets/image (104).png index c9fd008..2b98923 100644 Binary files a/.gitbook/assets/image (104).png and b/.gitbook/assets/image (104).png differ diff --git a/.gitbook/assets/image (105).png b/.gitbook/assets/image (105).png index fc747af..290d157 100644 Binary files a/.gitbook/assets/image (105).png and b/.gitbook/assets/image (105).png differ diff --git a/.gitbook/assets/image (106).png b/.gitbook/assets/image (106).png index 12f0e5f..25074a2 100644 Binary files a/.gitbook/assets/image (106).png and b/.gitbook/assets/image (106).png differ diff --git a/.gitbook/assets/image (10) (1) (1) (1) (1).png b/.gitbook/assets/image (107) (1).png similarity index 100% rename from .gitbook/assets/image (10) (1) (1) (1) (1).png rename to .gitbook/assets/image (107) (1).png diff --git a/.gitbook/assets/image (107).png b/.gitbook/assets/image (107).png index 009463b..0a8d3b0 100644 Binary files a/.gitbook/assets/image (107).png and b/.gitbook/assets/image (107).png differ diff --git a/.gitbook/assets/image (108).png b/.gitbook/assets/image (108).png index 4f16049..a3eaaab 100644 Binary files a/.gitbook/assets/image (108).png and b/.gitbook/assets/image (108).png differ diff --git a/.gitbook/assets/image (109).png b/.gitbook/assets/image (109).png index fe6ae12..3ecd353 100644 Binary files a/.gitbook/assets/image (109).png and b/.gitbook/assets/image (109).png differ diff --git a/.gitbook/assets/image (11) (1) (1).png b/.gitbook/assets/image (11) (1) (1).png deleted file mode 100644 index 0a8d3b0..0000000 Binary files a/.gitbook/assets/image (11) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (11) (1).png b/.gitbook/assets/image (11) (1).png index c4eead5..8ca2d66 100644 Binary files a/.gitbook/assets/image (11) (1).png and b/.gitbook/assets/image (11) (1).png differ diff --git a/.gitbook/assets/image (11).png b/.gitbook/assets/image (11).png index 0a4a4af..66abb0b 100644 Binary files a/.gitbook/assets/image (11).png and b/.gitbook/assets/image (11).png differ diff --git a/.gitbook/assets/image (110).png b/.gitbook/assets/image (110).png index 8ab0817..1c714ec 100644 Binary files a/.gitbook/assets/image (110).png and b/.gitbook/assets/image (110).png differ diff --git a/.gitbook/assets/image (111).png b/.gitbook/assets/image (111).png index d2d027e..1d83dd8 100644 Binary files a/.gitbook/assets/image (111).png and b/.gitbook/assets/image (111).png differ diff --git a/.gitbook/assets/image (112).png b/.gitbook/assets/image (112).png index 56b6ef6..89db545 100644 Binary files a/.gitbook/assets/image (112).png and b/.gitbook/assets/image (112).png differ diff --git a/.gitbook/assets/image (113).png b/.gitbook/assets/image (113).png index 710be56..425f607 100644 Binary files a/.gitbook/assets/image (113).png and b/.gitbook/assets/image (113).png differ diff --git a/.gitbook/assets/image (114).png b/.gitbook/assets/image (114).png index ff1862a..1a0be3e 100644 Binary files a/.gitbook/assets/image (114).png and b/.gitbook/assets/image (114).png differ diff --git a/.gitbook/assets/image (115).png b/.gitbook/assets/image (115).png index ff1862a..c20014e 100644 Binary files a/.gitbook/assets/image (115).png and b/.gitbook/assets/image (115).png differ diff --git a/.gitbook/assets/image (116).png b/.gitbook/assets/image (116).png index 13284e7..9365f20 100644 Binary files a/.gitbook/assets/image (116).png and b/.gitbook/assets/image (116).png differ diff --git a/.gitbook/assets/image (117).png b/.gitbook/assets/image (117).png index 7448c90..5594cc9 100644 Binary files a/.gitbook/assets/image (117).png and b/.gitbook/assets/image (117).png differ diff --git a/.gitbook/assets/image (118).png b/.gitbook/assets/image (118).png index 5ecbcbc..887dde0 100644 Binary files a/.gitbook/assets/image (118).png and b/.gitbook/assets/image (118).png differ diff --git a/.gitbook/assets/image (119).png b/.gitbook/assets/image (119).png new file mode 100644 index 0000000..8df7768 Binary files /dev/null and b/.gitbook/assets/image (119).png differ diff --git a/.gitbook/assets/image (12) (1) (1).png b/.gitbook/assets/image (12) (1) (1).png deleted file mode 100644 index 3ecd353..0000000 Binary files a/.gitbook/assets/image (12) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (12) (1).png b/.gitbook/assets/image (12) (1).png index bbbb4a6..8d70d0e 100644 Binary files a/.gitbook/assets/image (12) (1).png and b/.gitbook/assets/image (12) (1).png differ diff --git a/.gitbook/assets/image (12).png b/.gitbook/assets/image (12).png index 869d1d5..cb712e1 100644 Binary files a/.gitbook/assets/image (12).png and b/.gitbook/assets/image (12).png differ diff --git a/.gitbook/assets/image (120).png b/.gitbook/assets/image (120).png new file mode 100644 index 0000000..41c8cae Binary files /dev/null and b/.gitbook/assets/image (120).png differ diff --git a/.gitbook/assets/image (121).png b/.gitbook/assets/image (121).png new file mode 100644 index 0000000..d04bb0c Binary files /dev/null and b/.gitbook/assets/image (121).png differ diff --git a/.gitbook/assets/image (122).png b/.gitbook/assets/image (122).png new file mode 100644 index 0000000..ff094f1 Binary files /dev/null and b/.gitbook/assets/image (122).png differ diff --git a/.gitbook/assets/image (123).png b/.gitbook/assets/image (123).png new file mode 100644 index 0000000..5bd1afa Binary files /dev/null and b/.gitbook/assets/image (123).png differ diff --git a/.gitbook/assets/image (124).png b/.gitbook/assets/image (124).png new file mode 100644 index 0000000..87763ac Binary files /dev/null and b/.gitbook/assets/image (124).png differ diff --git a/.gitbook/assets/image (125).png b/.gitbook/assets/image (125).png new file mode 100644 index 0000000..3f4dedc Binary files /dev/null and b/.gitbook/assets/image (125).png differ diff --git a/.gitbook/assets/image (126).png b/.gitbook/assets/image (126).png new file mode 100644 index 0000000..82fac13 Binary files /dev/null and b/.gitbook/assets/image (126).png differ diff --git a/.gitbook/assets/image (127) (1).png b/.gitbook/assets/image (127) (1).png new file mode 100644 index 0000000..e275a69 Binary files /dev/null and b/.gitbook/assets/image (127) (1).png differ diff --git a/.gitbook/assets/image (127).png b/.gitbook/assets/image (127).png new file mode 100644 index 0000000..e275a69 Binary files /dev/null and b/.gitbook/assets/image (127).png differ diff --git a/.gitbook/assets/image (129).png b/.gitbook/assets/image (129).png new file mode 100644 index 0000000..f96a713 Binary files /dev/null and b/.gitbook/assets/image (129).png differ diff --git a/.gitbook/assets/image (13) (1).png b/.gitbook/assets/image (13) (1).png index 0d50734..58e6366 100644 Binary files a/.gitbook/assets/image (13) (1).png and b/.gitbook/assets/image (13) (1).png differ diff --git a/.gitbook/assets/image (13).png b/.gitbook/assets/image (13).png index 7f3d6fc..cdb2478 100644 Binary files a/.gitbook/assets/image (13).png and b/.gitbook/assets/image (13).png differ diff --git a/.gitbook/assets/image (130) (1).png b/.gitbook/assets/image (130) (1).png new file mode 100644 index 0000000..399ac16 Binary files /dev/null and b/.gitbook/assets/image (130) (1).png differ diff --git a/.gitbook/assets/image (130).png b/.gitbook/assets/image (130).png new file mode 100644 index 0000000..399ac16 Binary files /dev/null and b/.gitbook/assets/image (130).png differ diff --git a/.gitbook/assets/image (132).png b/.gitbook/assets/image (132).png new file mode 100644 index 0000000..6168c8b Binary files /dev/null and b/.gitbook/assets/image (132).png differ diff --git a/.gitbook/assets/image (133).png b/.gitbook/assets/image (133).png new file mode 100644 index 0000000..7c27940 Binary files /dev/null and b/.gitbook/assets/image (133).png differ diff --git a/.gitbook/assets/image (135).png b/.gitbook/assets/image (135).png new file mode 100644 index 0000000..090f360 Binary files /dev/null and b/.gitbook/assets/image (135).png differ diff --git a/.gitbook/assets/image (136) (1).png b/.gitbook/assets/image (136) (1).png new file mode 100644 index 0000000..c467b93 Binary files /dev/null and b/.gitbook/assets/image (136) (1).png differ diff --git a/.gitbook/assets/image (136).png b/.gitbook/assets/image (136).png new file mode 100644 index 0000000..c467b93 Binary files /dev/null and b/.gitbook/assets/image (136).png differ diff --git a/.gitbook/assets/image (138).png b/.gitbook/assets/image (138).png new file mode 100644 index 0000000..97e8513 Binary files /dev/null and b/.gitbook/assets/image (138).png differ diff --git a/.gitbook/assets/image (14) (1).png b/.gitbook/assets/image (14) (1).png index 1d83dd8..9bcef77 100644 Binary files a/.gitbook/assets/image (14) (1).png and b/.gitbook/assets/image (14) (1).png differ diff --git a/.gitbook/assets/image (14).png b/.gitbook/assets/image (14).png index 79c8fc1..90c1d5c 100644 Binary files a/.gitbook/assets/image (14).png and b/.gitbook/assets/image (14).png differ diff --git a/.gitbook/assets/image (140).png b/.gitbook/assets/image (140).png new file mode 100644 index 0000000..5b492f5 Binary files /dev/null and b/.gitbook/assets/image (140).png differ diff --git a/.gitbook/assets/image (143).png b/.gitbook/assets/image (143).png new file mode 100644 index 0000000..3b8dcbf Binary files /dev/null and b/.gitbook/assets/image (143).png differ diff --git a/.gitbook/assets/image (145).png b/.gitbook/assets/image (145).png new file mode 100644 index 0000000..1fb4197 Binary files /dev/null and b/.gitbook/assets/image (145).png differ diff --git a/.gitbook/assets/image (146).png b/.gitbook/assets/image (146).png new file mode 100644 index 0000000..66a70a9 Binary files /dev/null and b/.gitbook/assets/image (146).png differ diff --git a/.gitbook/assets/image (148).png b/.gitbook/assets/image (148).png new file mode 100644 index 0000000..b4babab Binary files /dev/null and b/.gitbook/assets/image (148).png differ diff --git a/.gitbook/assets/image (149).png b/.gitbook/assets/image (149).png new file mode 100644 index 0000000..d81f763 Binary files /dev/null and b/.gitbook/assets/image (149).png differ diff --git a/.gitbook/assets/image (15) (1).png b/.gitbook/assets/image (15) (1).png index 89db545..72b6271 100644 Binary files a/.gitbook/assets/image (15) (1).png and b/.gitbook/assets/image (15) (1).png differ diff --git a/.gitbook/assets/image (15).png b/.gitbook/assets/image (15).png index b688551..f7e0f69 100644 Binary files a/.gitbook/assets/image (15).png and b/.gitbook/assets/image (15).png differ diff --git a/.gitbook/assets/image (150).png b/.gitbook/assets/image (150).png new file mode 100644 index 0000000..e84fd0d Binary files /dev/null and b/.gitbook/assets/image (150).png differ diff --git a/.gitbook/assets/image (151).png b/.gitbook/assets/image (151).png new file mode 100644 index 0000000..ab0cd35 Binary files /dev/null and b/.gitbook/assets/image (151).png differ diff --git a/.gitbook/assets/image (152).png b/.gitbook/assets/image (152).png new file mode 100644 index 0000000..99efc78 Binary files /dev/null and b/.gitbook/assets/image (152).png differ diff --git a/.gitbook/assets/image (153).png b/.gitbook/assets/image (153).png new file mode 100644 index 0000000..6e7e113 Binary files /dev/null and b/.gitbook/assets/image (153).png differ diff --git a/.gitbook/assets/image (154).png b/.gitbook/assets/image (154).png new file mode 100644 index 0000000..faec42b Binary files /dev/null and b/.gitbook/assets/image (154).png differ diff --git a/.gitbook/assets/image (155).png b/.gitbook/assets/image (155).png new file mode 100644 index 0000000..a6eacf8 Binary files /dev/null and b/.gitbook/assets/image (155).png differ diff --git a/.gitbook/assets/image (156).png b/.gitbook/assets/image (156).png new file mode 100644 index 0000000..28927b9 Binary files /dev/null and b/.gitbook/assets/image (156).png differ diff --git a/.gitbook/assets/image (157).png b/.gitbook/assets/image (157).png new file mode 100644 index 0000000..3f2ebef Binary files /dev/null and b/.gitbook/assets/image (157).png differ diff --git a/.gitbook/assets/image (158).png b/.gitbook/assets/image (158).png new file mode 100644 index 0000000..47cbfc9 Binary files /dev/null and b/.gitbook/assets/image (158).png differ diff --git a/.gitbook/assets/image (159).png b/.gitbook/assets/image (159).png new file mode 100644 index 0000000..58825bc Binary files /dev/null and b/.gitbook/assets/image (159).png differ diff --git a/.gitbook/assets/image (16) (1).png b/.gitbook/assets/image (16) (1).png index 425f607..872c8db 100644 Binary files a/.gitbook/assets/image (16) (1).png and b/.gitbook/assets/image (16) (1).png differ diff --git a/.gitbook/assets/image (16).png b/.gitbook/assets/image (16).png index bde9fbe..3e6fe2c 100644 Binary files a/.gitbook/assets/image (16).png and b/.gitbook/assets/image (16).png differ diff --git a/.gitbook/assets/image (160).png b/.gitbook/assets/image (160).png new file mode 100644 index 0000000..0d1addf Binary files /dev/null and b/.gitbook/assets/image (160).png differ diff --git a/.gitbook/assets/image (161).png b/.gitbook/assets/image (161).png new file mode 100644 index 0000000..b8cc431 Binary files /dev/null and b/.gitbook/assets/image (161).png differ diff --git a/.gitbook/assets/image (162).png b/.gitbook/assets/image (162).png new file mode 100644 index 0000000..14c78bd Binary files /dev/null and b/.gitbook/assets/image (162).png differ diff --git a/.gitbook/assets/image (163).png b/.gitbook/assets/image (163).png new file mode 100644 index 0000000..ca7e7c2 Binary files /dev/null and b/.gitbook/assets/image (163).png differ diff --git a/.gitbook/assets/image (164).png b/.gitbook/assets/image (164).png new file mode 100644 index 0000000..9803d4b Binary files /dev/null and b/.gitbook/assets/image (164).png differ diff --git a/.gitbook/assets/image (165).png b/.gitbook/assets/image (165).png new file mode 100644 index 0000000..62af934 Binary files /dev/null and b/.gitbook/assets/image (165).png differ diff --git a/.gitbook/assets/image (166).png b/.gitbook/assets/image (166).png new file mode 100644 index 0000000..b597c19 Binary files /dev/null and b/.gitbook/assets/image (166).png differ diff --git a/.gitbook/assets/image (167).png b/.gitbook/assets/image (167).png new file mode 100644 index 0000000..3cf8333 Binary files /dev/null and b/.gitbook/assets/image (167).png differ diff --git a/.gitbook/assets/image (70) (1).png b/.gitbook/assets/image (168).png similarity index 100% rename from .gitbook/assets/image (70) (1).png rename to .gitbook/assets/image (168).png diff --git a/.gitbook/assets/image (169).png b/.gitbook/assets/image (169).png new file mode 100644 index 0000000..f066e0c Binary files /dev/null and b/.gitbook/assets/image (169).png differ diff --git a/.gitbook/assets/image (17) (1).png b/.gitbook/assets/image (17) (1).png index 1a0be3e..e61b990 100644 Binary files a/.gitbook/assets/image (17) (1).png and b/.gitbook/assets/image (17) (1).png differ diff --git a/.gitbook/assets/image (17).png b/.gitbook/assets/image (17).png index aabb145..2b4d387 100644 Binary files a/.gitbook/assets/image (17).png and b/.gitbook/assets/image (17).png differ diff --git a/.gitbook/assets/image (170).png b/.gitbook/assets/image (170).png new file mode 100644 index 0000000..3927591 Binary files /dev/null and b/.gitbook/assets/image (170).png differ diff --git a/.gitbook/assets/image (171).png b/.gitbook/assets/image (171).png new file mode 100644 index 0000000..3991cd4 Binary files /dev/null and b/.gitbook/assets/image (171).png differ diff --git a/.gitbook/assets/image (172).png b/.gitbook/assets/image (172).png new file mode 100644 index 0000000..203bf50 Binary files /dev/null and b/.gitbook/assets/image (172).png differ diff --git a/.gitbook/assets/image (173).png b/.gitbook/assets/image (173).png new file mode 100644 index 0000000..87dec64 Binary files /dev/null and b/.gitbook/assets/image (173).png differ diff --git a/.gitbook/assets/image (174).png b/.gitbook/assets/image (174).png new file mode 100644 index 0000000..89f60da Binary files /dev/null and b/.gitbook/assets/image (174).png differ diff --git a/.gitbook/assets/image (175).png b/.gitbook/assets/image (175).png new file mode 100644 index 0000000..035c95a Binary files /dev/null and b/.gitbook/assets/image (175).png differ diff --git a/.gitbook/assets/image (176).png b/.gitbook/assets/image (176).png new file mode 100644 index 0000000..6f62005 Binary files /dev/null and b/.gitbook/assets/image (176).png differ diff --git a/.gitbook/assets/image (177).png b/.gitbook/assets/image (177).png new file mode 100644 index 0000000..71d07d8 Binary files /dev/null and b/.gitbook/assets/image (177).png differ diff --git a/.gitbook/assets/image (178).png b/.gitbook/assets/image (178).png new file mode 100644 index 0000000..5f4070e Binary files /dev/null and b/.gitbook/assets/image (178).png differ diff --git a/.gitbook/assets/image (179).png b/.gitbook/assets/image (179).png new file mode 100644 index 0000000..1497608 Binary files /dev/null and b/.gitbook/assets/image (179).png differ diff --git a/.gitbook/assets/image (18) (1).png b/.gitbook/assets/image (18) (1).png index c20014e..05db960 100644 Binary files a/.gitbook/assets/image (18) (1).png and b/.gitbook/assets/image (18) (1).png differ diff --git a/.gitbook/assets/image (18).png b/.gitbook/assets/image (18).png index d0638ba..2d034d8 100644 Binary files a/.gitbook/assets/image (18).png and b/.gitbook/assets/image (18).png differ diff --git a/.gitbook/assets/image (180).png b/.gitbook/assets/image (180).png new file mode 100644 index 0000000..70f2742 Binary files /dev/null and b/.gitbook/assets/image (180).png differ diff --git a/.gitbook/assets/image (181).png b/.gitbook/assets/image (181).png new file mode 100644 index 0000000..650dc2d Binary files /dev/null and b/.gitbook/assets/image (181).png differ diff --git a/.gitbook/assets/image (182).png b/.gitbook/assets/image (182).png new file mode 100644 index 0000000..1da67db Binary files /dev/null and b/.gitbook/assets/image (182).png differ diff --git a/.gitbook/assets/image (183).png b/.gitbook/assets/image (183).png new file mode 100644 index 0000000..a45d948 Binary files /dev/null and b/.gitbook/assets/image (183).png differ diff --git a/.gitbook/assets/image (184).png b/.gitbook/assets/image (184).png new file mode 100644 index 0000000..f940fe3 Binary files /dev/null and b/.gitbook/assets/image (184).png differ diff --git a/.gitbook/assets/image (185).png b/.gitbook/assets/image (185).png new file mode 100644 index 0000000..9b9d1d1 Binary files /dev/null and b/.gitbook/assets/image (185).png differ diff --git a/.gitbook/assets/image (186).png b/.gitbook/assets/image (186).png new file mode 100644 index 0000000..38acef8 Binary files /dev/null and b/.gitbook/assets/image (186).png differ diff --git a/.gitbook/assets/image (187).png b/.gitbook/assets/image (187).png new file mode 100644 index 0000000..317e723 Binary files /dev/null and b/.gitbook/assets/image (187).png differ diff --git a/.gitbook/assets/image (188) (1).png b/.gitbook/assets/image (188) (1).png new file mode 100644 index 0000000..002ca5a Binary files /dev/null and b/.gitbook/assets/image (188) (1).png differ diff --git a/.gitbook/assets/image (188).png b/.gitbook/assets/image (188).png new file mode 100644 index 0000000..002ca5a Binary files /dev/null and b/.gitbook/assets/image (188).png differ diff --git a/.gitbook/assets/image (19) (1).png b/.gitbook/assets/image (19) (1).png deleted file mode 100644 index 9365f20..0000000 Binary files a/.gitbook/assets/image (19) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (19).png b/.gitbook/assets/image (19).png index 62a91a2..485d57b 100644 Binary files a/.gitbook/assets/image (19).png and b/.gitbook/assets/image (19).png differ diff --git a/.gitbook/assets/image (190).png b/.gitbook/assets/image (190).png new file mode 100644 index 0000000..039cf1a Binary files /dev/null and b/.gitbook/assets/image (190).png differ diff --git a/.gitbook/assets/image (191).png b/.gitbook/assets/image (191).png new file mode 100644 index 0000000..1596b74 Binary files /dev/null and b/.gitbook/assets/image (191).png differ diff --git a/.gitbook/assets/image (192).png b/.gitbook/assets/image (192).png new file mode 100644 index 0000000..608256c Binary files /dev/null and b/.gitbook/assets/image (192).png differ diff --git a/.gitbook/assets/image (193).png b/.gitbook/assets/image (193).png new file mode 100644 index 0000000..f0fc4e9 Binary files /dev/null and b/.gitbook/assets/image (193).png differ diff --git a/.gitbook/assets/image (194).png b/.gitbook/assets/image (194).png new file mode 100644 index 0000000..cfda4c3 Binary files /dev/null and b/.gitbook/assets/image (194).png differ diff --git a/.gitbook/assets/image (195).png b/.gitbook/assets/image (195).png new file mode 100644 index 0000000..ad5d4e5 Binary files /dev/null and b/.gitbook/assets/image (195).png differ diff --git a/.gitbook/assets/image (196).png b/.gitbook/assets/image (196).png new file mode 100644 index 0000000..34bd6e3 Binary files /dev/null and b/.gitbook/assets/image (196).png differ diff --git a/.gitbook/assets/image (197).png b/.gitbook/assets/image (197).png new file mode 100644 index 0000000..08c83c9 Binary files /dev/null and b/.gitbook/assets/image (197).png differ diff --git a/.gitbook/assets/image (198).png b/.gitbook/assets/image (198).png new file mode 100644 index 0000000..7ce4ea9 Binary files /dev/null and b/.gitbook/assets/image (198).png differ diff --git a/.gitbook/assets/image (199).png b/.gitbook/assets/image (199).png new file mode 100644 index 0000000..7a016e7 Binary files /dev/null and b/.gitbook/assets/image (199).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 0232e5b..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 0591cec..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 486c7bf..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 7ae3c98..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png deleted file mode 100644 index a240ab7..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1).png deleted file mode 100644 index b4c59b6..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1).png deleted file mode 100644 index 9fdd14b..0000000 Binary files a/.gitbook/assets/image (2) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (2) (1) (1).png b/.gitbook/assets/image (2) (1) (1).png index 05db960..02bd340 100644 Binary files a/.gitbook/assets/image (2) (1) (1).png and b/.gitbook/assets/image (2) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1).png b/.gitbook/assets/image (2) (1).png index 58e6366..d8d2030 100644 Binary files a/.gitbook/assets/image (2) (1).png and b/.gitbook/assets/image (2) (1).png differ diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png index a159aea..bdc5a41 100644 Binary files a/.gitbook/assets/image (2).png and b/.gitbook/assets/image (2).png differ diff --git a/.gitbook/assets/image (20).png b/.gitbook/assets/image (20).png index 5594cc9..34b8115 100644 Binary files a/.gitbook/assets/image (20).png and b/.gitbook/assets/image (20).png differ diff --git a/.gitbook/assets/image (200).png b/.gitbook/assets/image (200).png new file mode 100644 index 0000000..c9fd008 Binary files /dev/null and b/.gitbook/assets/image (200).png differ diff --git a/.gitbook/assets/image (201).png b/.gitbook/assets/image (201).png new file mode 100644 index 0000000..fc747af Binary files /dev/null and b/.gitbook/assets/image (201).png differ diff --git a/.gitbook/assets/image (202).png b/.gitbook/assets/image (202).png new file mode 100644 index 0000000..38aaeba Binary files /dev/null and b/.gitbook/assets/image (202).png differ diff --git a/.gitbook/assets/image (203).png b/.gitbook/assets/image (203).png new file mode 100644 index 0000000..354b3a3 Binary files /dev/null and b/.gitbook/assets/image (203).png differ diff --git a/.gitbook/assets/image (204).png b/.gitbook/assets/image (204).png new file mode 100644 index 0000000..b13ec67 Binary files /dev/null and b/.gitbook/assets/image (204).png differ diff --git a/.gitbook/assets/image (21).png b/.gitbook/assets/image (21).png index 887dde0..ca9674d 100644 Binary files a/.gitbook/assets/image (21).png and b/.gitbook/assets/image (21).png differ diff --git a/.gitbook/assets/image (22).png b/.gitbook/assets/image (22).png index 8df7768..57a8797 100644 Binary files a/.gitbook/assets/image (22).png and b/.gitbook/assets/image (22).png differ diff --git a/.gitbook/assets/image (23).png b/.gitbook/assets/image (23).png index 41c8cae..b21aaf0 100644 Binary files a/.gitbook/assets/image (23).png and b/.gitbook/assets/image (23).png differ diff --git a/.gitbook/assets/image (24).png b/.gitbook/assets/image (24).png index 41c8cae..e2193d4 100644 Binary files a/.gitbook/assets/image (24).png and b/.gitbook/assets/image (24).png differ diff --git a/.gitbook/assets/image (25).png b/.gitbook/assets/image (25).png index ff094f1..13ced10 100644 Binary files a/.gitbook/assets/image (25).png and b/.gitbook/assets/image (25).png differ diff --git a/.gitbook/assets/image (26).png b/.gitbook/assets/image (26).png index 5bd1afa..0a4a4af 100644 Binary files a/.gitbook/assets/image (26).png and b/.gitbook/assets/image (26).png differ diff --git a/.gitbook/assets/image (27).png b/.gitbook/assets/image (27).png index 87763ac..869d1d5 100644 Binary files a/.gitbook/assets/image (27).png and b/.gitbook/assets/image (27).png differ diff --git a/.gitbook/assets/image (28).png b/.gitbook/assets/image (28).png index 3f4dedc..7f3d6fc 100644 Binary files a/.gitbook/assets/image (28).png and b/.gitbook/assets/image (28).png differ diff --git a/.gitbook/assets/image (29).png b/.gitbook/assets/image (29).png index 82fac13..79c8fc1 100644 Binary files a/.gitbook/assets/image (29).png and b/.gitbook/assets/image (29).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png deleted file mode 100644 index 0232e5b..0000000 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png deleted file mode 100644 index 2ef0b30..0000000 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1).png deleted file mode 100644 index 1d25e0f..0000000 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (3) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1).png deleted file mode 100644 index df75d4d..0000000 Binary files a/.gitbook/assets/image (3) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (3) (1) (1).png b/.gitbook/assets/image (3) (1) (1).png index bcae4d5..2d29ff3 100644 Binary files a/.gitbook/assets/image (3) (1) (1).png and b/.gitbook/assets/image (3) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1).png b/.gitbook/assets/image (3) (1).png index 485d57b..faf29fa 100644 Binary files a/.gitbook/assets/image (3) (1).png and b/.gitbook/assets/image (3) (1).png differ diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png index 8ca2d66..b524788 100644 Binary files a/.gitbook/assets/image (3).png and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image (30).png b/.gitbook/assets/image (30).png index e275a69..b688551 100644 Binary files a/.gitbook/assets/image (30).png and b/.gitbook/assets/image (30).png differ diff --git a/.gitbook/assets/image (31).png b/.gitbook/assets/image (31).png index e275a69..bde9fbe 100644 Binary files a/.gitbook/assets/image (31).png and b/.gitbook/assets/image (31).png differ diff --git a/.gitbook/assets/image (32).png b/.gitbook/assets/image (32).png index f96a713..aabb145 100644 Binary files a/.gitbook/assets/image (32).png and b/.gitbook/assets/image (32).png differ diff --git a/.gitbook/assets/image (33).png b/.gitbook/assets/image (33).png index 399ac16..d0638ba 100644 Binary files a/.gitbook/assets/image (33).png and b/.gitbook/assets/image (33).png differ diff --git a/.gitbook/assets/image (34).png b/.gitbook/assets/image (34).png index 399ac16..62a91a2 100644 Binary files a/.gitbook/assets/image (34).png and b/.gitbook/assets/image (34).png differ diff --git a/.gitbook/assets/image (35).png b/.gitbook/assets/image (35).png index 6168c8b..f16f4c1 100644 Binary files a/.gitbook/assets/image (35).png and b/.gitbook/assets/image (35).png differ diff --git a/.gitbook/assets/image (36).png b/.gitbook/assets/image (36).png index 7c27940..9fdd14b 100644 Binary files a/.gitbook/assets/image (36).png and b/.gitbook/assets/image (36).png differ diff --git a/.gitbook/assets/image (37).png b/.gitbook/assets/image (37).png index 7c27940..bcae4d5 100644 Binary files a/.gitbook/assets/image (37).png and b/.gitbook/assets/image (37).png differ diff --git a/.gitbook/assets/image (38).png b/.gitbook/assets/image (38).png index 090f360..bb2e3ef 100644 Binary files a/.gitbook/assets/image (38).png and b/.gitbook/assets/image (38).png differ diff --git a/.gitbook/assets/image (39).png b/.gitbook/assets/image (39).png index c467b93..ae63f56 100644 Binary files a/.gitbook/assets/image (39).png and b/.gitbook/assets/image (39).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png deleted file mode 100644 index 5b06f11..0000000 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1).png deleted file mode 100644 index 7a40504..0000000 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (4) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1).png index 027a24b..cd8bf27 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1).png b/.gitbook/assets/image (4) (1) (1).png index dad40b6..cd8bf27 100644 Binary files a/.gitbook/assets/image (4) (1) (1).png and b/.gitbook/assets/image (4) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1).png b/.gitbook/assets/image (4) (1).png index bb2e3ef..dafc2e6 100644 Binary files a/.gitbook/assets/image (4) (1).png and b/.gitbook/assets/image (4) (1).png differ diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png index 34b8115..c083684 100644 Binary files a/.gitbook/assets/image (4).png and b/.gitbook/assets/image (4).png differ diff --git a/.gitbook/assets/image (40).png b/.gitbook/assets/image (40).png index c467b93..4c9dd0a 100644 Binary files a/.gitbook/assets/image (40).png and b/.gitbook/assets/image (40).png differ diff --git a/.gitbook/assets/image (41).png b/.gitbook/assets/image (41).png index 97e8513..bfbbe71 100644 Binary files a/.gitbook/assets/image (41).png and b/.gitbook/assets/image (41).png differ diff --git a/.gitbook/assets/image (42).png b/.gitbook/assets/image (42).png index 97e8513..c0288ec 100644 Binary files a/.gitbook/assets/image (42).png and b/.gitbook/assets/image (42).png differ diff --git a/.gitbook/assets/image (43).png b/.gitbook/assets/image (43).png index 5b492f5..bfbbe71 100644 Binary files a/.gitbook/assets/image (43).png and b/.gitbook/assets/image (43).png differ diff --git a/.gitbook/assets/image (44).png b/.gitbook/assets/image (44).png index 5b492f5..f54c60c 100644 Binary files a/.gitbook/assets/image (44).png and b/.gitbook/assets/image (44).png differ diff --git a/.gitbook/assets/image (45).png b/.gitbook/assets/image (45).png index 5b492f5..d8ceeb2 100644 Binary files a/.gitbook/assets/image (45).png and b/.gitbook/assets/image (45).png differ diff --git a/.gitbook/assets/image (46).png b/.gitbook/assets/image (46).png index 3b8dcbf..b4c59b6 100644 Binary files a/.gitbook/assets/image (46).png and b/.gitbook/assets/image (46).png differ diff --git a/.gitbook/assets/image (47).png b/.gitbook/assets/image (47).png index 3b8dcbf..3b8701b 100644 Binary files a/.gitbook/assets/image (47).png and b/.gitbook/assets/image (47).png differ diff --git a/.gitbook/assets/image (48).png b/.gitbook/assets/image (48).png index 1fb4197..a240ab7 100644 Binary files a/.gitbook/assets/image (48).png and b/.gitbook/assets/image (48).png differ diff --git a/.gitbook/assets/image (49).png b/.gitbook/assets/image (49).png index 66a70a9..d535a09 100644 Binary files a/.gitbook/assets/image (49).png and b/.gitbook/assets/image (49).png differ diff --git a/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png deleted file mode 100644 index 8df8915..0000000 Binary files a/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (5) (1) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1) (1).png deleted file mode 100644 index 615f80f..0000000 Binary files a/.gitbook/assets/image (5) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (5) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1).png deleted file mode 100644 index 291e00c..0000000 Binary files a/.gitbook/assets/image (5) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (5) (1) (1).png b/.gitbook/assets/image (5) (1) (1).png deleted file mode 100644 index 2da65ed..0000000 Binary files a/.gitbook/assets/image (5) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (5) (1).png b/.gitbook/assets/image (5) (1).png deleted file mode 100644 index bb2e3ef..0000000 Binary files a/.gitbook/assets/image (5) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png index eefc69c..b00ba95 100644 Binary files a/.gitbook/assets/image (5).png and b/.gitbook/assets/image (5).png differ diff --git a/.gitbook/assets/image (50).png b/.gitbook/assets/image (50).png index 66a70a9..7ae3c98 100644 Binary files a/.gitbook/assets/image (50).png and b/.gitbook/assets/image (50).png differ diff --git a/.gitbook/assets/image (51).png b/.gitbook/assets/image (51).png index b4babab..df75d4d 100644 Binary files a/.gitbook/assets/image (51).png and b/.gitbook/assets/image (51).png differ diff --git a/.gitbook/assets/image (52).png b/.gitbook/assets/image (52).png index d81f763..dad40b6 100644 Binary files a/.gitbook/assets/image (52).png and b/.gitbook/assets/image (52).png differ diff --git a/.gitbook/assets/image (53).png b/.gitbook/assets/image (53).png index e84fd0d..2da65ed 100644 Binary files a/.gitbook/assets/image (53).png and b/.gitbook/assets/image (53).png differ diff --git a/.gitbook/assets/image (54).png b/.gitbook/assets/image (54).png index ab0cd35..ed9aefd 100644 Binary files a/.gitbook/assets/image (54).png and b/.gitbook/assets/image (54).png differ diff --git a/.gitbook/assets/image (55).png b/.gitbook/assets/image (55).png index 99efc78..17210e9 100644 Binary files a/.gitbook/assets/image (55).png and b/.gitbook/assets/image (55).png differ diff --git a/.gitbook/assets/image (56).png b/.gitbook/assets/image (56).png index 6e7e113..66fcb0d 100644 Binary files a/.gitbook/assets/image (56).png and b/.gitbook/assets/image (56).png differ diff --git a/.gitbook/assets/image (57).png b/.gitbook/assets/image (57).png index faec42b..538de99 100644 Binary files a/.gitbook/assets/image (57).png and b/.gitbook/assets/image (57).png differ diff --git a/.gitbook/assets/image (58).png b/.gitbook/assets/image (58).png index a6eacf8..3177367 100644 Binary files a/.gitbook/assets/image (58).png and b/.gitbook/assets/image (58).png differ diff --git a/.gitbook/assets/image (59).png b/.gitbook/assets/image (59).png index 28927b9..554f85c 100644 Binary files a/.gitbook/assets/image (59).png and b/.gitbook/assets/image (59).png differ diff --git a/.gitbook/assets/image (6) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (6) (1) (1) (1) (1) (1).png deleted file mode 100644 index 03b1841..0000000 Binary files a/.gitbook/assets/image (6) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (6) (1) (1) (1) (1).png b/.gitbook/assets/image (6) (1) (1) (1) (1).png deleted file mode 100644 index 119ce53..0000000 Binary files a/.gitbook/assets/image (6) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (6) (1) (1) (1).png b/.gitbook/assets/image (6) (1) (1) (1).png deleted file mode 100644 index 35e92a8..0000000 Binary files a/.gitbook/assets/image (6) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (6) (1) (1).png b/.gitbook/assets/image (6) (1) (1).png deleted file mode 100644 index ed9aefd..0000000 Binary files a/.gitbook/assets/image (6) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (6) (1).png b/.gitbook/assets/image (6) (1).png index 4c9dd0a..f9141d5 100644 Binary files a/.gitbook/assets/image (6) (1).png and b/.gitbook/assets/image (6) (1).png differ diff --git a/.gitbook/assets/image (6).png b/.gitbook/assets/image (6).png index ca9674d..a6c695b 100644 Binary files a/.gitbook/assets/image (6).png and b/.gitbook/assets/image (6).png differ diff --git a/.gitbook/assets/image (60).png b/.gitbook/assets/image (60).png index 3f2ebef..486c7bf 100644 Binary files a/.gitbook/assets/image (60).png and b/.gitbook/assets/image (60).png differ diff --git a/.gitbook/assets/image (61).png b/.gitbook/assets/image (61).png index 47cbfc9..1d25e0f 100644 Binary files a/.gitbook/assets/image (61).png and b/.gitbook/assets/image (61).png differ diff --git a/.gitbook/assets/image (62).png b/.gitbook/assets/image (62).png index 58825bc..027a24b 100644 Binary files a/.gitbook/assets/image (62).png and b/.gitbook/assets/image (62).png differ diff --git a/.gitbook/assets/image (63).png b/.gitbook/assets/image (63).png index 0d1addf..291e00c 100644 Binary files a/.gitbook/assets/image (63).png and b/.gitbook/assets/image (63).png differ diff --git a/.gitbook/assets/image (64).png b/.gitbook/assets/image (64).png index b8cc431..35e92a8 100644 Binary files a/.gitbook/assets/image (64).png and b/.gitbook/assets/image (64).png differ diff --git a/.gitbook/assets/image (65).png b/.gitbook/assets/image (65).png index 14c78bd..adc8355 100644 Binary files a/.gitbook/assets/image (65).png and b/.gitbook/assets/image (65).png differ diff --git a/.gitbook/assets/image (66).png b/.gitbook/assets/image (66).png index ca7e7c2..f81b5bb 100644 Binary files a/.gitbook/assets/image (66).png and b/.gitbook/assets/image (66).png differ diff --git a/.gitbook/assets/image (67).png b/.gitbook/assets/image (67).png index 9803d4b..2875bc4 100644 Binary files a/.gitbook/assets/image (67).png and b/.gitbook/assets/image (67).png differ diff --git a/.gitbook/assets/image (68).png b/.gitbook/assets/image (68).png index 62af934..f0d6785 100644 Binary files a/.gitbook/assets/image (68).png and b/.gitbook/assets/image (68).png differ diff --git a/.gitbook/assets/image (69).png b/.gitbook/assets/image (69).png index b597c19..c4eead5 100644 Binary files a/.gitbook/assets/image (69).png and b/.gitbook/assets/image (69).png differ diff --git a/.gitbook/assets/image (7) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (7) (1) (1) (1) (1) (1).png deleted file mode 100644 index 2b98923..0000000 Binary files a/.gitbook/assets/image (7) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (7) (1) (1) (1) (1).png b/.gitbook/assets/image (7) (1) (1) (1) (1).png deleted file mode 100644 index 0d25390..0000000 Binary files a/.gitbook/assets/image (7) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (7) (1) (1) (1).png b/.gitbook/assets/image (7) (1) (1) (1).png deleted file mode 100644 index adc8355..0000000 Binary files a/.gitbook/assets/image (7) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (7) (1) (1).png b/.gitbook/assets/image (7) (1) (1).png deleted file mode 100644 index 17210e9..0000000 Binary files a/.gitbook/assets/image (7) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (7) (1).png b/.gitbook/assets/image (7) (1).png index 4c9dd0a..16f6463 100644 Binary files a/.gitbook/assets/image (7) (1).png and b/.gitbook/assets/image (7) (1).png differ diff --git a/.gitbook/assets/image (7).png b/.gitbook/assets/image (7).png index 57a8797..cf2fb76 100644 Binary files a/.gitbook/assets/image (7).png and b/.gitbook/assets/image (7).png differ diff --git a/.gitbook/assets/image (70).png b/.gitbook/assets/image (70).png index 3cf8333..bbbb4a6 100644 Binary files a/.gitbook/assets/image (70).png and b/.gitbook/assets/image (70).png differ diff --git a/.gitbook/assets/image (71).png b/.gitbook/assets/image (71).png index f066e0c..0d50734 100644 Binary files a/.gitbook/assets/image (71).png and b/.gitbook/assets/image (71).png differ diff --git a/.gitbook/assets/image (72).png b/.gitbook/assets/image (72).png index 3ec0417..d7a0144 100644 Binary files a/.gitbook/assets/image (72).png and b/.gitbook/assets/image (72).png differ diff --git a/.gitbook/assets/image (73).png b/.gitbook/assets/image (73).png index 3927591..0591cec 100644 Binary files a/.gitbook/assets/image (73).png and b/.gitbook/assets/image (73).png differ diff --git a/.gitbook/assets/image (74).png b/.gitbook/assets/image (74).png index 12f0e5f..2ef0b30 100644 Binary files a/.gitbook/assets/image (74).png and b/.gitbook/assets/image (74).png differ diff --git a/.gitbook/assets/image (75).png b/.gitbook/assets/image (75).png index 3991cd4..7a40504 100644 Binary files a/.gitbook/assets/image (75).png and b/.gitbook/assets/image (75).png differ diff --git a/.gitbook/assets/image (76).png b/.gitbook/assets/image (76).png index 203bf50..615f80f 100644 Binary files a/.gitbook/assets/image (76).png and b/.gitbook/assets/image (76).png differ diff --git a/.gitbook/assets/image (77).png b/.gitbook/assets/image (77).png index 87dec64..119ce53 100644 Binary files a/.gitbook/assets/image (77).png and b/.gitbook/assets/image (77).png differ diff --git a/.gitbook/assets/image (78).png b/.gitbook/assets/image (78).png index 89f60da..0d25390 100644 Binary files a/.gitbook/assets/image (78).png and b/.gitbook/assets/image (78).png differ diff --git a/.gitbook/assets/image (79).png b/.gitbook/assets/image (79).png index 035c95a..8364770 100644 Binary files a/.gitbook/assets/image (79).png and b/.gitbook/assets/image (79).png differ diff --git a/.gitbook/assets/image (8) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (8) (1) (1) (1) (1) (1).png deleted file mode 100644 index 290d157..0000000 Binary files a/.gitbook/assets/image (8) (1) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (8) (1) (1) (1) (1).png b/.gitbook/assets/image (8) (1) (1) (1) (1).png deleted file mode 100644 index 8364770..0000000 Binary files a/.gitbook/assets/image (8) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (8) (1) (1) (1).png b/.gitbook/assets/image (8) (1) (1) (1).png deleted file mode 100644 index f81b5bb..0000000 Binary files a/.gitbook/assets/image (8) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (8) (1) (1).png b/.gitbook/assets/image (8) (1) (1).png deleted file mode 100644 index 66fcb0d..0000000 Binary files a/.gitbook/assets/image (8) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (8) (1).png b/.gitbook/assets/image (8) (1).png index c0288ec..45de2cb 100644 Binary files a/.gitbook/assets/image (8) (1).png and b/.gitbook/assets/image (8) (1).png differ diff --git a/.gitbook/assets/image (8).png b/.gitbook/assets/image (8).png index b21aaf0..f0f8163 100644 Binary files a/.gitbook/assets/image (8).png and b/.gitbook/assets/image (8).png differ diff --git a/.gitbook/assets/image (80).png b/.gitbook/assets/image (80).png index 6f62005..0232e5b 100644 Binary files a/.gitbook/assets/image (80).png and b/.gitbook/assets/image (80).png differ diff --git a/.gitbook/assets/image (81).png b/.gitbook/assets/image (81).png index 71d07d8..4c3709e 100644 Binary files a/.gitbook/assets/image (81).png and b/.gitbook/assets/image (81).png differ diff --git a/.gitbook/assets/image (82).png b/.gitbook/assets/image (82).png index 5f4070e..88c1b81 100644 Binary files a/.gitbook/assets/image (82).png and b/.gitbook/assets/image (82).png differ diff --git a/.gitbook/assets/image (83).png b/.gitbook/assets/image (83).png index 1497608..1311e08 100644 Binary files a/.gitbook/assets/image (83).png and b/.gitbook/assets/image (83).png differ diff --git a/.gitbook/assets/image (84).png b/.gitbook/assets/image (84).png index 70f2742..b187ad8 100644 Binary files a/.gitbook/assets/image (84).png and b/.gitbook/assets/image (84).png differ diff --git a/.gitbook/assets/image (85).png b/.gitbook/assets/image (85).png index 650dc2d..a159aea 100644 Binary files a/.gitbook/assets/image (85).png and b/.gitbook/assets/image (85).png differ diff --git a/.gitbook/assets/image (86).png b/.gitbook/assets/image (86).png index 1da67db..eefc69c 100644 Binary files a/.gitbook/assets/image (86).png and b/.gitbook/assets/image (86).png differ diff --git a/.gitbook/assets/image (87).png b/.gitbook/assets/image (87).png index a45d948..3ec0417 100644 Binary files a/.gitbook/assets/image (87).png and b/.gitbook/assets/image (87).png differ diff --git a/.gitbook/assets/image (88).png b/.gitbook/assets/image (88).png index f940fe3..12f0e5f 100644 Binary files a/.gitbook/assets/image (88).png and b/.gitbook/assets/image (88).png differ diff --git a/.gitbook/assets/image (89).png b/.gitbook/assets/image (89).png index 9b9d1d1..16fd48f 100644 Binary files a/.gitbook/assets/image (89).png and b/.gitbook/assets/image (89).png differ diff --git a/.gitbook/assets/image (9) (1) (1) (1) (1).png b/.gitbook/assets/image (9) (1) (1) (1) (1).png deleted file mode 100644 index 25074a2..0000000 Binary files a/.gitbook/assets/image (9) (1) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (9) (1) (1) (1).png b/.gitbook/assets/image (9) (1) (1) (1).png deleted file mode 100644 index f81b5bb..0000000 Binary files a/.gitbook/assets/image (9) (1) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (9) (1) (1).png b/.gitbook/assets/image (9) (1) (1).png deleted file mode 100644 index 538de99..0000000 Binary files a/.gitbook/assets/image (9) (1) (1).png and /dev/null differ diff --git a/.gitbook/assets/image (9) (1).png b/.gitbook/assets/image (9) (1).png index c0288ec..8166234 100644 Binary files a/.gitbook/assets/image (9) (1).png and b/.gitbook/assets/image (9) (1).png differ diff --git a/.gitbook/assets/image (9).png b/.gitbook/assets/image (9).png index e2193d4..7f4e6c9 100644 Binary files a/.gitbook/assets/image (9).png and b/.gitbook/assets/image (9).png differ diff --git a/.gitbook/assets/image (90).png b/.gitbook/assets/image (90).png index 38acef8..009463b 100644 Binary files a/.gitbook/assets/image (90).png and b/.gitbook/assets/image (90).png differ diff --git a/.gitbook/assets/image (91).png b/.gitbook/assets/image (91).png index 317e723..4f16049 100644 Binary files a/.gitbook/assets/image (91).png and b/.gitbook/assets/image (91).png differ diff --git a/.gitbook/assets/image (92).png b/.gitbook/assets/image (92).png index 002ca5a..fe6ae12 100644 Binary files a/.gitbook/assets/image (92).png and b/.gitbook/assets/image (92).png differ diff --git a/.gitbook/assets/image (93).png b/.gitbook/assets/image (93).png index 002ca5a..8ab0817 100644 Binary files a/.gitbook/assets/image (93).png and b/.gitbook/assets/image (93).png differ diff --git a/.gitbook/assets/image (94).png b/.gitbook/assets/image (94).png index 039cf1a..d2d027e 100644 Binary files a/.gitbook/assets/image (94).png and b/.gitbook/assets/image (94).png differ diff --git a/.gitbook/assets/image (95).png b/.gitbook/assets/image (95).png index 1596b74..56b6ef6 100644 Binary files a/.gitbook/assets/image (95).png and b/.gitbook/assets/image (95).png differ diff --git a/.gitbook/assets/image (96).png b/.gitbook/assets/image (96).png index 608256c..710be56 100644 Binary files a/.gitbook/assets/image (96).png and b/.gitbook/assets/image (96).png differ diff --git a/.gitbook/assets/image (97).png b/.gitbook/assets/image (97).png index f0fc4e9..ff1862a 100644 Binary files a/.gitbook/assets/image (97).png and b/.gitbook/assets/image (97).png differ diff --git a/.gitbook/assets/image (98).png b/.gitbook/assets/image (98).png index cfda4c3..5fcf370 100644 Binary files a/.gitbook/assets/image (98).png and b/.gitbook/assets/image (98).png differ diff --git a/.gitbook/assets/image (99).png b/.gitbook/assets/image (99).png index ad5d4e5..13284e7 100644 Binary files a/.gitbook/assets/image (99).png and b/.gitbook/assets/image (99).png differ diff --git a/.gitbook/assets/image-3.png b/.gitbook/assets/image-3.png deleted file mode 100644 index fbf7671..0000000 Binary files a/.gitbook/assets/image-3.png and /dev/null differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png index 1311e08..0537587 100644 Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ diff --git a/.gitbook/assets/image3333.png b/.gitbook/assets/image3333.png new file mode 100644 index 0000000..63384df Binary files /dev/null and b/.gitbook/assets/image3333.png differ diff --git a/.gitbook/assets/instance-grid-view-tutorial.png b/.gitbook/assets/instance-grid-view-tutorial.png new file mode 100644 index 0000000..a1e4137 Binary files /dev/null and b/.gitbook/assets/instance-grid-view-tutorial.png differ diff --git a/.gitbook/assets/internal-mfa-option.png b/.gitbook/assets/internal-mfa-option.png new file mode 100644 index 0000000..2691ee7 Binary files /dev/null and b/.gitbook/assets/internal-mfa-option.png differ diff --git a/.gitbook/assets/keepalive-interval.png b/.gitbook/assets/keepalive-interval.png new file mode 100644 index 0000000..392cb6f Binary files /dev/null and b/.gitbook/assets/keepalive-interval.png differ diff --git a/.gitbook/assets/location-overview-detailed-tutorial.png b/.gitbook/assets/location-overview-detailed-tutorial.png new file mode 100644 index 0000000..8c12efd Binary files /dev/null and b/.gitbook/assets/location-overview-detailed-tutorial.png differ diff --git a/.gitbook/assets/mfa-modal.png b/.gitbook/assets/mfa-modal.png new file mode 100644 index 0000000..08e3b61 Binary files /dev/null and b/.gitbook/assets/mfa-modal.png differ diff --git a/.gitbook/assets/mobile-client-desktop-modal (1).png b/.gitbook/assets/mobile-client-desktop-modal (1).png new file mode 100644 index 0000000..5924e08 Binary files /dev/null and b/.gitbook/assets/mobile-client-desktop-modal (1).png differ diff --git a/.gitbook/assets/mobile-client-desktop-modal.png b/.gitbook/assets/mobile-client-desktop-modal.png new file mode 100644 index 0000000..5924e08 Binary files /dev/null and b/.gitbook/assets/mobile-client-desktop-modal.png differ diff --git a/.gitbook/assets/new-mfa-method-mobile.png b/.gitbook/assets/new-mfa-method-mobile.png new file mode 100644 index 0000000..27f4f5a Binary files /dev/null and b/.gitbook/assets/new-mfa-method-mobile.png differ diff --git a/.gitbook/assets/obraz (1) (1).png b/.gitbook/assets/obraz (1) (1).png index c1c7aab..3ef48c4 100644 Binary files a/.gitbook/assets/obraz (1) (1).png and b/.gitbook/assets/obraz (1) (1).png differ diff --git a/.gitbook/assets/obraz (1).png b/.gitbook/assets/obraz (1).png index 3ef48c4..e430233 100644 Binary files a/.gitbook/assets/obraz (1).png and b/.gitbook/assets/obraz (1).png differ diff --git a/.gitbook/assets/obraz (10).png b/.gitbook/assets/obraz (10).png index 07a0db2..3587d3a 100644 Binary files a/.gitbook/assets/obraz (10).png and b/.gitbook/assets/obraz (10).png differ diff --git a/.gitbook/assets/obraz (11).png b/.gitbook/assets/obraz (11).png index 8a2a114..5cc3571 100644 Binary files a/.gitbook/assets/obraz (11).png and b/.gitbook/assets/obraz (11).png differ diff --git a/.gitbook/assets/obraz (12).png b/.gitbook/assets/obraz (12).png index a736da3..07a0db2 100644 Binary files a/.gitbook/assets/obraz (12).png and b/.gitbook/assets/obraz (12).png differ diff --git a/.gitbook/assets/obraz (13).png b/.gitbook/assets/obraz (13).png index 507ffc8..8a2a114 100644 Binary files a/.gitbook/assets/obraz (13).png and b/.gitbook/assets/obraz (13).png differ diff --git a/.gitbook/assets/obraz (14).png b/.gitbook/assets/obraz (14).png new file mode 100644 index 0000000..a736da3 Binary files /dev/null and b/.gitbook/assets/obraz (14).png differ diff --git a/.gitbook/assets/obraz (15).png b/.gitbook/assets/obraz (15).png new file mode 100644 index 0000000..507ffc8 Binary files /dev/null and b/.gitbook/assets/obraz (15).png differ diff --git a/.gitbook/assets/obraz (16).png b/.gitbook/assets/obraz (16).png new file mode 100644 index 0000000..8c5653d Binary files /dev/null and b/.gitbook/assets/obraz (16).png differ diff --git a/.gitbook/assets/obraz (17).png b/.gitbook/assets/obraz (17).png new file mode 100644 index 0000000..590163d Binary files /dev/null and b/.gitbook/assets/obraz (17).png differ diff --git a/.gitbook/assets/obraz (18).png b/.gitbook/assets/obraz (18).png new file mode 100644 index 0000000..6213653 Binary files /dev/null and b/.gitbook/assets/obraz (18).png differ diff --git a/.gitbook/assets/obraz (19).png b/.gitbook/assets/obraz (19).png new file mode 100644 index 0000000..011ec06 Binary files /dev/null and b/.gitbook/assets/obraz (19).png differ diff --git a/.gitbook/assets/obraz (20).png b/.gitbook/assets/obraz (20).png new file mode 100644 index 0000000..0fe74e2 Binary files /dev/null and b/.gitbook/assets/obraz (20).png differ diff --git a/.gitbook/assets/obraz (21).png b/.gitbook/assets/obraz (21).png new file mode 100644 index 0000000..87bd13b Binary files /dev/null and b/.gitbook/assets/obraz (21).png differ diff --git a/.gitbook/assets/obraz (22).png b/.gitbook/assets/obraz (22).png new file mode 100644 index 0000000..51c3bb7 Binary files /dev/null and b/.gitbook/assets/obraz (22).png differ diff --git a/.gitbook/assets/obraz (2) (1).png b/.gitbook/assets/obraz (3) (1).png similarity index 100% rename from .gitbook/assets/obraz (2) (1).png rename to .gitbook/assets/obraz (3) (1).png diff --git a/.gitbook/assets/obraz (4).png b/.gitbook/assets/obraz (4).png deleted file mode 100644 index fc325c7..0000000 Binary files a/.gitbook/assets/obraz (4).png and /dev/null differ diff --git a/.gitbook/assets/obraz (5).png b/.gitbook/assets/obraz (5).png deleted file mode 100644 index 104e1a5..0000000 Binary files a/.gitbook/assets/obraz (5).png and /dev/null differ diff --git a/.gitbook/assets/obraz (6).png b/.gitbook/assets/obraz (6).png index 5a56d90..fc325c7 100644 Binary files a/.gitbook/assets/obraz (6).png and b/.gitbook/assets/obraz (6).png differ diff --git a/.gitbook/assets/obraz (7).png b/.gitbook/assets/obraz (7).png index bac0da8..104e1a5 100644 Binary files a/.gitbook/assets/obraz (7).png and b/.gitbook/assets/obraz (7).png differ diff --git a/.gitbook/assets/obraz (8).png b/.gitbook/assets/obraz (8).png index 3587d3a..5a56d90 100644 Binary files a/.gitbook/assets/obraz (8).png and b/.gitbook/assets/obraz (8).png differ diff --git a/.gitbook/assets/obraz (9).png b/.gitbook/assets/obraz (9).png index 5cc3571..bac0da8 100644 Binary files a/.gitbook/assets/obraz (9).png and b/.gitbook/assets/obraz (9).png differ diff --git a/.gitbook/assets/obraz.png b/.gitbook/assets/obraz.png index e430233..92b82f7 100644 Binary files a/.gitbook/assets/obraz.png and b/.gitbook/assets/obraz.png differ diff --git a/in-depth/puml/openid-flow.svg b/.gitbook/assets/openid-flow.svg similarity index 100% rename from in-depth/puml/openid-flow.svg rename to .gitbook/assets/openid-flow.svg diff --git a/.gitbook/assets/remote-desktop-enrollment (1).png b/.gitbook/assets/remote-desktop-enrollment (1).png new file mode 100644 index 0000000..4815f71 Binary files /dev/null and b/.gitbook/assets/remote-desktop-enrollment (1).png differ diff --git a/.gitbook/assets/remote-desktop-enrollment.png b/.gitbook/assets/remote-desktop-enrollment.png new file mode 100644 index 0000000..4815f71 Binary files /dev/null and b/.gitbook/assets/remote-desktop-enrollment.png differ diff --git a/.gitbook/assets/single-firewall.png b/.gitbook/assets/single-firewall.png new file mode 100644 index 0000000..fab4a6d Binary files /dev/null and b/.gitbook/assets/single-firewall.png differ diff --git a/.gitbook/assets/user-device-list-tutorial.png b/.gitbook/assets/user-device-list-tutorial.png new file mode 100644 index 0000000..475c55c Binary files /dev/null and b/.gitbook/assets/user-device-list-tutorial.png differ diff --git a/.github/workflows/puml.yaml b/.github/workflows/puml.yaml deleted file mode 100644 index 4be49ec..0000000 --- a/.github/workflows/puml.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: generate plantuml files -on: - push: - branches: - - docs -jobs: - generate_plantuml: - runs-on: ubuntu-latest - name: plantuml - steps: - - name: checkout - uses: actions/checkout@v1 - with: - fetch-depth: 1 - - name: plantuml - id: plantuml - uses: grassedge/generate-plantuml-action@v1.5 - with: - message: "Render PlantUML files" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e43b0f9..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.DS_Store diff --git a/README.md b/README.md index e529bae..857510c 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,19 @@ Welcome to the Defguard documentation. Here, you'll learn how to explore the ful Briefly describes Defguard and its features. * [Getting started](getting-started/one-line-install.md)\ Lets you quickly set up your own Defguard instance to explore its features an user interface. -* [Features and configuration](admin-and-features/overview.md)\ +* [Features and configuration](features/overview.md)\ Helps you, as a future Defguard administrator, get familiar with all of defguard's features and how to configure them to suit your needs. * [Deployment strategies](deployment-strategies/setting-up-your-instance.md)\ Walks you through the most common deployment strategies to help you set up your Defguard instance as a production-grade solution. -* [Enterprise](enterprise/enterprise-features.md)\ - Outlines the benefits, terms, and purchasing process for the Defguard Enterprise license. -* [Using Defguard (for end users)](help/overwiew.md)\ +* [License](/broken/pages/vEBaL5Pdry1nZO8V50bh)\ + Outlines the scope, limits, and purchasing process for the Defguard Enterprise license. +* [Using Defguard (for end users)](using-defguard-for-end-users/overwiew.md)\ Helps you, as a Defguard end user, get familiar with the client applications and their features so you can quickly connect to your Defguard instance. * [Tutorials](tutorials/step-by-step-setting-up-a-vpn-server/)\ A collection of step-by-step guides with clear examples and helpful screenshots to make the setup process smooth and enjoyable. -* [In depth](in-depth/architecture-decision-records/README.md)\ +* [In depth](in-depth/architecture-decision-records/)\ In-depth information about the platform and its development, reflecting our commitment to transparency. * [For developers](for-developers/contributing.md)\ All the information you need to become a Defguard contributor — join us in building a better solution. -* [Resources](resources/troubleshooting/README.md)\ +* [Resources](support-1/troubleshooting/)\ A collection of essential resources, including troubleshooting guides, API documentation, and more. diff --git a/SUMMARY.md b/SUMMARY.md index 93076b4..36629f3 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -12,109 +12,136 @@ * [One-line install script](getting-started/one-line-install.md) -## Features - -* [Overview](admin-and-features/overview.md) -* [Zero-Trust VPN with 2FA/MFA](admin-and-features/wireguard/README.md) - * [Create/Manage VPN Location](admin-and-features/wireguard/create-your-vpn-network.md) - * [Network overview](admin-and-features/wireguard/network-overview.md) - * [Executing custom gateway commands](admin-and-features/wireguard/executing-custom-gateway-commands.md) - * [Multi-Factor Authentication (MFA/2FA)](admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/README.md) - * [MFA Architecture](admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/architecture.md) - * [Remote desktop client configuration](admin-and-features/wireguard/remote-desktop-activation.md) - * [DNS and domains](admin-and-features/wireguard/dns-and-domains.md) - * [VPN & Client behaviour customization](admin-and-features/wireguard/behavior-customization.md) -* [Remote user enrollment](admin-and-features/remote-user-enrollment/README.md) - * [User onboarding after enrollment](admin-and-features/remote-user-enrollment/user-onboarding-after-enrollment.md) - * [Automatic (real time) desktop client configuration & sync](admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md) -* [Internal SSO (OpenID Connect Provider)](admin-and-features/openid-connect/README.md) - * [Portainer](admin-and-features/openid-connect/portainer.md) - * [Grafana setup](admin-and-features/openid-connect/grafana-setup.md) - * [Proxmox](admin-and-features/openid-connect/proxmox.md) - * [Matrix / Synapse](admin-and-features/openid-connect/proxmox-1.md) - * [Django](admin-and-features/openid-connect/django.md) - * [MinIO](admin-and-features/openid-connect/minio.md) - * [Vault](admin-and-features/openid-connect/vault.md) -* [External SSO/OpenID providers](admin-and-features/external-openid-providers/README.md) - * [Google](admin-and-features/external-openid-providers/google.md) - * [Microsoft](admin-and-features/external-openid-providers/microsoft.md) - * [Okta](admin-and-features/external-openid-providers/okta.md) - * [JumpCloud](admin-and-features/external-openid-providers/jumpcloud.md) - * [Keycloak](admin-and-features/external-openid-providers/keycloak.md) - * [Zitadel](admin-and-features/external-openid-providers/zitadel.md) - * [Custom](admin-and-features/external-openid-providers/custom.md) - * [External OIDC secure enrollment](admin-and-features/external-openid-providers/external-oidc-secure-enrollment.md) -* [LDAP and Active Directory integration](admin-and-features/ldap-and-active-directory-integration/README.md) - * [Configuration](admin-and-features/ldap-and-active-directory-integration/configuration.md) - * [Settings table](admin-and-features/ldap-and-active-directory-integration/settings-table.md) - * [Two-way LDAP and Active Directory synchronization](admin-and-features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md) -* [Access Control List](admin-and-features/access-control-list/README.md) - * [ACL Aliases](admin-and-features/access-control-list/acl-aliases.md) - * [Implementation Details](admin-and-features/access-control-list/firewall-internals.md) -* [Network devices](admin-and-features/network-devices.md) -* [Activity & Audit logs](activity-log/README.md) - * [Audit Log Streaming to SIEM systems](activity-log/activity-log-streaming/README.md) - * [Supported SIEM systems integrations](activity-log/activity-log-streaming/activity-log-integrations/README.md) - * [Vector integration guide](activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md) - * [Logstash integration guide](activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md) -* [Notifications](notifications/README.md) - * [Email notifications](notifications/setting-up-smtp-for-email-notifications.md) - * [Gateway notifications](notifications/gateway-notifications.md) - * [New version notifications](notifications/new-version-notifications.md) -* [Integrations](integrations/README.md) - * [Webhooks](integrations/webhooks.md) - * [REST API](integrations/api-tokens.md) -* [OPSense Configuartion](admin-and-features/setting-up-your-instance/gateway/README.md) -* [SSH Authentication](admin-and-features/ssh-authentication.md) -* [Forward auth](admin-and-features/forward-auth.md) -* [YubiKey Provisioning](admin-and-features/yubikey-provisioning.md) -* [User SNAT bindings](user-snat-bindings.md) +## Features + +* [Overview](features/overview.md) +* [Zero-Trust VPN with 2FA/MFA](features/wireguard/README.md) + * [Create/Manage VPN Location](features/wireguard/create-your-vpn-network.md) + * [Network overview](features/wireguard/network-overview.md) + * [Multi-Factor Authentication (MFA/2FA)](features/wireguard/multi-factor-authentication-mfa-2fa/README.md) + * [Internal SSO based MFA](features/wireguard/multi-factor-authentication-mfa-2fa/internal-sso-based-mfa.md) + * [External SSO based MFA](features/wireguard/multi-factor-authentication-mfa-2fa/external-sso-based-mfa.md) + * [Remote desktop client configuration](features/wireguard/remote-desktop-activation.md) + * [VPN & Client behaviour customization](features/wireguard/behavior-customization.md) + * [DNS and domains](features/wireguard/dns-and-domains.md) + * [Executing custom gateway commands](features/wireguard/executing-custom-gateway-commands.md) +* [Remote user enrollment](features/remote-user-enrollment/README.md) + * [User onboarding after enrollment](features/remote-user-enrollment/user-onboarding-after-enrollment.md) + * [Automatic (real time) desktop client configuration & sync](features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md) +* [Internal SSO (OpenID Connect Provider)](features/openid-connect/README.md) + * [Portainer](features/openid-connect/portainer.md) + * [Grafana setup](features/openid-connect/grafana-setup.md) + * [Proxmox](features/openid-connect/proxmox.md) + * [Matrix / Synapse](features/openid-connect/proxmox-1.md) + * [Django](features/openid-connect/django.md) + * [MinIO](features/openid-connect/minio.md) + * [Vault](features/openid-connect/vault.md) +* [External SSO/OpenID providers](features/external-openid-providers/README.md) + * [Google](features/external-openid-providers/google.md) + * [Microsoft](features/external-openid-providers/microsoft.md) + * [Okta](features/external-openid-providers/okta.md) + * [JumpCloud](features/external-openid-providers/jumpcloud.md) + * [Keycloak](features/external-openid-providers/keycloak.md) + * [Zitadel](features/external-openid-providers/zitadel.md) + * [Custom](features/external-openid-providers/custom.md) + * [External OIDC secure enrollment](features/external-openid-providers/external-oidc-secure-enrollment.md) +* [LDAP and Active Directory integration](features/ldap-and-active-directory-integration/README.md) + * [Configuration](features/ldap-and-active-directory-integration/configuration.md) + * [Settings table](features/ldap-and-active-directory-integration/settings-table.md) + * [Two-way LDAP and Active Directory synchronization](features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md) +* [Access Control List](features/access-control-list/README.md) + * [ACL Aliases](features/access-control-list/acl-aliases.md) + * [Implementation Details](features/access-control-list/firewall-internals.md) +* [Network devices](features/network-devices.md) +* [Activity & Audit logs](features/activity-log/README.md) + * [Audit Log Streaming to SIEM systems](features/activity-log/activity-log-streaming/README.md) + * [Supported SIEM systems integrations](features/activity-log/activity-log-streaming/activity-log-integrations/README.md) + * [Vector integration guide](features/activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md) + * [Logstash integration guide](features/activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md) +* [Notifications](features/notifications/README.md) + * [Email notifications](features/notifications/setting-up-smtp-for-email-notifications.md) + * [Gateway notifications](features/notifications/gateway-notifications.md) + * [New version notifications](features/notifications/new-version-notifications.md) +* [Integrations](features/integrations/README.md) + * [Webhooks](features/integrations/webhooks.md) + * [REST API](features/integrations/api-tokens.md) +* [OPNsense Configuration](features/gateway.md) +* [SSH Authentication](features/ssh-authentication.md) +* [Forward auth](features/forward-auth.md) +* [YubiKey Provisioning](features/yubikey-provisioning.md) +* [User SNAT bindings](features/user-snat-bindings.md) +* [Service locations](features/service-locations.md) +* [Desktop client auto-provisioning](features/desktop-client-auto-provisioning/README.md) + * [Auto-provisioning in Windows environments](features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/README.md) + * [On-premise Active Directory](features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/on-premise-active-directory-environments.md) + * [Entra ID](features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/entra-id-environments.md) + * [Generating enrollment tokens with Defguard REST API](features/desktop-client-auto-provisioning/generating-enrollment-tokens-with-defguard-rest-api.md) ## Deployment strategies * [Overview](deployment-strategies/setting-up-your-instance.md) -* [Standalone package based installation](deployment-strategies/standalone-package-based-installation.md) -* [Docker images and tags](deployment-strategies/docker-images-and-tags.md) +* [Deploying to Production](deployment-strategies/deploying-to-production.md) +* [Hardware, OS, network and firewall recommendations](deployment-strategies/hardware-os-network-and-firewall-recommendations.md) +* [Standalone package based installation](deployment-strategies/standalone-package-based-installation/README.md) + * [Defguard APT repository](deployment-strategies/standalone-package-based-installation/defguard-apt-repository.md) * [Docker Compose](deployment-strategies/docker-compose.md) * [Kubernetes](deployment-strategies/kubernetes.md) * [Terraform](deployment-strategies/terraform.md) -* [AMIs and AWS CloudFormation](deployment-strategies/amis-and-aws-cloudformation.md) +* [Amazon Machine Image (AMI)](deployment-strategies/amis-and-aws-cloudformation/README.md) + * [Configuring HTTPS using AWS Certificate Manager](deployment-strategies/amis-and-aws-cloudformation/configuring-https-using-aws-certificate-manager.md) +* [Adding a location and getting a Gateway token](deployment-strategies/gateway.md) +* [Configuration](deployment-strategies/configuration.md) +* [Running Gateway on OPNsense firewall](deployment-strategies/running-gateway-on-opnsense-firewall.md) +* [Running Gateway on MikroTik routers](deployment-strategies/running-gateway-on-mikrotik-routers.md) +* [Reverse Proxy configuration using NGINX](deployment-strategies/reverse-proxy-configuration-using-nginx.md) * [High Availability and Failover](deployment-strategies/high-availability-and-failover.md) -* [Upgrading](deployment-strategies/upgrading.md) +* [Updating and version compatibility](deployment-strategies/updating-and-version-compatibility.md) +* [Migration guides](deployment-strategies/upgrading.md) +* [Using a userspace wireguard-go implementation](deployment-strategies/using-a-userspace-wireguard-go-implementation.md) * [Pre-production and development releases](deployment-strategies/pre-production-and-development-releases.md) -* [Gateway](deployment-strategies/gateway/README.md) - * [Running gateway on MikroTik routers](deployment-strategies/gateway/running-gateway-on-mikrotik-routers.md) * [Securing gRPC communication](deployment-strategies/grpc-ssl-communication.md) - -*** - -* [OpenID RSA key](openid-rsa-key.md) -* [Health check](health-check.md) -* [Configuration](configuration.md) - -## Enterprise - -* [License](enterprise/license.md) -* [Enterprise features](enterprise/enterprise-features.md) - -## Using Defguard (for end users) - -* [Overview](help/overwiew.md) -* [Mobile Client](help/mobile-client/README.md) - * [Adding new Instance](help/mobile-client/instance-adding.md) - * [Connecting to Instance](help/mobile-client/instance-connect.md) - * [Managing your Instance](help/mobile-client/instance-manage.md) -* [Desktop Client](help/desktop-client/README.md) - * [Instance configuration](help/desktop-client/instance-configuration.md) - * [Using Multi-Factor Authentication (MFA)](help/desktop-client/using-multi-factor-authentication-mfa.md) -* [CLI Client](help/cli-client.md) -* [Other WireGuard® Clients](help/adding-wireguard-devices/README.md) - * [Configuring a device for new VPN Location manually](help/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md) -* [Password change / Reset](help/changing-your-password.md) -* [Enrollment & Onboarding](help/enrollment/README.md) - * [With internal Defguard SSO](help/enrollment/with-internal-defguard-sso.md) - * [With external SSO (Google/Microsoft/Custom)](help/enrollment/with-external-sso-google-microsoft-custom.md) -* [Setting up 2FA/MFA](help/setting-up-2fa-mfa.md) +* [Using RSA instead of HMAC for OpenID key](deployment-strategies/openid-rsa-key.md) +* [Health check](deployment-strategies/health-check.md) +* [Production deployment verification guide](deployment-strategies/production-deployment-verification-guide.md) +* [Linux Kernel WireGuard tuning](deployment-strategies/linux-kernel-wireguard-tuning.md) +* [Deployment automation](deployment-strategies/deployment-automation.md) + +## License + +* [Purchasing and using the license](enterprise/license.md) + +## Using Defguard (for end users) + +* [Overview](using-defguard-for-end-users/overwiew.md) +* [Mobile Client](using-defguard-for-end-users/mobile-client/README.md) + * [Adding new Instance](using-defguard-for-end-users/mobile-client/instance-adding.md) + * [Connecting to Instance](using-defguard-for-end-users/mobile-client/instance-connect.md) + * [Managing your Instance](using-defguard-for-end-users/mobile-client/instance-manage.md) + * [Using Biometry as MFA method](using-defguard-for-end-users/mobile-client/using-biometry-as-mfa-method.md) +* [Desktop Client](using-defguard-for-end-users/desktop-client/README.md) + * [Instance configuration](using-defguard-for-end-users/desktop-client/instance-configuration.md) + * [Using Multi-Factor Authentication (MFA)](using-defguard-for-end-users/desktop-client/using-multi-factor-authentication-mfa.md) + * [MTU Setting](using-defguard-for-end-users/desktop-client/mtu-setting.md) +* [CLI Client](using-defguard-for-end-users/cli-client.md) +* [Other WireGuard® Clients](using-defguard-for-end-users/adding-wireguard-devices/README.md) + * [Configuring a device for new VPN Location manually](using-defguard-for-end-users/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md) +* [Password change / Reset](using-defguard-for-end-users/changing-your-password.md) +* [Enrollment & Onboarding](using-defguard-for-end-users/enrollment/README.md) + * [With internal Defguard SSO](using-defguard-for-end-users/enrollment/with-internal-defguard-sso.md) + * [With external SSO (Google/Microsoft/Custom)](using-defguard-for-end-users/enrollment/with-external-sso-google-microsoft-custom.md) +* [Setting up 2FA/MFA](using-defguard-for-end-users/setting-up-2fa-mfa.md) + +## Support + +* [How to submit an issue](support-1/how-to-submit-an-issue.md) +* [Troubleshooting Guide](support-1/troubleshooting/README.md) + * [Sending support information](support-1/troubleshooting/sending-support-info.md) + * [Client Windows installer exit codes](support-1/troubleshooting/windows-installer-exit-codes.md) + * [Client "All traffic" connection issues](support-1/troubleshooting/client-all-traffic-connection-issues.md) + * [WebAuthn security keys](support-1/troubleshooting/webauthn-security-keys.md) + * [Desktop Client connectivity issues](support-1/troubleshooting/desktop-client-connectivity-issues.md) + * [Client opening issues on Linux](support-1/troubleshooting/client-opening-issues-on-linux.md) +* [Server migration and licence transfer](support-1/server-migration-and-licence-transfer.md) ## Tutorials @@ -123,16 +150,20 @@ ## In depth +* [Secure By Design](in-depth/secure-by-design.md) +* [Architecture](in-depth/architecture/README.md) + * [How do VPN statistics work](in-depth/architecture/how-do-vpn-statistics-work.md) + * [Security concepts](in-depth/architecture/security-concepts.md) + * [MFA Architecture](in-depth/architecture/architecture.md) * [Architecture Decision Records](in-depth/architecture-decision-records/README.md) + * [1.6](in-depth/architecture-decision-records/1.6.md) * [1.5](in-depth/architecture-decision-records/1.5.md) * [1.4](in-depth/architecture-decision-records/1.4.md) * [1.3](in-depth/architecture-decision-records/1.3.md) * [Pre-1.3](in-depth/architecture-decision-records/pre-1.3.md) -* [Architecture](in-depth/architecture/README.md) - * [How do VPN statistics work](in-depth/architecture/how-do-vpn-statistics-work.md) - * [Security concepts](in-depth/architecture/security-concepts.md) -* [Roadmap](features/roadmap.md) +* [Roadmap](in-depth/roadmap.md) * [Release cycle](in-depth/release-cycle.md) +* [Client application feature compatibility](in-depth/client-application-feature-compatibility.md) ## For Developers @@ -143,11 +174,3 @@ * [Adding translations](for-developers/dev-env-setup/translations-web/adding-translations.md) * [Translations (client)](for-developers/dev-env-setup/translations-client/README.md) * [Adding translations](for-developers/dev-env-setup/translations-client/adding-translations.md) - -## Resources - -* [Troubleshooting Guide](resources/troubleshooting/README.md) - * [Sending support information](resources/troubleshooting/sending-support-info.md) - * [Client Windows installer exit codes](resources/troubleshooting/windows-installer-exit-codes.md) - * [Client "All traffic" connection issues](resources/troubleshooting/client-all-traffic-connection-issues.md) - * [WebAuthn security keys](resources/troubleshooting/webauthn-security-keys.md) diff --git a/about/about-defguard.md b/about/about-defguard.md index 147ba9f..b9b7de7 100644 --- a/about/about-defguard.md +++ b/about/about-defguard.md @@ -1,48 +1,101 @@ # About Defguard -{% embed url="https://www.youtube.com/watch?v=4PF7edMGBwk" %} - ## What is Defguard? -Defguard is a **comprehensive Remote Access Management solution** incorporating in one solution: +Defguard is an enterprise-ready platform built on top of WireGuard®, designed to make private networking simple, scalable, and secure. + +It integrates identity management, policy enforcement, and secure access provisioning into a single, cohesive system - whether you deploy it in your own infrastructure or in the cloud. + +Defguard helps organizations: + +* Manage VPN access for distributed teams. +* Integrate identity sources such as LDAP, Active Directory, or external OIDC providers. +* Enforce multi-factor authentication (MFA). +* Automate device enrollment. +* Simplify network segmentation and access control using policies. + +For a detailed list of features go to the [Features overview](broken-reference/) section. + +## Why choose Defguard? + +Defguard was built with security, transparency, and control at its core - more in our [Secure by design](../in-depth/secure-by-design.md) and [Architecture](../in-depth/architecture/) documentation. + +Here’s why organizations choose it over traditional VPN management or proprietary systems: + +#### 🏗️ Self-Hosted and Privacy-Focused + +Defguard can be deployed on your own infrastructure, giving you full ownership of data and keys. + +No external cloud relay, no hidden telemetry - your traffic and user data never leave your environment. + +#### 🔒 Zero Trust by Design + +Authentication and authorization with MFA happen continuously, not just at login. + +Access decisions are policy-driven and identity-based, reducing lateral movement risks and insider threats. + +#### 🔑 True MFA (Multi-Factor Authentication) for VPN Access + +Most applications provide MFA only when opening or logging into the app - not during the VPN connection itself. + +Defguard takes a different approach. + +Thanks to its internal Identity Provider (IdP), Defguard enforces real, [connection-level MFA](../in-depth/architecture/architecture.md), ensuring that multi-factor authentication is applied as part of the VPN handshake - not just the UI login step. + +Even when using [external OIDC](../features/external-openid-providers/) providers (Google, Microsoft, or a custom one supported by Defguard), Defguard still applies its internal IdP-based MFA for actual VPN session authentication. + +This design delivers true, end-to-end verification that protects both users and infrastructure from credential theft or token replay attacks. + +#### ⚙️ Open, Extensible, and Interoperable + +Defguard integrates cleanly with your existing identity stack - LDAP, AD, or OIDC - without forcing vendor lock-in. + +Its webhooks make it easy to extend or automate within DevOps workflows. -* True Zero-Trust [WireGuard® VPN with 2FA/Multi-Factor Authentication](../admin-and-features/wireguard/), -* Identity Management with [SSO based on OpenID Identity Provider](../admin-and-features/openid-connect/), -* Account Lifecycle management with [secure remote account onboarding](../help/enrollment/). +#### 🧭 Simple for Users, Powerful for Admins -*** +End users enjoy one-click VPN access via the Defguard apps, while admins gain granular control through a modern web interface. -**Our primary focus at Defguard is on prioritizing security. Then, we aim to make this challenging topic both useful and as easy to navigate as possible.** +#### 🧩 Modular and Scalable -*** +Each component (Core, Gateway, Proxy) can be deployed independently, allowing flexible scaling - from a single office setup to multi-region enterprise deployments. -Defguard is a true Zero-Trust [WireGuard® VPN with 2FA/Multi-Factor Authentication](../admin-and-features/wireguard/), as each connection requires MFA (and not only when logging in into the client application like other solutions): +#### 🧱 Security Built into the Development Process -
+Defguard follows modern software supply-chain and security best practices: -Having said that, this security platform is for building **secure** and **privacy-aware organizations,** as we put great effort not only on functionality but first and foremost on secure code, architecture and testing (application and security). +* Signed container images and binaries. +* Publishing SBOMs. +* Scanning for and reacting to vulnerabilities on a daily basis. +* Regular penetration testing. -### Basic security concept +#### 🌱 Open Source and Transparent by Design -The main architecture concept is that **all critical data should be in the internal (Intranet) network and not exposed in the public Internet** (contrary to typical and common cloud approach) and only services that need to be exposed to the Internet - should be exposed in a controled (DMZ) network segments: +Defguard is open source - you can inspect, audit, and contribute to the code that powers your infrastructure. -

Internet, DMZ & Internal network segments

+We believe transparency is a cornerstone of security and trust. -This approach is **vastly different from most (if not all) VPN/IdP solutions**, which are a simple or monolithic applications focus on functionalities and most of the time is publicly available in the Internet for any attacker to exploit. +Our approach goes beyond code: -Of course you can deploy Defguard in a typical scenario (all services on one server and even all publicly available) - but that should be **for you to decide!** +* Open organisation: we share our [development roadmap](https://github.com/orgs/DefGuard/projects/5), [security practices](https://defguard.net/security/), and [architecture decisions](../in-depth/architecture-decision-records/) publicly. +* Open processes: our builds, signing, and release workflows are verifiable end-to-end. +* Open security scans: we publish [penetration tests reports](https://defguard.net/pentesting/), and [daily SBOM CVE scan reports](https://defguard.net/sbom/). +* Community-driven development: [we welcome feedback](../support.md#found-a-bug-need-a-feature), issues, and [contributions from users](../for-developers/contributing.md) and integrators. +* No black boxes: every component, from Core to Gateway, can be deployed, configured, and verified independently. -### Incorporating IdP and VPN in one solution +Defguard’s openness ensures trust through verifiability, not promises — aligning with the principles of modern, transparent cybersecurity. -Incorporating IDM, ALM, VPN has also other advantages: +## How is Defguard built? -1. Internal IdP with 2FA/MFA enables us to provide [**real VPN 2FA/MFA**](../admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/architecture.md) - and not like most applications just 2FA when opening the app (and not during the connection process). Even if you use [external OIDC](../admin-and-features/external-openid-providers/) (Google/Microsoft/Custom - which Defguard supports), we still use our internal IdP for 2FA/MFA. -2. Your organization may use just **one account** (login) for access control to all your applications as well as VPN. -3. It simplifies deployment, maintenance, audits. +Defguard consists of several modular services that can be deployed together or separately, depending on your architecture: -More about [defguard's architecture and security can be found here](../in-depth/architecture/). +* Core – the main service responsible for user management, authentication, configuration storage, and integrations. +* VPN Gateway – provides the VPN endpoint for clients; runs WireGuard and synchronizes configuration with Core. +* Public Proxy – an optional component that handles communication between the Core and external services or clients in restricted environments. +* Desktop and Mobile Apps – client applications for macOS, Windows, Linux, Android, and iOS, allowing users to connect easily and securely. -## Pentested! +This layered architecture with a strict division of responsibility guarantees maximum security (verified by multiple in-depth [penetration tests](https://defguard.net/pentesting/)). -**Checked by professional security researchers** (see [comprehensive security report](https://defguard.net/pdf/isec-defguard.pdf)) +
+For the reasoning behind this division, please refer to the [Architecture documentation](../in-depth/architecture/). diff --git a/about/features-overview.md b/about/features-overview.md index d195a04..29c1c26 100644 --- a/about/features-overview.md +++ b/about/features-overview.md @@ -2,31 +2,31 @@ ### Remote Access with WireGuard® VPN 2FA/MFA: -* [**Multi-Factor Authentication**](../admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/) using our [desktop client](https://defguard.net/client) +* [**Multi-Factor Authentication**](../features/wireguard/multi-factor-authentication-mfa-2fa/) using our [desktop client](https://defguard.net/client) * **Multiple VPN Locations** (networks/sites) - with defined access (all users or only Admin group) * Multiple [Gateways](https://github.com/DefGuard/gateway) for each VPN Location ([**high availability/failover**](../deployment-strategies/high-availability-and-failover.md)) - supported on a cluster of routers/firewalls for Linux, FreeBSD/PFSense/OPNSense * Import your current WireGuard server configuration (with a wizard!) * _Easy_ device setup by users themselves (self-service) * Automatic IP allocation * Kernel (Linux, FreeBSD/OPNSense/PFSense) & userspace WireGuard support -* [Dashboard and statistics overview](../admin-and-features/wireguard/network-overview.md) of connected users/devices for admins +* [Dashboard and statistics overview](../features/wireguard/network-overview.md) of connected users/devices for admins _Defguard is not an official WireGuard project, and WireGuard is a registered trademark of Jason A. Donenfeld._ -### [_Activity & Audit Logs_](../activity-log/) +### [_Activity & Audit Logs_](../features/activity-log/) * User event logging with detailed metadata * Advanced filtering and search by user, module, event type and time range * Role-based visibility - users can see only their events * Grouped logs by modules (Defguard, enrollment, VPN) -* Real-time [log streaming](../activity-log/activity-log-streaming/) to SIEM tools (Enterprise feature) +* Real-time [log streaming](../features/activity-log/activity-log-streaming/) to SIEM tools (Enterprise feature) ### OpenID Connect -* Defguard is an internal OIDC provider for [Single Sign-On](../admin-and-features/openid-connect/). -* Supports [external OpenID](../admin-and-features/external-openid-providers/) providers for user authentication. +* Defguard is an internal OIDC provider for [Single Sign-On](../features/openid-connect/). +* Supports [external OpenID](../features/external-openid-providers/) providers for user authentication. -### [Access Control List](../admin-and-features/access-control-list/) +### [Access Control List](../features/access-control-list/) * Access rules for VPN locations * Allow or deny access based on users or groups @@ -35,7 +35,7 @@ _Defguard is not an official WireGuard project, and WireGuard is a registered tr ### Identity Management: * #### [OpenID Connect](https://openid.net/developers/how-connect-works/) based SSO -* External [OpenID providers for login/account creation (Google/Microsoft/Custom)](../admin-and-features/external-openid-providers/) +* External [OpenID providers for login/account creation (Google/Microsoft/Custom)](../features/external-openid-providers/) * LDAP (tested on [OpenLDAP](https://www.openldap.org/)) synchronization * Nice UI to manage users * Users **self-service** (besides typical data management, users can revoke access to granted apps, MFA, WireGuard, etc.) @@ -54,9 +54,9 @@ _Defguard is not an official WireGuard project, and WireGuard is a registered tr ### Notifications -* [Email notifications ](../notifications/setting-up-smtp-for-email-notifications.md)via SMTP -* [Gateway disconnect/reconnect](../notifications/gateway-notifications.md) notifications -* [New version](../notifications/new-version-notifications.md) notifications +* [Email notifications ](../features/notifications/setting-up-smtp-for-email-notifications.md)via SMTP +* [Gateway disconnect/reconnect](../features/notifications/gateway-notifications.md) notifications +* [New version](../features/notifications/new-version-notifications.md) notifications ### YubiKey Provisioning @@ -64,6 +64,6 @@ _Defguard is not an official WireGuard project, and WireGuard is a registered tr ### Integrations -[Webhooks](../integrations/webhooks.md) & [REST API](../integrations/api-tokens.md) +[Webhooks](../features/integrations/webhooks.md) & [REST API](../features/integrations/api-tokens.md) Build with [Rust](https://www.rust-lang.org/) for portability, security, and speed diff --git a/admin-and-features/external-openid-providers/jumpcloud.md b/admin-and-features/external-openid-providers/jumpcloud.md deleted file mode 100644 index 7fb8a5c..0000000 --- a/admin-and-features/external-openid-providers/jumpcloud.md +++ /dev/null @@ -1,40 +0,0 @@ -# JumpCloud - -1. Login to your JumpCloud admin account. -2. Navigate to SSO Applications\\ - -
-3. Add a new SSO Application -4. Select "Custom" on this screen. - -
-5. Select "Configure SSO with OIDC". - -
-6. Fill the app's display label in the next form.\\ - -
-7. After finishing this configuration, you will be redirected to your newly created SSO Application's settings. Go to the "SSO" tab first. - -
-8. Configure as following: - -
- - Make sure to set the correct Redirect URI and Login URL that will reflect your Defguard's setup. If you access your Defguard dashboard at e.g. `https://defguard.example.net` your redirect URI will be `https://defguard.example.net/auth/callback` and the login URL `https://defguard.example.net/auth/login`. Additionally, if you are using a Defguard proxy to enrol users, you can also add another redirect URI in the form of `/openid/callback`, where the `` is the address at which your proxy enrollment page is accessible. -9. Next, select the profile scope and add an `email` user attribute mapping by hand, like so: - -
- - It's important **not** to select the email standard scope checkbox, as it will automatically add a constant `email_verified` field which doesn't conform to the OpenID standard and doesn't work with Defguard. You can see the following section for more information: [#jumpcloud](./#jumpcloud "mention"). -10. Click "Activate". You will be presented with a client ID and a secret. Copy both of them, as you will need to insert them in Defguard's settings. -11. Go to Defguard settings, OpenID tab, select a `Custom` provider tab and paste the copied values: - -
- - Set the base URL to `https://oauth.id.jumpcloud.com/`. The display name may be whatever you want. -12. Back in JumpCloud, make sure your users have access to the SSO Application. You can enable it by navigating to the `User groups` menu and selecting the group you want to enable logging in through JumpCloud for. Only users from this group will be able to log in to Defguard with JumpCloud. In this example, we will select the `All users` group, which is a dynamic group containing every user. -13. Now in the group settings menu, select the `Applications` tab and select the checkbox next to your newly created app, this will enable the app for that group. Click `Save group` when you finish. - -
-14. Now you should be able to log in to Defguard with JumpCloud. diff --git a/admin-and-features/overview.md b/admin-and-features/overview.md deleted file mode 100644 index a02c899..0000000 --- a/admin-and-features/overview.md +++ /dev/null @@ -1,16 +0,0 @@ -# Overview - -## Welcome to Defguard admin documentation - -This documentation walks you through all the administrative features of Defguard and how to configure them. - -We recommend setting up your own example instance using our [one-line install script](../getting-started/one-line-install.md) to explore these features firsthand. As you follow along, you can adjust the configuration directly within your instance to better understand each feature in action. - -### What you’ll learn - -As a future Defguard administrator, this documentation will help you: - -* Be aware of all the possibilities you have with Defguard. -* How to configure them to your needs. - -If you're more interested in different deployment strategies after using our [one-line install script](../getting-started/one-line-install.md), go to the [deployment strategies](broken-reference/) section. diff --git a/admin-and-features/wireguard/behavior-customization.md b/admin-and-features/wireguard/behavior-customization.md deleted file mode 100644 index f18ef9d..0000000 --- a/admin-and-features/wireguard/behavior-customization.md +++ /dev/null @@ -1,35 +0,0 @@ -# VPN & Client behaviour customization - -{% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). -{% endhint %} - -After purchasing the Enterprise License the _Enterprise features_ **tab will be activated**, enabling the administrator to configure additional features: - -

Additional Enterprise Features

- -### Disable for users to manage their devices - -When this option is enabled, **only users in the Admin group can manage devices in user profile**, for any other users adding/editing/removing their VPN devices is disabled. - -### Disable ability to configure other VPN clients then Defguard desktop client - -If '_Disable users' ability to manually configure WireGuard client_' option is **enabled**, then any user **has only possibility to configure Defguard desktop client.** - -This option will not be available for users: - -
- -### Disable _All Traffic_ option in the desktop client - -One of Defguard desktop client unique features is the possibility for the user to automatically route **All network traffic** from their device **through the connected VPN Location**, when the user checks _All traffic_ option_**:**_ - -![](<../../.gitbook/assets/Screenshot 2024-10-14 at 12.49.30.png>) - -But there are scenarios that administrator would like that users have only access to the **predefined traffic** (meaning Allowed IPs in the Network VPN configuration) and the possibility to access all networks disabled. - -When enabling this option, users will only have _predefined traffic_ available in their desktop client and the _all traffic_ option disabled. - -{% hint style="warning" %} -Please note that this option is only client-side enforced, meaning the user may manually modify Wireguard interface to force all traffic to go through the VPN. -{% endhint %} diff --git a/admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/README.md b/admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/README.md deleted file mode 100644 index 4375b9a..0000000 --- a/admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/README.md +++ /dev/null @@ -1,105 +0,0 @@ -# Multi-Factor Authentication (MFA/2FA) - -We support two types of Multi-Factor Authentication: - -1. Based on our [Internal OIDC/SSO](../../openid-connect/) - called [Internal MFA ](./#internal-mfa)- using this method the Desktop & Mobile clients authenticate with **TOTP & Email codes** and after that with **session keys based on Wireguard Pre-Shared Keys** (PSK). For more details about this please refer to the [architecture section](architecture.md). -2. Based on [External OIDC/SSO](../../external-openid-providers/) - called [External MFA](./#externa-mfa) - this method is supported from version 1.5 ([currently in alpha](../../../deployment-strategies/pre-production-and-development-releases.md)) and requires the External SSO to be configured in the system. Each connection when using this method will open a web browser with authentication session to the SSO (like Google/Microsoft Entra/Okta/....) and after successful authentication **session keys based on WireGuard Pre-Shared Keys** (PSK) are exchanged between the client and server (for more details about this please refer to the [architecture section](architecture.md)). - -{% hint style="success" %} -From version 1.5 ([currently in alpha](../../../deployment-strategies/pre-production-and-development-releases.md)) **each VPN Location can be configured to use either Internal or External MFA.** -{% endhint %} - -## Internal MFA - -Enabling Internal MFA for a desired VPN Location is done by: - -1. Going into Defguard to **VPN Overview** -2. Selecting the VPN Location from the dropdown list, and pressing the **Edit Location** button in the top right corner of the page -3. Check the "**Require MFA for this Location**" checkbox under the Location Configuration section -4. Set **peer disconnect threshold**, we recommend it to be min. 300 (5 min) - see chapter [below](./#peer-disconnect-threshold). -5. And **save changes**. - -

Example MFA Location configuration

- -### Peer disconnect **threshold** - -When MFA is enabled on a location, Defguard periodically (currently every **1 minute**) checks statistics if a client is connected and if the period of inactivity (defined in Peer disconnect threshold option) is met, a client is disconnected. - -Thus, the gateway needs to be configured to send statistics in that period. - -We recommend to set: - -* gateway to send statistics every 30sec -* Peer disconnect threshold we recommend it to be min. 300 (5 min) - -### Client update after enabling MFA - -{% hint style="warning" %} -When MFA configuration is changed, all clients must do an [Instance Update](../../../help/desktop-client/instance-configuration.md#updating-instance). -{% endhint %} - -### Testing MFA on Defguard client - -If a VPN has MFA enabled, before connecting you will be asked to complete the authentication step first: - -

MFA in Defguard desktop client

- -### Supported MFA methods - -For now, MFA is only available with the following methods: - -* [TOTP - Time-based one-time password](../../../help/setting-up-2fa-mfa.md#one-time-password) -* Email - requires [SMTP to be configured](../../../notifications/setting-up-smtp-for-email-notifications.md) - -{% hint style="warning" %} -Please remember to configure TOTP on you user account and/or SMTP settings for MFA on the desktop client to work.. -{% endhint %} - -### User MFA setup - -After enabling MFA for a given VPN, users will need to enable MFA for their accounts to be able to connect. This process is described in [setting-up-2fa-mfa.md](../../../help/setting-up-2fa-mfa.md "mention"). For simplicity & security, the desktop client uses the same MFA methods as the Defguard server. - -An error message will be shown if users attempt to select an MFA method that has not been enabled for their accounts: - -

Attempting to use an MFA method that has not been enabled on the user's account.

- -### Successful authentication - -If authentication succeeds, the VPN two-factor authentication modal will be closed and connection to the selected VPN will be attempted. Users will be asked to authenticate on every connection to a VPN with MFA enabled. - -## External MFA - -In order to enable the External MFA authentication: - -1. Your instance **must have** [external OIDC/SSO configured](../../external-openid-providers/). -2. Select the VPN Location from the dropdown list on the Network Overview, and pressing the **Edit Location** button in the top right corner of the page. -3. Select the External MFA in the menu. - -
- -#### Client disconnect threshold - -When MFA is enabled on a location, Defguard periodically (currently every **1 minute**) checks statistics if a client is connected and if the period of inactivity (defined in this option) is met, a client is disconnected. - -Thus, the gateway needs to be configured to send statistics in that period. - -{% hint style="info" %} -We recommend to set: - -* Gateway to send statistics every 30sec -* Peer disconnect threshold we recommend it to be min. 300 (5 min) -{% endhint %} - -### Testing MFA on Defguard client - -When a location has External MFA enabled, after clicking Connect in the Desktop client ([here you can find information about Mobile Client External MFA](../../../help/mobile-client/instance-connect.md#external-mfa)), there will be information displayed about authentication requirement: - -
- -In order to authenticate the user will be prompted to click on Authenticate with your configured OIDC (like Authenticate with Google) - which will open the browser and start the authentication session with your OIDC/SSO provider by the [Defguard Enrollment ](../../../help/enrollment/)service (which is the only public component). - -After successful authentication, the user will be informed by the enrollment service like so: - -
- -And the VPN should be connected. diff --git a/deployment-strategies/amis-and-aws-cloudformation.md b/deployment-strategies/amis-and-aws-cloudformation.md deleted file mode 100644 index 5031909..0000000 --- a/deployment-strategies/amis-and-aws-cloudformation.md +++ /dev/null @@ -1,396 +0,0 @@ -# AMIs and AWS CloudFormation - -{% hint style="warning" %} -This feature is still under development. The documentation may be incomplete or refer to resources that are not yet available. -{% endhint %} - -## AMIs (Amazon Machine Images) - -We provide an AMI for each Defguard component (Core, Gateway and Proxy) which can be used to launch instances in AWS. The AMIs are available in the following regions: - -* `us-east-1` (N. Virginia) -* `eu-west-1` (Ireland) -* `ap-northeast-1` (Tokyo) - -We recommend using the AMIs either with a CloudFormation template or with our Terraform module, as they will automatically configure the instances with the necessary settings. - -## CloudFormation Templates - -You can import the CloudFormation template from the AWS Marketplace or from our GitHub [deployment repository](https://github.com/DefGuard/deployment). - -The template consists of the following components: - -* **Defguard Core** -* **Defguard Gateway** - The template has only one Gateway instance, but Defguard supports running multiple Gateways if you need more VPN locations. -* **Defguard Proxy** -* **PostgreSQL Database** - -We recommend reading the [Architecture documentation](https://docs.defguard.net/in-depth/architecture) to understand how these components interact. - -The template has the following configurable parameters: - -### Core Instance - -* `CoreCookieInsecure` (optional): If set to `true`, Defguard Core will use insecure cookies. This is not recommended for production environments. Set it to `true` if you are using HTTP instead of HTTPS. -* `CoreGrpcPort` (optional): The gRPC port, default is `50051`. This is used for communication between Defguard components. -* `CoreHttpPort` (optional): The HTTP port on which Defguard Core should listen, default is `8000`. This is where the Defguard web UI will be accessible. -* `CoreInstanceType` (optional): The instance type (e.g., `t3.medium`, `m5.large`), default is `t3.micro`. -* `CoreLogLevel` (optional): The log level of Defguard Core, default is `info`. -* `CoreUrl` (required): The URL where Defguard Core will be accessible (e.g., `https://defguard.example.com`). This should be the URL that users will use to access the Defguard web interface. -* `CoreDefaultAdminPassword` (optional): The default password for the `admin` user, default is `pass123`. This should be changed to a more secure password in production environments. - -### Database - -* `DbInstanceClass` (optional): The instance class for the PostgreSQL database, default is `db.t3.micro`. -* `DbName` (optional): The name of the PostgreSQL database, default is `defguard`. -* `DbPassword` (optional): The password for the PostgreSQL database, default is `defguard`. This should be changed to a more secure password in production environments. -* `DbPort` (optional): The port on which the PostgreSQL database will listen, default is `5432`. -* `DbStorage` (optional): The storage size for the PostgreSQL database, default is `20`. This is the size in GB. -* `DbUsername` (optional): The username for the PostgreSQL database, default is `defguard`. - -### Gateway Instance - -* `GatewayInstanceType` (optional): The instance type for the Gateway, default is `t3.micro`. -* `GatewayLogLevel` (optional): The log level for the Gateway, default is `info`. -* `GatewaySecret` (required): The secret used to authenticate the Gateway with Defguard Core. This should be a strong, random string, 64 characters long. - -### Proxy Instance - -* `ProxyGrpcPort` (optional): The gRPC port for the Proxy, default is `50051`. -* `ProxyHttpPort` (optional): The HTTP port for the Proxy, default is `8000`. This is where the Defguard Proxy web UI will be accessible. The proxy UI is used for user enrollment. -* `ProxyInstanceType` (optional): The instance type for the Proxy, default is `t3.micro`. -* `ProxyLogLevel` (optional): The log level for the Proxy, default is `info`. -* `ProxyUrl` (required): The URL where the Defguard Proxy will be accessible (e.g., `https://proxy.defguard.example.com`). This should be the URL that users will use to access the Defguard Proxy web UI. - -### Network configuration - -* `VpcCidr` (optional): The CIDR block for the VPC in which Defguard will be deployed, default is `10.0.0.0/16`. -* `VpcName` (optional): The name of the VPC, default is `defguard-vpc`. - -### VPN Network (Location) configuration - -* `VpnNetworkAddress` (optional): The CIDR address for the VPN network, default is `10.10.10.1/24`. The VPN clients will receive IP addresses from this range. The gateway will have the first address in the range. -* `VpnNetworkName` (optional): The name of the VPN network (location). This is displayed both to the clients and in the Defguard web UI, default is `vpn1`. -* `VpnNetworkNat` (optional): If set to `true`, the VPN will have masquerading enabled, allowing clients to access other networks through the VPN (e.g., the internet). Default is `true`. -* `VpnNetworkPort` (optional): The UDP port on which the VPN will listen for incoming VPN connections, default is `51820`. - -### Customizing the deployment - -By default, the CloudFormation template will deploy Defguard with the settings according to the recommended architecture, that is: - -| Component | Port | Access allowed from | -| --------- | ------------ | ------------------- | -| Core | 8000 (HTTP) | Gateways | -| Core | 50055 (gRPC) | Gateways | -| Proxy | 50051 (gRPC) | Core | -| Proxy | 8000 (HTTP) | Anywhere | -| Gateway | 51820 (UDP) | Anywhere | - -You can customize the deployment by modifying the template or doing changes in the AWS Infrastructure Composer. - -To modify an existing stack deployed from the template, you can use the AWS Console, navigate to the CloudFormation service, select your stack, click on "Update stack" and then choose "Create a change set". - -![alt text](../.gitbook/assets/image-5.png) - -Next, select how you want to update the stack. If you want to modify the parameters, select "Use existing template". - -![alt text](../.gitbook/assets/image-8.png) - -If you want to modify the template itself, the easiest way is to edit it in the Infrastructure Composer: select "Edit in Infrastructure Composer" and click the "Edit in Infrastructure Composer" button. - -![alt text](../.gitbook/assets/image-9.png) - -#### Granting SSH access to the instances - -By default, the instances won't allow traffic on port 22. You can temporarily allow SSH access by modifying the security group of the instances. To do this, edit the template, and change the given component's security group to allow traffic on port 22 (ideally from your IP address). - -For example, you can add the following rule to the security group of the Core instance: - -```yaml - SecurityGroupIngress: - - IpProtocol: tcp - FromPort: !Ref CoreHttpPort - ToPort: !Ref CoreHttpPort - SourceSecurityGroupId: !Ref GatewaySecurityGroup - Description: HTTP access from gateways - - IpProtocol: tcp - FromPort: !Ref CoreGrpcPort - ToPort: !Ref CoreGrpcPort - SourceSecurityGroupId: !Ref GatewaySecurityGroup - Description: gRPC communication with gateways - - IpProtocol: tcp - FromPort: 22 - ToPort: 22 - CidrIp: /32 - Description: SSH access from your IP address -``` - -### Removing EIP - -By default, every component has an Elastic IP (EIP) assigned to it. This makes it easier to access them while setting everything up, but you might want to remove the EIP if you don't need it, especially if you plan to use a Reverse Proxy in front of the Defguard Core and Proxy. - -To remove the EIP, you can edit the template and remove the `ElasticIp`, `EipAssociation` resources and `DefguardPublicAddress` outputs from the template, where `` is one of `Core`, `Gateway` or `Proxy`. We do not recommend removing the EIP from the Gateway, as it should be accessible from the internet for VPN clients to connect to it. - -### Adding a Reverse Proxy/Load Balancer - -If you want to add a Reverse Proxy or Load Balancer in front of the Defguard Core and Proxy, you can do so by modifying the template. You can achieve this by adding two Application Load Balancers (ALBs) in front of the Core and Proxy components. One ALB (internal) will be used for the Core, and one (public) for the Proxy. - -Adding a Load Balancer will require making a second public subnet: - -```yaml - PublicSubnet2: - Type: AWS::EC2::Subnet - Properties: - VpcId: !Ref VPC - CidrBlock: 10.0.4.0/24 - AvailabilityZone: !Select - - 1 - - !GetAZs "" - MapPublicIpOnLaunch: true - Tags: - - Key: Name - Value: !Sub ${VpcName}-public-subnet-2 -``` - -And adding a route table association: - -```yaml - PublicSubnet2RouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - SubnetId: !Ref PublicSubnet2 - RouteTableId: !Ref PublicRouteTable -``` - -Then, you can add the ALBs along with listeners and target groups: - -```yaml - ApplicationLoadBalancer: - Type: AWS::ElasticLoadBalancingV2::LoadBalancer - Properties: - Name: defguard-public-alb - Scheme: internet-facing - Type: application - IpAddressType: ipv4 - Subnets: - - !Ref PublicSubnet - - !Ref PublicSubnet2 - SecurityGroups: - - !Ref LoadBalancerSecurityGroup - Tags: - - Key: Name - Value: defguard-public-alb - InternalApplicationLoadBalancer: - Type: AWS::ElasticLoadBalancingV2::LoadBalancer - Properties: - Name: defguard-internal-alb - Scheme: internal - Type: application - IpAddressType: ipv4 - Subnets: - - !Ref PrivateSubnet1 - - !Ref PrivateSubnet2 - SecurityGroups: - - !Ref InternalLoadBalancerSecurityGroup - Tags: - - Key: Name - Value: defguard-internal-alb - ALBListener: - Type: AWS::ElasticLoadBalancingV2::Listener - Properties: - DefaultActions: - - Type: forward - TargetGroupArn: !Ref ProxyTargetGroup - LoadBalancerArn: !Ref ApplicationLoadBalancer - Port: 80 - Protocol: HTTP - InternalALBListener: - Type: AWS::ElasticLoadBalancingV2::Listener - Properties: - DefaultActions: - - Type: forward - TargetGroupArn: !Ref CoreTargetGroup - LoadBalancerArn: !Ref InternalApplicationLoadBalancer - Port: 80 - Protocol: HTTP - CoreListenerRule: - Type: AWS::ElasticLoadBalancingV2::ListenerRule - Properties: - Actions: - - Type: forward - TargetGroupArn: !Ref CoreTargetGroup - Conditions: - - Field: host-header - Values: - - !Select - - 2 - - !Split - - / - - !Ref CoreUrl - ListenerArn: !Ref InternalALBListener - Priority: 100 - ProxyListenerRule: - Type: AWS::ElasticLoadBalancingV2::ListenerRule - Properties: - Actions: - - Type: forward - TargetGroupArn: !Ref ProxyTargetGroup - Conditions: - - Field: host-header - Values: - - !Select - - 2 - - !Split - - / - - !Ref ProxyUrl - ListenerArn: !Ref ALBListener - Priority: 100 - CoreTargetGroup: - Type: AWS::ElasticLoadBalancingV2::TargetGroup - Properties: - Name: defguard-core-tg - Port: !Ref CoreHttpPort - Protocol: HTTP - VpcId: !Ref VPC - TargetType: instance - HealthCheckEnabled: true - HealthCheckPath: /api/v1/health - HealthCheckProtocol: HTTP - HealthCheckIntervalSeconds: 30 - HealthCheckTimeoutSeconds: 5 - HealthyThresholdCount: 2 - UnhealthyThresholdCount: 3 - Targets: - - Id: !Ref CoreInstance - Port: !Ref CoreHttpPort - Tags: - - Key: Name - Value: defguard-core-tg - ProxyTargetGroup: - Type: AWS::ElasticLoadBalancingV2::TargetGroup - Properties: - Name: defguard-proxy-tg - Port: !Ref ProxyHttpPort - Protocol: HTTP - VpcId: !Ref VPC - TargetType: instance - HealthCheckEnabled: true - HealthCheckPath: /health - HealthCheckProtocol: HTTP - HealthCheckIntervalSeconds: 30 - HealthCheckTimeoutSeconds: 5 - HealthyThresholdCount: 2 - UnhealthyThresholdCount: 3 - Targets: - - Id: !Ref ProxyInstance - Port: !Ref ProxyHttpPort - Tags: - - Key: Name - Value: defguard-proxy-tg -``` - -Then, modify the Core and Proxy security groups to allow traffic from the ALBs: - -```yaml - # Add this to Core security group - - IpProtocol: tcp - FromPort: !Ref CoreHttpPort - ToPort: !Ref CoreHttpPort - SourceSecurityGroupId: !Ref InternalLoadBalancerSecurityGroup - Description: HTTP access from internal load balancer - - # Add this to Proxy security group - - IpProtocol: tcp - FromPort: !Ref ProxyHttpPort - ToPort: !Ref ProxyHttpPort - SourceSecurityGroupId: !Ref LoadBalancerSecurityGroup - Description: HTTP access from load balancer -``` - -You should also remove the following rules to prevent direct access to the Core and Proxy components: - -```yaml - # Remove these rules from Core security group - - IpProtocol: tcp - FromPort: !Ref CoreHttpPort - ToPort: !Ref CoreHttpPort - SourceSecurityGroupId: !Ref GatewaySecurityGroup - Description: HTTP access from gateways - - # Remove these rules from Proxy security group - - IpProtocol: tcp - FromPort: !Ref ProxyHttpPort - ToPort: !Ref ProxyHttpPort - CidrIp: 0.0.0.0/0 - Description: HTTP access to proxy -``` - -Finally, configure the security groups of your ALBs: - -```yaml - LoadBalancerSecurityGroup: - Type: AWS::EC2::SecurityGroup - Properties: - GroupName: defguard-alb-sg - GroupDescription: Access to the Application Load Balancer - VpcId: !Ref VPC - SecurityGroupIngress: - - IpProtocol: tcp - FromPort: 80 - ToPort: 80 - CidrIp: 0.0.0.0/0 - Description: HTTP access from internet - - IpProtocol: tcp - FromPort: 443 - ToPort: 443 - CidrIp: 0.0.0.0/0 - Description: HTTPS access from internet - SecurityGroupEgress: - - IpProtocol: "-1" - CidrIp: 0.0.0.0/0 - Tags: - - Key: Name - Value: defguard-alb-sg - InternalLoadBalancerSecurityGroup: - Type: AWS::EC2::SecurityGroup - Properties: - GroupName: defguard-internal-alb-sg - GroupDescription: Access to the Internal Application Load Balancer - VpcId: !Ref VPC - SecurityGroupIngress: - - IpProtocol: tcp - FromPort: 80 - ToPort: 80 - CidrIp: !Ref VpcCidr - Description: HTTP access from internal VPC network - - IpProtocol: tcp - FromPort: 443 - ToPort: 443 - CidrIp: !Ref VpcCidr - Description: HTTPS access from internal VPC network - SecurityGroupEgress: - - IpProtocol: "-1" - CidrIp: 0.0.0.0/0 - Tags: - - Key: Name - Value: defguard-internal-alb-sg -``` - -To easily inspect the ALB DNS names, you can add the following outputs to your template: - -```yaml - LoadBalancerDNS: - Description: The DNS name of the Public Application Load Balancer - Value: !GetAtt ApplicationLoadBalancer.DNSName - Export: - Name: !Sub ${AWS::StackName}-alb-dns - InternalLoadBalancerDNS: - Description: The DNS name of the Internal Application Load Balancer - Value: !GetAtt InternalApplicationLoadBalancer.DNSName - Export: - Name: !Sub ${AWS::StackName}-internal-alb-dns -``` - -This setup will allow you to access the Defguard Core and Proxy through the Load Balancers, while keeping the components not directly accessible. Both ALBs act more as a reverse proxy, as they match requests based on the `host-header` and no balancing is performed. By making the Core load balancer internal, you can ensure that only the Proxy is accessible from the internet, while the Core access is restricted to the internal VPC network. - -To allow connected VPN clients access the Core web UI, you can enable the `VpnNetworkNat` option in the CloudFormation template, so the traffic going through the VPN will be NATed and routed to the Core. You will also need to add an allowed IP of your VPC network (or one of its subnets) in your Location configuration in Defguard Core to let the clients know to route the traffic destined to the VPC through the VPN. diff --git a/deployment-strategies/amis-and-aws-cloudformation/README.md b/deployment-strategies/amis-and-aws-cloudformation/README.md new file mode 100644 index 0000000..fe2e3b1 --- /dev/null +++ b/deployment-strategies/amis-and-aws-cloudformation/README.md @@ -0,0 +1,258 @@ +# Amazon Machine Image (AMI) + +This guide explains how to deploy Defguard on AWS using official Amazon Machine Images (AMIs) and a preconfigured CloudFormation template. It walks you through launching all required components - including Core, Gateway, Proxy, and the PostgreSQL database - in a production-ready architecture with minimal manual configuration. + +You will learn how to subscribe to the AMIs, deploy the stack, attach SSL certificates, configure domains, and gain initial VPN access. The goal is to provide a repeatable, secure deployment method that allows you to get Defguard running quickly while still enabling advanced customization for larger or more complex environments. + +## AMI architecture + +We recommend using the AMIs with our CloudFormation template as it will automatically configure all components. + +You can import the CloudFormation template from the AWS Marketplace or from our GitHub [deployment repository](https://github.com/DefGuard/deployment). + +The template consists of the following main components: + +* **Defguard Core** +* **Defguard Gateway** - The template has only one Gateway instance, but Defguard supports running multiple Gateways if you need more VPN locations. +* **Defguard Proxy** +* **PostgreSQL Database** + +We recommend reading the [Architecture documentation](https://docs.defguard.net/in-depth/architecture) to understand how these components interact. + +

Diagram showing how the components are deployed using the template

+ +## Installation guide + +{% hint style="info" %} +In order to use the CloudFormation template you need to subscribe to the Defguard AMI product. The most straightforward way to obtain the template is to select it during the product delivery after subscribing to the product on the marketplace. +{% endhint %} + +After the CloudFormation template is uploaded either manually or via the marketplace, you will be prompted to fill the details of your deployment. This guide will go over the most important settings that need to be filled for a functional deployment. + +#### Prerequisites + +* Two domains: one for accessing Defguard Core (the main dashboard) and one for accessing Defguard Proxy (for external enrollment and device configuration) +* AWS issued SSL certificates for the two domains. See [this page](configuring-https-using-aws-certificate-manager.md) for more information. +* An SSH key added to AWS. This will allow you to access the EC2 instances later on. + +#### Obtaining the template + +1. Subscribe to the product on AWS Marketplace.
+ +
+2. After subscription succeeds, click the launch your software button:
+ +
+ + +3. Select the CloudFormation option and click "Launch with CloudFormation"
+ +
+ + +4. On the "Create stack" screen click next and proceed to the next section ( [#template-parameters](./#template-parameters "mention")). + +#### Template parameters + +After you are presented with the template configuration screen, make sure to fill out the following parameters: + +
+ +Choose a name for the stack. This can be chosen freely but must be unique across your deployed stacks. + +
+ +The `CoreDefaultAdminPassword` will be the password used for logging to the Defguard Core dashboard for the `admin` user. + +
+ +The `CoreUrl` is the URL under which your Defguard Core dashboard will be accessible. This should be filled according to the domain you chose before ([#prerequisites](./#prerequisites "mention")). For example, if your domain for Defguard Core is `defguard.example.com`, insert `https://defguard.example.com` here. + +
+ +This is the database password. Select a relatively strong password here as a very weak password may be rejected by the database system and may result in a deployment failure. + +
+ +This is the URL under which the Defguard Proxy will be accessible to users. Fill the field just like the `CoreUrl` field, but this time use the domain you chose for the Defguard Proxy ([#prerequisites](./#prerequisites "mention")). + +
+ +Insert here the ARN of the certificate you prepared earlier ([#prerequisites](./#prerequisites "mention")). This will auto configure HTTPS for both Defguard Proxy and Core. + +
+ +Provide here the name of your SSH key. This is required for SSH access to the EC2 instances. Note that manual configuration of firewall access on the SSH port (22) is required after the deployment. + +
+ +The VPN parameters allow for configuring the details of your VPN network (location). You may want to change the name of the location to better suit your deployment. By default, NAT is enabled on the VPN Gateway instance so connecting clients can automatically reach servers inside your private network (this is required to reach Defguard Core dashboard, for example). If you disable NAT, you will need to configure routing rules yourself. + +Make sure to also check the rest of the pre-filled parameters, as you may want to change some of them. The full list is available in the [#template-parameters-1](./#template-parameters-1 "mention") section. + +#### Stack options + +Next, select the behavior on deployment failure: + +
+ +We recommend cleaning up everything after failed deployment, to keep a clean state when retrying. + +
+ +The template contains several IAM roles that are used to grant access required for interacting with the AWS SecretManager to pass secrets securely between components during the deployment. + +The template also consists of a lambda function along with an IAM role which is responsible for creating a token that can be used by an admin to access the VPN for the first time. + +This needs to be accepted to proceed further. + +Now wait for the deployment to finish. If all went OK, you should see _CREATE\_COMPLETE_ status. + +#### Outputs + +After the deployment completes, you will receive a set of outputs in the "outputs" tab. This values are required for further configuration. + +
+ +#### Setting up your domains + +The template will provision two domains: `InternalProxyALBDNSName` and `PublicProxyALBDNSName` . The public domain points to the Defguard Proxy instance's reverse proxy, and the internal one to Core's. + +
+ +
+ +You can use those domains to setup CNAME records in your DNS provider configuration, so the domains you defined in the `ProxyUrl` and `CoreUrl` point to the correct load balancers (reverse proxies) and in result, to the correct components: + +
Your domainCNAME responseTarget component
<YOUR_DEFGUARD_CORE_DOMAIN><InternalProxyALBDNSName>Defguard Core (internal)
<YOUR_DEFGUARD_PROXY_DOMAIN><PublicProxyALBDNSName>Defguard Proxy (public)
+ +#### Configuring you first device using the desktop client + +The stack is now fully set up and you can try to access it. The dashboard is not publicly available, so you'll need to configure access to the VPN first. + +Use the token displayed in the `AdminFirstDeviceToken` CloudFormation output to add your first device. + +
+ +Check this [guide](https://docs.defguard.net/using-defguard-for-end-users/desktop-client/instance-configuration#adding-instance) on adding a new instance in the Desktop client, to learn more about the process. As the instance URL, use the URL you defined in your Defguard Proxy instance configuration section of the CloudFormation template (`ProxyUrl`). + +#### Accessing the dashboard + +After you use the `AdminFirstDeviceToken` as described in the previous section you will gain access to the VPN network and (by default) the VPC network. To access the Defguard Core dashboard, navigate to the URL you defined in the `CoreUrl` parameter. + +To login, use the default `admin` username and the password defined in `CoreDefaultAdminPassword`. + +## Customisation + +### Template parameters + +#### General + +* `SshKeyName` (optional): EC2 Key Pair name for SSH access to instances. If not provided, SSH access will not be available. Requires a manual setup of SSH security group rules afterwards. +* `StackPrefix` (optional): The prefix that all the deployed components will receive, for example the Defguard core EC2 instance will be named <`StackPrefix>-core-instance`. +* `SSLCertificateArn` (optional): The ARN of the AWS issued certificate to use for setting up HTTPS for Core and Proxy. This certificate must be valid for the domains specified in `CoreUrl` and `ProxyUrl`. If left empty, HTTPS won't be configured automatically. + +#### Core Instance + +* `CoreCookieInsecure` (optional): If set to `true`, Defguard Core will use insecure cookies. This is not recommended for production environments. Set it to `true` if you are using HTTP instead of HTTPS. +* `CoreGrpcPort` (optional): The gRPC port, default is `50051`. This is used for communication between Defguard components. +* `CoreHttpPort` (optional): The HTTP port on which Defguard Core should listen, default is `8000`. This is where the Defguard web UI will be accessible. +* `CoreInstanceType` (optional): The instance type (e.g., `t3.medium`, `m5.large`), default is `t3.micro`. +* `CoreLogLevel` (optional): The log level of Defguard Core, default is `info`. You can also set it to `error`, `debug` or `trace`. +* `CoreUrl` (required): The URL where Defguard Core will be accessible (e.g., `https://defguard.example.com`). This should be the URL that users will use to access the Defguard web interface. +* `CoreDefaultAdminPassword`: The password for the default `admin` user. Used to login to the web dashhboard. + +#### Database + +* `DbInstanceClass` (optional): The instance class for the PostgreSQL database, default is `db.t3.micro`. +* `DbName` (optional): The name of the PostgreSQL database, default is `defguard`. +* `DbPassword`: The password for the PostgreSQL database. +* `DbPort` (optional): The port on which the PostgreSQL database will listen, default is `5432`. +* `DbStorage` (optional): The storage size for the PostgreSQL database, default is `20`. This is the size in GB. +* `DbUsername` (optional): The username for the PostgreSQL database, default is `defguard`. + +#### Gateway Instance + +* `GatewayInstanceType` (optional): The instance type for the Gateway, default is `t3.micro`. +* `GatewayLogLevel` (optional): The log level for the Gateway, default is `info`. You can also set it to `error`, `debug` or `trace`. +* `GatewaySecret` (required): The secret used to authenticate the Gateway with Defguard Core. This should be a strong, random string, 64 characters long. + +#### Proxy Instance + +* `ProxyGrpcPort` (optional): The gRPC port for the Proxy, default is `50051`. +* `ProxyHttpPort` (optional): The HTTP port for the Proxy, default is `8000`. This is where the Defguard Proxy web UI will be accessible. The proxy UI is used for user enrollment. +* `ProxyInstanceType` (optional): The instance type for the Proxy, default is `t3.micro`. +* `ProxyLogLevel` (optional): The log level for the Proxy, default is `info`. You can also set it to `error`, `debug` or `trace`. +* `ProxyUrl` (required): The URL where the Defguard Proxy will be accessible (e.g., `https://proxy.defguard.example.com`). This should be the URL that users will use to access the Defguard Proxy web UI. + +#### Network configuration + +* `VpcCidr` (optional): The CIDR block for the VPC in which Defguard will be deployed, default is `10.0.0.0/16`. +* `VpcName` (optional): The name of the VPC, default is `defguard-vpc`. +* `PublicSubnet1Cidr` (optional): CIDR block for one of the public subnets. This can be chosen arbitrarily as long as it's within the VPC CIDR range. +* `PublicSubnet2Cidr` (optional): CIDR block for one of the public subnets. This can be chosen arbitrarily as long as it's within the VPC CIDR range. +* `PrivateSubnet1Cidr` (optional): CIDR block for one of the private subnets. This can be chosen arbitrarily as long as it's within the VPC CIDR range. +* `PrivateSubnet2Cidr` (optional): CIDR block for one of the private subnets. This can be chosen arbitrarily as long as it's within the VPC CIDR range. + +#### VPN Network (Location) configuration + +* `VpnNetworkAddress` (optional): The CIDR address for the VPN network, default is `10.10.10.1/24`. The VPN clients will receive IP addresses from this range. The gateway will have the first address in the range. +* `VpnNetworkName` (optional): The name of the VPN network (location). This is displayed both to the clients and in the Defguard web UI, default is `vpn1`. +* `VpnNetworkNat` (optional): If set to `true`, the VPN will have masquerading enabled, allowing clients to access other networks through the VPN (e.g., the internet). Default is `true`. +* `VpnNetworkPort` (optional): The UDP port on which the VPN will listen for incoming VPN connections, default is `51820`. + +### Customizing the deployment + +By default, the CloudFormation template will deploy Defguard with the settings according to the recommended architecture, that is: + +| Component | Port | Access allowed from | +| --------- | ------------ | ------------------- | +| Core | 8000 (HTTP) | Gateways | +| Core | 50055 (gRPC) | Gateways | +| Proxy | 50051 (gRPC) | Core | +| Proxy | 8000 (HTTP) | Anywhere | +| Gateway | 51820 (UDP) | Anywhere | + +You can customize the deployment by modifying the template or doing changes in the AWS Infrastructure Composer. + +To modify an existing stack deployed from the template, you can use the AWS Console, navigate to the CloudFormation service, select your stack, click on "Update stack" and then choose "Create a change set". + +![alt text](../../.gitbook/assets/image-5.png) + +Next, select how you want to update the stack. If you want to modify the parameters, select "Use existing template". + +![alt text](../../.gitbook/assets/image-8.png) + +If you want to modify the template itself, the easiest way is to edit it in the Infrastructure Composer: select "Edit in Infrastructure Composer" and click the "Edit in Infrastructure Composer" button. + +![alt text](../../.gitbook/assets/image-9.png) + +### Accessing the EC2 instances + +After deploying the CloudFormation template, the newly created EC2 instances should be visible in the AWS console in your target region: + +
+ +To access the instances, use the key provided in the `SshKeyName` parameter. Note that you will need to allow SSH access to the EC2 instances using their respective AWS security groups. The default user is `admin`. + +## Upgrading components + +{% hint style="warning" %} +It's important to backup your database before performing a backup. Make sure to also check the [upgrading.md](../upgrading.md "mention") before upgrading to a newer version. +{% endhint %} + +All Defguard components are installed from the Defguard APT repository. The upgrade process is as follows: + +1. SSH into the given component's EC2 instance +2. Execute the following commands: + + ``` + sudo apt update + sudo apt install --only-upgrade + ``` + +The corresponding package names can be found in the [Defguard APT repository documentation](../standalone-package-based-installation/defguard-apt-repository.md). + +## Troubleshooting and common issues + +All Defguard components are deployed as systemd services. Their configuration files can be found on the respective host machine under `/etc/defguard`. diff --git a/deployment-strategies/amis-and-aws-cloudformation/configuring-https-using-aws-certificate-manager.md b/deployment-strategies/amis-and-aws-cloudformation/configuring-https-using-aws-certificate-manager.md new file mode 100644 index 0000000..793a0f3 --- /dev/null +++ b/deployment-strategies/amis-and-aws-cloudformation/configuring-https-using-aws-certificate-manager.md @@ -0,0 +1,25 @@ +# Configuring HTTPS using AWS Certificate Manager + +This guide explains how to secure your Defguard deployment with HTTPS by using a public TLS certificate issued by AWS Certificate Manager (ACM). You will request a certificate for the domains used by Defguard Core and Defguard Proxy, validate domain ownership via DNS, and attach the certificate to your CloudFormation stack using its ARN. + +Once completed, AWS will automatically manage certificate provisioning and renewal, ensuring your Defguard instance is encrypted and trusted without manual certificate handling. + +Go to AWS console and open the Certificate Manager service page. + +Request a new certificate (if you don't have one already). + +
+ +A public certificate is enough. + +
+ +Specify the domains you will want to use for your Defguard instance (for accessing Defguard Proxy and Defguard Core). Those domains should be the same as those you'll use in `ProxyUrl` and `CoreUrl`. + +
+ +Next, you will need to validate your domain ownership by adding appropriate CNAME records in your DNS provider. Use the _CNAME name_ and _CNAME value_ values provided in the AWS console and set them in you domain's DNS. + +After you complete this step, your certificate can be used. Copy the ARN of your certificate and paste it into the `SSLCertificateArn` parameter in the CloudFormation template. + +
diff --git a/configuration.md b/deployment-strategies/configuration.md similarity index 82% rename from configuration.md rename to deployment-strategies/configuration.md index 6a8202c..5e4a5a9 100644 --- a/configuration.md +++ b/deployment-strategies/configuration.md @@ -8,7 +8,7 @@ Here you can find a list of all configurable things through environmental variab * [YubiBridge config](configuration.md#yubibridge-configuration) {% hint style="info" %} -If you are using [one-line installation](getting-started/one-line-install.md), everything is generated and configured automatically. +If you are using [one-line installation](../getting-started/one-line-install.md), everything is generated and configured automatically. {% endhint %} ## Core @@ -49,8 +49,8 @@ You can generate random strings for secrets with e.g.: * `DEFGUARD_AUTH_COOKIE_TIMEOUT`: Cookie lifetime period, default: `7d` ([Humantime documentation](https://docs.rs/humantime/latest/humantime/struct.Duration.html)) * `DEFGUARD_MFA_CODE_TIMEOUT`: Email code lifetime period, default: `60s` ([Humantime documentation](https://docs.rs/humantime/latest/humantime/struct.Duration.html)) * `DEFGUARD_SESSION_TIMEOUT`: Session lifetime period, default: `7d` ([Humantime documentation](https://docs.rs/humantime/latest/humantime/struct.Duration.html)) -* `HTTP_BIND_ADDRESS`: The IP address that the HTTP should bind to (available since version 1.5.0) -* `GRPC_BIND_ADDRESS`: The IP address that the gRPC should bind to (available since version 1.5.0) +* `DEFGUARD_HTTP_BIND_ADDRESS`: The IP address that the HTTP should bind to +* `DEFGUARD_GRPC_BIND_ADDRESS`: The IP address that the gRPC should bind to ### Database configuration @@ -71,7 +71,7 @@ This is of course not recommended in production but can be useful when testing w {% endhint %} * `DEFGUARD_COOKIE_INSECURE`: set cookies without the `Secure` flag; use only in dev environments when serving Defguard without HTTPS -* `DEFGUARD_COOKIE_DOMAIN` (optional): set the domain for auth cookies. By default, it's the domain from `DEFGUARD_URL`. Must be changed to base URL if you want to use [forward auth](admin-and-features/forward-auth.md). +* `DEFGUARD_COOKIE_DOMAIN` (optional): set the domain for auth cookies. By default, it's the domain from `DEFGUARD_URL`. Must be changed to base URL if you want to use [forward auth](../features/forward-auth.md). ### Stats cleanup configuration @@ -92,7 +92,7 @@ This is of course not recommended in production but can be useful when testing w ### gRPC server configuration -[More on that in this help page.](deployment-strategies/grpc-ssl-communication.md) +[More on that in this help page.](grpc-ssl-communication.md) * `DEFGUARD_GRPC_PORT`: the port on which the gRPC server should listen, default is `50055`. This port is used by Defguard Gateways to connect to your Core instance. * `DEFGUARD_GRPC_CERT` (optional): path to TLS certificate file @@ -102,20 +102,22 @@ This is of course not recommended in production but can be useful when testing w ### Proxy connection configuration * `DEFGUARD_PROXY_URL` (optional): proxy service gRPC endpoint URL -* `DEFGUARD_PROXY_GRPC_CA`(optional): path to TLS root certificate file, required if connecting to proxy gRPC service with a custom CA ([More on that in this help page.](deployment-strategies/grpc-ssl-communication.md)) +* `DEFGUARD_PROXY_GRPC_CA`(optional): path to TLS root certificate file, required if connecting to proxy gRPC service with a custom CA ([More on that in this help page.](grpc-ssl-communication.md)) ## Proxy service -Here are proxy ENV variables. gRPC configuration is described more [on this help page.](deployment-strategies/grpc-ssl-communication.md) +Here are proxy ENV variables. gRPC configuration is described more [on this help page.](grpc-ssl-communication.md) * `DEFGUARD_PROXY_HTTP_PORT`: port the proxy API server and Web UI will listen on, default `8080` * `DEFGUARD_PROXY_GRPC_PORT`: port the gRPCS server will listen on, default `50051` * `DEFGUARD_PROXY_GRPC_CERT` (optional): path to TLS certificate file -* `DEFGUARD_PROXY_GRPC_KEY`(optional): path to TLS key file. [More on that in this help page.](deployment-strategies/grpc-ssl-communication.md) +* `DEFGUARD_PROXY_GRPC_KEY`(optional): path to TLS key file. [More on that in this help page.](grpc-ssl-communication.md) * `DEFGUARD_PROXY_URL` - if you wish to use External OIDC enrollment/desktop client configuration, please set this value to the same as `DEFGUARD_ENROLLMENT_URL` in core. This is the address at which the proxy Web UI is available. * `DEFGUARD_PROXY_LOG_LEVEL` : [Logger](https://crates.io/crates/log) log level, default: `info`, supported: `debug`, `warn`, `error` -* `HTTP_BIND_ADDRESS`: The IP address that the HTTP should bind to (available since version 1.5.0) -* `GRPC_BIND_ADDRESS`: The IP address that the gRPC should bind to (available since version 1.5.0) +* `DEFGUARD_HTTP_BIND_ADDRESS`: The IP address that the HTTP should bind to +* `DEFGUARD_GRPC_BIND_ADDRESS`: The IP address that the gRPC should bind to +* `DEFGUARD_PROXY_RATELIMIT_PERSECOND` - The (average) number of requests per second made without being eventually rate limited +* `DEFGUARD_PROXY_RATELIMIT_BURST` - The number of requests allowed to be made in a short amount of time before being rate limited ## Gateway Configuration @@ -123,26 +125,29 @@ Here are proxy ENV variables. gRPC configuration is described more [on this help If you're using docker image you can pass this value as environmental variables or on binary you can pass them as arguments -* `DEFGUARD_GRPC_URL` , `-g ` - Defguard Core gRPC endpoint URL. This is used by the gateway to connect to your Defguard Core instance. If you configured the `DEFGUARD_GRPC_URL` variable on your Core instance before (as described in the [#grpc-server-configuration](configuration.md#grpc-server-configuration "mention") section), use the same value here. Otherwise, provide an URL that will allow the Gateway to reach your Core instance, e.g. `http://localhost:50055` if both Core and Gateway are running on the same host. +* `DEFGUARD_GRPC_URL` , `-g ` - Defguard Core gRPC endpoint URL. This is used by the gateway to connect to your Defguard Core instance. If you configured the `DEFGUARD_GRPC_URL` variable on your Core instance before (as described in the [#grpc-server-configuration](configuration.md#grpc-server-configuration "mention") section), use the same value here. Otherwise, provide an URL that will allow the Gateway to reach your Core instance, e.g. `http://localhost:50055` if both Core and Gateway are running on the same host. * `DEFGUARD_TOKEN` ,`-t ` - Token displayed in the Defguard Core web UI after completing the network wizard. It can be copied from the "Authentication Token" section on the Location Settings page. -
+
* `DEFGUARD_USERSPACE` , `-u` - Use userspace wireguard implementation, useful on systems without native wireguard support -* `DEFGUARD_GRPC_CA - path to ca file` more on this topic can be found [on this help page.](deployment-strategies/grpc-ssl-communication.md) +* `DEFGUARD_GRPC_CA - path to ca file` more on this topic can be found [on this help page.](grpc-ssl-communication.md) * `DEFGUARD_STATS_PERIOD` ,`-p ` - Defines how often (seconds) should interface statistics be sent to the Defguard server * `DEFGUARD_GATEWAY_NAME`, `--name ` - (optional) human-readable gateway name that will be displayed in Defguard webapp * `-s, --use-syslog` - enable logging to syslog * `RUST_LOG` : Logger log level, default: `info`, supported: `debug`, `warn`, `error` * `DEFGUARD_MASQUERADE` - controls whether the gateway automatically applies masquerade NAT firewall rule; defaults to `false` -* `DEFGUARD_DISABLE_FW_MGMT` - disables all firewall management by the gateway; this overrides `DEFGUARD_MASQUERADE` setting; defaults to `false` +* `DEFGUARD_DISABLE_FW_MGMT` - disables all firewall management by the gateway; this overrides `DEFGUARD_MASQUERADE` setting; defaults to `false` {% hint style="info" %} -`DEFGUARD_DISABLE_FW_MGMT` is meant as a workaround for running in incompatible environments, where our [default firewall integration](admin-and-features/access-control-list/firewall-internals.md) is not supported. +`DEFGUARD_DISABLE_FW_MGMT` is meant as a workaround for running in incompatible environments, where our [default firewall integration](../features/access-control-list/firewall-internals.md) is not supported. -As a consequence, enabling this option disables [ACL functionality](admin-and-features/access-control-list/) on a given gateway. +As a consequence, enabling this option disables [ACL functionality](../features/access-control-list/) on a given gateway. {% endhint %} -* `HTTP_BIND_ADDRESS`: The IP address that the HTTP should bind to (available since version 1.5.0) +* `DEFGUARD_IFNAME` - The network interface that will be created and used for the VPN traffic +* `DEFGUARD_FW_PRIORITY` - The NFT forward chain priority, which handles traffic filtering when ACLs are configured. Defaults to 0. Useful if the Defguard's forward chain conflicts with other chains. +* `HEALTH_PORT` - (optional) If a port number is provided an [HTTP healthcheck server](health-check.md#gateway) will be started +* `DEFGUARD_HTTP_BIND_ADDRESS` - (optional) the IP address that the HTTP healthcheck server should bind to #### Executing custom commands on VPN up/down @@ -239,3 +244,21 @@ syslog_socket = "/var/run/log" * `-p ` , `--provision `: Provision YubiKey with the following data * `-w ` , `--worker-token `: Secret worker token to secure gRPC communication, available on provisioners page * `-c ` , `--command `: Run command after provisioning and pass created keys as arguments + +### Troubleshooting the configuration + +Common configuration issues. + +#### Gateway + +`Error: Syslog(Initialization(Io(Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))` + +The selected syslog socket may be wrong. See the `syslog_socket` configuration option for the gateway: [#config-file](configuration.md#config-file "mention"). Set it to a correct syslog socket on your operating system. The default socket is valid for FreeBSD. + +#### Core + +`Cookie “defguard_session” has been rejected for invalid domain.` (browser console error) + +This issue most often takes the form of not being able to login without any obvious cause. The login button doesn't redirect and no relevant error message is displayed in the Defguard Core logs. In this case we recommend checking the browser logs (usually right click > inspect should open the developer tools along with the browser console). If you can see the above error, this means that your `DEFGUARD_URL` configuration option doesn't match the URL you use to access the dashboard at the moment. + +For example, if your login screen is at `http://my.domain.com:8000/auth/login` set `DEFGUARD_URL` to `` http://my.domain.com:8000` `` . diff --git a/deployment-strategies/deploying-to-production.md b/deployment-strategies/deploying-to-production.md new file mode 100644 index 0000000..c2da0d6 --- /dev/null +++ b/deployment-strategies/deploying-to-production.md @@ -0,0 +1,56 @@ +# Deploying to Production + +{% stepper %} +{% step %} +#### Gain knowledge + +Before you start your deployment, take a moment to learn about Defguard. + +The following articles will help you make deployment decisions and understand which features you may want to configure afterward. Make sure to read them carefully. + +* [Defguard's features](../about/features-overview.md) +* [Defguard's architecture](../in-depth/architecture/) +{% endstep %} + +{% step %} +#### Choose your deployment strategy + +Decide which deployment approach best fits your infrastructure and security requirements. Choose from different [deployment strategies](setting-up-your-instance.md#choose-your-deployment-strategy) and their recommended use cases. +{% endstep %} + +{% step %} +#### Prepare your environment + +Make sure your infrastructure meets all [system and network requirements](hardware-os-network-and-firewall-recommendations.md). +{% endstep %} + +{% step %} +#### Deploy using the chosen strategy + +Deploy your instance using the chosen [strategy](setting-up-your-instance.md#choose-your-deployment-strategy). Make sure to follow the right [deployment sequence](setting-up-your-instance.md#initial-deployment-sequence). +{% endstep %} + +{% step %} +#### Test if everything works as expected + +Follow our [guide](production-deployment-verification-guide.md) to test if your deployment in secure and works as expected. +{% endstep %} + +{% step %} +#### Configure features + +Follow detailed descriptions of [Defguard's features](broken-reference/). As you follow along, you can adjust the configuration directly within your instance. + +For a detailed list of all configurable things through environmental variables, options or configuration files follow [this reference](configuration.md). +{% endstep %} + +{% step %} +#### Your secure infrastructure is ready for use + +Optional but recommended additional steps: + +* [Securing internal gRPC communication](grpc-ssl-communication.md) +* [Configuring backups](setting-up-your-instance.md#backup) +* [Setting up for high availability and failover](high-availability-and-failover.md) +{% endstep %} +{% endstepper %} diff --git a/deployment-strategies/deployment-automation.md b/deployment-strategies/deployment-automation.md new file mode 100644 index 0000000..ffbb3b6 --- /dev/null +++ b/deployment-strategies/deployment-automation.md @@ -0,0 +1,111 @@ +# Deployment automation + +This guide will focus on ways of automating some aspects of the deployment of the Defguard components. + +### Gateway secret + +The Gateway secret is one of the [Core's configuration values](configuration.md#secrets-configuration) and is used to generate [Gateway authentication tokens](gateway.md). This value must be often generated automatically and then passed to components to achieve a fully automated process. + +The easiest way of generating the `DEFGUARD_GATEWAY_SECRET` would be using the following bash command: + +```bash +openssl rand -base64 64 | tr -d "=+/" | tr -d '\n' | cut -c1-"64" +``` + +### First location creation + +You can programmatically add a first network (location) by invoking the following command (using the Defguard binary): + +```bash +defguard --secret-key "" init-vpn-location \ +--name \ +--address \ +--endpoint \ +--port \ +--id 1 \ +--allowed-ips \ +--allowed-ips 2>&1 \ +| grep -Eo '^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$' +``` + +For example: + +```bash +defguard --secret-key "" init-vpn-location \ +--name network-name \ +--address 10.10.10.1/24 \ +--endpoint 127.0.0.1 \ +--port 50051 \ +--id 1 \ +--allowed-ips 10.10.10.1/24 \ +--allowed-ips 10.10.11.1/24 2>&1 \ +| grep -Eo '^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$' +``` + +The grep at the end is used to extract the Gateway token (JWT) that the command returns. The token should be [passed to the Gateway](configuration.md#gateway-configuration) in order to authenticate to Core. + +The Defguard binary location is dependent on the deployment method, an absolute path may be required here, e.g. `/usr/bin/defguard`. + +If the command doesn't produce an output, try running it without the grep, to check for any errors. + +Please note that the above command requires all your Defguard Core environment variables to be present (especially ones related to the database connection) during invocation. Your database also needs to be reachable. If your invocation environment doesn't have access to the Core's configuration variables, you should load them, for example: + +```bash +source /etc/defguard/core.conf && defguard --secret-key ... +``` + +Replace `/etc/defguard/core.conf` with the location of your Defguard Core environment variables. + +### Gateway token + +If for some reason you can't rely on the token that's output by the `init-vpn-location` command described in the [previous section](deployment-automation.md#first-location-creation), you can generate the token independently using scripts. + +To generate a Gateway authentication token, the Core's `DEFGUARD_GATEWAY_SECRET` value must be available to the script. Thus, your deployment process must generate the `DEFGUARD_GATEWAY_SECRET` before generating the token, and share the value of the secret, to the script that generates the token. + +The following example script can be used to generate Gateway's authentication token: + +```bash +#!/bin/bash + +base64url_encode() { + echo -n "$1" | openssl base64 -e -A | tr '+/' '-_' | tr -d '=' +} + +# The ID of the DefGuard network for which the gateway token is generated, +# if your deployment creates only one (first) network, this should be "1". +NETWORK_ID="1" +ISSUER="DefGuard" + +HEADER='{"alg":"HS256","typ":"JWT"}' +NOW=$(date +%s) +EXPIRATION=$(($NOW + 315360000)) +PAYLOAD=$(cat <
+ +We recommend also setting up certificates, to serve the traffic over HTTPS. Since Core is designed to be deployed in an internal network, we recommend selecting the DNS validation in NPM or uploading custom, already issued certificates. + +
+ +#### The configuration Here is the `.env` file with all configuration variables: -``` -# please generate each secret with: -# openssl rand -base64 55 | tr -d "=+/" | tr -d '\n' | cut -c1-63 -DEFGUARD_SECRET_KEY= -DEFGUARD_AUTH_SECRET= -DEFGUARD_GATEWAY_SECRET= -DEFGUARD_YUBIBRIDGE_SECRET= - -# if you plan to reverse-proxy defguard, please provide a full URL -# this URL will be shared in emails, enrollement messages, etc.: -DEFGUARD_URL=https://defguard.secure-internal.net -# Must be an effective domain of DEFGUARD_URL -# Changing DEFGUARD_WEBAUTHN_RP_ID will potentially break all your existing -# Webauthn credentials. -DEFGUARD_WEBAUTHN_RP_ID=defguard.secure-internal.net - -# accepted: info/debug/warning/error +```dotenv +# You can generate each secret with: +# openssl rand -base64 55 | tr -d "=+/" | tr -d '\n' | cut -c1-64 +## General Core configuration ## +DEFGUARD_AUTH_SECRET=<64_CHAR_RANDOM_SECRET> +DEFGUARD_YUBIBRIDGE_SECRET=<64_CHAR_RANDOM_SECRET> +DEFGUARD_GATEWAY_SECRET=<64_CHAR_RANDOM_SECRET> +DEFGUARD_SECRET_KEY=<64_CHAR_RANDOM_SECRET> +DEFGUARD_URL= +# DEFGUARD_WEBAUTHN_RP_ID= +# More details about RSA key here: +# https://docs.defguard.net/deployment-strategies/openid-rsa-key +# DEFGUARD_OPENID_KEY=rsakey.pem +# Accepted values: debug, info, warn, error DEFGUARD_LOG_LEVEL=info -# more info about custom CA here: -# https://docs.defguard.net/admin-and-features/setting-up-your-instance/grpc-ssl-communication#custom-ssl-ca-and-certificates -DEFGUARD_PROXY_GRPC_CA=/keys/ca.pem -# gRPC URL of proxy (see proxy config) -DEFGUARD_PROXY_URL=https://proxy.host:50051 -# more details about RSA key here: -# https://docs.defguard.net/admin-and-features/setting-up-your-instance/openid-rsa-key -DEFGUARD_OPENID_KEY=rsakey.pem +## Proxy/Enrollment configuration ## +DEFGUARD_ENROLLMENT_URL= # The URL of your Proxy - will be displayed during enrollment, email messages or desktop client configuration +DEFGUARD_PROXY_URL= +# DEFGUARD_COOKIE_INSECURE=true # If you are accessing the dashboard via HTTP instead of HTTPS, set this to true. -# the URL of your proxy - will be displayed during enrollment, email -# messages or desktop client configuration -DEFGUARD_ENROLLMENT_URL=https://enrollment.public.net +## GRPC Certificate configuration ## +# More info about securing gRPC communication here: https://docs.defguard.net/deployment-strategies/grpc-ssl-communication#custom-ssl-ca-and-certificates +# DEFGUARD_GRPC_CERT=/certs/core.pem +# DEFGUARD_GRPC_KEY=/certs/core.key +# DEFGUARD_PROXY_GRPC_CA=/certs/ca.pem -# PostgreSQL database configuration for core +## Database configuration ## +# For the database container +POSTGRES_DB=defguard +POSTGRES_USER=defguard +POSTGRES_PASSWORD= +# For the Core container DEFGUARD_DB_HOST=db DEFGUARD_DB_PORT=5432 +DEFGUARD_DB_PASSWORD= DEFGUARD_DB_USER=defguard -# please generate password: -# openssl rand -base64 55 | tr -d "=+/" | tr -d '\n' | cut -c1-63 -DEFGUARD_DB_PASSWORD= DEFGUARD_DB_NAME=defguard -# database configuration for "db" container -# must be same as above -# database will be initialized with these values (the user/pass set here) -POSTGRES_DB=defguard -POSTGRES_USER=defguard -POSTGRES_PASSWORD=!SAME_AS-GENERATED-DEFGUARD_DB_PASSWORD! ``` -## Proxy +## Deploying Proxy and reverse proxy service -Here is the docker-compose.yaml for the public proxy (enrollment service as well as desktop client configuration service). +Here is the `compose.yml` for Defguard Proxy (enrollment and desktop client configuration service). -To secure the gRPC communication, please generate the proxy CA and certificate, [more info here](grpc-ssl-communication.md#custom-ssl-ca-and-certificates). +```yml +services: + proxy: + image: ghcr.io/defguard/defguard-proxy:latest + restart: unless-stopped + container_name: "defguard-proxy" + ports: + - "50051:50051" + environment: + - DEFGUARD_PROXY_URL= + - DEFGUARD_LOG_LEVEL=info + # More info about securing gRPC communication here: + # https://docs.defguard.net/deployment-strategies/grpc-ssl-communication#custom-ssl-ca-and-certificates + #- DEFGUARD_PROXY_GRPC_CERT=/certs/proxy.pem + #- DEFGUARD_PROXY_GRPC_KEY=/certs/proxy.key + # volumes: + # - ./proxy.pem:/certs/proxy.pem + # - ./proxy.key:/certs/proxy.key + npm: + image: "jc21/nginx-proxy-manager:latest" + restart: unless-stopped + ports: + - "80:80" # HTTP Port + - "443:443" # HTTPS Port + - "81:81" # Admin Web Port + + environment: + TZ: "Europe/Warsaw" + + volumes: + - ./volumes/npm/data:/data + - ./volumes/npm/letsencrypt:/etc/letsencrypt -``` -proxy: - image: ghcr.io/defguard/defguard-proxy:latest - restart: unless-stopped - ports: - # HTTP port - should be secured by reverse proxy - - "127.0.0.1:8080:8080" - - "50051:50051" - environment: - # path in the volume to custom proxy cert & key - - DEFGUARD_PROXY_GRPC_CERT=ca/proxy.crt - - DEFGUARD_PROXY_GRPC_KEY=ca/proxy.key - volumes: - - ./ca/proxy.crt:ca/proxy.crt - - ./ca/proxy.key:ca/proxy.key - ``` -#### NGINX reverse-proxy +#### Nginx Proxy Manager -Now that you have proxy running, here is an example NGINX configuration to provide SSL termination: +The Reverse Proxy should be setup to access Defguard Proxy interface and allow serving all traffic destined to it via HTTPS. The Nginx Proxy Manager (NPM) can be configured by accessing the web interface at port 81. -``` -upstream defguard-proxy { - server 127.0.0.1:8080; -} - -server { - listen 443 http2; - server_name enrollment.public.net; - access_log /var/log/nginx/defguard-proxy.log; - error_log /var/log/nginx/defguard-proxy.error.log; - - # we assume you already have Let'sEncrypt SSL certificates - # for your domain - ssl_certificate /etc/letsencrypt/live/public.net/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/public.net/privkey.pem; - - client_max_body_size 20m; - - location / { - proxy_pass http://defguard-proxy; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } -} +The Nginx proxy should be configured to proxy the traffic to: `http://proxy:8080`. -``` +Make sure to turn on websockets supports, as some Defguard features rely on it. -## Gateway +
-For gateway to control the WireGuard kernel as well as network, it's recommended to run in the _host_ network mode as well as there are needed some docker CAPs: +NPM can automatically issue certificates for your Defguard Proxy, by performing a domain validation using port 80. Make sure this port is open when trying to configure certificates. Alternatively, DNS validation can be used. -``` +
+ +## Deploying Gateway service + +You'll need a token to deploy Defguard Gateway. You'll have to set it as `DEFGUARD_TOKEN` environment variable. Details on how to obtain the token [here](gateway.md). + +For Gateway to control the WireGuard kernel as well as network, it's recommended to run in the **host** network mode and adding the `NET_ADMIN` capability. + +```yml services: - gateway: - image: ghcr.io/defguard/gateway:latest - restart: unless-stopped - network_mode: "host" - environment: - - DEFGUARD_GRPC_URL=https://core-ip:50055 - - DEFGUARD_GRPC_CA=/ca.pem - - DEFGUARD_STATS_PERIOD=30 - # to get the token add a VPN location and get the token - - DEFGUARD_TOKEN=tokenFromCoreLocation - - DEFGUARD_GATEWAY_NAME=willBeVisibleInDefguardAsGWName - volumes: - # more info about custom CA here: - # https://docs.defguard.net/admin-and-features/setting-up-your-instance/grpc-ssl-communication#custom-ssl-ca-and-certificates - - ./ca.pem:/ca.pem - cap_add: - - NET_ADMIN + gateway: + image: ghcr.io/defguard/gateway:latest + restart: unless-stopped + container_name: "defguard-gateway" + network_mode: "host" + environment: + - DEFGUARD_GRPC_URL= + - DEFGUARD_TOKEN= + - DEFGUARD_LOG_LEVEL=info + # More info about securing gRPC communication here: + # https://docs.defguard.net/deployment-strategies/grpc-ssl-communication#custom-ssl-ca-and-certificates + # - DEFGUARD_GRPC_CA=/ca.pem + # volumes: + # - ./ca.pem:/ca.pem + cap_add: + - NET_ADMIN ``` - diff --git a/deployment-strategies/docker-images-and-tags.md b/deployment-strategies/docker-images-and-tags.md deleted file mode 100644 index ac2a114..0000000 --- a/deployment-strategies/docker-images-and-tags.md +++ /dev/null @@ -1,7 +0,0 @@ -# Docker images and tags - -All docker images for gateway, core, and proxy have these additional tags: - -* `latest` - this tag is for the latest production release - aka `vX.Y.Z` from the `main` branch -* `pre-release`- this tag is for the latest pre-production release - aka `vX.Y.Z-alpha/beta/rcX` from the `main` branch -* `dev` - this tag is for the latest development release from the `dev` branch. diff --git a/deployment-strategies/gateway.md b/deployment-strategies/gateway.md new file mode 100644 index 0000000..8ca082d --- /dev/null +++ b/deployment-strategies/gateway.md @@ -0,0 +1,55 @@ +--- +description: >- + This documentation will guide you through adding a new location and proceeding + with the Gateway deployment, enabling your devices to connect to it via VPN. +--- + +# Adding a location and getting a Gateway token + +## Adding a location in Defguard Core + +{% hint style="warning" %} +Please remember that **one gateway corresponds to one VPN location.** + +You can also deploy multiple gateways for one location for High Availability. +{% endhint %} + +Go to the address you set on `DEFGUARD_URL` with your browser and sign in using the credentials you set up during Core deployment. + +Go to the _VPN Overview_ module from the main menu and click the _Edit Locations settings_. + +

Adding a new location

+ +Then click the _Add new location tab_. + +
Adding a new location

Adding a new location

+ +Depending on what is more convenient for you, choose configuration from Wireguard file or do it manually. + +

Location wizard

+ +

Location configuration

+ +After saving configuration for location you should be redirect to Location overview page, where at the top right corner is `Edit Locations Settings` button, click on it. + +

Manual configuration

+ +In `Gateway server setup` copy two variables: `DEFGUARD_TOKEN` and `DEFGUARD_GRPC_URL` + +

Gateway server setup

+ +Also, if core has a custom SSL CA to secure gRPC communication, [you need the CA certificate (more here).](grpc-ssl-communication.md#custom-ssl-ca-and-certificates) + +## Deploy the Gateway service + +Proceed with deploying your Gateway service using the selected [deployment strategy](setting-up-your-instance.md#choose-your-deployment-strategy): + +* [package based](standalone-package-based-installation/#gateway-1) +* [Docker Compose](docker-compose.md#deploying-gateway-service) +* [Kubernetes](kubernetes.md#vpn-gateway-service) +* [Terraform](terraform.md#gateway-module) +* [AMIs and AWS CloudFormation](amis-and-aws-cloudformation/#gateway-instance) + +You can also check our guides on running Gateway on [OPNsense firewall](running-gateway-on-opnsense-firewall.md) or [MikroTik router](running-gateway-on-mikrotik-routers.md). + +If everything went well, Defguard Gateway should be connected to Defguard Core and you can start [adding new devices to your network](../features/network-devices.md#adding-a-new-network-device). diff --git a/deployment-strategies/gateway/README.md b/deployment-strategies/gateway/README.md deleted file mode 100644 index 3921a38..0000000 --- a/deployment-strategies/gateway/README.md +++ /dev/null @@ -1,148 +0,0 @@ -# Gateway - -{% hint style="info" %} -If you are looking for [gateway High Availability, go to this document.](../high-availability-and-failover.md#gateway-high-availability) -{% endhint %} - -## Pre-requirements - -{% hint style="warning" %} -Please remember that **one gateway corresponds to one VPN location.** - -You can also deploy multiple gateways for one location for High Availability. -{% endhint %} - -To deploy the gateway you need to have Defguard core running and know it's [gRPC url](../../configuration.md#core-configuration) (meaning what is the **host/ip** where the core is running and the **gRPC port** defined in core by DEFGUARD\_GRPC\_PORT configuration variable**)** and a **token.** - -**Token** can be obtained when you go to _VPN Locations -> Edit location settings (in top right corner) -> Select the desired location_ -> the right panel describes how to deploy the gateway for the location as well as lists the gateway authentication token: - -
- -Also, if core has a custom SSL CA to secure gRPC communication, [you need the CA certificate (more here).](../grpc-ssl-communication.md#custom-ssl-ca-and-certificates) - -## Package Install - -1. On the [release page](https://github.com/DefGuard/gateway/releases) find and download a correct software package for your system (currently DEB, RPM and TXZ are available). -2. Install the package using relevant system tools: - - **Ubuntu/Debian:** - - ```bash - sudo dpkg -i - ``` - - **Fedora/Red Hat Linux/SUSE:** - - ```bash - sudo rpm -i - ``` - - **FreeBSD:** - - ```bash - pkg add - ``` -3. Fill in the default configuration file (`/etc/defguard/gateway.toml`) with values corresponding to your Defguard installation (token and gRPC endpoint URL). -4. On systems with [systemd](https://systemd.io/), enable and start the **systemd** service: - - ```bash - sudo systemctl enable defguard-gateway.service - sudo systemctl start defguard-gateway.service - ``` - -On systems with rc.d (like FreeBSD, NetBSD), start the service. For example, on OPNsense: - -```bash -sudo /usr/local/etc/rc.d/defguard_gateway start -``` - -## Package Upgrade - -### FreeBSD/OPNsense - -1. Uninstall the current version. - - ```bash - pkg delete defguard-gateway - ``` -2. Install a newer version (as described above in [Package Install](./#package-install)). - - ```bash - pkg add - ``` -3. Restart Defguard Gateway service. - - ```bash - sudo /usr/local/etc/rc.d/defguard_gateway restart - ``` - -## Docker Compose - -To start Defguard Gateway using [Docker Compose](https://docs.docker.com/compose/): - -1. We prepared a [git repository](https://github.com/DefGuard/deployment) with Docker Compose configuration, clone it: - -``` -git clone --recursive https://github.com/DefGuard/deployment.git && cd deployment/gateway -``` - -2. Copy and fill in the .env file: - -```bash -cp .env.template .env -``` - -3. Finally, run the service with Docker Compose: - -```bash -docker compose up -``` - -If everything went well, Defguard Gateway should be connected to Defguard Core and you can start [adding new devices to your network](../../admin-and-features/network-devices.md#adding-a-new-network-device). - -## OPNsense plugin - -[OPNsense®](https://opnsense.org/) is an open source, feature rich firewall and routing platform, offering cutting-edge network protection. - -To start Defguard Gateway as OPNsense plugin: - -1. On the [release page](https://github.com/DefGuard/gateway/releases) find and download OPNsense package which will be named:\ - `defguard-gateway_VERSION_x86_64-unknown-opnsense.pkg` – this package **includes both Defguard Gateway and OPNsense plugin.** -2. Install the package: - -```bash -pkg add defguard-gateway_VERSION_x86_64-unknown-opnsense.pkg -``` - -3. Refresh your OPNsense UI by running command below: - -```bash -opnsense-patch -``` - -4. Go to your OPNsense UI and navigate to **VPN** > **Defguard Gateway**. - -
- -5. Fill out the form with appropriate values, click **Save**, and then click **Start/Restart.** - -{% hint style="info" %} -You can find detailed description of all fields [here](../../configuration.md#gateway-configuration). -{% endhint %} - -If everything went well, Defguard Gateway should be connected to Defguard Core and you can start [adding new devices to your network](../../admin-and-features/wireguard/remote-desktop-activation.md). - -See also: [how to configure Defguard in OPNsense](../../admin-and-features/setting-up-your-instance/gateway/) - -## Binary Install - -1. Checkout Gateway releases [here](https://github.com/DefGuard/gateway/releases) and download compatible binary from GitHub page. -2. Decompress and move to bin directory - -```sh -tar xcf ./gateway.tar.gz -sudo chmod +x gateway -sudo mv gateway /usr/bin/ -``` - -3. Start gateway `gateway -g -t ` diff --git a/deployment-strategies/hardware-os-network-and-firewall-recommendations.md b/deployment-strategies/hardware-os-network-and-firewall-recommendations.md new file mode 100644 index 0000000..6760690 --- /dev/null +++ b/deployment-strategies/hardware-os-network-and-firewall-recommendations.md @@ -0,0 +1,110 @@ +--- +description: >- + Before Defguard can be deployed please get familiar with the following + recommendations +--- + +# Hardware, OS, network and firewall recommendations + +## Server & environment requirements + +Defguard can be deployed on multiple servers (physical or virtual) or on a single server (which is not recommended). + +Recommended setup reflects the [general system architecture](../in-depth/architecture/) with components being split into three separate machines: + +1. **Dedicated server or Virtual Machine for Core (control plane)** - that is in the Intranet network segment, not exposed in the public Internet in any way. Core needs to be accessible from the local (secure) network and VPN (to access Defguard securely). Recommended hardware parameters: + 1. CPU: min. 1 CPU/vCPU per location - eg. if Defguard handles 2 VPN locations recommended is min. 2 CPU/vCPU + 2. RAM: min. 1GB per location + 3. Disk: min 8GB and more (since statistics will be gathered) +2. **Dedicated server or Virtual Machine for Proxy (external and public enrollment service)** - this server/VM needs to be deployed in DMZ/public/external systems network segment - as this service will be exposed and must be available publicly from the Internet. Recommended hardware parameters: + 1. CPU: min. 1 CPU/vCPU per location + 2. RAM: min. 1GB + 3. Disk: min 1GB +3. **Dedicated server or Virtual Machine for Gateway -** this server/VM needs to be deployed in: + 1. DMZ/public/external systems network segment - as this service will be exposed and must be available publicly from the Internet. + 2. Has access on Internal network interfaces to all network segments that will be exposed from VPN for users. + 3. Recommended hardware parameters: + 1. CPU: min. 1 CPU/vCPU per location + 2. RAM: min. 1GB + 3. Disk: min 4GB (mostly for logs) + +In general the hardware requirements will also have to be adjusted based on the number of active users. The numbers above should serve as a baseline. + +### Operating system and software requirements + +#### Package based installation + +Package based install requires Debian GNU/Linux min. 13.x or Ubuntu Linux min. 24.04.x + +#### Docker based installation + +Docker deployment requires the system to have [official Docker Engine installation](https://docs.docker.com/engine/install/) (not distribution based packages). + +## Network IP & DNS setup + +### Gateway server - where WireGuard VPN tunnels itself will be launched + +* **The** [**Gateway address**](../features/wireguard/create-your-vpn-network.md#gateway-address) and[ **Gateway Port**](../features/wireguard/create-your-vpn-network.md#gateway-port) **must be publicly available from the Internet** + +{% hint style="warning" %} +The server on which the Gateway is installed does not need to have the IP address (the same as the Gateway Address) assigned to it - can have internal network address. + +The Gateway Address is the address specified in the clients’ configuration – therefore, if this address is assigned for example to a Firewall or Load Balancer rather than the server hosting the Gateway, **the port from this address (Gateway Port) must be forwarded (e.g., via NAT) to the Gateway Port on the server where the Gateway is installed.** +{% endhint %} + +* must have all networks on internal interfaces addresses configured, that should be accessible from VPN +* **Recommended:** to have a public domain assigned to this IP for VPN server, eg. _vpn.company.com_ + +### Proxy - public web service for enrollment & desktop client configuration + +* **The** [**enrollment URL**](https://docs.defguard.net/deployment-strategies/configuration#enrollment-configuration) **(that proxy will be configured under and available for user and clients to reach) needs to be publicly available from the Internet.** + +{% hint style="warning" %} +The server on which the Proxy is installed does not need to have the IP address assigned to it which the enrollment URL domain points to - can have internal network address. + +If this address is assigned for example to a Firewall or Load Balancer rather than the server hosting the Gateway, **the port from this address (eg. if the enrollment URL is https://vpn-config.domain.com, then the port is 443) must be forwarded (e.g., via NAT) to the** [**DEFGUARD\_PROXY\_HTTP\_PORT**](https://docs.defguard.net/deployment-strategies/configuration#proxy-service) **on the server where the Proxy is installed.** +{% endhint %} + +* **must have a public enrollment domain assigned to this IP, **_**eg. enrollment.company.com (or vpn-config.company.com, etc..**_**)** + +### Core & database server + +* should be internal / private IP addresses accessible only from Intranet and VPN +* must have internal domain name assigned in the local network DNS server, eg. _defguard.company.com_ + +## Firewall settings + +### Hardened and most secure architecture + +Below is a typical Enterprise network segmentation diagram showing the minimum required segments for a De-Militarized Zone (DMZ) and the Intranet, along with the recommended placement of Defguard components within this setup: + +
+ +### One firewall setup + +For organizations with simpler network setups, we recommend an architecture that isolates Defguard components using VLANs: + +
+ +### Port & Firewall exposure summary + +#### Gateway + +1. Please open the public port you wish the VPN to be working on - eg. 50555 + +#### Proxy + +1. Please open the public 443 port on the server (recommended to rewrite port 80 to redirect to 443) +2. Please open gRPC port on the internal network - so that the **Defguard Core can connect to this port - more details here:** [**https://docs.defguard.net/deployment-strategies/configuration#proxy-service**](https://docs.defguard.net/deployment-strategies/configuration#proxy-service) + +#### Core + +1. Please open 443 port for web interface accessible only from local/VPN network +2. Please open a gRPC port **for the Gateway server to connect to this port via a local network - more info here:** [**https://docs.defguard.net/deployment-strategies/configuration#grpc-server-configuration**](https://docs.defguard.net/deployment-strategies/configuration#grpc-server-configuration) + +## Backup strategy + +In a production environment you should use your preferred backup solution to secure the following: + +* service configuration (.env file, service config files, compose configuration) +* database content (prefferably by doing a regular pgdump, not just filesystem-level backup) diff --git a/deployment-strategies/health-check.md b/deployment-strategies/health-check.md new file mode 100644 index 0000000..5b211f4 --- /dev/null +++ b/deployment-strategies/health-check.md @@ -0,0 +1,95 @@ +# Health check + +## Proxy + +[Proxy](https://github.com/defguard/proxy) provides health endpoint at `GET /api/v1/health` which checks whether the application is running. + +Example request: + +```sh +curl "https://enroll.example.com/api/v1/health" +``` + +Response: + +``` +"alive" - with status code 200 - Proxy is working +``` + +To verify gRPC services for **Proxy** are alive, there is endpoint at `GET /api/v1/health-grpc` that verify it. + +Example request: + +```bash +curl "https://enroll.example.com/api/v1/health-grpc" +``` + +Response: + +``` +"alive" with status code 200 - Proxy is working and is connected to CORE +"Not connected to Defguard Core" - with status code 503 - Proxy is working but is not connected to CORE +``` + +## Core + +To check if [**Core**](https://github.com/defguard/defguard) is working, you can use endpoint at `GET /api/v1/health` which verify it. + +Example request: + +```bash +curl "https://defguard.example.com/api/v1/health" +``` + +Response: + +``` +"alive" - with status code 200 - Core is working +``` + +To check if core gRPC service is alive, we recommend to use community tools like [grpc\_health\_probe](https://github.com/grpc-ecosystem/grpc-health-probe). + +Example request for core: + +```sh +./grpc_health_probe -addr=defguard.example.com:50055 +``` + +Example response: + +``` +status: SERVING +``` + +## Gateway + +You can enable in gateway config ([example config](https://github.com/DefGuard/gateway/blob/main/example-config.toml)) a health check port, by adding the following line: + +```toml +health_port = 55003 +``` + +In this example, gateway will open an additional HTTP port number 55003. Now we can use `GET /health` endpoint to verify whether gateway is working correctly. + +If running in Docker you can also enable it by setting the `HEALTH_PORT` [environment variable](configuration.md#environmental-variables-arguments). + +By default the HTTP server will listen on all interfaces, but if you prefer to bind only a specific IP you can set it by using the `http_bind_address` config option (or `DEFGUARD_HTTP_BIND_ADDRESS` environment variable). For example: + +```toml +http_bind_address = 10.0.10.20 +``` + +Example request: + +```sh +curl "http://gateway.example.com:55003/health" +``` + +Response: + +``` +"alive" - with status code 200 - Gateway is working and is connected to CORE +"Not connected to core" - with status code 503 - Gateway is working but is not connected to CORE +``` + +By default, no health check ports are open. diff --git a/deployment-strategies/high-availability-and-failover.md b/deployment-strategies/high-availability-and-failover.md index 488b3cd..5d45ed8 100644 --- a/deployment-strategies/high-availability-and-failover.md +++ b/deployment-strategies/high-availability-and-failover.md @@ -5,12 +5,12 @@ We support running multiple gateways for a single VPN instance or location, enabling active-passive configurations. Active-active configurations should also be possible but come with some caveats. Since our gateway uses a vanilla kernel WireGuard®, there are multiple approaches for implementation. {% hint style="info" %} -Please also see documentation of [Creating a New VPN location](../admin-and-features/wireguard/create-your-vpn-network.md) where each [location setting has information regarding high-availability](../admin-and-features/wireguard/create-your-vpn-network.md#vpn-location-settings). +Please also see documentation of [Creating a New VPN location](../features/wireguard/create-your-vpn-network.md) where each [location setting has information regarding high-availability](../features/wireguard/create-your-vpn-network.md#vpn-location-settings). {% endhint %} -#### Deploying multiple gateways for one location +### Deploying multiple gateways for one location -To have a multi-gateway setup for a given location, you will need to [deploy the gateway on each one of your servers](gateway/) under the same location. +To have a multi-gateway setup for a given location, you will need to [deploy the gateway on each one of your servers](gateway.md) under the same location. If you already have a gateway deployed and want to add another one for the location, go to _VPN Overview_ -> Click: _Edit Location Settings (in the top right corner)_, then choose the location you want to add the new gateway to, and follow the deployment instructions: @@ -23,17 +23,23 @@ The only thing left to do is to point your traffic to those gateways, which can * Floating public IP - if you choose this scenario, please remember that the IP must be the IP specified in the Location _Gateway Address._ In this scenario, the floating IP switches between your gateway servers, directing the traffic to one of the two gateways. * Proxy/load balancing - also remember that the proxy must be configured with the _Gateway Address and Gateway Port._ In this scenario, your clients connect to the proxy/load balancer, which direct the VPN traffic (UDP) to one of your gateway backends_._ -#### Active-active setups +#### Determining if multiple gateways are running -Active-active setups should also be possible but come with some caveats. Here are the currently known issues with such configurations: +All gateways that are successfully connected for the location are displayed under the Location in VPN Overview, here is an example for two gateways: -* Multiple running gateways bound to one location with network traffic distributed between them may produce invalid network usage statistics, making the network usage graphs and displays on the dashboard unreliable. Related issue: [https://github.com/DefGuard/defguard/issues/1022](https://github.com/DefGuard/defguard/issues/1022) +
-### Determining if multiple gateways are running +### Known issues -All gateways that are successfully connected for the location are displayed under the Location in VPN Overview, here is an example for two gateways: +#### **Session recovery in active-passive setups** -
+In active-passive deployments using floating IPs (e.g., VRRP), client sessions are not fully recovered when traffic fails over to a secondary gateway and later fails back to the primary one. After failback, clients may still appear as connected in the UI and continue reporting activity, but VPN traffic may stop flowing. In such cases, manual client reconnection is required to restore connectivity. Related issue: [https://github.com/DefGuard/defguard/issues/1909](https://github.com/DefGuard/defguard/issues/1909). + +### Active-active setups + +Active-active setups should also be possible but come with some caveats. Here are the currently known issues with such configurations: + +* Multiple running gateways bound to one location with network traffic distributed between them may produce invalid network usage statistics, making the network usage graphs and displays on the dashboard unreliable. This also causes MFA on VPN locations to not work properly. Related issue: [https://github.com/DefGuard/defguard/issues/1022](https://github.com/DefGuard/defguard/issues/1022) ### What is the gateway peers persistence (if core/proxy services fail) diff --git a/deployment-strategies/kubernetes.md b/deployment-strategies/kubernetes.md index b2c28dd..793dae6 100644 --- a/deployment-strategies/kubernetes.md +++ b/deployment-strategies/kubernetes.md @@ -45,6 +45,14 @@ If you have other ingress controller than traefik - you need to configure GRPC i * `ingress.hosts.web`: Web ingress address - Defguard web app will be available here. * `publicUrl`: Public URL your Defguard will be available under. Usually the same as ingress.hosts.web, but differs depending on your load balancer and/or reverse-proxy setup. +And finally, install the Helm chart in the namespace: + +``` +helm install --wait=true --namespace defguard defguard defguard -f values.yaml +``` + +### Proxy service + If you want to deploy the enrollment service along with your Defguard instance, you also need to configure values related to the `defguard-proxy`subchart: * `defguard-proxy.enabled`: enable the enrollment service @@ -53,8 +61,15 @@ If you want to deploy the enrollment service along with your Defguard instance, * `defguard-proxy.ingress.web.host`: enrollment service web ingress address (the enrollment website) * `defguard-proxy.ingress.grpc.host`: enrollment service gRPC ingress address (for communicating with core) -And finally, install the Helm chart in the namespace: +### VPN gateway service -``` -helm install --wait=true --namespace defguard defguard defguard -f values.yaml -``` +If you want to deploy the VPN gateway service along with your Defguard instance, you need to do it in two steps: + +* first deploy the core service and use the web UI to [setup a VPN location](../tutorials/step-by-step-setting-up-a-vpn-server/adding-additional-vpn-locations.md) +* copy the gateway token and proceed to deploying the gateway itself + + To deploy the gateway service, configure values related to the `defguard-gateway`subchart: + +* `defguard-gateway.enabled`: enable the VPN gateway service +* `defguard-gateway.token`: the gateway token generated in Web UI +* `defguard-gateway.grpcUrl`: URL where the core gRPC server is available (based on `defguard.ingress.grpc.host`) diff --git a/deployment-strategies/linux-kernel-wireguard-tuning.md b/deployment-strategies/linux-kernel-wireguard-tuning.md new file mode 100644 index 0000000..c3e9f15 --- /dev/null +++ b/deployment-strategies/linux-kernel-wireguard-tuning.md @@ -0,0 +1,111 @@ +--- +description: >- + This technical guide addresses requirements regarding WireGuard VPN latency, + throughput, resilience, and scalability by tuning Linux Kernel parameters (as + WireGuard is part of Linux Kernel). +--- + +# Linux Kernel WireGuard tuning + +## Introduction + +WireGuard is widely praised for its lean codebase and efficiency. However, the default Linux kernel settings are often tuned for general-purpose computing, not for acting as a high-speed router handling encrypted UDP traffic at scale. + +Here are some tuning parameters to achieve maximum performance (low latency), stability across changing networks (roaming), and high concurrency, we must tune three distinct layers. + +{% hint style="info" %} +Kernel **sysctl** settings optimize how the Linux kernel schedules packets and manages memory buffers. Add the following to `/etc/sysctl.d/99-wireguard-tuning.conf`. or `/etc/sysctl.conf` +{% endhint %} + +## Kernel tuning + +### Congestion Control & Queuing (Latency & Throughput) + +To reduce bufferbloat (latency spikes under load) and maximize throughput, we replace the default CUBIC algorithm with BBR (Bottleneck Bandwidth and Round-trip propagation time), which is less sensitive to packet loss and more aggressively seeks the optimal congestion window. + +```ini +# Use BBR congestion control +net.core.default_qdisc = fq +net.ipv4.tcp_congestion_control = bbr +``` + +### Memory & Buffers (Throughput) + +WireGuard uses UDP for data transport. By default, Linux kernel UDP buffer sizes are often too small for high-speed transfers (1 Gbps+), causing packets to be dropped in the kernel before WireGuard can process them. + +```ini +# Increase default and max receive/send window sizes (approx 16MB) +net.core.rmem_max = 16777216 +net.core.wmem_max = 16777216 +net.core.rmem_default = 262144 +net.core.wmem_default = 262144 +net.ipv4.udp_mem = 4096 87380 16777216 + +``` + +### Packet Processing & Forwarding (Efficiency) + +These settings allow the kernel to process packets faster and handle bursts of traffic without dropping them. + +```ini +# Enable IP Forwarding (Required for VPN) +net.ipv4.ip_forward = 1 + +# Increase the maximum length of the processor input queue +# (Prevents drops during traffic bursts) +net.core.netdev_max_backlog = 5000 + +# Increase the maximum number of connections waiting for acceptance +net.core.somaxconn = 8192 + +``` + +### Packet buffering + +In Linux, network cards (NICs) use **NAPI** (New API) polling to handle incoming packets. When an interrupt fires, the kernel disables further interrupts and polls the NIC, processing packets in batches. + +`net.core.netdev_budget` limits how many packets the kernel may process in a single SoftIRQ cycle before yielding the CPU and it's default is: 300 packets. + +* Too low value - Under heavy load (e.g., 100+ streaming users), the kernel yields too early, packets back up in the NIC buffer, and drops occur. +* Too high value - The networking stack can monopolize a CPU core, starving userspace processes and increasing overall latency. + +For high-performance VPN servers, we increase `netdev_budget` to favor network throughput and tune the companion setting `netdev_budget_usecs` to cap CPU time per polling cycle. Below you wil find some recommended values for multiple scenarios. + +#### Home/Small Office + +Meaning around \~20 users: The default 300 is fine and changing it won't be noticeable. + +### 50 VPN users and above + +``` +# --- NAPI Polling Budget Tuning --- + +# Increase packet budget (Default: 300). +# Allow the CPU to process up to 600 packets in one cycle. +# Beneficial for high PPS (packets per second) environments. +net.core.netdev_budget = 600 + +# Increase the time budget (Default: 2000us or 2ms). +# Allow the NAPI cycle to run for up to 4ms before yielding. +# Prevents the loop from aborting prematurely during heavy traffic bursts. +net.core.netdev_budget_usecs = 4000 +``` + +#### High throughput ≥ 10Gbps + +You may need values as high as `netdev_budget = 1200`, assuming you have a powerful CPU with Receive Packet Steering (RPS) enabled. + +## Multiple connection concurrency (egress via VPN) + +WireGuard is stateless, but the Linux firewall tracking (used for Masquerade or DNAT when configuring connection tracking and egress through VPN) is stateful. + +Here is a formula how to optimize netfliter parameters based on the following assumptions that one connected device is a UDP stream (VPN) and multiple TCP streams that the user/device "uses" for browsing/apps "exiting" via VPN: + +{% hint style="warning" %} +**Assumptation**:\ +\ +1 active user generates \~50-100 simultaneous connections +{% endhint %} + +
Parameter (Sysctl)Description10 Devices(Home/SOHO)100 Devices(SMB/Office)1,000 Devices(Enterprise/ISP)10,000 Devices(Data Center)
net.netfilter.nf_conntrack_maxCRITICAL. Max concurrent connections tracked.655361310725242885242880
net.core.somaxconnMax pending connections in queue.409640961638465535
net.core.netdev_max_backlogMax packets queued if kernel is busy.100050001638465535
net.core.netdev_budgetMax packets processed in one CPU cycle.3006006001200
net.core.rmem_max (Bytes)Max OS receive buffer size (UDP).16 MB16 MB32 MB128 MB
net.core.wmem_max (Bytes)Max OS send buffer size (UDP).16 MB16 MB32 MB128 MB
fs.file-maxSystem-wide file descriptor limit.Default10000010000005000000
Required System RAMMinimum RAM needed for state tables.512 MB1 GB4 GB32 GB+
+ diff --git a/openid-rsa-key.md b/deployment-strategies/openid-rsa-key.md similarity index 91% rename from openid-rsa-key.md rename to deployment-strategies/openid-rsa-key.md index c7abd7d..d68590d 100644 --- a/openid-rsa-key.md +++ b/deployment-strategies/openid-rsa-key.md @@ -1,4 +1,4 @@ -# OpenID RSA key +# Using RSA instead of HMAC for OpenID key By default, Defguard uses [HMAC](https://en.wikipedia.org/wiki/HMAC) algorithm for OIDC token validation and the. If you want to use [RSA](https://en.wikipedia.org/wiki/RSA_\(cryptosystem\)), you'll have to configure the Defguard core `DEFGUARD_OPENID_KEY` configuration variable with the path to the RSA private key. diff --git a/deployment-strategies/production-deployment-verification-guide.md b/deployment-strategies/production-deployment-verification-guide.md new file mode 100644 index 0000000..7f389b8 --- /dev/null +++ b/deployment-strategies/production-deployment-verification-guide.md @@ -0,0 +1,194 @@ +# Production deployment verification guide + +This guide helps you verify that your Defguard instance is operational, reachable through the expected network paths, and properly secured. + +The process will consist of the following steps: + +1. Verifying the configuration of your firewall rules. +2. Verifying your DNS resolution. +3. Testing the whole configuration. + +## Prerequisites + +Before proceeding, ensure that you deployed your Defguard environment according to the [recommendations](hardware-os-network-and-firewall-recommendations.md) and that the following components are operational: + +* 1 server running Defguard Core + * Located in an internal network segment (not exposed to the Internet) + * Reachable internally under a domain such as defguard.example.com +* 1 server running Defguard Proxy + * Located in a DMZ network segment + * Publicly accessible from the Internet under a domain such as proxy.example.com +* 1 server running Defguard Gateway + * Located in a DMZ network segment + * Publicly accessible from the Internet under a domain such as vpn.example.com +* A workstation with the Defguard Desktop Client installed and configured to test VPN connectivity. + +## Verify firewall policies + +Confirm that your firewall rules align with Defguard’s secure deployment model. + +| Component | Allowed inbound | Blocked inbound | Notes | +| --------- | -------------------------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------ | +| Core |
  • TCP 443 (from internal/VPN only)
  • gRPC server port (from Gateway)
| All public traffic | Core should never be directly exposed to the Internet. | +| Proxy |
  • TCP 443 (from public Internet)
  • gRPC server port (from Core)
| All other inbound traffic | Used for enrollment and client configuration. | +| Gateway |
  • UDP VPN port (from public Internet)
| All other inbound traffic | Only VPN and Core communication should be allowed. | + +## Verify DNS resolution + +Proper DNS configuration ensures that each Defguard component resolves to the correct IP address and network zone. + +Run: + +``` +dig +short vpn.example.com +dig +short proxy.example.com +dig +short defguard.example.com +``` + +Expected results: + +| Domain | Expected IP Type | Description | +| -------------------- | ------------------- | ------------------------------------------------------ | +| vpn.example.com | Public IP | Gateway server reachable from the Internet | +| proxy.example.com | Public IP | Proxy server for enrollment and configuration | +| defguard.example.com | Private/Internal IP | Core server, accessible only from internal/VPN network | + +## Test the environment + +After you've confirmed the proper network segmentation it's time to test it. + +### Testing while disconnected from the VPN + +Perform the following tests from the workstation where the Defguard Desktop Client is installed. + +Make sure the client is disconnected before running any commands. + +In this state: + +* ❌ You should not be able to reach the Defguard Core server. +* ✅ You should be able to reach the Defguard Proxy server. +* ✅ You should be able to reach the Defguard Gateway server (UDP port for VPN). + +#### Test: Defguard Core server reachability and ports + +Check the open ports on your Defguard Core server (replace the example domain with your actual one): + +``` +sudo nmap -Pn -sS defguard.example.com +``` + +Expected output: + +``` +Failed to resolve "defguard.example.com". +``` + +Interpretation: + +* The Core server is not reachable when disconnected from the VPN, which is the expected and secure configuration. + +#### Test: Defguard Proxy Server Reachability and Ports + +Check the open ports on your Defguard Proxy server: + +``` +sudo nmap -Pn -sS proxy.example.com +``` + +Expected output: + +``` +Host is up (0.0082s latency). +PORT STATE SERVICE +443/tcp open https +``` + +Interpretation: + +* The host is reachable from the Internet. +* Only port 443/tcp is open, as expected for HTTPS access. + +#### Test: Defguard Gateway Server Reachability + +Check if the Defguard Gateway server is reachable: + +``` +sudo nmap -Pn -sS vpn.example.com +``` + +Expected output: + +``` +Host is up (0.0082s latency). +``` + +Interpretation: + +* The host is reachable. +* The list of open TCP ports should be empty, as the Gateway primarily uses UDP for VPN connections. +* You’ll verify the UDP port functionality in the next step by testing an actual VPN connection. + +### Connecting to the VPN + +1. Open the Defguard Desktop Client. +2. Connect to your configured location. + +#### Test: Verify VPN Connectivity + +Once connected: + +1. Open your browser and navigate to the Defguard Core interface, for example: + + https://defguard.example.com +2. Sign in using an administrator account. + +If you can access the web panel, your VPN connection is active and functioning. + +Then, in the Core UI: + +* Go to VPN Overview page. You should see your connected device listed there. + +
+ +### Testing While Connected to the VPN + +Perform the following tests again while the Defguard client remains connected. + +In this state: + +* ✅ You should be additionally able to reach the Defguard Core server. + +#### Test: Defguard Core Server Reachability and Ports + +Check the open ports on your Defguard Core server: + +``` +sudo nmap -Pn -sS defguard.example.com +``` + +Expected output: + +``` +Host is up (0.021s latency). +PORT STATE SERVICE +443/tcp open https +``` + +Interpretation: + +* The host is reachable via the VPN tunnel. +* Port 443/tcp (HTTPS web interface) is open, which confirms proper VPN routing and Core access. + +## Summary + +✅ Firewall policies restrict traffic to approved ports. + +✅ DNS records resolve to the expected internal and public addresses. + +✅ Core is unreachable from the Internet and reachable only via VPN. + +✅ Proxy is publicly reachable only on port 443. + +✅ Gateway responds correctly and allows VPN connections. + +When all verifications and tests pass, your Defguard deployment is operational, properly segmented, and production-ready. diff --git a/deployment-strategies/reverse-proxy-configuration-using-nginx.md b/deployment-strategies/reverse-proxy-configuration-using-nginx.md new file mode 100644 index 0000000..db6ea02 --- /dev/null +++ b/deployment-strategies/reverse-proxy-configuration-using-nginx.md @@ -0,0 +1,221 @@ +# Reverse Proxy configuration using NGINX + +## Introduction + +This guide explains how to configure [NGINX](https://nginx.org/) as a reverse proxy for Defguard's components (Core and Proxy). The reverse proxy acts as an intermediary between users and Defguard services, handling HTTPS requests, routing internal gRPC communication, and ensuring encrypted connections between all components. + +To provide HTTPS encryption, this guide also uses [Certbot](https://certbot.eff.org/), a free, open-source tool from the [Let’s Encrypt](https://letsencrypt.org/) project. Certbot automatically issues and renews SSL/TLS certificates, allowing you to secure your Defguard domains without manual certificate management. + +### Installing NGINX and Certbot + +To install and prepare NGINX with Let’s Encrypt certificates: + +```bash +apt install nginx certbot +systemctl enable nginx.service +systemctl start nginx.service +``` + +Disable the default configuration to avoid conflicts: + +```bash +unlink /etc/nginx/sites-enabled/default +``` + +### Obtaining SSL Certificates + +Before configuring NGINX, issue valid SSL certificates for your domains.\ +In this example we use: + +* Core: **my-server.defguard.net** +* Enrollment (Proxy): **enroll.defguard.net** + +Generate certificates with Certbot: + +```bash +certbot certonly \ + --non-interactive \ + --agree-tos \ + --standalone \ + --email admin@yourdomain.com \ + -d my-server.defguard.net \ + -d enroll.defguard.net +``` + +Certbot will generate certificate in fullchain.pem and privkey.pem in the following paths: + +``` +/etc/letsencrypt/live/my-server.defguard.net +/etc/letsencrypt/live/enroll.defguard.net +``` + +### Defguard Core NGINX configuration + +Create a new configuration file for the Core service: + +`/etc/nginx/sites-available/my-server.defguard.net.conf` + +```nginx +upstream defguard { + server 127.0.0.1:8000; +} + +upstream defguard-grpc { + server 127.0.0.1:50055; +} + +server { + listen 443 ssl; + http2 on; + server_name my-server.defguard.net; + access_log /var/log/nginx/defguard.log; + error_log /var/log/nginx/defguard.e.log; + + ssl_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/my-server.defguard.net/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; + + client_max_body_size 128M; + + location / { + proxy_pass http://defguard; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } +} + +server { + listen 444 ssl http2; + server_name my-server.defguard.net; + access_log /var/log/nginx/defguard-grpc.log; + error_log /var/log/nginx/defguard-grpc.e.log; + + ssl_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/my-server.defguard.net/privkey.pem; + + client_max_body_size 200m; + + location / { + grpc_pass grpc://defguard-grpc; + } +} +``` + +Enable the configuration and reload NGINX: + +```bash +ln -s /etc/nginx/sites-available/my-server.defguard.net.conf /etc/nginx/sites-enabled/my-server.defguard.net.conf + +systemctl reload nginx.service +``` + +To verify, run: + +```bash +curl https://my-server.defguard.net/api/v1/health +# Expected output: +alive +``` + +{% hint style="info" %} +If you use this simple setup and run all services on one server, you can use [NGINX access restrictions](https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-tcp/) for securing core and allowing to access the _my-server.defguard.net_ only to selected networks - blocking the direct access from the Internet. +{% endhint %} + +### Defguard Proxy (Enrollment Service) NGINX configuration + +The Proxy service exposes APIs for enrollment, remote onboarding, and desktop client configuration.\ +Create its NGINX configuration file: + +`/etc/nginx/sites-available/enroll.defguard.net.conf` + +```nginx +upstream defguard-proxy { + server 127.0.0.1:8080; +} + +upstream proxy-grpc { + server 127.0.0.1:50051; +} + +server { + listen 443 ssl http2; + server_name enroll.defguard.net; + access_log /var/log/nginx/enroll.log; + error_log /var/log/nginx/enroll.e.log; + + ssl_certificate /etc/letsencrypt/live/enroll.defguard.net/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/enroll.defguard.net/privkey.pem; + + client_max_body_size 200m; + + location / { + proxy_http_version 1.1; + proxy_pass http://defguard-proxy; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 86400s; + proxy_send_timeout 86400s; + } +} + +server { + listen 444 ssl http2; + server_name enroll.defguard.net; + access_log /var/log/nginx/enroll-grpc.log; + error_log /var/log/nginx/enroll-grpc.e.log; + + ssl_certificate /etc/letsencrypt/live/enroll.defguard.net/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/enroll.defguard.net/privkey.pem; + + client_max_body_size 200m; + + location / { + grpc_pass grpc://proxy-grpc; + grpc_socket_keepalive on; + grpc_read_timeout 3000s; + grpc_send_timeout 3000s; + grpc_next_upstream_timeout 0; + + proxy_request_buffering off; + proxy_buffering off; + proxy_connect_timeout 3000s; + proxy_send_timeout 3000s; + proxy_read_timeout 3000s; + proxy_socket_keepalive on; + + keepalive_timeout 90s; + send_timeout 90s; + + client_body_timeout 3000s; + } +} +``` + +Enable and restart NGINX: + +```bash +ln -s /etc/nginx/sites-available/enroll.defguard.net.conf /etc/nginx/sites-enabled/enroll.defguard.net.conf + +systemctl restart nginx.service +``` + +### Security Recommendations + +* Only expose **HTTPS ports (443)** for web access. +* Do **not** expose internal **gRPC ports** (444, 50051, 50055) directly to the Internet. + +### Summary + +After completing the configuration: + +* Defguard Core is available at `https://my-server.defguard.net` +* Enrollment and onboarding services are available at `https://enroll.defguard.net` +* Both services are secured with SSL and reverse-proxied through NGINX. diff --git a/deployment-strategies/gateway/running-gateway-on-mikrotik-routers.md b/deployment-strategies/running-gateway-on-mikrotik-routers.md similarity index 93% rename from deployment-strategies/gateway/running-gateway-on-mikrotik-routers.md rename to deployment-strategies/running-gateway-on-mikrotik-routers.md index 8e802b0..93fddfa 100644 --- a/deployment-strategies/gateway/running-gateway-on-mikrotik-routers.md +++ b/deployment-strategies/running-gateway-on-mikrotik-routers.md @@ -1,4 +1,4 @@ -# Running gateway on MikroTik routers +# Running Gateway on MikroTik routers By leveraging the ability of some MikroTik routers to run Docker containers, it is possible to deploy the gateway directly on your router. @@ -9,9 +9,9 @@ Proceed with extra caution when working with your core infrastructure. All offic {% hint style="danger" %} Running the gateway on a MikroTik router is not fully supported. -Due to custom RouterOS kernel incompatibility this kind of deployment does not support [Access Control List](../../admin-and-features/access-control-list/) functionality. +Due to custom RouterOS kernel incompatibility this kind of deployment does not support [Access Control List](../features/access-control-list/) functionality. -To run the gateway you must explicitly disable firewall management using the [`DEFGUARD_DISABLE_FW_MGMT` option](../../configuration.md#gateway-configuration). +To run the gateway you must explicitly disable firewall management using the [`DEFGUARD_DISABLE_FW_MGMT` option](configuration.md#gateway-configuration). {% endhint %} ## Prerequisites @@ -19,7 +19,7 @@ To run the gateway you must explicitly disable firewall management using the [`D * RouterOS device with ARM or ARM64 architecture (popular home lab choices include RB4011 or RB5009) * `Container` package installed and enabled * Running Defguard core instance with a WireGuard location configured -* (optional) Self-signed certificate generated by following [gRPC SSL setup guide](../grpc-ssl-communication.md) +* (optional) Self-signed certificate generated by following [gRPC SSL setup guide](grpc-ssl-communication.md) ## Setup diff --git a/deployment-strategies/running-gateway-on-opnsense-firewall.md b/deployment-strategies/running-gateway-on-opnsense-firewall.md new file mode 100644 index 0000000..88388ba --- /dev/null +++ b/deployment-strategies/running-gateway-on-opnsense-firewall.md @@ -0,0 +1,48 @@ +# Running Gateway on OPNsense firewall + +## OPNsense plugin + +[OPNsense®](https://opnsense.org/) is an open source, feature rich firewall and routing platform, offering cutting-edge network protection. + +To start Defguard Gateway as OPNsense plugin: + +1. On the [release page](https://github.com/DefGuard/gateway/releases) find and download OPNsense package which will be named:\ + `defguard-gateway_VERSION_x86_64-unknown-opnsense.pkg` – this package **includes both Defguard Gateway and OPNsense plugin.** +2. Install the package: + +```bash +pkg add defguard-gateway_VERSION_x86_64-unknown-opnsense.pkg +``` + +3. Refresh your OPNsense UI by running command below: + +```bash +opnsense-patch +``` + +4. Go to your OPNsense UI and navigate to **VPN** > **Defguard Gateway**. + +
+ +5. Fill out the form with appropriate values, click **Save**, and then click **Start/Restart.** + +{% hint style="info" %} +You can find detailed description of all fields [here](configuration.md#gateway-configuration). +{% endhint %} + +If everything went well, Defguard Gateway should be connected to Defguard Core and you can start [adding new devices to your network](../features/wireguard/remote-desktop-activation.md). + +See also: [how to configure Defguard in OPNsense](../features/gateway.md) + +## Binary Install + +1. Checkout Gateway releases [here](https://github.com/DefGuard/gateway/releases) and download compatible binary from GitHub page. +2. Decompress and move to bin directory + +```sh +tar xcf ./gateway.tar.gz +sudo chmod +x gateway +sudo mv gateway /usr/bin/ +``` + +3. Start gateway `gateway -g -t ` diff --git a/deployment-strategies/setting-up-your-instance.md b/deployment-strategies/setting-up-your-instance.md index 8bedbe7..41b712c 100644 --- a/deployment-strategies/setting-up-your-instance.md +++ b/deployment-strategies/setting-up-your-instance.md @@ -1,75 +1,58 @@ +--- +description: >- + This documentation will guide you through the process of deploying your + Defguard instance. +--- + # Overview Welcome to the deployment strategies section of Defguard documentation. This guide covers the different ways you can deploy Defguard in your environment, from quick options using packages or Docker to more advanced setups with Kubernetes or Terraform. Whether you're running a small instance or preparing for a more complex production environment, this section will help you choose the deployment method that best fits your needs. -## Components - -Defguard comes with four main components: - -* **Core service** - main web UI and database -* **Proxy service** - used to safely expose a subset of public functionalities -* **VPN gateway server** - retrieves configuration from core and configures VPN interfaces on the gateway server -* **Provisioning station** - client application which can be started on any pc to auto-generate PGP keys for YubiKey - -There is one external component required: PostgreSQL database. - -## Hardware requirements - -All Defguard components are **very low resource-consuming**. All of them are written in [Rust](https://www.rust-lang.org) and are single binaries. As minimum setup as follows should be more than enough: - -| Resource | Minimum requirements | -| ------------ | ---------------------------- | -| CPU | 1 GHz | -| RAM | 2 GB (mostly for PostgreSQL) | -| Disk | 2 GB | -| Architecture | x86\_64, ARM64 | +## Before you begin -## Quick start +1. Make sure you understand [Defguard's architecture](../in-depth/architecture/), especially the division into the main components: Core, Proxy, Gateway. +2. Make sure your infrastructure is prepared by following our [recommendations](hardware-os-network-and-firewall-recommendations.md). -The easiest way to run your own Defguard instance is to use Docker and our [one-line install script](../getting-started/one-line-install.md). +## Initial deployment sequence -Just run the command below in your shell and follow the prompts: +Before deploying any Gateways, you must first install and configure the Core service. The Core acts as the central control plane - it manages configuration, authentication, and communication with all connected Gateways. -```bash -curl --proto '=https' --tlsv1.2 -sSf -L https://raw.githubusercontent.com/DefGuard/deployment/main/docker-compose/setup.sh -O && bash setup.sh -``` - -To learn more about the script and available options, please see the [documentation](../getting-started/one-line-install.md). - -## Manual deployment +Once the Core is running and accessible, log in to the admin interface and navigate to the Gateways section. Create a new Gateway entry to generate a unique registration token. This token will be used during the Gateway deployment process to securely link the Gateway instance with your Core. -If you prefer to configure and deploy Defguard manually, see the examples below: +After obtaining the token, proceed with deploying the Gateway service. During its initial setup, provide the generated token so that the Gateway can authenticate and register itself with the Core. Once registration is complete, the Gateway will appear in the Core dashboard and start receiving configuration updates automatically. -* [Docker Compose](docker-compose.md) -* [Kubernetes](kubernetes.md) +#### Long story short: -Client services +{% stepper %} +{% step %} +**Deploy Defguard Core service.** +{% endstep %} -* [Gateway](gateway/) -* [YubiBridge](../admin-and-features/yubikey-provisioning.md) +{% step %} +**Add a new location in Core's web interface and obtain a token.** -{% hint style="info" %} -On initial startup a new `admin` user will be created with a password which can be configured by the `DEFGUARD_DEFAULT_ADMIN_PASSWORD` environment variable (by default it's `pass123`). Use those credentials to log in and start exploring the system. -{% endhint %} +More on that [here](gateway.md). +{% endstep %} -### Tips +{% step %} +**Deploy Gateway configured with the token.** +{% endstep %} +{% endstepper %} -See our [Configuration](../configuration.md) document to check all configurable things before you start. And learn about our Architecture [here](../in-depth/architecture/) to see how it works. +## Choose your deployment strategy -## Updates +| Strategy name | Difficulty | Production readiness | Purpose | +| ------------------------------------------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------- | +| [One-line script](../getting-started/one-line-install.md) | :green\_circle: Easy, single command installation | :x: Doesn't follow the [recommendations](hardware-os-network-and-firewall-recommendations.md) | For testing purposes only | +| [Standalone packages](standalone-package-based-installation/) | :green\_circle: Easy, using apt and dpkg | :white\_check\_mark: If you followed the [recommendations](hardware-os-network-and-firewall-recommendations.md) | Small to medium deployment | +| [Docker Compose](docker-compose.md) | :yellow\_circle: Medium, Docker knowledge required | :white\_check\_mark: If you followed the [recommendations](hardware-os-network-and-firewall-recommendations.md) | Small to medium deployment | +| [Kubernetes](kubernetes.md) | :red\_circle: Advanced, requires a k8s cluster and administrator | :white\_check\_mark: If you followed the [recommendations](hardware-os-network-and-firewall-recommendations.md) | Large or enterprise deployments | +| [Terraform](terraform.md) | :red\_circle: Advanced, requires an AWS account and knowledge | :white\_check\_mark: | Large or enterprise deployments | +| [AMI and AWS CloudFormation](amis-and-aws-cloudformation/) | :red\_circle: Advanced, requires an AWS account and knowledge | :white\_check\_mark: | Large or enterprise deployments | -All services within the Defguard architecture can be updated independently, although it's recommended to always use newest version of services and update them all together to avoid situations like Core expecting some not existing feature in Gateway.\ -Check the GitHub repositories for each service to find their newest releases and release notes. +## Configure to your needs -* Docker - For Docker and Kubernetes based setup just change docker image version for service you want to update. -* Packages(DEB, RPM, etc.) - Currently we don't have any package repository so if you want to update your service installed as package you have to download new version from service repository. - -**GitHub Repositories:** - -* [Defguard Core](https://github.com/DefGuard/defguard/releases) -* [Defguard Proxy](https://github.com/DefGuard/proxy/releases) -* [Defguard Gateway](https://github.com/DefGuard/gateway/releases) -* [Defguard YubiBridge](https://github.com/DefGuard/YubiKey-Provision/releases) +See our [configuration documentation](configuration.md) to learn about all the settings you can change in your deployment. ## Backup @@ -84,4 +67,6 @@ docker exec {container_name} pg_dump -U {user_name} > {backup_file_name} ## Failover/HA/Clustering -For now the [Gateway](gateway/) can be deployed on multiple servers/firewall/routers for failover and HA - even if the connection to the Core will be lost, gateways will operate with their local cache/data and the VPN will be working. Same works the other way around if gateway don't work or is not available other features from Core like OpenID will be working. +The [Gateway](gateway.md) can be deployed on multiple servers, firewalls, or routers for failover and high availability (HA). Even if the connection to the Core is lost, gateways continue operating using their local cache and data, ensuring that the VPN remains functional. Conversely, if a gateway becomes unavailable, other Core features (such as OpenID) will continue to work normally. + +For details on deploying multiple Gateway to [High Availability and Failover](high-availability-and-failover.md) documentation. diff --git a/deployment-strategies/standalone-package-based-installation.md b/deployment-strategies/standalone-package-based-installation/README.md similarity index 55% rename from deployment-strategies/standalone-package-based-installation.md rename to deployment-strategies/standalone-package-based-installation/README.md index ab387bc..672fa35 100644 --- a/deployment-strategies/standalone-package-based-installation.md +++ b/deployment-strategies/standalone-package-based-installation/README.md @@ -2,52 +2,34 @@ ## Introduction -This guide will walk you through the process of installing and running Debian packages (.deb) for **core, gateway, proxy** services on one server - as a **simple example**. +This guide will walk you through the process of installing and running Defguard using system packages. -{% hint style="warning" %} -For production deployment we would recommend to divide services to multiple servers, e.g.: - -* Defguard Proxy (used for remote enrollment, onboarding and configuring desktop clients) should be on a DMZ node that is exposed in the Internet -* Defguard Gateway should be on your firewall/router -* Defguard Core (the main control plain panel) - should be in internal network (intranet) and available only by intranet or VPN itself. -{% endhint %} - -We will cover system requirements, additional dependencies, installation steps, and examples of configuration files and step by step running all services. In this example we will use nginx for a web server (proxy) exposing and securing web based services. - -Examples will be made by using [**Debian 12**](https://www.debian.org/releases/stable/releasenotes) **and Ubuntu based system.** +We will cover system requirements, additional dependencies, installation steps, and examples of configuration files and step by step running all services. In this example we will use NGINX for a web server (proxy) exposing and securing web based services. {% hint style="info" %} -We also provide **RPM packages** - the procedure is similar to the one for installing DEB packages. If you need help installing RPM packages[ this guide offers help.](https://phoenixnap.com/kb/how-to-install-rpm-file-centos-linux) +Make sure you understand [Defguard's architecture](../../in-depth/architecture/), especially the division into the main components: Core, Proxy, Gateway. {% endhint %} -Please also remember to [secure the setup after installation](standalone-package-based-installation.md#securing-the-setup). - -### Hardware Requirements - -All Defguard components are **very low resource-consuming**. All of them are written in [Rust](https://www.rust-lang.org) and are single binaries. As minimum setup as follows should be more then enough: - -| Resource | Minimum requirements | -| ------------ | ---------------------------- | -| CPU | 1 GHz | -| RAM | 2 GB (mostly for PostgreSQL) | -| Disk | 2 GB | -| Architecture | x86\_64, ARM64 | +{% hint style="warning" %} +This is a simple guide installing all components on a single server. For production make sure your infrastructure is prepared by following our [recommendations](../hardware-os-network-and-firewall-recommendations.md). +{% endhint %} -### System Requirements +## System Requirements Before proceeding with the installation, ensure your system meets the following requirements: -* Debian-based operating system (Debian, Ubuntu, etc.). +* One of the installed: + * Debian/Ubuntu + * Fedora/Red Hat Linux/SUSE + * FreeBSD * Administrative (sudo) privileges. * A server with a public IP address (and you know what that IP address is and to which interface it's assigned) - in this example we use: 185.33.37.51. * You have a domain name and know how to assign IP and manage subdomains, in our example: Defguard main url will be _my-server.defguard.net_ (and the subdomain is pointed to 185.33.37.51). -* Defguard [enrollment service](https://defguard.gitbook.io/defguard/help/enrollment) (run by proxy) that will enable [remote onboarding, enrollment](https://defguard.gitbook.io/defguard/help/enrollment) and [easy configuration for our Desktop Clients (by adding Defguard instances)](../help/desktop-client/instance-configuration.md#adding-instance) with instance URL and one simple token - in this tutorial we use: _enroll.defguard.net_ (this subdomain also points to 185.33.37.51). -* If you have a **firewall**, we assume you have **open port 443** in order to expose both Defguard and enrollment service, but also to automatically issue for these domains SSL Certificates. Port 444 (used for internal GRPC communication) **should not be exposed public.** +* Defguard [enrollment service](https://defguard.gitbook.io/defguard/help/enrollment) (run by proxy) that will enable [remote onboarding, enrollment](https://defguard.gitbook.io/defguard/help/enrollment) and [easy configuration for our Desktop Clients (by adding Defguard instances)](../../using-defguard-for-end-users/desktop-client/instance-configuration.md#adding-instance) with instance URL and one simple token - in this tutorial we use: _enroll.defguard.net_ (this subdomain also points to 185.33.37.51). +* If you have a **firewall**, we assume you have **opened port 443** in order to expose both Defguard and enrollment service, but also to automatically issue for these domains SSL Certificates. Port 444 (used for internal GRPC communication) **should not be publicly exposed.** * System clock is synchronized using Network Time Protocol (NTP). This is important for time-based one-time password (TOTP) codes. -### Prerequisites - -#### PostgreSQL +## Installing a database Defguard Core uses [PostgreSQL](https://www.postgresql.org) database, so if you do not have installed and configured yet, you can do it in this section. For this tutorial we need to create **a user with superuser privileges and database**. @@ -77,37 +59,24 @@ defguard=# exit * we created `.pgpass` file that consist of `::::` * we connected into the `defguard` database to verify `defguard` user can communicate with the database -#### NGINX - -To expose our services in the server we need to configure a reverse proxy server. For this we will use nginx web server with ssl certificates for enabling https protocol. - -To get started, we need to install: - -``` -apt install nginx certbot -``` - -Enable nginx service +## Installing packages -``` -systemctl enable nginx.service -systemctl start nginx.service -``` +{% hint style="info" %} +Defguard also have public APT repository, if you want know how to set it up, follow [this guide](defguard-apt-repository.md). +{% endhint %} -Disable all default domains: +### Core -``` -unlink /etc/nginx/sites-enabled/default -``` +You can find the URL to your package from the releases of the Core component on [GitHub](https://github.com/DefGuard/defguard/releases). -## Installing packages +
OS distributionOS architectureRelease artifact naming convention
Debian/Ubuntux86defguard-X.Y.Z-x86_64-unknown-linux-gnu.deb
Fedora/Red Hat Linux/SUSEx86defguard-X.Y.Z-x86_64-unknown-linux-gnu.rpm
FreeBSDx86defguard-X.Y.Z_x86_64-unknown-freebsd.pkg
-### Core service +Choose the release you want to install, then choose the right package from the list of release's assets, and copy the package URL. -Navigate to [core repository release](https://github.com/DefGuard/defguard/releases) and choose version of core package that you want to obtain that has debian package and then swap `` in the following command: +Download the package to your server using `wget:` ``` -wget https://github.com/DefGuard/defguard/releases/download//defguard--x86_64-unknown-linux-gnu.deb +wget ``` Example: @@ -116,31 +85,41 @@ Example: wget https://github.com/DefGuard/defguard/releases/download/v0.11.0/defguard-0.11.0-x86_64-unknown-linux-gnu.deb ``` -You can also download directly from the Github realse page, but please note that you should know the path where this could be storead after downloading. Once the package is downloaded, install it using dpkg: +You can also download directly from the Github release page, but please note that you should know the path where this could be stored after downloading. + +Once the package appropriate for your distribution is downloaded, install it using the appropriate system tool: ``` -dpkg -i /defguard--x86_64-unknown-linux-gnu.deb -``` +# on Debian/Ubuntu +sudo dpkg -i /defguard-X.Y.Z-x86_64-unknown-linux-gnu.deb -Example: +# on Fedora/Red Hat Linux/SUSE +sudo rpm -i /defguard-X.Y.Z-x86_64-unknown-linux-gnu.rpm -``` -dpkg -i defguard-0.11.0-x86_64-unknown-linux-gnu.deb +# FreeBSD +pkg install openssl +pkg add /defguard-X.Y.Z_x86_64-unknown-freebsd.pkg ``` -You can check is core installed properly: +You can check if Defguard Core has been installed properly: ``` # defguard -V -defguard 0.11.0 +defguard_common 1.6.0 ``` -### Gateway service +### Gateway -Navigate to [gateway repository release](https://github.com/DefGuard/gateway/releases) and choose version of core package that you want to obtain that has debian package and then swap `` in the following command: +You can find the URL to your package from the releases of Defguard Gateway on [GitHub](https://github.com/DefGuard/gateway/releases). + +
OS discibutionOS architectureRelease artifact naming convention
Debian/Ubuntux86defguard-gateway_X.Y.Z_x86_64-unknown-linux-gnu.deb
Debian/UbuntuARMdefguard-gateway_X.Y.Z_aarch64-unknown-linux-gnu.deb
Fedora/Red Hat Linux/SUSEx86defguard-gateway_X.Y.Z_x86_64-unknown-linux-gnu.rpm
FreeBSDx86defguard-gateway_X.Y.Z_x86_64-unknown-freebsd.pkg
+ +Choose the release you want to install, then choose the right package from the list of release's assets, and copy the package URL. + +Download the package to your server using `wget:` ``` -# wget https://github.com/DefGuard/gateway/releases/download//defguard-gateway__x86_64-unknown-linux-gnu.deb +wget ``` Example: @@ -149,16 +128,26 @@ Example: # wget https://github.com/DefGuard/gateway/releases/download/v0.7.0/defguard-gateway_0.7.0_x86_64-unknown-linux-gnu.deb ``` -You can also download directly from the Github realse page, but please note that you should know the path where this could be storead after downloading. Once the package is downloaded, install it using dpkg: +You can also download directly from the Github release page, but please note that you should know the path where this could be stored after downloading. + +Once the package appropriate for your distribution is downloaded, install it using the appropriate system tool: ``` -dpkg -i /defguard-gateway__x86_64-unknown-linux-gnu.deb +# on Debian/Ubuntu +sudo dpkg -i /defguard-gateway-X.Y.Z-x86_64-unknown-linux-gnu.deb + +# on Fedora/Red Hat Linux/SUSE +sudo rpm -i /defguard-gateway-X.Y.Z-x86_64-unknown-linux-gnu.rpm + +# FreeBSD +pkg install openssl +pkg add /defguard-gateway-X.Y.Z_x86_64-unknown-freebsd.pkg ``` Example: ``` -dpkg -i defguard-gateway_0.7.0_x86_64-unknown-linux-gnu.deb +sudo dpkg -i defguard-gateway_0.7.0_x86_64-unknown-linux-gnu.deb ``` You can check is core installed properly: @@ -168,12 +157,18 @@ You can check is core installed properly: defguard-gateway 0.7.0 ``` -### Proxy service +### Proxy + +You can find the URL to your package from the releases of Defguard Proxy component on [GitHub](https://github.com/DefGuard/proxy/releases). + +
OS discibutionOS architectureRelease artifact naming convention
Debian/Ubuntux86defguard-proxy-X.Y.Z-x86_64-unknown-linux-gnu.deb
Fedora/Red Hat Linux/SUSEx86defguard-proxy-X.Y.Z-x86_64-unknown-linux-gnu.rpm
+ +Choose the release you want to install, then choose the right package from the list of release's assets, and copy the package URL. -Navigate to [proxy repository release](https://github.com/DefGuard/proxy/releases) and choose version of core package that you want to obtain that has debian package and then swap `` in the following command: +Download the package to your server using `wget:` ``` -wget https://github.com/DefGuard/proxy/releases/download/>/defguard-proxy--x86_64-unknown-linux-gnu.deb +wget ``` Example: @@ -182,7 +177,9 @@ Example: wget https://github.com/DefGuard/proxy/releases/download/v0.5.0/defguard-proxy-0.5.0-x86_64-unknown-linux-gnu.deb ``` -You can also download directly from the Github realse page, but please note that you should know the path where this could be storead after downloading. Once the package is downloaded, install it using dpkg: +You can also download directly from the Github release page, but please note that you should know the path where this could be stored after downloading. + +Once the package appropriate for your distribution is downloaded, install it using the appropriate system tool: ``` dpkg -i /defguard-proxy--x86_64-unknown-linux-gnu.deb @@ -191,7 +188,17 @@ dpkg -i /defguard-proxy--x86_64-unknown-linux-gnu.deb Example: ``` -dpkg -i defguard-proxy-0.5.0-x86_64-unknown-linux-gnu.deb +# on Debian/Ubuntu +sudo dpkg -i /defguard-proxy-X.Y.Z-x86_64-unknown-linux-gnu.deb +# if you added apt repository +sudo apt install defguard-proxy + +# on Fedora/Red Hat Linux/SUSE +sudo rpm -i /defguard-proxy-X.Y.Z-x86_64-unknown-linux-gnu.rpm + +# FreeBSD +pkg install openssl +pkg add /defguard-proxy-X.Y.Z_x86_64-unknown-freebsd.pkg ``` You can check is core installed properly: @@ -203,21 +210,7 @@ defguard-proxy 0.5.0 ## Running Defguard -### Generating SSL Certificates with Let'sEncrypt - -Before we run Defguard and configure the reverse proxy, first let's prepare SSL certificates that will be used by the NGINX service. We will generate a certificate for two domains we use in this example: _my-service.defguard.net_ and _enroll.defguard.net_: - -``` -certbot certonly --non-interactive --agree-tos --standalone --email admin@teonite.com -d my-server.defguard.net -d enroll.defgurd.net -``` - -Certbot will generate certificate in fullchain.pem and privkey.pem in path: - -`/etc/letsencrypt/live/my-server.defguard.net` - -`/etc/letsencrypt/live/enrolldefguard.net` - -### Core - the control plain +### Core To run core service we need to configure `/etc/defguard/core.conf`. @@ -227,7 +220,7 @@ To generate any secret (which **we recommend to be 64 chars)**, use the followin `openssl rand -base64 55 | tr -d "=+/" | tr -d '\n' | cut -c1-64` {% endhint %} -As previously mentioned, in this tutorial we wil use server domain `my-server.defguard.net`. +As previously mentioned, in this tutorial we will use server domain `my-server.defguard.net`. Example `/etc/defguard/core.conf`: @@ -281,15 +274,19 @@ DEFGUARD_DB_PASSWORD="defguard" DATABASE_URL="postgresql://defguard:defguard@localhost/defguard" ``` -**If you have configured your postgres with different names than in** [**PostgreSQL guide**](standalone-package-based-installation.md#postgresql)**, you can change it in DB configuration part. LDAP configuration is not part of this tutorial, you can also commented those lines.** +**If you have configured PostgreSQL database with different names than in** [**PostgreSQL guide**](./#postgresql)**, you can change it in DB configuration part. LDAP configuration is not part of this tutorial, you can also commented those lines.** -**We will back to this configuration to connect Defguard core with proxy in the** [**Run proxy**](standalone-package-based-installation.md#run-proxy) **section. For now `DEFGUARD_PROXY_URL` is commented.** +**We will back to this configuration to connect Defguard core with proxy in the** [**Run proxy**](./#run-proxy) **section. For now `DEFGUARD_PROXY_URL` is commented.** -After changes, you can simply enable and start your Defguard core service: +After changes, you can simply enable and start your Defguard Core service: ``` +# on systems with systemd (like Debian, Ubuntu, Fedora/Red Hat Linux/SUSE) systemctl enable defguard.service systemctl start defguard.service + +# on systems with rc.d (like FreeBSD, NetBSD) +sudo /usr/local/etc/rc.d/defguard start ``` To see logs, type journalctl command: @@ -306,87 +303,7 @@ Jul 29 13:57:19 defguard-testing defguard[2776504]: 2024-07-29T11:57:19.747717Z Jul 29 13:57:19 defguard-testing defguard[2776504]: 2024-07-29T11:57:19.780563Z INFO defguard: Started web services ``` -#### Configuring NGINX reverse proxy with SSL - -Now, we are able to create our first nginx config for Defguard core service with _my-server.defguard.net_. - -Create config file `/etc/nginx/site-available/my-server.defguard.net.conf`, example config file for _my-server.defguard.ent_ should look like this: - -``` -upstream defguard { - server 127.0.0.1:8000; -} - -upstream defguard-grpc { - server 127.0.0.1:50055; -} - -server { - listen 443 ssl http2; - server_name my-server.defguard.net; - access_log /var/log/nginx/defguard.log; - error_log /var/log/nginx/defguard.e.log; - - ssl_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/my-server.defguard.net/privkey.pem; - ssl_trusted_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; - - client_max_body_size 128M; - - location / { - proxy_pass http://defguard; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } -} - -server { - listen 444 ssl http2; - server_name my-server.defguard.net; - access_log /var/log/nginx/defguard-grpc.log; - error_log /var/log/nginx/defguard-grpc.e.log; - - ssl_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/my-server.defguard.net/privkey.pem; - - client_max_body_size 200m; - - location / { - grpc_pass grpc://defguard-grpc; - } -} -``` - -Link it to `/etc/nginx/site-available/` - -``` -ln -s /etc/nginx/sites-available/my-server.defguard.net.conf /etc/nginx/sites-enabled/my-server.defguard.net.conf -``` - -Restart nginx.service to activate changes: - -``` -systemctl reload nginx.service -``` - -Test your domain on another terminal tab - -``` -$ curl https://my-server.defguard.net/api/v1/health -alive -``` - -Success! We can move on to the next service. - -{% hint style="danger" %} -If you use this simple setup and run all services on one server, you can use [NGINX access restrictions](https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-tcp/) for securing core and allowing to access the _my-server.defguard.net_ only to selected networks - blocking the direct access from the Internet. -{% endhint %} - -### Gateway - the WireGuard VPN service +### Gateway To run gateway, we should do two things: @@ -395,24 +312,7 @@ To run gateway, we should do two things: #### Setup location for gateway -Now, after setting up core service you should go to the website that you set on `DEFGUARD_URL`. The link should redirect you to login page. To log in type these credentials from `/etc/defguard/core.conf` - -* login: admin -* password: `DEFGUARD_DEFAULT_ADMIN_PASSWORD` (by default: pass123) - -Now we can configure our first location. Depends on what is more convenient for you, choose configuration from Wireguard file or do it manually. - -

Location wizard

- -

Location configuration

- -After saving configuration for location you should be redirect to Location overview page, where at the top right corner is `Edit Locations Settings` button, click on it. - -

Manual configuration

- -In `Gateway server setup` copy two variables: `DEFGUARD_TOKEN` and `DEFGUARD_GRPC_URL` - -

Gateway server setup

+Follow [this guide](../gateway.md) for setting up the location in Defguard Core web interface. You should leave the guide with a token for your new Gateway instance and use it in the following configuration. #### Create config file @@ -478,9 +378,18 @@ syslog_socket = "/var/run/log" Now we can run gateway service with configuration above: ``` -# systemctl enable defguard-gateway.service -# systemctl start defguard-gateway.service -# journalctl -u defguard-gateway.service | tail -n 50 +# on systems with systemd (like Debian, Ubuntu, Fedora/Red Hat Linux/SUSE) +systemctl enable defguard-gateway.service +systemctl start defguard-gateway.service + +# on systems with rc.d (like FreeBSD, NetBSD) +sudo /usr/local/etc/rc.d/defguard_gateway start +``` + +Check the logs of the gateway service: + +``` +journalctl -u defguard-gateway.service | tail -n 50 [2024-07-27T16:37:56Z INFO defguard_gateway::gateway] Starting defguard gateway version 0.7.0 with configuration: Config { token: "***", name: Some("Gateway on server X"), grpc_url: "https://my-server.defguard.net:444/", userspace: false, grpc_ca: None, stats_period: 60, ifname: "wg0", pidfile: None, use_syslog: false, syslog_facility: "LOG_USER", syslog_socket: "/var/run/log", config_path: None, pre_up: None, post_up: None, pre_down: None, post_down: None, health_port: None } [2024-07-27T16:37:56Z INFO defguard_gateway::gateway] gRPC server connection setup done. [2024-07-27T16:37:56Z INFO defguard_wireguard_rs::wgapi_linux] Creating interface wg0 @@ -502,13 +411,22 @@ On the other side, core service should print those informations: 2024-07-27T16:37:56.388810Z INFO defguard::grpc::gateway: Starting update stream to gateway: user, network [ID 1] Szczecin ``` -### Proxy - enrollment, onboardin and desktop configuration service +### Proxy + +To run proxy service (for [remote onboarding & enrollment](../../using-defguard-for-end-users/enrollment/)), we can do it by: + +``` +# on systems with systemd (like Debian, Ubuntu, Fedora/Red Hat Linux/SUSE) +systemctl enable defguard-proxy.service +systemctl start defguard-proxy.service + +# on systems with rc.d (like FreeBSD, NetBSD) +sudo /usr/local/etc/rc.d/defguard_proxy start +``` -To run proxy service (for [remote onboarding & enrollment](../help/enrollment/)), we can do it by: +Check the logs afterwards. Should look like this: ``` -# systemctl enable defguard-proxy.service -# systemctl start defguard-proxy.service # journalctl -u defguard-proxy.service | tail -n 50 2024-07-27T16:53:58.584154Z INFO defguard_proxy::tracing: Tracing initialized 2024-07-27T16:53:58.584233Z INFO defguard_proxy::http: Starting Defguard proxy server @@ -518,85 +436,15 @@ To run proxy service (for [remote onboarding & enrollment](../help/enrollment/)) 2024-07-27T16:53:58.585262Z INFO defguard_proxy::http: API web server is listening on 0.0.0.0:8080 ``` -#### Configuring NGiNX reverse proxy for enrollment +### Reverse proxy -{% hint style="info" %} -Please note that [we already have issued the enrollemnt domain SSL certificate](standalone-package-based-installation.md#generating-ssl-certificates). -{% endhint %} - -Create config file `/etc/nginx/sites-available/enroll.defguard.net.conf`, example config file for _enroll.defguard.net_ should look like this: - -``` -upstream defguard-proxy { - server 127.0.0.1:8080; -} - -upstream proxy-grpc { - server 127.0.0.1:50051; -} - -server { - listen 443 ssl http2; - server_name enroll.defguard.net; - access_log /var/log/nginx/enroll.log; - error_log /var/log/nginx/enroll.e.log; - - ssl_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/my-server.defguard.net/privkey.pem; - - client_max_body_size 200m; +The reverse proxy acts as an intermediary between users and Defguard services, handling HTTPS requests, routing internal gRPC communication, and ensuring encrypted connections between all components. - location / { - proxy_pass http://defguard-proxy; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } -} +Follow our additional guide on [configuring reverse proxy for for Core and Proxy service](../reverse-proxy-configuration-using-nginx.md). After having the reverse proxy configured and running you can continue with this guide. -server { - listen 444 ssl http2; - server_name enroll.defguard.net; - access_log /var/log/nginx/enroll.log; - error_log /var/log/nginx/enroll.e.log; +### Enabling Proxy service in the Core - ssl_certificate /etc/letsencrypt/live/my-server.defguard.net/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/my-server.defguard.net/privkey.pem; - - client_max_body_size 200m; - - location / { - grpc_pass grpc://proxy-grpc; - grpc_socket_keepalive on; - grpc_read_timeout 3000s; - grpc_send_timeout 3000s; - grpc_next_upstream_timeout 0; - - proxy_request_buffering off; - proxy_buffering off; - proxy_connect_timeout 3000s; - proxy_send_timeout 3000s; - proxy_read_timeout 3000s; - proxy_socket_keepalive on; - - keepalive_timeout 90s; - send_timeout 90s; - - client_body_timeout 3000s; - } -} -``` - -Enable configuration and restart nginx: - -``` -ln -s /etc/nginx/sites-available/enroll.defguard.conf /etc/nginx/sites-enabled/enroll.defguard.conf -systemctl restart nginx.service -``` - -#### Enabling Proxy service in the Core - -Now, we can update our **core configuration** in `/etc/defguard/core.conf` by uncommenting `DEFGUARD_PROXY_URL` +Now, we can update our Core service configuration in `/etc/defguard/core.conf` to use the Proxy service by uncommenting `DEFGUARD_PROXY_URL` ``` # Proxy connection configuration @@ -666,9 +514,9 @@ systemctl restart defguard.service Now you have full working Defguard services 🥳 {% endhint %} -You can [configure your desktop client using the enrollment](../help/desktop-client/instance-configuration.md#adding-instance) service and use your VPN. +You can [configure your desktop client using the enrollment](../../using-defguard-for-end-users/desktop-client/instance-configuration.md#adding-instance) service and use your VPN. -If you would like to use the feature in the desktop client to route **All traffic** through the VPN please configure your firewall to enable Internet access through your VPN - [here you can find exaples how to do it](https://defguard.gitbook.io/defguard/tutorials/step-by-step-setting-up-a-vpn-server#enabling-to-access-internet-through-your-vpn). +If you would like to use the feature in the desktop client to route **All traffic** through the VPN please configure your firewall to enable Internet access through your VPN – [here you can find exaples how to do it](https://defguard.gitbook.io/defguard/tutorials/step-by-step-setting-up-a-vpn-server#enabling-to-access-internet-through-your-vpn). ## Securing the setup @@ -685,4 +533,38 @@ After the installation please make sure that **only the following ports are open * 50055 {% endhint %} -Also this setup provides only communication encryption between Defguard components, if you additionally like for core/proxy and gateway to have authorization - [please setup a custom SSL CA](grpc-ssl-communication.md#custom-ssl-ca-and-certificates). +Also this setup provides only communication encryption between Defguard components, if you additionally like for core/proxy and gateway to have authorization – [please setup a custom SSL CA](../grpc-ssl-communication.md#custom-ssl-ca-and-certificates). + +## Upgrading packages + +{% hint style="info" %} +If the new version introduces changes to the default configuration, the existing configuration file will not be overwritten. Instead, a separate file containing the updated default configuration will be created. +{% endhint %} + +#### FreeBSD/OPNsense + +1. Uninstall the current version. + + ```bash + # Core package + pkg delete defguard + + # or Gateway package + pkg delete defguard-gateway + + # or Proxy package + pkg delete defguard-proxy + ``` +2. Install a newer version (as described [above](./#installing-packages)). +3. Restart the service. + + ```bash + # Core service + sudo /usr/local/etc/rc.d/defguard restart + + # or Gateway service + sudo /usr/local/etc/rc.d/defguard_gateway restart + + # or Proxy service + sudo /usr/local/etc/rc.d/defguard_proxy restart + ``` diff --git a/deployment-strategies/standalone-package-based-installation/defguard-apt-repository.md b/deployment-strategies/standalone-package-based-installation/defguard-apt-repository.md new file mode 100644 index 0000000..501020c --- /dev/null +++ b/deployment-strategies/standalone-package-based-installation/defguard-apt-repository.md @@ -0,0 +1,66 @@ +# Defguard APT repository + +### Distribution + +Defguard APT repository provides packages for **Debian 12**, **Debian 13**, and **Ubuntu 22.04/24.04 LTS.**\ +Packages are available on the default `trixie` repository distribution. + +### Adding Defguard APT repository + +To add Defguard APT repository, run following commands in your terminal: + +```bash +sudo apt update +sudo apt install -y ca-certificates curl +#Add official Defguard public GPG key +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://apt.defguard.net/defguard.asc -o /etc/apt/keyrings/defguard.asc +sudo chmod a+r /etc/apt/keyrings/defguard.asc + +#Add APT repository +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/defguard.asc] https://apt.defguard.net/ trixie release " | \ + sudo tee /etc/apt/sources.list.d/defguard.list > /dev/null + +sudo apt update +``` + +Afterward running these commands, you can install and update Defguard via APT. + +After new release, simply use `sudo apt update` to update repository. + +### Using pre-release builds + +Defguard has two separate components on one APT repository, **release** and **pre-release.** If you want to install packages from pre-release, simply change `release` to `pre-release` in the installation steps described above, or run the following line. + +```sh +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/defguard.asc] https://apt.defguard.net/ trixie pre-release " | \ + sudo tee /etc/apt/sources.list.d/defguard.list > /dev/null + +sudo apt update +``` + +### Installing packages + +Defguard Core: + +```sh +sudo apt install defguard +``` + +Defguard Proxy: + +```sh +sudo apt install defguard-proxy +``` + +Defguard Gateway: + +```sh +sudo apt install defguard-gateway +``` + +Defguard Client: + +```sh +sudo apt install defguard-client +``` diff --git a/deployment-strategies/terraform.md b/deployment-strategies/terraform.md index 69637c2..e686de4 100644 --- a/deployment-strategies/terraform.md +++ b/deployment-strategies/terraform.md @@ -232,54 +232,289 @@ ingress { } ``` -If you want to run Core web UI behind a reverse proxy (e.g. to enable HTTPS), you should modify the ingress rules to allow access from the reverse proxy server's IP address or security group: +If you want to run Core web UI behind a reverse proxy (e.g. to enable HTTPS), you would need to do the following: + +1. Prevent direct access to the services by removing their ingress rules: ```hcl +# This is in the Core security group block +[...] ingress { from_port = local.core_http_port to_port = local.core_http_port protocol = "tcp" - security_groups = [ ] - # OR - # cidr_blocks = ["/32"] + cidr_blocks = [ + for eip in aws_eip.defguard_gateway_endpoint : "${eip.public_ip}/32" + ] } ``` -You should then restrict Core access on your reverse proxy, so Core still stays accessible only through the VPN. - -For testing purposes, you can also allow access to the Core web UI from your public IP address by appending the following block to the "Core network configuration" section: - -````hcl +```hcl +# This is in the Proxy security group block +[...] ingress { - from_port = local.core_http_port - to_port = local.core_http_port + from_port = local.proxy_http_port + to_port = local.proxy_http_port protocol = "tcp" - cidr_blocks = ["/32"] + cidr_blocks = ["0.0.0.0/0"] } ``` -This will allow you to access the Core web UI from your public IP address. However, this is not recommended for production environments, as it exposes the Core web UI to the public. +2. Add a second public subnet (load balancers require it): -You can modify the configuration further to fit your needs, be careful though when editing the "Security group rules essential for Defguard operation" sections, as they ensure that all the components may properly reach each other, for example: +```hcl +vpc_public_subnets = ["10.0.1.0/24", "10.0.4.0/24"] +``` + +3. Add the load balancer configuration ```hcl -########## Security group rules essential for Defguard operation ########## +########################################################################### +###################### Load Balancer Configuration ####################### +########################################################################### + +# Load balancer security groups +resource "aws_security_group" "defguard_alb_sg" { + name = "defguard-alb-sg" + description = "Access to the Application Load Balancer" + vpc_id = module.vpc.vpc_id + + ingress { + from_port = 443 + to_port = 443 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + description = "HTTPS access from internet" + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "defguard-alb-sg" + } +} + +resource "aws_security_group" "defguard_internal_alb_sg" { + name = "defguard-internal-alb-sg" + description = "Access to the Internal Application Load Balancer" + vpc_id = module.vpc.vpc_id + + ingress { + from_port = 443 + to_port = 443 + protocol = "tcp" + cidr_blocks = [local.vpc_cidr] + description = "HTTPS access from internal VPC network" + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "defguard-internal-alb-sg" + } +} + +# Public Application Load Balancer +resource "aws_lb" "defguard_public_alb" { + name = "defguard-public-alb" + internal = false + load_balancer_type = "application" + security_groups = [aws_security_group.defguard_alb_sg.id] + subnets = module.vpc.public_subnets + + enable_deletion_protection = false + + tags = { + Name = "defguard-public-alb" + } +} + +# Internal Application Load Balancer +resource "aws_lb" "defguard_internal_alb" { + name = "defguard-internal-alb" + internal = true + load_balancer_type = "application" + security_groups = [aws_security_group.defguard_internal_alb_sg.id] + subnets = module.vpc.private_subnets + + enable_deletion_protection = false + + tags = { + Name = "defguard-internal-alb" + } +} + +# Target Groups +resource "aws_lb_target_group" "defguard_core_tg" { + name = "defguard-core-tg" + port = local.core_http_port + protocol = "HTTP" + vpc_id = module.vpc.vpc_id + + health_check { + enabled = true + healthy_threshold = 2 + interval = 30 + matcher = "200" + path = "/api/v1/health" + port = "traffic-port" + protocol = "HTTP" + timeout = 5 + unhealthy_threshold = 3 + } + + tags = { + Name = "defguard-core-tg" + } +} + +resource "aws_lb_target_group" "defguard_proxy_tg" { + name = "defguard-proxy-tg" + port = local.proxy_http_port + protocol = "HTTP" + vpc_id = module.vpc.vpc_id + + health_check { + enabled = true + healthy_threshold = 2 + interval = 30 + matcher = "200" + path = "/api/v1/health" + port = "traffic-port" + protocol = "HTTP" + timeout = 5 + unhealthy_threshold = 3 + } + + tags = { + Name = "defguard-proxy-tg" + } +} + +# Target Group Attachments +resource "aws_lb_target_group_attachment" "defguard_core_attachment" { + target_group_arn = aws_lb_target_group.defguard_core_tg.arn + target_id = module.defguard_core.instance_id + port = local.core_http_port +} + +resource "aws_lb_target_group_attachment" "defguard_proxy_attachment" { + target_group_arn = aws_lb_target_group.defguard_proxy_tg.arn + target_id = module.defguard_proxy.instance_id + port = local.proxy_http_port +} -# Internal communication with Defguard Core +# Listeners +resource "aws_lb_listener" "defguard_public_alb_listener" { + load_balancer_arn = aws_lb.defguard_public_alb.arn + port = "443" + protocol = "HTTPS" + + default_action { + type = "forward" + target_group_arn = aws_lb_target_group.defguard_proxy_tg.arn + } +} + +resource "aws_lb_listener" "defguard_internal_alb_listener" { + load_balancer_arn = aws_lb.defguard_internal_alb.arn + port = "443" + protocol = "HTTPS" + + default_action { + type = "forward" + target_group_arn = aws_lb_target_group.defguard_core_tg.arn + } +} + +# Listener Rules +resource "aws_lb_listener_rule" "defguard_proxy_rule" { + listener_arn = aws_lb_listener.defguard_public_alb_listener.arn + priority = 100 + + action { + type = "forward" + target_group_arn = aws_lb_target_group.defguard_proxy_tg.arn + } + + condition { + host_header { + values = [replace(local.proxy_url, "https://", "")] + } + } +} + +resource "aws_lb_listener_rule" "defguard_core_rule" { + listener_arn = aws_lb_listener.defguard_internal_alb_listener.arn + priority = 100 + + action { + type = "forward" + target_group_arn = aws_lb_target_group.defguard_core_tg.arn + } + + condition { + host_header { + values = [replace(local.core_url, "https://", "")] + } + } +} + +``` + +4. Add load balancer ingress rules to your existing Proxy and Core groups: + +```hcl +# HTTP access from internal load balancer (Core) ingress { - from_port = local.proxy_grpc_port - to_port = local.proxy_grpc_port + from_port = local.core_http_port + to_port = local.core_http_port protocol = "tcp" - security_groups = [aws_security_group.defguard_core_sg.id] + security_groups = [aws_security_group.defguard_internal_alb_sg.id] + description = "HTTP access from internal load balancer" +} + +# HTTP access from public load balancer (Proxy) +ingress { + from_port = local.proxy_http_port + to_port = local.proxy_http_port + protocol = "tcp" + security_groups = [aws_security_group.defguard_alb_sg.id] + description = "HTTP access from public load balancer" +} + +``` + +5. Finally, you can add the load balancer domain name to the output: + +```hcl +output "defguard_public_alb_dns" { + description = "The DNS name of the Public Application Load Balancer" + value = aws_lb.defguard_public_alb.dns_name } -```` -This block ensures that the Defguard Proxy gRPC port is accessible from the Defguard Core instance. +output "defguard_internal_alb_dns" { + description = "The DNS name of the Internal Application Load Balancer" + value = aws_lb.defguard_internal_alb.dns_name +} +``` -After you apply the configuration, Defguard Core web UI should be accessible at the following URL: `http://:`. If you allowed access to the web UI from your public IP address, you should be able to access it directly. The proxy should also be available at `http://:` if you also allowed access to it. This is useful only to see if the deployment was successful, the next step should be to properly setup the domains and HTTPS, using e.g. a reverse proxy. +This setup will create two load balancers: one internal and one external. Both will act as a reverse proxy, routing the HTTPS traffic matching your domains to the backend servers (Proxy, Core). The next step would be to point your actual domains to the domain names generated by the load balancers in the output (CNAME) and to setup SSL certificates (e.g. via the AWS certificate manager). ### Troubleshooting and common issues +All components are deployed as systemd services on the host EC2. Their configuration files can be found at `/etc/defguard`. + #### Checking status of any component You can check the status of any Defguard component by SSHing into the corresponding EC2 instance and running the following command: diff --git a/deployment-strategies/updating-and-version-compatibility.md b/deployment-strategies/updating-and-version-compatibility.md new file mode 100644 index 0000000..32e690a --- /dev/null +++ b/deployment-strategies/updating-and-version-compatibility.md @@ -0,0 +1,26 @@ +# Updating and version compatibility + +Each service in the Defguard stack can be updated independently, provided the components remain compatible. When components connect, Defguard automatically performs a version check. If an incompatibility is detected, the connection is refused and it will be clearly reported both in the log files and through a dialog in the core UI: + +
+ +{% hint style="warning" %} +**Note on Multiple Gateways per Location** + +If you configure more than one gateway for the same location, they will overwrite each other’s incompatibility data. This happens because location is currently used as the identifier for gateways. + +This limitation will be resolved once full high-availability (HA) support is implemented. +{% endhint %} + +It's recommended to always use newest version of services and update them all together to avoid incompatibility.\ +Check the GitHub repositories for each service to find their newest releases and release notes. + +* Docker - For Docker and Kubernetes based setup just change docker image version for service you want to update. +* Packages(DEB, RPM, etc.) - Currently we don't have any package repository so if you want to update your service installed as package you have to download new version from service repository. + +**GitHub Repositories:** + +* [Defguard Core](https://github.com/DefGuard/defguard/releases) +* [Defguard Proxy](https://github.com/DefGuard/proxy/releases) +* [Defguard Gateway](https://github.com/DefGuard/gateway/releases) +* [Defguard YubiBridge](https://github.com/DefGuard/YubiKey-Provision/releases) diff --git a/deployment-strategies/upgrading.md b/deployment-strategies/upgrading.md index ae098ad..9c44431 100644 --- a/deployment-strategies/upgrading.md +++ b/deployment-strategies/upgrading.md @@ -2,12 +2,111 @@ description: Notes on upgrading Defguard and its components --- -# Upgrading +# Migration guides {% hint style="warning" %} Before doing any updates please remember to **backup your database.** {% endhint %} +## 1.5.x -> 1.6.0 + +### Core + +#### Service locations + +A new feature has been introduced: [service-locations.md](../features/service-locations.md "mention"). This feature requires both Defguard Core and Proxy to be updated to the 1.6.0 version. Updating only one of those components will prevent this feature from working properly. + +### Proxy + +#### Service locations + +As mentioned in the Core migration section, this feature requires both Defguard Core and Proxy to be updated to the 1.6.0 version. + +### Desktop client + +#### Service locations + +The [service-locations.md](../features/service-locations.md "mention") feature currently only works on the Windows Desktop Client. Locations in the service location mode won't be sent to clients that don't support them (either are older than 1.6.0 or are on a different platform than Windows). + +To work properly, this feature requires the Desktop Client to be in version 1.6. Service locations won't show up or work in older clients. + +#### Force all traffic + +1.6 introduces the ability to "Force all traffic" as a [Client traffic policy](../features/wireguard/behavior-customization.md#client-traffic-policy-selection). However, this policy only works with desktop and mobile clients ≥ 1.6.0. Older clients (<1.6.0) will not respect the policy and will allow the users to select the "Predefined traffic" option. As an alternative, administrators can enforce all traffic by setting allowed ips: `0.0.0.0/0, ::/0`. + +#### macOS Client changes + +Desktop Client is now distributed in App Store and uses native VPN management. For these reasons, the user settings have moved from `~/Library/Application Support/net.defguard` to `~/Library/Containers/net.defguard/Data/Library/Application Support/net.defguard`. In order to preserve settings from v1.5.x, use one of the following guides to transfer the data: + +**Using Finder** + +1. In Finder, select the menu **Go**, press and hold _Alt_ key, then select **Library**, as depicted below. + +
+ +2. Move or copy the contents of _Application Support_ > _net.defguard_ to _Containers_ > _net.defguard_ > _Data_ > _Library_ > _Application Support_ > _net.defguard_ + +**Using Terminal** + +Open Terminal.app and execute + +```sh +rm -r ~/Library/Containers/net.defguard/Data/Library/Application\ Support/net.defguard +mv ~/Library/Application\ Support/net.defguard ~/Library/Containers/net.defguard/Data/Library/Application\ Support/ +``` + +#### Windows Client changes + +The Windows Desktop Client installer has changed. The installer is now provided in an `.msi` format. + +Installing the new 1.6.0 Client from the `.msi` will leave the previous Client version still installed. This can also cause old VPN connections to still be active until a next system restart is performed. + +To resolve this, before upgrading, we recommend first uninstalling the old Client. This will leave your configuration intact and it should carry over to the new Client after its installation, without the need to configure everything again. + +### Mobile client + +**Force all traffic** + +1.6 introduces the ability to "Force all traffic" as a [Client traffic policy](https://app.gitbook.com/o/Z3mGSAbEj9iLdZ7cNFlL/s/e86iamwJVSYnIRsyVEAV/features/wireguard/behavior-customization#client-traffic-policy-selection). However, this policy only works with desktop and mobile clients ≥ 1.6.0. Older clients (<1.6.0) will not respect the policy and will allow the users to select the "Predefined traffic" option. As an alternative, administrators can enforce all traffic by setting allowed ips: `0.0.0.0/0, ::/0`. + +## 1.4.x -> 1.5.0 + +### Core + +#### Version compatibility + +This release introduces a version checking system. All the Defguard system components (core, proxy, gateway and clients) are now version-aware and check their compatibility with the components their are communicating with. + +This might mean that until you upgrade all the components your web UI might indicate that your proxy or gateway is of an unknown version. + +#### Instance UUID bug + +A bug resulting in zeroing the UUID of a given instance has been found and resolved ([PR link](https://github.com/DefGuard/defguard/pull/1521)). + +This value is used by the desktop client to identify instances. The new client should gracefully handle migration to a new UUID if it has been zeroed out due to the bug mentioned above. + +#### Verify client disconnect threshold for your MFA locations + +In order to ensure that MFA works correctly with the new [mobile clients](../using-defguard-for-end-users/mobile-client/) please ensure that the [client disconnect threshold](../features/wireguard/create-your-vpn-network.md#client-disconnect-threshold) is set to at least 300s (5 minutes). + +### Proxy + +We've introduced a new functionality to Desktop Client - to authenticate [Multi-Factor connections using Mobile Client](../using-defguard-for-end-users/desktop-client/using-multi-factor-authentication-mfa.md). For this feature to work, Proxy (enrollment service) creates a Web-socket that the desktop client connects to while waiting for responses from the mobile client. + +{% hint style="warning" %} +If you have a reverse proxy for the enrollment service (which we highly recommend with SSL termination), please **make sure that web-sockets are enabled.** +{% endhint %} + +### Desktop client + +#### Unix socket IPC and new user group requirement (macOS & Linux) + +macOS and Linux clients now use Unix sockets for IPC. To securely access this socket the user must belong to a specific group as described in [client documentation](../using-defguard-for-end-users/desktop-client/). + +The change should require no additional steps for macOS users, but Linux users who install the client from official packages will need to log out and back in or reboot after install to refresh group membership. This will not be required on subsequent updates. + +Linux users who use release binaries will need to manually create the `defguard` group and adjust their group membership. + ## Any release <= 1.3 -> 1.4 1.4 release introduces changes related to multiple client IP addresses. To ensure compatibility, **all components must be updated** to v1.4 or higher: @@ -39,7 +138,7 @@ We've introduced some changes to the LDAP integration. We recommend reading [the * The LDAP integration has become an enterprise feature. You will need to purchase the enterprise license if you exceed the free limits. See [license.md](../enterprise/license.md "mention") for more information regarding the license. * If you used the LDAP integration previously, it will be off by default after upgrading. You will have to manually enable it in the settings in the LDAP tab:\\ -
+
## Any previous 1.3.0 alpha → 1.3.0 alpha 4 @@ -51,9 +150,9 @@ A new synchronization may cause some of your users to be re-added, which in turn Before an upgrade, turn off the two-way synchronization. After upgrading, you will have access to a new option, the RDN user attribute: -
+
-Set it according to your LDAP server setup. This should be the DN's leftmost component attribute, e.g. in the case of `cn=user1,cn=users,dc=ad,dc=example,dc=com` this would be "cn". This attribute is needed to properly identify users in your LDAP server. The username attribute will be mapped to Defguard usernames. Read [settings-table.md](../admin-and-features/ldap-and-active-directory-integration/settings-table.md "mention") for a description of those settings options. After you configured this value, you can re-enable the two-way synchronization. +Set it according to your LDAP server setup. This should be the DN's leftmost component attribute, e.g. in the case of `cn=user1,cn=users,dc=ad,dc=example,dc=com` this would be "cn". This attribute is needed to properly identify users in your LDAP server. The username attribute will be mapped to Defguard usernames. Read [settings-table.md](../features/ldap-and-active-directory-integration/settings-table.md "mention") for a description of those settings options. After you configured this value, you can re-enable the two-way synchronization. ## Any previous core release -> core 1.1.4 @@ -99,12 +198,12 @@ You will need to change a duplicate email address before the upgrade by hand via ### Desktop Client Real Time Sync -From 1.0.0 we have introduced [Enterprise features](broken-reference/), and one of them is [automatic and real-time desktop client configuration synchronization](../admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md). +From 1.0.0 we have introduced [Enterprise features](https://github.com/DefGuard/docs/blob/docs/deployment-strategies/broken-reference/README.md), and one of them is [automatic and real-time desktop client configuration synchronization](../features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md). To enable this on an **already configured desktop client,** one must perform one time instance update, which will generate necessary tokens on the client to perform from now on automatic updates. In details: -1. The admin must generate a new token for the client -[ more details here](../admin-and-features/wireguard/remote-desktop-activation.md) (token can be sent over email or shared in any other secret way). -2. The user must perform the [Instance Update - more details here](../help/desktop-client/instance-configuration.md#updating-instance). +1. The admin must generate a new token for the client -[ more details here](../features/wireguard/remote-desktop-activation.md) (token can be sent over email or shared in any other secret way). +2. The user must perform the [Instance Update - more details here](../using-defguard-for-end-users/desktop-client/instance-configuration.md#updating-instance). {% hint style="warning" %} Any client that is configured from scratch has this done automatically and no actions needed to be done. diff --git a/deployment-strategies/using-a-userspace-wireguard-go-implementation.md b/deployment-strategies/using-a-userspace-wireguard-go-implementation.md new file mode 100644 index 0000000..563ad6d --- /dev/null +++ b/deployment-strategies/using-a-userspace-wireguard-go-implementation.md @@ -0,0 +1,39 @@ +# Using a userspace wireguard-go implementation + +Gateway currently supports using `wireguard-go`, a userspace WireGuard implementation. This approach is **not recommended** on platforms where a native support exists (e.g. Linux). + +You can enable the userspace implementation by setting the `userspace` config option or a corresponding `DEFGUARD_USERSPACE` environment variable to `true`. + +Because `wireguard-go` is not bundled by default with Defguard, it must be installed separately. The `wireguard-go` binary/command must be available on the host machine for it to function properly. On Docker, this currently requires building a custom image, as the base gateway images also don't come with `wireguard-go` pre-installed. This can be achieved as follows: + +```docker +FROM golang:1.24.6-alpine AS builder +RUN apk add --no-cache git make + +RUN git clone https://git.zx2c4.com/wireguard-go /src/wireguard-go \ + && cd /src/wireguard-go \ + && make + +# Specify the desired Gateway's version here +FROM ghcr.io/defguard/gateway:latest + +COPY --from=builder /src/wireguard-go/wireguard-go /usr/local/bin/wireguard-go + +RUN chmod +x /usr/local/bin/wireguard-go +``` + +Note that when running the Docker container with a userspace implementation on a Linux host, the container requires a `NET_ADMIN` capability and access to `/dev/net/tun`, this can be set in a Docker compose: + +```yaml +# Docker compose + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun +``` + +Or via the command line: + +```bash +docker run --cap-add=NET_ADMIN --device=/dev/net/tun [...] +``` diff --git a/draw.io/defguard-drawio-library.xml b/draw.io/defguard-drawio-library.xml deleted file mode 100644 index cd28b42..0000000 --- a/draw.io/defguard-drawio-library.xml +++ /dev/null @@ -1 +0,0 @@ -[{"xml":"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","w":328.2,"h":268.51,"aspect":"fixed","title":"AWS"},{"xml":"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","w":261.87,"h":229.88,"aspect":"fixed","title":"Azure"},{"xml":"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","w":280.21,"h":334.12,"aspect":"fixed","title":"Core"},{"xml":"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","w":184.51,"h":240.08,"aspect":"fixed","title":"Database"},{"xml":"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","w":297.96,"h":329.94,"aspect":"fixed","title":"Desktop App"},{"xml":"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","w":241.42,"h":286.13,"aspect":"fixed","title":"Docker"},{"xml":"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","w":247.87,"h":277.89,"aspect":"fixed","title":"Firewall"},{"xml":"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","w":226.88,"h":328.97,"aspect":"fixed","title":"FreeBSD"},{"xml":"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","w":272.53,"h":288.79,"aspect":"fixed","title":"Google cloud"},{"xml":"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","w":236.44,"h":278.69,"aspect":"fixed","title":"Google Workspace"},{"xml":"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","w":250.81,"h":186.12,"aspect":"fixed","title":"HTTPS"},{"xml":"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","w":271.8,"h":295.63,"aspect":"fixed","title":"Instalation package"},{"xml":"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","w":226.65,"h":226.65,"aspect":"fixed","title":"Internet"},{"xml":"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","w":242.15,"h":265.25,"aspect":"fixed","title":"Jumpcloud"},{"xml":"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","w":266.05,"h":302.68,"aspect":"fixed","title":"Kubernetes"},{"xml":"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","w":297.96,"h":308.82,"aspect":"fixed","title":"Laptop"},{"xml":"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","w":244.58,"h":324.93,"aspect":"fixed","title":"Linux"},{"xml":"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","w":272.27,"h":304.59,"aspect":"fixed","title":"Location"},{"xml":"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","w":246.7,"h":330.88,"aspect":"fixed","title":"Mobile"},{"xml":"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","w":286.16,"h":241.65,"aspect":"fixed","title":"Okta"},{"xml":"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","w":202.1,"h":272.58,"aspect":"fixed","title":"OpenID"},{"xml":"7L1bm9rW0i38a9a9OO29ctlusCNvJBYG3MF3Ns6LgW47zwKCpF//qarGqDklRNs5rPUm+ZInfmjQaWoeatZh1Kh/DO6filf/fv/Tp+zLxx8f/zGY/CO5+0c/af8/uP/3ly+nm4e7Lngq7n98fKz/3n38x2D8j7783tejL3/bfXp2n5/e//vHz6ff99b961vjaT//+O/Tj0Xzp/eP5x/tF/n/G5969f/xVD7iNsdP73+SP3dP77f15wt56G7z/nH6/sOPj//6ctyddl8+18c/fDmdvjzVJzzKgRfvN4ftv7+cP3+8//L45d96q8H/6H/RPe4ed1u59vTlp/rX98efftzIG/7PrvixfvkX+sg7/prwl/rvj+9P7/8xuLOv/ZfHn7f/6L8onupuu//X93n/Xfli+OGhOG+qZPf++zfJZvzl5+ng4+BjORpk5ejnzdPm52x/d8nuv6s+Pm126fefTh9ejarZ50/H9w+jf/9r8frLx+/fXGa7f/5cXzWYft5U06fvynflP4vZ8jCaDuy8dPei//7h7WD+9N3wX4v0ko7vttk+u0z3q146zi6z++ElL9O6bf969ebx3edM/vo+T358KB7/tbs7r/tFNV1Otj+WL57ePxTH2e7F+UN/9DgrX3yX3o/2H77PTtnisp0+5cdNmZTTe16THXk8v/fjvfT743YzeFN+6J8eZ7u7fdZfDbL+enTjfkm430raUH38/vXP7/urui8ez+8e8k91v203T9/1PjzN/29at7v++9/vFj1598f3T9/99GEfH0+8ndKOd0+Pxw/19R9/eH38f/e5XrP+IT29G7z+9O7V4+OHz/NTvjg0rover9meh8fkXX2f9w+9nz7W98yWd/F11Tc/b9d4Xj88bxONQXe/ze5f/N/01bufPry6/J/0+7flh/vt3vrpZTl9+FiuH9789O5hlEyX858a1y2+9bqscV39jvG86G2eLl/SfvHTh6e3nza73ufN08tDPffOH++T8v8tj9v/Wfh8Kr6xP1rPS+V5P2363x3XP7z56UN/+H/SV4/Vh37x6eOrVdxvRVZG73Sf7/Onee/dU+OcaG5Nkrg9af/d07t93N7VMbQh/nvdGJN6Pj5lD++e4jbn2o7vLuuH/KeP3x/qtgyL5jvpvD69/2F7Wj8Vj/U8refSd4d3yy/bDz+8PX589Xj58H1jThR5492y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","w":230.55,"h":308.07,"aspect":"fixed","title":"Opensense"},{"xml":"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","w":207.3,"h":279.48,"aspect":"fixed","title":"Other"},{"xml":"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","w":262.59,"h":328.96,"aspect":"fixed","title":"Proxy"},{"xml":"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","w":226.88,"h":328.96,"aspect":"fixed","title":"Server"},{"xml":"tVvZcuJasv2aerkPHZo4XX7ECGM5kCgZMCW/GdmNJaDsKHAh6es718rcsl1T1+177olTAdawhxxWZq7cfAhH+2by9e75MX26f9h9CMcfvOGHwPv+/3D09enp+MvbP3th34wedjv5Xt1/COMPAa4HvHvxfxvH13Ge774+fDn+vUMHPw5ts317+Hp8aN5futu9POgV/P+Hs/7w/+HY7myYw+PdM75W+7uNfJ5j0qq8203v1g+7T0+H6lg9fZH766fj8WkvD+xw4/yu3G6+Pr18uR897Z6+cqjwX/zvzRjDXbXBu8enZ7l6d3h+KLHDf1XNg2z+nFMO3VXPXZHv93fHuw/hUP8MLg7fNh+C82YvYht9usyC2/Y8Wq+al7LzqrvLa6+Mn75Nw/vwvh2EaTv4Vu7Lb2k9PKWjs+5+X1bJ5eNxPRl0sy+Ph7vV4Oun+dXT/eX1aVZ9/CZvhdMvZTfdn7W37cdmttgOpqE+l1Tnwd3qJsz3Z9GneXJK4uEmXSzbaZ10SZycsiryZ6NE1vZpcr27/ZLi22XmPaya3adq+FIETTddjDcP7flzGZwdis/Xz+sg+iuZ7Lp10DzeT5b/TC69zXSfHcrWa5PLw2a92kXT1dXhdjXYTlf+t9vJUp73/fXl9XM5aQaz9vwsGQ3q9WV6TNvzfyaT2+f15PRXcnnTrkebej3ZvdyuLtrp6r4tVtfPMo43XSTP7987uTm96citc3lw97NKxpV9lPuzr7eLp03SZbusy/azxWHzr7l7Pn19ft6PF2APZXjdroPjbrpqntf7m7r4PJT1XX27lz3JOrp7+X4XLI+61udvd6vo7f1+ndnozf4mg2/r/fJ1XXP/ePf5elfuZY7VzptVwyaN366vhNz3d6vmIPfq2/3t/u3YM459dipW2fP95favZCS6fHt//mbuUbYrgqK53Rdv9eVjr7f73WEd/0pGxZs1nPvl/vSUBJTJY1n5X8r9xVbs6+V+tOW4n2Cvl7vD7SL66PR4HV493k52u/WXfHO3ys+S/c/eTzYP8fgsqROxzXErdjtIF16VLtJwWg99+TtKa6+axZuX2SIVf9i2Ys9N2pUvabysksmrrdysBiKP9Cz5ctPdfr5alJOL+nZ59nLzOdsldfRRdPutHJ1/E3nKfVlPPaygk3U4PBZi4+swOUsqkcV+GYi8qmn3s3fGP3knjYrgYuvemTo5bV/X9qlu4Je74vPV5evez59vY6/6hd3LPJtG9tpl8yjMWpHTAnLaNiIXz8kl65Yv2WLj5DJI59Epg0wnWMPhr7vLq92tPPdz3SXfPtUn8dObfSnrFmwSH7zogE3m/5Ws+4v4/FZwJy0+73bl7iN0tBU8eJyuBo/r1fIs2TaPD6ubVnDlZ883WZVsbicXXjH3X4qVv+vvid3LPWJQqRayg+Y4yklmeEommSBP1skb6lUiBUhssRj76SiS3Z6aDJbQXdSwnuk88gXZ2rTyRErjbloLYoj00ipqZiNcSwL5F4p0X/CcXPNEms1dfC7PJiL1jVjh1nv7Xe7V6ciT75tAxhdteL58l/tjsUB4YxRlI0+scyleH7VZhWeXeF80U+JagPXIGgKZ7yWtl8ep/mtkDPksI4yVxVs868tY0bTOjynGXyTyuXyZxfiU8WQ+iQ4y702aLfKXrN4e0lbksE29rBUrqWT8eHPIYoy3kbFzfxqnsuetfCYy3mMq6z1BbrPP6WkaDw/p6HTS/Q872d9JLQjjXNW4x2sVruNaKv+SI2VYjwPKexR1sr+XrNu+CJr2Y+on9iv6WWAtiD5pJO+EMyDW6IdnYdnybwPLE3mOD7IWyFbeK6Ip5x7jeXwe9Vlbc2VrFhmlNebCnpeYyxf5RJwL+6Z8EuqN7wrCyDONyA7jdNAR9pnFJdDmxzn4fi7/tnJvLHaSNnJP7Ejea/HemHYg77Q2tqwralR2hayvONJO7T1ZW8A1dbm8l7s1RXwP6+J8Ir+a9wawZ3lfPgu+n0H3lemFtiRzAknxfqt64fstZCP2ssC6E9nT1uYadzaXjKXPZnE/zgCySaFjvg87LN17oe0N/sC9ZQsn0yS0+X3OKzrU/Yvcba0ZbQhzFE62rZNtpvsQ/ZUh7ELm8vWTMoN9evqs+EeXmqyLwMYZzFanI/03Vv8tuK/8YH50oF+Jj6SCnOIHbQb/rU6e6OKUrU6GFfL3PAqyAGvN4bMviEDio7DJzmEKfaWiHvG9g65V7tCdvE/fiAYZ1yzXRvp8huerCHPIXGI/kHMLn4AcZD0yBp7h86pn0VlOHaT1FroGtsj3RNYl1zpgRaq2KWuV/cm1DfBDn4+3+rz4xwx2WBd6D3ZTp2qbkIc8p8+XiCpO53JtDD1ST6np3fbeqa6WYpNj+G5EfdFW4TvjSPUDvIBt6BqzivaBd1QX8GnJ4vjJZ8a6J7GZjM+kwAPDn8KeT+xzq5+dYkNWJ+a3W7Ut6HVO/296e1I76pxdZvQr7IPvMMLqs8PQnm16G+7e2S70PuixJ04Nn5YOOyKzy94Xda6xmwv6lvuGT63ZdewwhDYv4xQt8WJu/t7lipujn7zbwX8Q+14xQj69dL85FYpzDbN/7KdLzaeXnAeyshgl+8F1wWvxJcSHHqcnJ+Ad9oxxonSfGuZiT0t/qn4QMSYgztbAvDyYYm3yHGKP2InPmFcZfnSCHxyjFLmPEbMb+tVc44di0lLGx1jybl0eaX8txkoixPOU3+V98YMMvsL4Jzigccqjb40Qp1Lb21JsMm0Zx8XOM5E5/Drzn5jF3SL7k6zlbvR9VpRL1im5ylZiuviRyE/iLbKw3d8Rk11sUhuE7WzTjnKNgdtYcymyZPzV/capv6bO8oPgm/jJda3YLLkRsLc6EacE05BJig9AJpLLxDnj3zouW/ppnMPOwgL5lFRIjFt4twX+nzzaQgx/FtuKNV9RO6ONt4xXsEHgTn19EF0zpknMExld1TKe6ICx/CBykec9Gwv4Umqes9gd3uZeRcu4rvtoPduHp/tY2D4Wuo+V6EPmGMjaqFfi/qLUHIT+Anu0/IHXT86P9PrFcwa7xp6Rn4hdW4wnBsDmG9oPdFZDb4zJIe0Pe4ePQdf11Z3kp7Im2YOuxftuLabjpeI1bRH6Th1ead4g6wFGS34rMQs+kNWWq2geAzsmTuQD6kDtHO8b1hSmo2EE2dC2ZW+Iy7OVw6Ch5j30Jc17NO+Enw1dfiMyl/jFPVxgbyfmrNzbptO9FdjLkc/XY/V3xgHFWpGN4WoecA83ImvqlLJusgnX4xOD5xYPgR+UD+OQ4bPlJK2sh5j7iPUExEeuJw/EZhr6E7GFscpnDOA6N0e3Z81bsOal5kA+5L3UGI9Y2d3UzHNUN75+Iofl+w1xknlMqvFE8Y7j0xZb5LmUdyD7c/HB4izzpRfim67Je11T6dbUYBxirept4PYGeSJuzFgvQB79OIq/1D90v/QoL+wNdQNskDky9xapTIFFwJKlZ3md7a3QPNpiX0Z7H4eyJsQhj3g10hxJ91bq3oC/2FvVryns18QckXtrOQ5yJNgA5uxltLFxljqOxstI7RB2vzyaXWl+WWdiA4n42xa+L77wWJttR8R32lWOOGaxz7PYkLbqt57hckK9qS1LjsF8ZVcTA2i7zGtlvBw+0Zkduhjbat0gvkM7wvxSI8aJ+uMqtb2PtQbV3L/TGJwbjo4bw9GW+5J6Ku2uYd/qs6NTq7nKbW15e8O82cXrrjhafdUwN6VskA+aHuUe9yfYRbxbbAbAz8LwhL5Pf9gGtEfWpJqTGY4gp4pcbEEcU3nBnkrIqzHMblT30J2rFVOPOQjtfWzYCcaH2Il8wUtvKDfR07al3KCblatrgMOJyl0xSf3f9Mf8lDLDmlVmM9hHBZmJ3aseDfPGA6v12lmve4d5sB/iMDDImykGn2jDYltyraOdauwLzS471v1t7/8D50fM410Os2BcaNMR42kzQz3PsTZq34rfHWMjYxUxOLL1Ih/qNDdDjXSrYxF3MBZ8D3YxVP+da6yiDXHfy4HVZGrzIm/LJ/0Z5Y7cQuxa9sj6BHInDiXkIORea3sNNM8sbFzUsnmrmCH3fDdW6XMs+CzHKkzfY9VdpX6YaR3qO9/s4wO4El2X4q2MhTqeWMOYh9g/ZF6rtRPyutxiVuJbzPLNR0OLpS3vYayKMdDsHZwQ5eabP0cWR60mLhz2vcz6cVRW6dzJKrXYR/wNXLyxmr41rEEsCpRbAb9wfZdUH8m7nz/eTzYbyS4fyzA9S5SjHYBn+zS/khlzj9KT7ItIMDkdLbs6/Fl2temzq++zMo1cp1AzKckeR8z4gEya2cRAz+1gVYEr/DkrN5s7Vm6jDI1kwsjoZ6joUE2PU1S6WB8RBUiTdWbdMaJOMZiywrs6yBoiMnAxERRZnFZKXHNKqyPr0GqElX0yC/6z9W1DjhUX1OA6trkWNlcHFAbrUOraxdNmYAiA7u0PTMEPOjDU9I3B0upvgcxBKhqMJV6QsYK9+b3mPad5+PUMuTgwO76oGVslH0QukCl3MdBaQPzn+7z+tzUB80F5/9RqTe8h7hBLiGX70zHrEsZv1i31faycwwY8Sqd+xpquo3+JP8l35ijZ5ES+qp/3rVRixj+w2y3xPE58+seC+B58X4uYVr/8oFHtXP1H6SELOQVgaNMgZaUu9h1YhGnIGsXIHMAuJlplx+g75Cq9StkgzU7BCNA+xE+2ogVIYks2ANFH7PnAbF18k9rqxOc6oKRIgLYgkRN2srDnJSqD6UDVq3/L9Q5Z/g0qIJN+Lz2zy62Oq/MebN6jzRvIWkNWeUDwiyfrRZR/ICkZAR4gM0htKrFi8d4r4/ceC93kEXF8ztloi9DbIu4RoNa8m4gEvUsM3TSs0+tC65lueWBNMvmBc1PMboFKrJFlLZKTg0eu04N50sE86TBVO47Is02MD4QHi7fJtUi1lg6m5MvKw6+Q8P+9Pv2FLafVb2y5jwEzyWIySpbRh12JKdgGIADtcaxZMT1NIjKQQiJlRqbS004IGbQxOhbIxlmxquel3pqdkC3wOspYHaZH66hotirRWrNVMC1kpF4gcUS2dQycZIfEL9CXBVsBtOjYHQm0G7MM1A9KRuh38312GQLZb81UVuj1gmWCZUHiYCi30AxY+MAiMLJ+b62V2AFZhWA7LPkAFiJb3AdTsqK3YK+UqQSDhTH2YDS2tBBFPoyJLtIQ2K3MG60U2F2y0kuJxvBTsPXI5qBZseIFWIBhxEq4cpVT/lZ+ZHm12srJvGKtyCbAJkimhzGw7qb4dSXXVxysAEevFSDZZx9jAUdKG6uwscrXinfUV5fGKo4dK+sZiyvXUOHn6q3itTKHp/agjL8xD259vmWVxkpEHWWLzEsyKqkOJI8QHUq2qwzzjTEYfeVsjIfkBXPPsSHGzKTKzDomBJksYy3WqUzITLtTIgd+ihyU5bVuT2esL69zLbg2srWgIlDkOBk7qFUQWefcqk5kbnlo2WCoDDCqCzByQMcxuyyZMkWdYy8yV31hze47UaRwXaOBVcDI9n1U9yqfrH5lhMlWWbZbBlpVJK6j5ORu7OIOawroY05ne9NZr3vtXjEj73WQO12G2pEcDrimuTIXzHzrq9rYLe2waXcA9u1pNcvqGGtiNZWyS0Lbb2wssO8cy/JN7WpwrI3Zdq7juLFcN6qvGClzj0yLyvwkUcLJ3LcKXFkK7cA0r1VKYVV3z15E7MxgTeyQXNXsNs6BkWOgNSse6nAOTFiG7OQqVnka6ZaIgvS1TO1On8Pea+iidPiEDC1ENiVYgwqw1k6JseHEk1yjIFnxHPtnt03zWlaEA+1cl4qp8fVBu3dL2A86qWT1KMvFRT01FlIZ843PambhmHdWhh7ze+ayqmfL8+V9rH0TMn4ItuJZVKhg8ZGFumpTMwWy2cRvnQ9y3mK+QUa83wx0vRtibLp7ztjBQdRfkI0hK8r7Ws0r4425YrL7gYzjcW3K7mn8U79vlV1hHnWg7bECR6dR9EFZIscvkRVbt5Fd0ci6uxxf/R0RWGSy03zp54z/1jH+QcpursgbcWVxW4v+gxljC2V4UtY3RSecVXZGeWkF7/DB2BvY2+Bd7OxSnhhIiesndDkGiHtgJDNdO5idMNNuN08U6GkBdFOSyDLpgZ5OoL+IPZNFOzJu4H2wD7T1fKCxXzCCepHMZqH1DsYrHcscj11HArVYR/tlB708Wnch0LHQKcw1B+62Ll+27G+j92qXHW71bzDhHZiMUnMBXY9ftK7btnEsQ2AVtLJd2sE9aidbWRMyYYinPA/DLi/z+kIremCeYym066b4ciJmVcZ4IutDHEXeToaMrFzwZozGnlesU/ZiYMwS8PlIhlr+0TeJs8A+7BuMq502qDgeYqWyj9yr67ixy+8Z5oJhC4lX8HHIdgF2c2j2REamTd1+up59alzOoR0JsEPIV0plrKQKY9dy1TNZjcX3ltXf3LGsZJ9aW/MbpvHGxkL9NNZKMuiZrNZ00mpnnB0hN1Zn+9JuPzq9HRj8Evcg7xNY6KJn61PHFEbG/nn9iQZlZDxjEJWR3kF3mxeNN8iJXxmxniVn93x7NKw9kYlijEnslMTWGESsacN4yq5Q4HJUdjUa65o01jWx7sTY2HLrwLBrcw9MPVH3MpZVKS7/iSw+06dRQWAMPXGEHMixrqUxUsSSwGzL01ym1BhmtoU8RvP00rHt/SkUF5/lnsXOpW9jBX0OsriprRvRmuw8tW+XnyeWL+SWQ9J/B4bHPLXCjjAxI3EdKtcJD/oTOLU7ZUL28MQ6gfoTbGCXYsic1LHTeqoh19xVcTS0PNJiPNa2bE2nofoxu3QH2MQsvq7VT056wohxIT1YpdnRHtDF7bSzDEaE1SrwmHWIp88s7JmWpwc81uXUc38SDPqPiLW9vW6Pr/rxXqyrfXxzUsI3BthOSy0PFjss19iQeenzFo5/anqbZ3yWfaIyZhclN7ls7bSNY03HfafKsEtZecoRPg1mBzZfAI+Jw5kxoTPNyzzkbtyDduSMKe9rHvoU6xrEktEpyHoW37qd9G3kUYbxOo5nHRXrQi5d/uhbLhqwuxq4cZavp1pYM+T93rK3uOy6BMwfcXoArHSBuBq4vekJFuaHfs/a9/uxjg2ZDowDX3YdeNSZ4/DNONa1pIzU13Rv4Wu3yHO5MeKDT15K4if1uk/tBE9pp3PSl9dxUjdO+9pFex2Hc0oOylxzYl3ruZ3Y46mKYfuKneoTetKG8Vg72jHiA3wL9laQ/dH6MXen+LSDrrVVY5/wJ3yK75yjbgy0boSMC1/fdzVMz/5r3OtjfGFdItbcGh/gu4uh+FlCm8465rUN67s39RHrq9h11oaus3bqO2sxOoPojm9sT6XW6Iv+FKPvbG+mJ7OsbkjslObQs47aKYOfxax91M8WtqbKTt4Qn2gzocXgtu8ijGyfXelqLE9Pfal/6JrcqUR2NrSrVFknz5061FOAUd+V5ZrQWQJDvOzr6/40ZG0dZnZT87cnBK3bkmo+8p4rnPyGMfR7xrDeaHdwgfXcHJSHQu5+U6faAWzUFkrGW3Kvilmhru3mXb75p7zR73j+rOf5wV+MBxa722zyhutZpVp/x0vGmZnm73qST9lxxDFyYhoPEsQIY67BLOZWw+CkAO956AUYE8/9/5283G/3W7n9lnpyFvUmdD9JkedLTkQG9aB1JjraPE1nfycH47EO1gMCnh0znGgakSvx7aTJj7wY2dX8qN36XE8UgG2ljTF2if+hftkqZw0+jnvUU5iUs3IxwGLWS8htrL50db7Ki/HrP/RLeqtE9s9zwzwPINXVe1bzv5XKG+teEjngmcxMWlZhyAQQFcD5hlaFhewysArbtn9mtYVYraAU0ZPnl3yyfsyCxXqBiBJRYHHILpTpgIek3++zY/ULRJmfIlZgYDhYeRnDNqeGIA94ZaDWzsox1E5I2dnfOF/mGeKYPPT8PLl4rEk8S6vTk1an+3fe1imDkugZOERzsiq5eiDO+rFi1PND/I7eETIpycCMlQNrgcyqo9X8tlJPXaXOzEEsLOD5oiD9X++V2XXFfnfE7g3PF5VWYcOygQhpRHQiO708amVrHZ0ut7/zo1a67/Z44Lke62KmegaGf1M37xF5dPaFv9P4+ZUwC+QTv2MLzx/uq+PdevcwOhyuX3YPB7n6j//Bz+3+/Hd+P//l3+Thaf9w/NrK36fq/vhoP+0bBP8IQv193+NDtXm0XwEG3l//GHzU63cHvbbpR/hvfnsoz9vPD3/9m0t55s3PLu2dd7/W/Dc=","w":152.23,"h":206.58,"aspect":"fixed","title":"User"},{"xml":"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","w":222.92,"h":304.59,"aspect":"fixed","title":"WireGurad server"}] \ No newline at end of file diff --git a/enterprise/enterprise-features.md b/enterprise/enterprise-features.md deleted file mode 100644 index 6779848..0000000 --- a/enterprise/enterprise-features.md +++ /dev/null @@ -1,16 +0,0 @@ -# Enterprise features - -Here is a list of all Enterprise features: - -* [Ability to use external OIDC](../admin-and-features/external-openid-providers/) (Google/Microsoft/Okta/JumpCloud/Custom) to login or create Defguard account. - * Do Multi-Factor Authentication on selected VPN locations with External SSO on Desktop and Mobile clients (from version 1.5). -* [Two-way LDAP & Active Directory synchronization](../admin-and-features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md) -* [Real time sync for client configurations](../admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md)! **First WireGuard client to support this feature!** -* Ability to define and enforce [Access Control List rules](../admin-and-features/access-control-list/) / firewall management -* Ability to [stream the Activity & Audit logs to external SIEM systems](../activity-log/activity-log-streaming/) -* Ability to use [external OIDC for secure remote enrollment and Desktop client configuration](../admin-and-features/external-openid-providers/external-oidc-secure-enrollment.md) -* Ability to [disable for users to manage their devices](../admin-and-features/wireguard/behavior-customization.md#disable-for-users-to-manage-their-devices) (just admin will have this possibility). -* Ability to [disable for users to configure WireGuard clients other then Defguard desktop client](../admin-and-features/wireguard/behavior-customization.md#disable-ability-to-configure-other-vpn-clients-then-defguard-desktop-client). -* Ability to [disable "All traffic" in the desktop client ](../admin-and-features/wireguard/behavior-customization.md#disable-all-traffic-option-in-the-desktop-client)- just "predefined" traffic by admins. -* Ability to integrate with external tooling using [REST API](../integrations/api-tokens.md). - diff --git a/enterprise/license.md b/enterprise/license.md index 380613e..0825113 100644 --- a/enterprise/license.md +++ b/enterprise/license.md @@ -1,16 +1,10 @@ -# License +# Purchasing and using the license -Defguard Enterprise offers a lot of functionalities that are not offered in the Open Source Open Core, like external OpenID Connect/SSO support, automatic\&real time desktop client synchronization and configuration, and much more (go to [All Enterprise Features](enterprise-features.md) to see more). +Defguard is available as an open-source solution with additional paid features. Some functionalities are available only with a valid license or are subject to usage limits, depending on the selected plan. Details about feature availability, limits, and pricing are provided on the [Pricing page](https://defguard.net/pricing/). -### Enterprise is free up to certain limits +### Paid features free up to certain limits -{% hint style="info" %} -From release 1.1.0 **all enterprise features up to the following limits are free and no license is required:** - -* 5 active users -* 10 devices -* 1 location -{% endhint %} +Some paid features are available for free up to certain limits. The exact limits are listed on the [Pricing page](https://defguard.net/pricing/). Those limits should be more than enough for small businesses, home-labs or just to test out Enterprise features before committing. @@ -27,7 +21,7 @@ If you would like to purchase a license, we offer two types of licenses: #### Subscription -You can buy a monthly (soon yearly) subscription on our website: [https://defguard.net/pricing/](https://defguard.net/pricing/). +You can buy a monthly or yearly subscription on our website: [https://defguard.net/pricing/](https://defguard.net/pricing/). After purchasing: @@ -38,6 +32,18 @@ After purchasing: If your setup / firewall / network policy **doesn't allow that Defguard will contact our licensing server, please contact us for the** [**Offline license**](license.md#offline-license)**.** {% endhint %} +#### Upgrading subscription + +You can upgrade your monthly subscription to annually at any point in time by visiting [Stripe Customer Portal](https://billing.stripe.com/p/login/6oEdS2cOv1eEgW47ss). + +Once you upgrade, your current monthly subscription will be active until the end of the billing cycle. + +At the end of the cycle, monthly subscription will be canceled automatically and new annual subscription will be created and charged. + +If charged successfully, a new annual license will be created. + +Then your Defguard instance will contact our license server and fetch a new annual license starting at the end of your current monthly subscription. + #### Offline license Defguard is build with the highest security architecture in mind, thus there may be scenarios where you don't want any of the components to contact external services (eg. Defguard core will have no access to Internet). diff --git a/admin-and-features/access-control-list/README.md b/features/access-control-list/README.md similarity index 87% rename from admin-and-features/access-control-list/README.md rename to features/access-control-list/README.md index f7a2458..800fa41 100644 --- a/admin-and-features/access-control-list/README.md +++ b/features/access-control-list/README.md @@ -1,7 +1,9 @@ # Access Control List {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} {% hint style="warning" %} @@ -21,7 +23,7 @@ Access Control can be enabled for each location individually. To enable it: 2. In **Location configuration** section, select **Enable ACL for this location**. 3. Click on **Save changes**. -
+
**You should also set the default ACL policy for the location** (see below). @@ -40,11 +42,11 @@ Make sure ACL has been enabled (see above), otherwise the policy setting will no 2. In **Location configuration,** choose the desired option under **Default ACL Policy**. 3. Click on **Save changes**. -
+
## List of ACL rules -
+
**Access Control List** view displays all the rules defined in your system. The list is split into two sections. @@ -63,26 +65,26 @@ Defguard does not track rule application status per location. In the event of ne Use the **Deploy pending changes** button to apply all the rules from **Pending Changes** section. {% hint style="info" %} -#### Batch rule application +**Batch rule application** Defguard’s ACL functionality is designed to allow users to apply access control rules in batches. This approach minimizes the risk of transient network issues that could occur when deploying rules individually. By grouping changes and deploying them together, the system reduces the likelihood of connectivity hiccups or firewall disruptions. {% endhint %} The ACL list view also allows rule filtering by name, locations, and other attributes -
+
## How to add and modify ACL rules -To create a new rule, use the ![](<../../.gitbook/assets/image (6).png>) button in the [ACL List View](./#list-of-acl-rules). +To create a new rule, use the ![](<../../.gitbook/assets/image (21).png>) button in the [ACL List View](./#list-of-acl-rules). -You can edit an existing rule by using the ![](<../../.gitbook/assets/image (12).png>) context menu and selecting **"Edit"** in the [ACL List View](./#list-of-acl-rules)**.** +You can edit an existing rule by using the ![](<../../.gitbook/assets/image (27).png>) context menu and selecting **"Edit"** in the [ACL List View](./#list-of-acl-rules)**.** -

Rule context menu

+

Rule context menu

### Anatomy of an ACL rule -
+
The ACL form consists of three main sections: @@ -165,17 +167,17 @@ To do this, the following new rules have to be added: * Add desired users in the **"Allowed Users/Groups/Devices** > **Users**. * Click on the **Submit** button. -
+
You will be redirected back to the [ACL List View,](./#list-of-acl-rules) and the new rule should now be in the **Pending Changes** section. -
+
Now, click on **Deploy pending changes (1)** button. After that, the rule should be applied on the _Office-Berlin_ location. -
+
-(See [Implementation Details](../../enterprise/all-enteprise-features/access-control-list/firewall-internals.md) documentation to understand integration with system packet filtering.) +(See [Implementation Details](https://github.com/DefGuard/docs/blob/docs/enterprise/all-enteprise-features/access-control-list/firewall-internals.md) documentation to understand integration with system packet filtering.) #### Adding access exceptions for specific users @@ -200,4 +202,4 @@ Once you have created appropriate groups and assigned the users, let's update th * Instead of specific users in the **Allowed Users** input, we now select the _Staff-Berlin_ group in the **Allowed Groups** input * In **Denied Groups** input we should now select the _Externals_ group -
+
diff --git a/admin-and-features/access-control-list/acl-aliases.md b/features/access-control-list/acl-aliases.md similarity index 77% rename from admin-and-features/access-control-list/acl-aliases.md rename to features/access-control-list/acl-aliases.md index a1dd22d..bd59b75 100644 --- a/admin-and-features/access-control-list/acl-aliases.md +++ b/features/access-control-list/acl-aliases.md @@ -5,8 +5,12 @@ ACL alias functionality allows administrators to create reusable elements which For example, you can define aliases for commonly used ports (e.g. 22 for SSH) or for services within your infrastructure (e.g. 1.2.3.4:5432 for a particular PostgreSQL server). {% hint style="warning" %} -Access Control is an [enterprise feature](../../enterprise/license.md). To use it you'll need to [purchase a license](../../enterprise/license.md#purchasing-the-license) or ensure your deployment does not [exceed the limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. +{% endhint %} + +{% hint style="warning" %} Access Control is available in Defguard version ≥ 1.3.0 and Gateway version ≥ 1.3.0 {% endhint %} @@ -16,7 +20,7 @@ All the aliases defined in your systems are displayed in the second tab of the * ### List of aliases -

ACL alias list

+

ACL alias list

Similarly to ACL rules themselves, the list is split into two sections: @@ -33,9 +37,9 @@ When the alias changes are deployed, firewall rules will be updated for all affe To create a new rule, use the **Add new** button on the list view. -You can edit an existing rule by using the ![](<../../.gitbook/assets/image (12).png>) context menu and selecting **Edit** in the list view. +You can edit an existing rule by using the ![](<../../.gitbook/assets/image (27).png>) context menu and selecting **Edit** in the list view. -

Alias creation form

+

Alias creation form

In the ACL alias form, you can specify alias name and [type](./#alias-types). @@ -53,19 +57,19 @@ Unlike ACL rules, newly created aliases have **Applied** status, since they do n To remove an alias, select the **Delete alias** option from the context menu. -
+
Unlike with ACL rules, alias deletion is not tracked as a modification. You cannot delete an alias if it's being used by any rules and deleting unused aliases is immediate, not requiring changes to be deployed. -

You cannot delete aliases used by ACL rules

+

You cannot delete aliases used by ACL rules

## Using aliases in ACL rules Aliases can be used to define an ACL rule destination by selecting them in the input within the **Destination** section: -

ACL rule Destination section with Aliases field

+

ACL rule Destination section with Aliases field

-

Alias select modal

+

Alias select modal

## Alias types @@ -78,7 +82,7 @@ Aliases are divided into two distinct types to handle various use-cases: Let's start with an ACL rule that defines a following destination: -
+
By itself, this rule allows specified users to access **all ports** and **all protocols** on the specified IP. @@ -86,7 +90,7 @@ By itself, this rule allows specified users to access **all ports** and **all pr Consider an **SSH** alias with a following definition: -

SSH component alias definition

+

SSH component alias definition

When used in the previously created ACL rule, port 22 will be added to manual inputs defined in the rule itself. @@ -96,7 +100,7 @@ In effect the rule will now grant access **only** to port 22 on 10.2.0.5, just l Now consider the following alias: -

Postgres server destination alias

+

Postgres server destination alias

When used in the previously defined ACL rule it will have the following effects: diff --git a/admin-and-features/access-control-list/firewall-internals.md b/features/access-control-list/firewall-internals.md similarity index 97% rename from admin-and-features/access-control-list/firewall-internals.md rename to features/access-control-list/firewall-internals.md index 3feb08d..dcfe360 100644 --- a/admin-and-features/access-control-list/firewall-internals.md +++ b/features/access-control-list/firewall-internals.md @@ -10,7 +10,7 @@ Defguard Gateway does **not** take control of the entire firewall. Instead, dedi ## NFTables (Linux) -All applied rules are deployed to Defguard Gateway. This means that the firewall on the Gateway that handles the _Office-Berlin_ location should contain appropriate [NFTables](https://nftables.org/) rules that implement the specified requirements. Let's see how this looks like in practice. Typing `nftables list ruleset` in the Terminal on a machine running Defguard Gateway should display something like the following: +All applied rules are deployed to Defguard Gateway. This means that the firewall on the Gateway that handles the _Office-Berlin_ location should contain appropriate [NFTables](https://nftables.org/) rules that implement the specified requirements. Let's see how this looks like in practice. Typing `nft list ruleset` in the Terminal on a machine running Defguard Gateway should display something like the following: ``` ... @@ -170,7 +170,7 @@ Destination IPs for a given ACL can be configured in multiple ways: * Destination aliases * Component aliases -It is therefore possible to configure some overlapping destinations, for example a 10.0.20.0/24 subnet and then a specific IP like 10.0.20.17 in some alias. +It is therefore possible to configure some overlapping destinations, for example a 10.0.20.0/24 subnet and then a specific IP like 10.0.20.17 in some alias. When generating firewall rules, we have to be mindful of the following limitations regarding our specific implementation: diff --git a/activity-log/README.md b/features/activity-log/README.md similarity index 89% rename from activity-log/README.md rename to features/activity-log/README.md index 50b59d2..d7ef118 100644 --- a/activity-log/README.md +++ b/features/activity-log/README.md @@ -1,9 +1,5 @@ # Activity & Audit logs -{% hint style="info" %} -This feature is available starting from version 1.4 -{% endhint %} - The Activity Log provides a comprehensive view of user interactions within your Defguard instance. This allows you to monitor user behaviour, troubleshoot issues, and maintain an audit trail of important activities. ## Viewing Activity log events @@ -12,7 +8,7 @@ Activity log is available as a dedicated page in Defguard core Web UI that's use To access it, click the `Activity log` button in the navbar. -

Activity log page

+

Activity log page

### Overview @@ -35,12 +31,12 @@ Currently, there are four modules: * **Defguard** - operations performed in the core Web UI (e.g. adding users, modifying devices, managing groups etc.) * **Client** - actions performed by desktop client applications -* **Enrollment** - events related to the [user enrollment](../help/enrollment/) process +* **Enrollment** - events related to the [user enrollment](../../using-defguard-for-end-users/enrollment/) process * **VPN -** events related to VPN clients (e.g. client connecting to a location) ### Filtering -

Event filter modal

+

Event filter modal

By clicking the `Filter` button above the list you can narrow down the displayed events based on following criteria: @@ -52,7 +48,7 @@ For each of those you can select multiple options. Filtering by date can be done by clicking the `Time range` button above the list. -

Time range filter modal

+

Time range filter modal

### Sorting diff --git a/activity-log/activity-log-streaming/README.md b/features/activity-log/activity-log-streaming/README.md similarity index 65% rename from activity-log/activity-log-streaming/README.md rename to features/activity-log/activity-log-streaming/README.md index bebce6f..9808aa9 100644 --- a/activity-log/activity-log-streaming/README.md +++ b/features/activity-log/activity-log-streaming/README.md @@ -8,11 +8,9 @@ description: >- # Audit Log Streaming to SIEM systems {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). -{% endhint %} +#### Availability -{% hint style="info" %} -This feature is available starting from version 1.4 +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} **Activity Log Streaming** allows you to forward real-time activity logs from your system to external SIEM (Security Information and Event Management) platforms. @@ -20,4 +18,3 @@ This feature is available starting from version 1.4 ### Supported integrations Check full list of where activity log can be seen here [activity-log-integrations](activity-log-integrations/ "mention"). - diff --git a/activity-log/activity-log-streaming/activity-log-integrations/README.md b/features/activity-log/activity-log-streaming/activity-log-integrations/README.md similarity index 100% rename from activity-log/activity-log-streaming/activity-log-integrations/README.md rename to features/activity-log/activity-log-streaming/activity-log-integrations/README.md diff --git a/activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md b/features/activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md similarity index 70% rename from activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md rename to features/activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md index 25b2ac2..adb5f13 100644 --- a/activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md +++ b/features/activity-log/activity-log-streaming/activity-log-integrations/logstash-integration-guide.md @@ -1,5 +1,5 @@ --- -description: How to stream activity logs to vector. +description: How to stream activity logs to logstash. --- # Logstash integration guide @@ -42,13 +42,13 @@ Add Logstash service to the `docker-compose.yaml` and start it. In Defguard UI with an administrator account, go into settings page and choose `Activity log streaming`. -Click `Add new` and choose `Vector` destination. +Click `Add new` and choose `Logstash` destination. -
+
Fill out `Name` and `Url` fields and click **Submit**. -
+
That's it! Defguard should now be sending activity events to Logstash, and you should see them printed to `stdout` in the running Logstash container. @@ -78,8 +78,8 @@ output { Modify Logstash destination in settings and fill`username` and `password` in settings. -
+
### Logstash integration configuration -
NameExample valueRequiredLogstash related configurationDescription
NameLogstashtrueAssigned name for the destination.
Urlhttp(s)://127.0.0.1:8002truehost, portAddress of running vector HTTP source.
Usernamelogstashfalseuserusername for Basic Authentication
PasswordstrongPasswordfalsepasswordpassword for Basic Authentication
Certcontents of cert.pemfalsessl_certificateUsed for TLS connection
+
NameExample valueRequiredLogstash related configurationDescription
NameLogstashtrueAssigned name for the destination.
Urlhttp(s)://127.0.0.1:8002truehost, portAddress of running logstash HTTP source.
Usernamelogstashfalseuserusername for Basic Authentication
PasswordstrongPasswordfalsepasswordpassword for Basic Authentication
Certcontents of cert.pemfalsessl_certificateUsed for TLS connection
diff --git a/activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md b/features/activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md similarity index 93% rename from activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md rename to features/activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md index 354989d..bc797dd 100644 --- a/activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md +++ b/features/activity-log/activity-log-streaming/activity-log-integrations/vector-integration-guide.md @@ -62,13 +62,13 @@ In Defguard UI with an administrator account, go into settings page and choose ` Click `Add new` and choose `Vector` destination. -
+
Fill out `Name` and `Url` of the form and click `Submit`. If your `defguard` instance is running in the same Docker Compose network as Vector, use `http://vector:8001` as the URL instead of `http://127.0.0.1`, since services in the same Compose network communicate by container name. -
+
That's it! Defguard should now be sending activity events to Vector, and you should see them printed to `stdout` in the running Vector container. @@ -93,7 +93,7 @@ sources: Next, add the configured `username` and `password` in Defguard settings to the Vector destination. -
+
### TLS @@ -139,7 +139,7 @@ sources: Next, copy the contents of `cert.pem` into the **Certificate** field in the Vector destination settings. Then, update the **URL** field to use the `https` scheme instead of `http`. -
+
### Vector integration configuration diff --git a/features/desktop-client-auto-provisioning/README.md b/features/desktop-client-auto-provisioning/README.md new file mode 100644 index 0000000..0115360 --- /dev/null +++ b/features/desktop-client-auto-provisioning/README.md @@ -0,0 +1,55 @@ +# Desktop client auto-provisioning + +## Overview + +The Defguard desktop client supports automated provisioning through a configuration file-based approach that enables it to work across all supported platforms. This feature streamlines client deployment in enterprise environments by automating the initial user enrollment and client configuration process. + +## Provisioning process overview + +While the provisioning process is dependent on your specific environment and tooling, there are some general steps to you'll probably follow: + +1. Generate enrollment tokens for your users. This can be automated by [leveraging our REST API](generating-enrollment-tokens-with-defguard-rest-api.md). +2. Transfer tokens to end-user machines as a [configuration file](./#provisioning-configuration-file). +3. Install Defguard desktop client on end-user machines. +4. On first startup the user will be redirected to the enrollment flow. + +### Windows platform + +We provide additional tooling and a [detailed guide](auto-provisioning-in-windows-environments/) for an end-to-end provisioning process on Windows platforms with on-premise Active Directory or Entra ID. + +## Client-Side Implementation Details + +Automated provisioning is enabled by a desktop client functionality which reads an optional configuration file and redirects the end user to the enrollment flow on first startup. + +### Initialization Check + +On startup, the desktop client performs an initialization check to determine if it has been previously configured. A client is considered initialized if at least one VPN instance has been configured. + +### Provisioning Configuration File + +If the client has not been initialized, it searches for a provisioning configuration file in the default application data directory (the same [location where the client database file resides](../../using-defguard-for-end-users/desktop-client/#storage)). + +**File location:** `/provisioning.json` + +**File format:** The configuration file is a JSON document containing two required fields: + +* `enrollment_token` - The enrollment token for the user +* `enrollment_url` - The URL of the Defguard instance + +**Example file content:** + +```json +{ + "enrollment_token": "6B8fg2wiyczb1uDCDwUyMsnYz6qQBVu0", + "enrollment_url": "https://proxy.example.com/" +} +``` + +These values are analogous to those used in the standard user enrollment process. + +### Client Provisioning Process + +1. If a `provisioning.json` file is found, the client reads the configurationThe client attempts to configure itself using the provided enrollment token +2. If the user has not yet completed enrollment, they are redirected to the enrollment screen +3. The user follows the standard enrollment process to finish setting up their account +4. Once enrollment is complete, the user can connect to VPN locations and access protected resources diff --git a/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/README.md b/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/README.md new file mode 100644 index 0000000..13ac59d --- /dev/null +++ b/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/README.md @@ -0,0 +1,90 @@ +# Auto-provisioning in Windows environments + +## Windows Auto-Provisioning + +At the moment the complete auto-provisioning process is officially supported on the Windows platform and handles both on-premise Active Directory as well as Entra ID environments. + +### MSI Installer Integration + +The official Defguard Windows [MSI installer](https://defguard.net/download/) includes a PowerShell [helper script](https://github.com/DefGuard/client/blob/2a348dc4e07c2cdf6284af998dc092c65dd7d2dc/src-tauri/resources-windows/scripts/Get-ProvisioningConfig.ps1) that enables automatic provisioning during installation. + +This script executes when the installer is run with the `PROVISIONING=1` argument provided. + +**Example installation command:** + +```powershell +msiexec /i defguard-client.msi PROVISIONING=1 +``` + +#### Domain Detection and Configuration Retrieval + +The provisioning script automatically detects whether the machine is joined to: + +* **On-premise Active Directory (AD)** +* **Microsoft Entra ID** (formerly Azure AD) + +If the machine is domain-joined, the script attempts to retrieve provisioning configuration from the appropriate directory service. + +If the machine is not joined to any domain the script exits gracefully. + +For hybrid-joined machines (joined to both Entra and AD) the script proceeds with executing the **Active Directory** flow. + +#### **Active Directory Configuration** + +For Active Directory environments, the provisioning configuration is expected to be stored as JSON in a single user attribute. The attribute name can be specified as an optional argument to the installer. + +**Script argument name**: `ADAttribute` + +**Default attribute name:** `defguardProvisioningConfig` + +**Example attribute value:** `{"enrollmentUrl":"https://proxy.example.com/","enrollmentToken":"DuK8xRes5zYqem0fcAViQPRvIrNkGz7S"}` + +**Example installation command:** + +```powershell +msiexec /i defguard-client.msi PROVISIONING=1 ADAttribute="extensionAttribute4" +``` + +#### **Entra ID Configuration** + +For Entra ID environments, provisioning data is retrieved from custom security attributes within a dedicated attribute group. + +**Attribute group name:** `Defguard` + +**Required attributes:** + +* `EnrollmentToken` - The user's enrollment token +* `EnrollmentUrl` - The Defguard instance URL + +#### Configuration File Creation + +After successfully retrieving provisioning data from AD or Entra ID, the script creates a `provisioning.json` file in the expected application data directory, making it available for the client to use on first launch. + +### Generalized Windows Auto-Provisioning Workflow + +This section gives a high-level overview of the provisioning workflow. For more specific instructions for specific Windows environments see dedicated guides: + +* [On-premise Active Directory environments](on-premise-active-directory-environments.md) + +#### Provisioning Steps + +1. **User Management** + * Add users to the Defguard instance using one of the following methods: + * Two-way LDAP synchronization (for Active Directory) + * OpenID directory synchronization (for Entra ID) +2. **Token Generation** + * Generate enrollment tokens for users + * This can be automated using the Defguard REST API + * API access requires an [authorization token](../../integrations/api-tokens.md#generating-api-token) +3. **Client Installation** + * Install the defguard-client application on user machines using the MSI installer + * Pass the `PROVISIONING=1` argument to enable automatic provisioning + * Example command: `msiexec /i defguard-client.msi PROVISIONING=1 ADAttribute="description"` +4. **Automatic Configuration** + * During installation, the bundled script fetches provisioning configuration from Active Directory or Entra ID + * The configuration is written to the client's [data directory](../../../using-defguard-for-end-users/desktop-client/#storage) as explained [above](./#configuration-file-creation) +5. **User Enrollment** + * When the user launches the client for the first time, they are guided through the enrollment process + * The enrollment uses the pre-configured token and URL from the provisioning file +6. **Client Ready** + * Once enrollment is complete, the user can establish VPN connections and access protected resources diff --git a/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/entra-id-environments.md b/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/entra-id-environments.md new file mode 100644 index 0000000..5d2e73c --- /dev/null +++ b/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/entra-id-environments.md @@ -0,0 +1,74 @@ +# Entra ID + +## Overview + +This guide desctibes an example desktop client provisioning scenario in an Entra ID environment. + +The guide assumes that our goal is to provision desktop clients for a set of users in a specific Entra group. + +Please note that it is just a reference, you should adjust it to work with your specific environment and preferred tooling. + +## Generating enrollment tokens + +To automate the process as much as possible we've prepared an example PowerShell script which can be used to generate enrollment tokens for all users in a specified group. + +The script can be downloaded [here](https://github.com/DefGuard/client/blob/555fb727d3599264996ee1ac99f5124026083146/src-tauri/resources-windows/admin-scripts/GenerateEnrollmentTokensEntraID.ps1). + +The assumption is that this script will be run by an Entra administrator on a domain-joined machine. + +### Prerequisites + +* network access to a Defguard instance +* Defguard user account with admin privileges +* domain-joined machine +* Entra user account with `User Administrator` and `Attribute Assignment Administrator` roles +* custom security attribute set (default expected name is `Defguard`, but a different one can be used) with following attributes defined in Entra: + * `EnrollmentUrl` (String) + * `EnrollmentToken` (String) + +### Defguard authentication + +To securely access your Defguard instance's REST API you need to generate an [API Token](../../integrations/api-tokens.md#generating-api-token). + +### Entra authentication + +By default the script will use current user's credentials for Entra authentication. + +It will present an interactive propmt for selecting a user account. If this fails the script will attempt the device code auth flow as a fallback. + +### Required parameters + +* `Url` - URL of your Defguard instance +* `ApiToken` - your API token for Defguard API access +* `GroupName` - name of user group for which to generate enrollment tokens + +### Optional parameters + +* `AttributeSetName` - name of custom security attribute set where the provisioning config data will be stored +* `EnrollmentTokenExpirationTime` - how long should the generated enrollment tokens be valid for (default is 24h); should be specified as human-readable string, e.g 24h, 1d, 2w etc + +### Example script execution command + +`.\GenerateEnrollmentTokensEntraID.ps1 -Url "https://defguard.example.com" -ApiToken "dg-your-generated-token" -GroupName "DgProvisioning"` + +## Client provisioning scenario + +1. **Setup target users** + * prepare a user group containing all the users you intend to perform client provisioning for +2. **User synchronization** + * Configure OpenID directory synchronization as described [here](../../external-openid-providers/microsoft.md) + * **IMPORTANT**: enable the `Prefetch users` option to create directory users in Defguard +3. **Token Generation** + * Generate enrollment tokens for users using the [helper script](entra-id-environments.md#generating-enrollment-tokens) +4. **Client Installation** + * Install the `defguard-client` application on user machines using the [MSI installer](../#msi-installer-integration) + * Pass the `PROVISIONING=1` argument to execute provisioning script during installation + * Example command: `msiexec /i defguard-client.msi PROVISIONING=1 ADAttribute="description"` +5. **Automatic Configuration** + * During installation, the bundled script fetches [provisioning configuration](../#active-directory-configuration) from Entra ID + * The configuration is written to the client's [data directory](../../../using-defguard-for-end-users/desktop-client/#storage) as explained [here](../#configuration-file-creation) +6. **User Enrollment** + * When the user launches the client for the first time, they are guided through the enrollment process + * The enrollment uses the pre-configured token and URL from the provisioning file +7. **Client Ready** + * Once enrollment is complete, the user can establish VPN connections and access protected resources diff --git a/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/on-premise-active-directory-environments.md b/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/on-premise-active-directory-environments.md new file mode 100644 index 0000000..7bbbf82 --- /dev/null +++ b/features/desktop-client-auto-provisioning/auto-provisioning-in-windows-environments/on-premise-active-directory-environments.md @@ -0,0 +1,66 @@ +# On-premise Active Directory + +## Overview + +This guide desctibes an example desktop client provisioning scenario in an on-premise Active Directory environment. + +The guide assumes that our goal is to provision desktop clients for a set of users in a specific AD group. + +Please note that it is just a reference, you should adjust it to work with your specific environment and preferred tooling. + +## Generating enrollment tokens + +To automate the process as much as possible we've prepared an example PowerShell script which can be used to generate enrollment tokens for all users in a specified group. The script can be downloaded [here](https://github.com/DefGuard/client/blob/555fb727d3599264996ee1ac99f5124026083146/src-tauri/resources-windows/admin-scripts/GenerateEnrollmentTokensAD.ps1). + +### Prerequisites + +* network access to both a Defguard instance and AD Domain controller +* `ActiveDirectory` PowerShell module; to install you can run the following command in an admin shell: `Get-WindowsCapability -Name RSAT.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online | Add-WindowsCapability -Online` + +### Defguard authentication + +To securely access your Defguard instance's REST API you need to generate an [API Token](../../integrations/api-tokens.md#generating-api-token). + +### Active Directory authentication + +By default the script will use current user's credentials for AD authentication. + +Alternatively if you specify a username by the `ADUsername` parameter you'll be prompted for a password. + +### Required parameters + +* `Url` - URL of your Defguard instance +* `ApiToken` - your API token for Defguard API access +* `GroupName` - name of user group for which to generate enrollment tokens +* `ADAttribute` - name of AD attribute where the provisioning config data will be stored + +### Optional parameters + +* `ADUsername` - username for domain controller authentication +* `DomainController` - your AD domain controller URL +* `EnrollmentTokenExpirationTime` - how long should the generated enrollment tokens be valid for (default is 24h); should be specified as human-readable string, e.g 24h, 1d, 2w etc + +### Example script execution command + +`.\GenerateEnrollmentTokens.ps1 -Url "https://defguard.example.com" -ApiToken "dg-your-generated-token" -GroupName "DgProvisioning" -ADAttribute "extensionAttribute3" -ADUsername "administrator" -DomainController "ad.example.com"` + +## Client provisioning scenario + +1. **Setup target users** + * prepare a user group containing all the users you intend to perform client provisioning for +2. **User synchronization** + * Configure two-way Active Directory synchronization as described [here](../../ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md) +3. **Token Generation** + * Generate enrollment tokens for users using the [helper script](on-premise-active-directory-environments.md#generating-enrollment-tokens) +4. **Client Installation** + * Install the `defguard-client` application on user machines using the [MSI installer](../#msi-installer-integration) + * Pass the `PROVISIONING=1` argument to execute provisioning script during installation + * Example command: `msiexec /i defguard-client.msi PROVISIONING=1 ADAttribute="description"` +5. **Automatic Configuration** + * During installation, the bundled script fetches [provisioning configuration](../#active-directory-configuration) from Active Directory + * The configuration is written to the client's [data directory](../../../using-defguard-for-end-users/desktop-client/#storage) as explained [here](../#configuration-file-creation) +6. **User Enrollment** + * When the user launches the client for the first time, they are guided through the enrollment process + * The enrollment uses the pre-configured token and URL from the provisioning file +7. **Client Ready** + * Once enrollment is complete, the user can establish VPN connections and access protected resources diff --git a/features/desktop-client-auto-provisioning/generating-enrollment-tokens-with-defguard-rest-api.md b/features/desktop-client-auto-provisioning/generating-enrollment-tokens-with-defguard-rest-api.md new file mode 100644 index 0000000..d00fd2c --- /dev/null +++ b/features/desktop-client-auto-provisioning/generating-enrollment-tokens-with-defguard-rest-api.md @@ -0,0 +1,127 @@ +# Generating enrollment tokens with Defguard REST API + +To automate generating enrollment tokens for a large number of users you can leverage the [REST API ](../integrations/api-tokens.md)provided by your Defguard instance. + +This guilde explains how to do that with the assumption that your goal is to generate enrollment tokens for all users in a specific Defguard group. + +In real world scenarios this group might be synchronized with some external identity provider like in our [example Windows scripts](generating-enrollment-tokens-with-defguard-rest-api.md#example-windows-scripts). + +## Step-by-step overview + +Regardless of the specific scripting language or automation tool you'll be using, the general process will probably follow similar steps: + +1. Fetch all members of the target group +2. Iterate over all members and generate an enrollment token for each one +3. Store the tokens to transfer them to end-user machines as [configuration files](./#provisioning-configuration-file) + +## Relevant API endpoints + +### GET api/v1/group/{groupname} + +This endpoint retrieves detailed info about a group, including a list of usernames which can be used for generating tokens. + +#### Parameters + +* `groupname` - name of the target group + +#### Example response + +The response is a JSON object. Usernames can be found in the `members` property: + +```json +{ + "is_admin": false, + "members": [ + "user", + "user2", + "user3" + ], + "name": "name", + "vpn_locations": [ + "location" + ] +} +``` + +### POST api/v1/user/{username}/start\_enrollment + +This endpoint is used to start the enrollment process for a user. It generates an enrollment token and marks the user as pending enrollment. + +Please note that by default an enrollment token is valid for 24h and cannot be used later. If you expect your users to need more time, use the `token_expiration_time` option described below. + +#### Parameters + +* `username` - name of the target user + +#### Request body + +All fields are optional and can be set to `null`. + +If `send_enrollment_notification` is set to `true`, an email address must be provided. In this case a notification with an enrollment link will be sent to the specified address. If no token expiration time is specified, the default of 24 hours will be used. + +`token_expration_time` is configured as a human-readable string. For example: + +* 1w - one week +* 3d - three days +* 12h - twelve hours + +```json +{ + "email": "user@example.com", + "send_enrollment_notification": true, + "token_expiration_time": "1w" +} +``` + +#### Example response + +The response is a JSON object: + +```json +{ + "enrollment_token": "NotAnActualEnrollmentToken", + "enrollment_url": "https://enrollment.example.com" +} +``` + +### GET api/v1/user/{username} + +Fetches user details. This can be useful if you need some other user parameter (like email address) to integrate with other parts of your environment (for example Entra ID). + +#### Parameters + +* `username` - name of the target user + +#### Example response + +The response is a JSON object: + +```json +{ + "biometric_enabled_devices": [], + "devices": [], + "security_keys": [], + "user": { + "authorized_apps": [], + "email": "mail@defguard.net", + "email_mfa_enabled": false, + "enrolled": true, + "first_name": "first_name", + "groups": [], + "id": 2, + "is_active": true, + "is_admin": false, + "last_name": "last_name", + "ldap_pass_requires_change": false, + "mfa_enabled": false, + "mfa_method": "None", + "phone": "000000000", + "totp_enabled": false, + "username": "username" + } +} +``` + +## Example Windows scripts + +We provide pre-made PowerShell scripts for generating tokens and storing them in [Active Directory](auto-provisioning-in-windows-environments/on-premise-active-directory-environments.md#generating-enrollment-tokens) or [Entra ID](auto-provisioning-in-windows-environments/entra-id-environments.md#generating-enrollment-tokens). They can be used as reference and adjusted for your specific needs. diff --git a/admin-and-features/external-openid-providers/README.md b/features/external-openid-providers/README.md similarity index 64% rename from admin-and-features/external-openid-providers/README.md rename to features/external-openid-providers/README.md index 3ac2918..d18af97 100644 --- a/admin-and-features/external-openid-providers/README.md +++ b/features/external-openid-providers/README.md @@ -1,7 +1,9 @@ # External SSO/OpenID providers {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} Defguard, [apart from being an identity provider itself](../openid-connect/), supports logging in through external OpenID providers. All providers that support standard and common **code authorization flow should work.** @@ -59,7 +61,7 @@ These URIs will need to be provided in your provider's configuration. See [#exam In order to configure the external OpenID provider login, go to the settings in the Defguard admin dashboard. -
+
Everything related to the external OpenID configuration can be found in the OpenID tab of the settings page. The first thing to do here would be to pick your provider using the dropdown menu under the "Provider" label. Next, fill out the required information with values acquired from your provider. If you picked "Microsoft" or "Custom", make sure to also make corresponding changes in the "Base URL" field. After you are done, click "Save changes" to keep your changes. @@ -67,7 +69,7 @@ You may have also noticed the checkbox option on the right. By default, when a n ### OpenID enrollment -When you configure your provider, the proxy will automatically allow enrolling users through it. See [with-external-sso-google-microsoft-custom.md](../../help/enrollment/with-external-sso-google-microsoft-custom.md "mention") for the process from the user's point of view. +When you configure your provider, the proxy will automatically allow enrolling users through it. See [with-external-sso-google-microsoft-custom.md](../../using-defguard-for-end-users/enrollment/with-external-sso-google-microsoft-custom.md "mention") for the process from the user's point of view. For this to work, make sure you have the following two things set: @@ -76,7 +78,15 @@ For this to work, make sure you have the following two things set: #### Disabling automatic account creation -
+{% hint style="warning" %} +In order for users to be created in Defguard they must have the following attributes set: + +* email +* first name +* last name +{% endhint %} + +
If you disable the option above, new users won't be able to automatically go through the enrollment. You will need to create their accounts by hand (with the same email address as the one they have set on your OIDC provider's side) and only then they will have an option to activate it by logging through the provider. @@ -98,7 +108,7 @@ Defguard doesn't automatically create users based on the users in your provider' The menu can be found in Defguard settings by navigating to the "OpenID" tab. -
+
The following configuration options are currently available in the directory synchronization menu for all providers: @@ -118,18 +128,91 @@ If you want to delete your users based on the state of your provider we recommen #### Currently supported providers * [Google](google.md#directory-synchronization) -* Microsoft +* [Microsoft](microsoft.md) +* [Okta](okta.md#directory-synchronization) +* [JumpCloud](jumpcloud.md#directory-synchronization) ## Known issues +### Email conflict between user accounts + +In scenario where: + +* User1 exists in Defguard +* User2 has email: User1@domain + +User2 will not be able to authenticate using OpenID. + +This is not a system error, but an administrator’s negligence. The login (as well as the part of the company email corresponding to the login) must be unique, and the administrator is responsible for maintaining user data. + ### JumpCloud +#### Issues with logging in + When setting up JumpCloud you can encounter an error when attempting to log in with a message `Failed to parse payload JSON: Error(\\\"invalid type: string...`. This is because JumpCloud is returning a token that doesn't conform fully to the OpenID standard. You can try working around this issue by removing the `email_verified` field in your SSO application configuration in JumpCloud. In order to do this, edit your SSO Application and **deselect** the email scope: -
+
Then, add the email below by hand: -
+
Double check that the `email_verified` field is gone from the constant attributes section. The issue should be gone now. + +#### 401 error code when testing Directory synchronization + +Currently the integration doesn't work for accounts that chose to use the JumpCloud EU data center. See relevant [issue](https://github.com/DefGuard/defguard/issues/2756) for more information. + +### Request to the provider times out + +If the requests made to your provider time out you should check if the Defguard Core server has access to your provider. This can be done for example by running the `curl` command to one of the provider's endpoint from the machine/container on which the Defguard Core is running on. The request may time out either if: + +* The resource is not accessible because it's blocked by a firewall or other network configuration +* The response is taking too long (more than 10s), making Defguard Core terminate the request. + +#### Docker + +If your Defguard Core instance is running inside a Docker container, you should first obtain the container's name: + +``` +docker container ls +``` + +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +42986c3e772j postgres:15-alpine "docker-entrypoint.s…" 10 days ago Up 5 hours 0.0.0.0:5432->5432/tcp defguard-db-1 +c4000t32936a ghcr.io/defguard/defguard:main "./defguard" 4 weeks ago Up 19 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:50055->50055/tcp defguard-core-1 +``` + +In this case, the container name is `defguard-core-1`. + +Now, open a shell inside the container: + +``` +docker exec -it /bin/bash +``` + +While inside the container, you will need to first temporarily install the `curl` command as its not available by default: + +``` +apt update && apt install curl +``` + +#### Non-docker deployments + +Make sure you have the curl command installed and you are running the command from the same server on which the Defguard Core is running. + +Use the `curl` command to query one of your provider endpoints: + +* **Microsoft:** `https://login.microsoftonline.com//oauth2/v2.0/token` +* **JumpCloud:** `https://console.jumpcloud.com/api/v2` +* **Google:** `https://oauth2.googleapis.com/token` +* **Okta:** `/oauth2/v1/token` + +E.g. for Microsoft you can do: + +``` +curl -s -w "\nResponse Code: %{http_code} Time: %{time_total}\n" -X Post https://login.microsoftonline.com//oauth2/v2.0/token +``` + +Which should both print the response, the response code and the time it took for the request to complete. If the command doesn't complete or takes longer than 10s, the timeout issue may be related to your network/firewall configuration which makes the requests fail from the machine or take longer than expected. Please note that it's expected for this command to return an HTTP error code (4xx) as we are only testing connectivity (the ability to reach given endpoint). diff --git a/admin-and-features/external-openid-providers/custom.md b/features/external-openid-providers/custom.md similarity index 100% rename from admin-and-features/external-openid-providers/custom.md rename to features/external-openid-providers/custom.md diff --git a/admin-and-features/external-openid-providers/external-oidc-secure-enrollment.md b/features/external-openid-providers/external-oidc-secure-enrollment.md similarity index 50% rename from admin-and-features/external-openid-providers/external-oidc-secure-enrollment.md rename to features/external-openid-providers/external-oidc-secure-enrollment.md index 3cebef5..fd8631d 100644 --- a/admin-and-features/external-openid-providers/external-oidc-secure-enrollment.md +++ b/features/external-openid-providers/external-oidc-secure-enrollment.md @@ -1,10 +1,12 @@ # External OIDC secure enrollment {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} -When [External OIDC is enabled,](./) users have the possibility to [securely enroll (automatically create a Defguard account) and very easily configure their desktop client](../../help/enrollment/with-external-sso-google-microsoft-custom.md) just by logging in with the SSO provider: +When [External OIDC is enabled,](./) users have the possibility to [securely enroll (automatically create a Defguard account) and very easily configure their desktop client](../../using-defguard-for-end-users/enrollment/with-external-sso-google-microsoft-custom.md) just by logging in with the SSO provider:
diff --git a/admin-and-features/external-openid-providers/google.md b/features/external-openid-providers/google.md similarity index 74% rename from admin-and-features/external-openid-providers/google.md rename to features/external-openid-providers/google.md index d0e2578..abadaa8 100644 --- a/admin-and-features/external-openid-providers/google.md +++ b/features/external-openid-providers/google.md @@ -7,27 +7,27 @@ Here is [full Google documentation](https://developers.google.com/identity/openi 1. The Google OpenID Connect can be configured in the [Google Cloud Console](https://console.cloud.google.com) 2. If you don't have any project setup already (or you want to create a new one for this purpose), create it by clicking the dropdown menu here: -
+
If you already have project, make sure to select it in the above dropdown menu. 3. Now, navigate to [`APIs & Services`](https://console.cloud.google.com/apis) 4. We will focus on the consent screen first, select `OAuth consent screen` 5. Pick the User Type according to your needs, this example will focus on the internal type -
+
6. Fill in all required details. Make sure to fill the correct domain. This should be the top domain under which your Defguard dashboard can be accessed, not the subdomain (e.g. `defguard.example.com` -> `example.com`). 7. On the scopes config screen, click `ADD OR REMOVE SCOPES`, Defguard requires at least the following scopes: -
+
8. Proceed until the end and return to the OAuth consent screen dashboard. 9. Now, go to [`Credentials`](https://console.cloud.google.com/apis/credentials), click `CREATE CREDENTIALS` and choose `OAuth client ID` -
+
10. On the next screen, fill out all required information: -
+
- Make sure to select "Web application" as the application type. The other thing to note here is the redirect URI. It is the URI to which the user will be redirected from the external provider's authorization. This URI is in the form of `/auth/callback`. Replace `` with the URL under which your dashboard is accessible, e.g. `https://defguard.example.com`. If you'd like to use OpenID enrollment through proxy, make sure to enter an additional URI here in the form of `/openid/callback`. + Make sure to select "Web application" as the application type. The other thing to note here is the redirect URI. It is the URI to which the user will be redirected from the external provider's authorization. This URI is in the form of `/auth/callback`. Replace `` with the URL under which your dashboard is accessible, e.g. `https://defguard.example.com`. If you'd like to use OpenID enrollment through proxy (and MFA , make sure to enter an additional URIs here in the form of `/openid/callback` , and if you use External MFA please add also: `/openid/mfa/callback` 11. After you proceed further, you will be presented with a popup containing your `Client ID` and `Client Secret`, copy them and paste on the Defguard OpenID configuration page.
@@ -48,7 +48,7 @@ This documentation concerns only the Google directory synchronization. For more The menu can be found in Defguard settings by navigating to the "OpenID" tab. -
+
The following configuration options are currently available in the directory synchronization menu specifically for the Google provider: @@ -59,40 +59,27 @@ To learn more about the rest of the configuration options, see the [general dire #### Directory synchronization setup -1. Navigate to [Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts) in the Google Cloud console\ - - -
- +1. Navigate to [Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts) in the Google Cloud console\\ +
2. Click "Create service account" -3. Give your service account a descriptive name\ - - -
- +3. Give your service account a descriptive name\\ +
4. Skip step 2 and 3 if you are not sure what to configure there. -5. Go to your newly created service account and add a new key in the "KEYS" tab.\ - - -
- +5. Go to your newly created service account and add a new key in the "KEYS" tab.\\ +
6. A JSON file will be downloaded after you click "CREATE". Store it securely as it may grant access to your Google Workspace directory. 7. Next, navigate to the "DETAILS" tab and copy the unique ID of your service account. 8. Open the Advanced settings and under Domain-wide delegation click "View google workspace admin console" -9. Now in the admin console, navigate to [API controls](https://admin.google.com/u/1/ac/owl)\ - - -
- +9. Now in the admin console, navigate to [API controls](https://admin.google.com/u/1/ac/owl)\\ +
10. In the API controls, click "Manage domain wide delegation" -11. On the next screen, add a new API client\ - +11. On the next screen, add a new API client\\ -
+
Specify the following scopes for your client:\ `openid, email, profile, https://www.googleapis.com/auth/admin.directory.customer.readonly, https://www.googleapis.com/auth/admin.directory.group.readonly, https://www.googleapis.com/auth/admin.directory.user.readonly` diff --git a/features/external-openid-providers/jumpcloud.md b/features/external-openid-providers/jumpcloud.md new file mode 100644 index 0000000..44cf1e7 --- /dev/null +++ b/features/external-openid-providers/jumpcloud.md @@ -0,0 +1,63 @@ +# JumpCloud + +1. Login to your JumpCloud admin account. +2. Navigate to SSO Applications\\ + +
+3. Add a new SSO Application +4. Select "Custom" on this screen. + +
+5. Select "Configure SSO with OIDC". + +
+6. Fill the app's display label in the next form.\\ + +
+7. After finishing this configuration, you will be redirected to your newly created SSO Application's settings. Go to the "SSO" tab first. + +
+8. Configure as following: + +
+ + Make sure to set the correct Redirect URI and Login URL that will reflect your Defguard's setup. If you access your Defguard dashboard at e.g. `https://defguard.example.net` your redirect URI will be `https://defguard.example.net/auth/callback` and the login URL `https://defguard.example.net/auth/login`. Additionally, if you are using a Defguard proxy to enroll users, you can also add another redirect URI in the form of `/openid/callback` and `/openid/mfa/callback` if you wish to use the [External MFA feature](../wireguard/multi-factor-authentication-mfa-2fa/#external-mfa) ( `` is the address at which your Proxy enrollment page is accessible). +9. Next, select the profile scope and add an `email` user attribute mapping by hand, like so: + +
+ + It's important **not** to select the email standard scope checkbox, as it will automatically add a constant `email_verified` field which doesn't conform to the OpenID standard and doesn't work with Defguard. You can see the following section for more information: [#jumpcloud](./#jumpcloud "mention"). +10. Click "Activate". You will be presented with a client ID and a secret. Copy both of them, as you will need to insert them in Defguard's settings. +11. Go to Defguard settings, OpenID tab, select `JumpCloud` provider tab and paste the copied values: + +
+12. Back in JumpCloud, make sure your users have access to the SSO Application. You can enable it by navigating to the `User groups` menu and selecting the group you want to enable logging in through JumpCloud for. Only users from this group will be able to log in to Defguard with JumpCloud. In this example, we will select the `All users` group, which is a dynamic group containing every user. +13. Now in the group settings menu, select the `Applications` tab and select the checkbox next to your newly created app, this will enable the app for that group. Click `Save group` when you finish. + +
+14. Now you should be able to log in to Defguard with JumpCloud. + +### Directory synchronization + +Defguard supports synchronizing groups' and users' states based on your JumpCloud directory. + +Make sure to check the [general guide to directory synchronization](./#directory-synchronization) to learn more about the available configuration options. + +#### Setup + +{% hint style="warning" %} +Because JumpCloud API keys are bound to users and they don't support granular permissions nor generating more than one at a time, we recommend generating the API key for a user with read only permissions, as Defguard doesn't require write permissions to your directory. +{% endhint %} + +1. Login to your [JumpCloud admin portal](https://console.jumpcloud.com/) +2. Generate a new API key (or use an existing one). This can be done by clicking your user icon in the upper right corner and selecting "My API key"\\ + +
+3. If you already generated an API key, you will have to regenerate it here (please note that regenerating the API key may break your existing integrations that already use it).\\ + +
+4. Copy the newly generated API key and navigate to your Defguard instance's settings. +5. Paste the key into the "JumpCloud API key" field\\ + +
+6. The JumpCloud directory synchronization should now work and your users' state and group memberships should be periodically synchronized. diff --git a/admin-and-features/external-openid-providers/keycloak.md b/features/external-openid-providers/keycloak.md similarity index 100% rename from admin-and-features/external-openid-providers/keycloak.md rename to features/external-openid-providers/keycloak.md diff --git a/admin-and-features/external-openid-providers/microsoft.md b/features/external-openid-providers/microsoft.md similarity index 57% rename from admin-and-features/external-openid-providers/microsoft.md rename to features/external-openid-providers/microsoft.md index 69add5d..2b66717 100644 --- a/admin-and-features/external-openid-providers/microsoft.md +++ b/features/external-openid-providers/microsoft.md @@ -4,11 +4,11 @@ 2. Navigate to Microsoft Entra ID 3. In the Microsoft Entra ID, click Manage and select App registrations from the menu on the left. -
+
4. Click "Make new registration" 5. Fill out the form, like in the example: -
+
Make sure the Redirect URL you insert here is correct. Replace `defguard.example.com` with the domain you use for your Defguard dashboard. If you'd like to use OpenID enrollment through proxy, make sure to enter an additional URI here in the form of `/openid/callback`. @@ -18,15 +18,15 @@ Make sure the Redirect URL you insert here is correct. Replace `defguard.example 7. Go to Defguard settings, click the OpenID tab and paste the copied client ID. The tenant ID should be inserted instead of the `` placeholder in the base URL field. 8. Now back in Microsoft Entra ID, still in your newly created application, go to **Certificates & Secrets** -
+
9. Click Client secrets and create a new client secret. Copy its **value** and paste it in your Defguard OpenID settings. 10. Go to Token configuration (in the menu on the left) and add a new optional token claim. 11. Make sure to select the ID token type and the following claims: -
+
12. Accept the popup or configure the API permissions manually. -
+
13. Now you should be good to go. A new login button should appear on the login screen. @@ -47,32 +47,52 @@ Make sure to check the [general guide to directory synchronization](./#directory #### Setup 1. Go back to your app registrations in Microsoft Entra ID and select the app you registered during the provider setup. -2. Navigate to API permissions\ +2. Navigate to API permissions\\ +
+3. Click "Add a permission", then select "Microsoft Graph"\\ -
+
+4. Select "Application permissions", as Defguard will perform the synchronization in the background.\\ +
+5. Assign the following permissions: + * `GroupMember.Read.All` + * `Group.Read.All` + * `User.Read.All` +6. Now grant admin consent for the permissions using the "Grant admin consent for" button\\ -3. Click "Add a permission", then select "Microsoft Graph"\ +
+7. You should be good to go now. Navigate to the directory sync settings in Defguard and try to test your setup using the test connection button. +#### Synchronizing only selected memberships -
+The Microsoft provider allows for synchronizing only selected group memberships: +
-4. Select "Application permissions", as Defguard will perform the synchronization in the background.\ +By providing group names in the input field, you select which group memberships should be synchronized. Other group memberships will be ignored. +{% hint style="info" %} +This setting does not control which users are prefetched/created. It only controls which group memberships are assigned and which are ignored. +{% endhint %} -
+#### Creating Defguard users +{% hint style="warning" %} +In order for Entra users to be created in Defguard they must have the following attributes set: -5. Assign the following permissions: - * `GroupMember.Read.All` - * `Group.Read.All` - * `User.Read.All` -6. Now grant admin consent for the permissions using the "Grant admin consent for" button\ +* email (or otherMails) +* first name +* last name +{% endhint %} +By default directory sync guaranteed only that the state and group membership of Defguard users also present in the directory is up-to-date. It does not create Defguard users until they log in using an External OpenID provider. -
+{% hint style="info" %} +Currently creating Deguard users during directory synchronization is only available for the Microsoft provider. +{% endhint %} +To create Defguard users during directory sync enable the `Prefetch users` option:\\ -7. You should be good to go now. Navigate to the directory sync settings in Defguard and try to test your setup using the test connection button. +
diff --git a/admin-and-features/external-openid-providers/okta.md b/features/external-openid-providers/okta.md similarity index 85% rename from admin-and-features/external-openid-providers/okta.md rename to features/external-openid-providers/okta.md index 4431ea6..7080708 100644 --- a/admin-and-features/external-openid-providers/okta.md +++ b/features/external-openid-providers/okta.md @@ -26,8 +26,6 @@ The base URL will be based on your Okta domain. In the case of this example, the `-admin` part of the URL had to be additionally removed. To additionally verify if your Base URL is correct, you can navigate to `/.well-known/openid-configuration`. The issuer field here should be the same as the Base URL. - - ### Directory synchronization {% hint style="info" %} @@ -40,7 +38,7 @@ This documentation concerns only the Okta directory synchronization. For more ge The menu can be found in Defguard settings by navigating to the "OpenID" tab. -
+
The following configuration options are currently available in the directory synchronization menu specifically for the Okta provider: @@ -55,39 +53,26 @@ To learn more about the rest of the configuration options, see the [general dire This feature is currently technically limited to 10000 members or groups. High user or group counts may still trigger your provider API limits even below this threshold. If you have many users (200+), we recommend you test this feature first before you decide to turn on automatic user deletion. {% endhint %} -1. Go to the Okta admin dashboard and navigate to the Applications menu\ - - -
- +1. Go to the Okta admin dashboard and navigate to the Applications menu\\ +
2. Make a completely new app integration by clicking "Create App Integration". This app will be solely responsible for communicating with Okta API. -3. Select "API services"\ - - -
- +3. Select "API services"\\ +
4. Name your app integration, e.g. "Defguard directory sync" -5. Go to your newly created app integration settings and change the client authentication to "Public key / Private key"\ - - -
- +5. Go to your newly created app integration settings and change the client authentication to "Public key / Private key"\\ +
6. Next, click "Add key" and generate a new key pair. 7. Copy the generated private key in the JSON format to your clipboard 8. Paste the copied key in the Defguard Okta directory sync settings in the "Directory Sync Private Key" field. 9. Go back to Okta again. Save your new Okta configuration along with the newly generated keys. Now, copy the app integration's client ID. Paste it in the "Directory Sync Client ID" field in Defguard Okta directory sync settings. Save your Defguard settings. -10. Return to Okta and under "General settings" turn off the "Require Demonstrating Proof of Possession (DPoP) header in token requests" option. Save your changes.\ - - -
-11. Now, navigate to the Okta API scopes tab.\ - - -
+10. Return to Okta and under "General settings" turn off the "Require Demonstrating Proof of Possession (DPoP) header in token requests" option. Save your changes.\\ +
+11. Now, navigate to the Okta API scopes tab.\\ +
12. Grant the `okta.groups.read` and `okta.users.read` scopes. 13. Everything should be set now. Try testing your provider connection in Defguard directory synchronization settings. diff --git a/admin-and-features/external-openid-providers/zitadel.md b/features/external-openid-providers/zitadel.md similarity index 100% rename from admin-and-features/external-openid-providers/zitadel.md rename to features/external-openid-providers/zitadel.md diff --git a/admin-and-features/forward-auth.md b/features/forward-auth.md similarity index 92% rename from admin-and-features/forward-auth.md rename to features/forward-auth.md index fd5e0b4..074c669 100644 --- a/admin-and-features/forward-auth.md +++ b/features/forward-auth.md @@ -7,7 +7,7 @@ In order for forward auth to work the services you are trying to protect must be For example if you are serving your Defguard UI at `id.yourdomain.com`, then your services must use other subdomains of `yourdomain.com`, e.g. ``app1.yourdomain.com, `service.yourdomain.com` etc``. -Additionally you have to update your [Defguard config](../configuration.md#auth-cookies-configuration) to set the cookies domain to `yourdomain.com`. +Additionally you have to update your [Defguard config](../deployment-strategies/configuration.md#auth-cookies-configuration) to set the cookies domain to `yourdomain.com`. {% endhint %} ## Example configurations diff --git a/admin-and-features/setting-up-your-instance/gateway/README.md b/features/gateway.md similarity index 54% rename from admin-and-features/setting-up-your-instance/gateway/README.md rename to features/gateway.md index 20ea005..8a8bfde 100644 --- a/admin-and-features/setting-up-your-instance/gateway/README.md +++ b/features/gateway.md @@ -1,4 +1,4 @@ -# OPSense Configuartion +# OPNsense Configuration [OPNsense®](https://opnsense.org/) is an open source, feature rich firewall and routing platform, offering cutting-edge network protection. @@ -9,19 +9,33 @@ This instruction helps configure Defguard Gateway in OPNsense. This is based on ### Configure Defguard Gateway plugin 1. Go to **VPN → Defguard Gateway** -2. Fill out the appropriate values in the form. You can read more about the available configuration options here: [#gateway-configuration](../../../configuration.md#gateway-configuration "mention") +2. Fill out the appropriate values in the form. You can read more about the available configuration options here: [#gateway-configuration](../deployment-strategies/configuration.md#gateway-configuration "mention") 3. Eventually, **Start/Restart** the service. -
OPNSense plugin
+
OPNSense plugin
+ +{% hint style="info" %} +Defguard Gateway will create the given network interface automatically (for example _wg0_). The +interface must be named accoring to FreeBSD [WireGuard protocol driver](https://man.freebsd.org/cgi/man.cgi?query=wg&sektion=4). +{% endhint %} ### Assign a network interface to Defguard +A quote from [WireGuard Road Warrior Setup](https://docs.opnsense.org/manual/how-tos/wireguard-client.html): + +{% hint style="info" %} +This step is not strictly necessary in any circumstances for a road warrior setup. However, it is useful to implement, for several reasons: +First, it generates an alias for the tunnel subnet(s) that can be used in firewall rules. Otherwise you will need to define your own alias or at least manually specify the subnet(s). +Second, it automatically adds an IPv4 outbound NAT rule, which will allow the tunnel to access IPv4 IPs outside of the local network (if that is desired), without needing to manually add a rule. +Finally, it allows separation of the firewall rules of each WireGuard instance (each _wgX_ device). Otherwise they all need to be configured on the default WireGuard group that OPNsense creates. This is more an organisational aesthetic, rather than an issue of substance. +{% endhint %} + 1. Go to **Interfaces → Assignments** 2. Under **Assign a new interface**, select the Defguard Gateway network interface (e.g. _wg0_) 3. Add a description, for example _ParisOfficeVPN_ 4. Click **Add** -
Interface Assignments
+
Interface Assignments
5. Select the newly create interface by clicking on its name (in this example _\[ParisOfficeVPN]_). 6. Select **Enable Interface** @@ -38,7 +52,7 @@ This instruction helps configure Defguard Gateway in OPNsense. This is based on 6. Select **Source address** – this should be interface name assigned above plus _net_, e.g. _ParisOfficeVPN net_. 7. Click **Save**, and then **Apply changes** -
Outbound NAT rule
+
Outbound NAT rule
### Add firewall rules to allow WireGuard traffic in @@ -51,4 +65,4 @@ This instruction helps configure Defguard Gateway in OPNsense. This is based on 7. Set **Destination** to **WAN address** and port to the port number provided in Defguard Core: _Location configuration → Gateway port_ 8. Click **Save**, and then **Apply changes** -
Firewall rule
+
Firewall rule
diff --git a/integrations/README.md b/features/integrations/README.md similarity index 100% rename from integrations/README.md rename to features/integrations/README.md diff --git a/features/integrations/api-tokens.md b/features/integrations/api-tokens.md new file mode 100644 index 0000000..5d1ee77 --- /dev/null +++ b/features/integrations/api-tokens.md @@ -0,0 +1,92 @@ +# REST API + +{% hint style="warning" %} +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. +{% endhint %} + +{% hint style="warning" %} +API functionality: + +1. requires Defguard version 1.2.4+ +2. is also **available without enterprise license**, if your instance does not exceed the limits [described here](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +{% endhint %} + +## REST API documentation + +You can explore the Defguard REST API using [Swagger UI](https://swagger.io/tools/swagger-ui/) by going to `/api-docs`. + +API specification JSON in OpenAPI format can also be fetched from `/api/v1/api-docs`. + +Admin users can generate API tokens to enable request authentication for custom external tools which use Defguard REST API. + +Tokens retain the same access permissions as their owner, so be careful when sharing them with others. + +## Generating API token + +## Setup + +To generate a new API token, go to your profile page and click the `Add new API Token`button: + +
+ +Fill in your chosen token name and submit form: + +
+ +Copy generated token. This is the only time the token will be available in plain text form. If you lose it you will have to generate a new one. + +
+ +In the API token list you can later rename or delete a token: + +
+ +## Usage + +Defguard API uses a standard **Bearer token authentication** scheme. + +This means that an API token can be passed in the `Authorization` header to authenticate a given request instead of a session cookie used by the web UI: + +```bash +Authorization: Bearer +``` + +Example GET request: + +```bash +curl -H "Authorization: Bearer " /api/v1/me +``` + +## Swagger UI + +### Using API token in Swagger + +After opening Swagger UI you can add your `API token` and try out available endpoints. + +1. Open Swagger UI and click **Authorize** button. + +
+ +2. Paste your `API token.` + +
+ +3. Click on endpoint and select **Try it out** option. + +
+ +4. If endpoint requires a path or request body, enter it. + +
+ +5. Click **Execute** and scroll down, you will see response body. + +
+ +### Schemas + +If you are looking for definitions of types, you can scroll down to **Schemas** section. + +
diff --git a/integrations/webhooks.md b/features/integrations/webhooks.md similarity index 97% rename from integrations/webhooks.md rename to features/integrations/webhooks.md index ce223e9..4b5675f 100644 --- a/integrations/webhooks.md +++ b/features/integrations/webhooks.md @@ -8,7 +8,7 @@ The basic idea of webhooks is to send user data to external systems in order to On the left side of Defguard navigation, you'll find webhooks page -![New webhook form](../.gitbook/assets/webhookform.png) +![New webhook form](../../.gitbook/assets/webhookform.png) On the form above, you'll see inputs like URL description token and triggers diff --git a/admin-and-features/ldap-and-active-directory-integration/README.md b/features/ldap-and-active-directory-integration/README.md similarity index 78% rename from admin-and-features/ldap-and-active-directory-integration/README.md rename to features/ldap-and-active-directory-integration/README.md index 6d9a428..b542ec0 100644 --- a/admin-and-features/ldap-and-active-directory-integration/README.md +++ b/features/ldap-and-active-directory-integration/README.md @@ -1,7 +1,9 @@ # LDAP and Active Directory integration {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} Defguard supports integration with LDAP and Microsoft Active Directory (AD), enabling seamless connectivity with your existing directory infrastructure. This integration allows organizations to centralize user management, streamline authentication processes, and synchronize user and group data between Defguard and external directory services. diff --git a/admin-and-features/ldap-and-active-directory-integration/configuration.md b/features/ldap-and-active-directory-integration/configuration.md similarity index 58% rename from admin-and-features/ldap-and-active-directory-integration/configuration.md rename to features/ldap-and-active-directory-integration/configuration.md index 48baa43..c836e46 100644 --- a/admin-and-features/ldap-and-active-directory-integration/configuration.md +++ b/features/ldap-and-active-directory-integration/configuration.md @@ -8,15 +8,19 @@ description: How to configure connection between Defguard instance and LDAP. Active Directory support is available in Defguard ≥ v1.3.0 {% endhint %} -{% hint style="warning" %} -If you are using the integration across multiple nested organizational units, please read the [#multiple-nested-ous](configuration.md#multiple-nested-ous "mention") section. -{% endhint %} +The LDAP/AD integrations allows synchronizing users from/to your LDAP/AD server. + +## Synchronization direction + +The table below describes supported synchronization directions. + +
Synchronization DirectionDetails
Defguard -> LDAPThe default mode after enabling the LDAP integration.
Defguard <-> LDAPtwo-way-ldap-and-active-directory-synchronization.md
LDAP -> Defguard#one-way-ldap-greater-than-defguard-synchronization
## Setup First, navigate to the settings page and select the LDAP tab. -
+
Now change fields according to your LDAP instance. @@ -34,17 +38,17 @@ After you save your LDAP settings, you can check if your Defguard instance can c Testing your connection doesn't mean the whole configuration is correct. Currently, Defguard only verifies if a connection can be made and the provided credentials are correct. {% endhint %} -After enabling the LDAP integration, you will gain the ability to log in to Defguard through LDAP. Additionally, all your Defguard user changes after you enable the integration will be propagated to LDAP. This is a simple one-way synchronization. If you are interested in synchronizing LDAP and Defguard both ways, check [two-way-ldap-and-active-directory-synchronization.md](two-way-ldap-and-active-directory-synchronization.md "mention"). +After enabling the LDAP integration, you will gain the ability to log in to Defguard through LDAP. Additionally, all your Defguard user changes after you enable the integration will be propagated to LDAP. This is a simple one-way (Defguard -> LDAP) synchronization. ## Example configurations ### Example Active Directory configuration -
+
-
+
-
+
This is an example configuration for a default Active Directory setup on a Windows Server 2022. The most important aspect is setting the "LDAP server is Active Directory" setting, as AD support won't work otherwise. Additionally, `ldaps` has been configured as AD requires an encrypted connection in order for Defguard to be allowed to send user passwords, which is critical if you expect to create users/set passwords through Defguard. @@ -52,16 +56,14 @@ The "cn" attribute has been configured as the user's RDN as that's what used in ### Example OpenLDAP configuration -
+
-
+
-
+
This is an example configuration for an OpenLDAP server integrated with Samba (hence `sambaSamAccount` object class). The `inetOrgPerson` has been set as the user structural class which adds attributes to the LDAP user like `email` or `mobile`. `simpleSecurityObject` class has been added for the ability to set passwords in LDAP. - - ## Known issues ### Multiple nested OUs @@ -76,9 +78,21 @@ If you are using an older version of Defguard, using the integration with multip * Limiting synchronization to selected groups may not work if your user's DN doesn't match the user search base: * Search base: `OU=ou,DC=example` - * User's DN: `CN=user1,OU=ou1,OU=ou,DC=example` + * User's DN: `CN=user1,OU=ou1,OU=ou,DC=example` In this example, the user's DN has deeper nesting than the search base, preventing matching them during the group members lookup. To fix this problem, you should limit the search base to one organizational unit only, if possible. +### User not able to login when synchronization groups are defined, despite being a member + +There is a [know bug](https://github.com/DefGuard/defguard/issues/1906) where the capitalization of the groupname attribute matters. As a workaround try changing the letter case of that attribute (cn -> CN). + +### One way LDAP -> Defguard synchronization + +This mode is currently [not officially supported](https://github.com/DefGuard/defguard/issues/2011) but can be achieved by following a workaround: + +1. Create a dedicated LDAP read-only user that will be used to connect (bind) to your LDAP/AD server. Provide the user credentials in the Connection settings. +2. Configure the integration and enable the two way synchronization, making sure to select the LDAP authority mode ([two-way-ldap-and-active-directory-synchronization.md](two-way-ldap-and-active-directory-synchronization.md "mention")). + +By doing this, the integration will try to synchronize both ways but because of the read only user will be able to synchronize only in the desired (LDAP -> Defguard) direction. diff --git a/admin-and-features/ldap-and-active-directory-integration/settings-table.md b/features/ldap-and-active-directory-integration/settings-table.md similarity index 100% rename from admin-and-features/ldap-and-active-directory-integration/settings-table.md rename to features/ldap-and-active-directory-integration/settings-table.md diff --git a/admin-and-features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md b/features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md similarity index 92% rename from admin-and-features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md rename to features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md index 26548f0..5fc2795 100644 --- a/admin-and-features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md +++ b/features/ldap-and-active-directory-integration/two-way-ldap-and-active-directory-synchronization.md @@ -1,7 +1,9 @@ # Two-way LDAP and Active Directory synchronization {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} {% hint style="warning" %} @@ -37,13 +39,13 @@ For OpenLDAP: First, you will need to configure your LDAP connection. Refer to [configuration.md](configuration.md "mention") for instructions. Here is an example configuration for an OpenLDAP server without SSL/TLS: -
+
-Make sure you selected "Enable LDAP integration" as without it, the two-way synchronization won't work. After you fill out all the fields, test your configuration using the button. +Make sure you selected "Enable LDAP integration" as without it, the two-way synchronization won't work. After you fill out all the fields, test your configuration using the button. The LDAP two-way synchronization has the following options available: -
+
* **Enable LDAP two-way synchronization** - enables the two-way synchronization. Check it if you want to pull changes from LDAP. * **Consider the following source as the authority** - makes the selected server the source of truth. See [#authority-and-full-synchronization](two-way-ldap-and-active-directory-synchronization.md#authority-and-full-synchronization "mention") for more details. @@ -59,7 +61,7 @@ Before enabling this feature, check if you meet requirements described in [setti If you want to synchronize only selected users, you can specify the groups of which members should be synchronized. -
+
This can be useful if you have a lot of users in your LDAP server and want to synchronize/pull only users belonging to a given group, e.g. `defguard-sync`. @@ -78,9 +80,9 @@ The following advice should be applied only when you are using LDAP as the autho After you change your synchronization groups, users not belonging to the new groups won't be automatically deleted. This may be an issue if you first used the two-way synchronization without any synchronization groups, effectively synchronizing everyone and decided later to narrow the scope of synchronization. This can result in many redundant, not synchronized user records in your Defguard instance lying around. If you want to prune your Defguard users to only those who are in your synchronization group, you can follow these steps (assuming you have already set your synchronization groups): 1. Wait for a two-way periodic synchronization to complete, you can recognize it by the `LDAP sync completed` log message. -2. Temporarily disable the whole LDAP integration in the settings ![](<../../.gitbook/assets/image (96).png>) +2. Temporarily disable the whole LDAP integration in the settings ![](<../../.gitbook/assets/image (192).png>) 3. In the Defguard user's list, bulk assign all users one of your synchronization groups, to bring them into the scope of synchronization. You may want to leave out all users which you don't want to be ever touched by the LDAP integration, e.g. the default admin user or other users you want to keep only in Defguard. -4. Enable the LDAP integration in the settings +4. Enable the LDAP integration in the settings 5. Now, the next two-way synchronization will remove all users from Defguard who have the synchronization group you just assigned in Defguard but don't have it in LDAP, effectively leaving you only with users that have the group in both sources. ## Synchronization mechanism overview @@ -115,7 +117,7 @@ The full synchronization takes both sources, compares them and produces changes With LDAP authority: -* `user3` will be removed from Defguard (since he is not in LDAP), +* `user3` will be removed from Defguard (since he is not in LDAP), * `user1` will be added to Defguard (since he is not in there but is in LDAP) With Defguard authority: @@ -138,9 +140,9 @@ As passwords are stored as hashes with possibly incompatible hashing algorithm b #### Defguard → LDAP -Passwords are set in LDAP only on Defguard user account creation, enrollment, password change or reset. Basically when the password is explicitly provided by the user with the intent to set or change it. +Passwords are set in LDAP only on Defguard user account creation, enrollment, password change or reset. Basically when the password is explicitly provided by the user with the intent to set or change it. -This means that if you want to import to LDAP all Defguard users who were created before enabling LDAP integration, they will have to change their passwords in Defguard in order for it to be propagated and set in LDAP. +This means that if you want to import to LDAP all Defguard users who were created before enabling LDAP integration, they will have to change their passwords in Defguard in order for it to be propagated and set in LDAP. Because some LDAP implementations will require password on user creation, Defguard will set a temporary, long, random text as the LDAP user password until it's not changed/set/reset by the user in Defguard. @@ -168,7 +170,7 @@ Otherwise, report it on our GitHub along with any appropriate logs. #### Something wasn't updated in LDAP -If you notice that your Defguard change isn't propagated properly to LDAP, run Defguard with debug logs enabled (`DEFGUARD_LOG_LEVEL=debug` environment variable). Some LDAP errors may be not reported as errors by the LDAP server but most of the operations outputs are logged in the debug logs to help you narrow down the issue. +If you notice that your Defguard change isn't propagated properly to LDAP, run Defguard with debug logs enabled (`DEFGUARD_LOG_LEVEL=debug` environment variable). Some LDAP errors may be not reported as errors by the LDAP server but most of the operations outputs are logged in the debug logs to help you narrow down the issue. #### Defguard logs suggest that it uses LDAP authority during synchronization despite setting something different in the settings @@ -179,4 +181,3 @@ Incremental synchronization (as opposed to the full synchronization) internally #### SysErr: DSID-031A1262, problem 22 (Invalid argument) You are trying to synchronize a Defguard user with username longer than 20 characters, which [AD doesn't support](https://learn.microsoft.com/en-us/windows/win32/adschema/a-samaccountname?redirectedfrom=MSDN). - diff --git a/admin-and-features/network-devices.md b/features/network-devices.md similarity index 83% rename from admin-and-features/network-devices.md rename to features/network-devices.md index 917c01d..37864bc 100644 --- a/admin-and-features/network-devices.md +++ b/features/network-devices.md @@ -1,6 +1,6 @@ # Network devices -Network devices are like regular user devices but can only be managed by admins and have access to only one network. They are designed to be used with the [Defguard CLI client](../../help/cli-client.md). +Network devices are like regular user devices but can only be managed by admins and have access to only one network. They are designed to be used with the [Defguard CLI client](../using-defguard-for-end-users/cli-client.md). ### Adding a new network device @@ -8,14 +8,14 @@ In order to add a new network device, navigate to the network device menu (selec While in the network device menu, click the "Add new" button. You will be presented with a popup prompting you to select your method of setting up the network device. -* **Defguard Command Line Client -** choose it to automatically configure your device with the [Defguard CLI client](../../help/cli-client.md) +* **Defguard Command Line Client -** choose it to automatically configure your device with the [Defguard CLI client](../using-defguard-for-end-users/cli-client.md) * **Manual WireGuard Client** - choose it if you don't want to use the Defguard CLI client. You will need to configure your network device manually with a WireGuard config file. #### Using the Defguard CLI client After selecting the first option you will be presented with the initial setup screen. -
+
You can specify here the following settings: @@ -24,13 +24,13 @@ You can specify here the following settings: * **Assigned IP Address** - automatically suggested IP address, you may change it as needed, * **Description** - the description to help you identify the device, it will be displayed in the device list. -After you've finished setting those values, proceed to the next step. You will be presented with an enrollment command. Learn more about further steps from the [CLI client documentation](../../help/cli-client.md). +After you've finished setting those values, proceed to the next step. You will be presented with an enrollment command. Learn more about further steps from the [CLI client documentation](../using-defguard-for-end-users/cli-client.md). #### Using the Manual WireGuard client The screen here is similar to that of the CLI client configuration, except for the additional public key field. -
+
The fields are as follows: @@ -47,7 +47,7 @@ On the next screen you will be presented with the WireGuard configuration file. After you've configured your network device, you can display its enrollment token again, by interacting with the following menu: -
+
* Selecting "Generate auth token" will re-generate the enrollment token and will allow you to enroll your CLI client again. Use it if you want to manually pull the newest network configuration for your client. * Selecting the "View config" option will display the WireGuard configuration file (without the private key, as Defguard doesn't store it). diff --git a/notifications/README.md b/features/notifications/README.md similarity index 100% rename from notifications/README.md rename to features/notifications/README.md diff --git a/notifications/gateway-notifications.md b/features/notifications/gateway-notifications.md similarity index 85% rename from notifications/gateway-notifications.md rename to features/notifications/gateway-notifications.md index 2cd310a..97ecf61 100644 --- a/notifications/gateway-notifications.md +++ b/features/notifications/gateway-notifications.md @@ -10,7 +10,7 @@ You can configure automatic e-mail notifications when one of your gateways disco In order to configure the notifications, navigate to the "Gateway notifications" settings tab. -
+
The configuration options are as follows: diff --git a/notifications/new-version-notifications.md b/features/notifications/new-version-notifications.md similarity index 69% rename from notifications/new-version-notifications.md rename to features/notifications/new-version-notifications.md index 4c01e61..996bea7 100644 --- a/notifications/new-version-notifications.md +++ b/features/notifications/new-version-notifications.md @@ -2,11 +2,11 @@ Defguard will periodically (every 6 hours) check for a new version, If there is one that is newer than the current one, a toast will be displayed in the admin dashboard. -
+
You can display the release notes by clicking "See what's new". -
+
If the update is considered critical (e.g. fixes a vulnerability) it will have the "critical update" badge. diff --git a/notifications/setting-up-smtp-for-email-notifications.md b/features/notifications/setting-up-smtp-for-email-notifications.md similarity index 100% rename from notifications/setting-up-smtp-for-email-notifications.md rename to features/notifications/setting-up-smtp-for-email-notifications.md diff --git a/admin-and-features/openid-connect/README.md b/features/openid-connect/README.md similarity index 99% rename from admin-and-features/openid-connect/README.md rename to features/openid-connect/README.md index 5e8e056..7fa784e 100644 --- a/admin-and-features/openid-connect/README.md +++ b/features/openid-connect/README.md @@ -22,7 +22,7 @@ As an identity provider, one of our core features is Login with Defguard which a ### Defguard OpenID flow -![OpenID flow](../../in-depth/puml/openid-flow.svg) +![OpenID flow](../../.gitbook/assets/openid-flow.svg) ### How to enable login with Defguard using OpenID? diff --git a/admin-and-features/openid-connect/django.md b/features/openid-connect/django.md similarity index 94% rename from admin-and-features/openid-connect/django.md rename to features/openid-connect/django.md index c4d2c30..b840f4a 100644 --- a/admin-and-features/openid-connect/django.md +++ b/features/openid-connect/django.md @@ -125,9 +125,9 @@ We need to register our Django application as an OpenID client in Defguard. To do that, navigate to OpenID panel and add new client as shown below. -
+
-
+
Redirect URL should point to **http://localhost:9000/oauth/redirect** @@ -213,7 +213,7 @@ Either provide them as environment variables or modify the views file and pass t Both Client **ID** and **Secret** can be found on OpenID apps page in Defguard, **click** our Django app **row** on the list and you will be able to copy needed values from the opened modal. -
+
### URLS @@ -414,10 +414,10 @@ After accessing _http://localhost:9000/admin we should see our custom login page Button "_Login with Defguard_" should redirect us to our Defguard instance. Depending on if Defguard session is active or not we should be able to see app authorization page or login page. -
+
-
+
-
+
When we authorize Django App to our Defguard account we are redirected back to our Django admin and logged in with a user from Defguard. diff --git a/admin-and-features/openid-connect/grafana-setup.md b/features/openid-connect/grafana-setup.md similarity index 100% rename from admin-and-features/openid-connect/grafana-setup.md rename to features/openid-connect/grafana-setup.md diff --git a/admin-and-features/openid-connect/minio.md b/features/openid-connect/minio.md similarity index 97% rename from admin-and-features/openid-connect/minio.md rename to features/openid-connect/minio.md index c65547e..5f103f6 100644 --- a/admin-and-features/openid-connect/minio.md +++ b/features/openid-connect/minio.md @@ -32,7 +32,7 @@ Navigate to the OpenID page in Defguard and add MinIO to the client's list. Redi http://localhost:9001/oauth_callback ``` -
+
## MinIO Configuration diff --git a/admin-and-features/openid-connect/portainer.md b/features/openid-connect/portainer.md similarity index 100% rename from admin-and-features/openid-connect/portainer.md rename to features/openid-connect/portainer.md diff --git a/admin-and-features/openid-connect/proxmox-1.md b/features/openid-connect/proxmox-1.md similarity index 100% rename from admin-and-features/openid-connect/proxmox-1.md rename to features/openid-connect/proxmox-1.md diff --git a/admin-and-features/openid-connect/proxmox.md b/features/openid-connect/proxmox.md similarity index 100% rename from admin-and-features/openid-connect/proxmox.md rename to features/openid-connect/proxmox.md diff --git a/features/openid-connect/synology-dsm.md b/features/openid-connect/synology-dsm.md deleted file mode 100644 index 45a2f04..0000000 --- a/features/openid-connect/synology-dsm.md +++ /dev/null @@ -1,48 +0,0 @@ -# Synology DSM - -{% hint style="warning" %} -For Synology SSO Client to work with Defguard you have to run your instance with [RSA signing key](../setting-up-your-instance/docker-compose.md#openid-rsa-setup). -{% endhint %} - -{% hint style="warning" %} -It's important to note that this integration does not create user accounts. To authorize with Defguard you have to create Synology users with matching usernames. -{% endhint %} - -## Add Synology app in defguard - -* in Defguard web UI go to OpenID Apps and click `Add new` button -* fill in the form - * **App name**: Synology (or whatever you prefer) - * **Redirect URL 1**: URL of your Synology NAS web interface (DSM), for example `https://dsm.example.com` - * **Scopes**: select `OpenID` and `Profile` -* submit the form - -After successfully adding your app you can see it in the OpenID apps list. When you click on it you will be redirected to the client details page. From this page copy Client ID and Client secret values for later. - -## Configure SSO Client in Synology DSM - -* log into your Synology NAS web UI using an account with admin permissions -* got to **Control Panel** > **Domain/LDAP** > **SSO Client** -* check `Enable OpenID Connect SSO service` and open SSO Settings\ - - -
-* fill in and save the settings form - * **Profile**: OIDC - * **Account type**: Domain/LDAP/local - * **Name**: Defguard (or whatever you prefer, this will be used on login screen) - * **Well-known URL**: `/.well-known/openid-configuration`, for example `https://id.example.com/.well-known/openid-configuration` - * **Application ID**: copied from client app details in defguard - * **Application secret**: copied from client app details in defguard - * **Redirect URI**: address of your Synology NAS, for example https://dsm.example.com - * **Authorization scope**: `openid profile` - * **Username claim**: `preferred_username`\ - - -
- -After this a new tab should be added to the DSM login form: - -
- -You can also make Defguard the default login option in SSO client settings. diff --git a/admin-and-features/openid-connect/vault.md b/features/openid-connect/vault.md similarity index 100% rename from admin-and-features/openid-connect/vault.md rename to features/openid-connect/vault.md diff --git a/features/overview.md b/features/overview.md new file mode 100644 index 0000000..71cbb16 --- /dev/null +++ b/features/overview.md @@ -0,0 +1,16 @@ +# Overview + +## Welcome to Defguard admin documentation + +This documentation walks you through all the administrative features of Defguard and how to configure them. + +We recommend having your own Defguard instance set up to explore these features firsthand. As you follow along, you can adjust the configuration directly within your instance to better understand each feature in action. + +If you don't have your instance yet, start it easily using our [one-line install script](../getting-started/one-line-install.md). + +### What you’ll learn + +As a future Defguard administrator, this documentation will help you: + +* Be aware of all the possibilities you have with Defguard. +* How to configure them to your needs. diff --git a/admin-and-features/remote-user-enrollment/README.md b/features/remote-user-enrollment/README.md similarity index 55% rename from admin-and-features/remote-user-enrollment/README.md rename to features/remote-user-enrollment/README.md index 0260e74..13c7f52 100644 --- a/admin-and-features/remote-user-enrollment/README.md +++ b/features/remote-user-enrollment/README.md @@ -4,58 +4,52 @@ By design **Defguard core** is meant to be deployed **securely** within your inf This introduces an issue with onboarding **new users** and forces the admin to choose an initial password, setup a VPN device for them, and pass on those details to the end user using possibly **insecure** channels. -To avoid this issue you can deploy a **public** [Defguard proxy](https://github.com/DefGuard/proxy) which enables a **secure enrollment process:** +To avoid this issue you can deploy a **public** [Defguard proxy](https://github.com/DefGuard/proxy) which enables a **secure enrollment process.** -
+**Here is a video showcasing:** -{% hint style="info" %} -The proxy is included when using the default [deployment instructions](../../deployment-strategies/setting-up-your-instance.md). +* how admin adds a user with secure remote enrollment +* then how the enrollment process looks like for the user -Please also see the relevant configuration options for [core](../../configuration.md#enrollment-configuration) and the [proxy itself](../../configuration.md#enrollment-service). -{% endhint %} +{% embed url="https://www.youtube.com/watch?v=KdyZoAlBb9k" %} -## Enrollment settings +{% hint style="info" %} +The proxy is included when using the default [deployment instructions](../../deployment-strategies/setting-up-your-instance.md). -{% hint style="warning" %} -In order for the enrollment process to function correctly you must also [set up an SMTP server](../../notifications/setting-up-smtp-for-email-notifications.md) for delivering email notifications. +Please also see the relevant configuration options for [core](../../deployment-strategies/configuration.md#enrollment-configuration) and the [proxy itself](../../deployment-strategies/configuration.md#enrollment-service). {% endhint %} -As an admin, you can configure enrollment-related settings on the **Enrollment** page. This includes: +### How to initiate user secure enrollment -* Making the VPN device step optional or mandatory in the enrollment wizard -* Customizing the user [onboarding messages](user-onboarding-after-enrollment.md). +When adding a new user please select the option: **Use user self-enrollment process:** -#### Message template tags +
-There are several **template tags** (similar to [Jinja2](https://jinja.palletsprojects.com/en/3.1.x/) tags) that you can use in the onboarding messages to insert some dynamic content: - -* `{{ first_name }}` - newly created user first name -* `{{ last_name }}` - newly created user last name -* `{{ username }}` - newly created user username/login -* `{{ admin_first_name }}` - first name of the administrator who initiated the enrollment process -* `{{ admin_last_name }}` - last name of the administrator who initiated the enrollment process -* `{{ admin_phone }}`- phone number of the administrator who initiated the enrollment process -* `{{ admin_email }}`- email of the administrator who initiated the enrollment process -* `{{ defguard_url }}`- internal Defguard URL (your Defguard instance address) -* `{{ defguard_version }}` +{% hint style="info" %} +**By enabling this option, the admin will only provide the user data and will not be able to set the user’s password, the user will create their own password during the enrollment process in the desktop client.** +{% endhint %} -## Remote enrollment process +After filling out the user data, there are two options to start the process for the user: -### Starting remote enrollment (as an admin) +
-* Go to **Users** page -* Click **Add new** user button -* Within the modal that appears fill in the new user's data as usual, but instead of entering a password check the **Use enrollment process** checkbox -* Click the **Add user** button -* In the next modal choose whether you want to **Send token by email** or **Deliver token yourself** -* If you choose to deliver the enrollment token by email provide an email address to which a notification will be sent +1. Automatic: _**Sending token by email** (_this requires for SMTP to be configured) - the user will receive an email will all the instructions how to initiate the Enrollment process +2. Manual: _**Deliver the token yourself**_ — this will only display the URL and token that must be handed over to the user personally. {% hint style="info" %} The email address you specify for delivering the enrollment token can be any email available to the user. It **does not** have to be the same one used when creating an account as we assume that a new user does not yet have access to their official company email account. {% endhint %} -* Click **Start enrollment** -* If you choose to deliver the token yourself you'll be shown a URL and token that you can copy and pass to the user +When the user adds a Defguard instance in the Desktop client using the received token, not only is the VPN client configured, but the user can also: + +* set up their password +* configure MFA, which is required to connect to MFA-protected locations + +This means the user may not even have access to Defguard itself, but can still configure both VPN and MFA! + +{% hint style="danger" %} +**For MFA configuration to be mandatory during the enrollment process, there must be at least one VPN location with MFA enabled. Otherwise, MFA setup will remain optional.** +{% endhint %} ### Restarting enrollment manually @@ -63,8 +57,13 @@ If there are any issues with the enrollment process (failed notification deliver * Go to **Users** page * Find the relevant user and click on the **Action** button on the right -* A **Start enrollment** option should be available in the pop-over menu -* Clicking it will open the same **Start enrollment** modal where you can choose how to deliver the enrollment token +* A **Configure Desktop Client** option should be available in the pop-over menu + +
+ +* Clicking it will open the same enrollment modal where you can choose how to deliver the enrollment token (by email if SMTP is configured or manually): + +
### Performing remote enrollment (as a user) @@ -82,3 +81,28 @@ By following the **enrollment wizard,** you'll be able to do the following: * add an initial device for VPN access After completing the wizard, you should be able to connect to the VPN and access the main Defguard web UI. + +## Enrollment settings + +{% hint style="warning" %} +In order for the enrollment process to function correctly you must also [set up an SMTP server](../notifications/setting-up-smtp-for-email-notifications.md) for delivering email notifications. +{% endhint %} + +As an admin, you can configure enrollment-related settings on the **Enrollment** page. This includes: + +* Making the VPN device step optional or mandatory in the enrollment wizard +* Customizing the user [onboarding messages](user-onboarding-after-enrollment.md). + +#### Message template tags + +There are several **template tags** (similar to [Jinja2](https://jinja.palletsprojects.com/en/3.1.x/) tags) that you can use in the onboarding messages to insert some dynamic content: + +* `{{ first_name }}` - newly created user first name +* `{{ last_name }}` - newly created user last name +* `{{ username }}` - newly created user username/login +* `{{ admin_first_name }}` - first name of the administrator who initiated the enrollment process +* `{{ admin_last_name }}` - last name of the administrator who initiated the enrollment process +* `{{ admin_phone }}`- phone number of the administrator who initiated the enrollment process +* `{{ admin_email }}`- email of the administrator who initiated the enrollment process +* `{{ defguard_url }}`- internal Defguard URL (your Defguard instance address) +* `{{ defguard_version }}` diff --git a/admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md b/features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md similarity index 77% rename from admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md rename to features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md index 726403e..0503bd8 100644 --- a/admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md +++ b/features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md @@ -1,7 +1,9 @@ # Automatic (real time) desktop client configuration & sync {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../../enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} When initially configuring Defguard desktop client, all available locations for the user (with all location settings) are automatically configured (which is one of Defguard's unique functionalities). @@ -10,7 +12,7 @@ In the course of time: new locations can be added by administrators, existing on In order to reconfigure a user's desktop client, the administrator has two possibilities: -1. If using the **Open Source Open Core** - the administrator needs to send a new configuration token to each user affected, and the user needs to [update the instance](../../help/desktop-client/instance-configuration.md#updating-instance) in the desktop client with the new obtained token. +1. If using the **Open Source Open Core** - the administrator needs to send a new configuration token to each user affected, and the user needs to [update the instance](../../using-defguard-for-end-users/desktop-client/instance-configuration.md#updating-instance) in the desktop client with the new obtained token. 2. Obtain the **Enterprise License**, then each user desktop client (and all Locations) are **reconfigured automatically in real time** (propagation takes around 30 seconds to 1 minute) whenever any VPN Location is reconfigured or the user is assigned to a different group. {% hint style="warning" %} diff --git a/admin-and-features/remote-user-enrollment/user-onboarding-after-enrollment.md b/features/remote-user-enrollment/user-onboarding-after-enrollment.md similarity index 100% rename from admin-and-features/remote-user-enrollment/user-onboarding-after-enrollment.md rename to features/remote-user-enrollment/user-onboarding-after-enrollment.md diff --git a/features/service-locations.md b/features/service-locations.md new file mode 100644 index 0000000..0d567d2 --- /dev/null +++ b/features/service-locations.md @@ -0,0 +1,103 @@ +# Service locations + +{% hint style="warning" %} +#### Availability + +This feature is available in Enterprise plan. See the [pricing page](https://defguard.net/pricing/) for details. +{% endhint %} + +{% hint style="warning" %} +Service locations are currently only supported with Defguard Client for Windows. +{% endhint %} + +Service locations are a special kind of locations that allow establishing automatic VPN connections on system boot. + +There are currently two modes of service locations: + +* **Pre-logon**: the VPN connection to the location is established on system boot and is terminated when the user completes login to their system account. This may be used when your users need to authorize with some external identity provider (for example Active Directory) in order to successfully login and later don't require constant access to the VPN location. +* **Always on**: the VPN connection to the location is established on system boot and is never terminated, unless: + + * The network configuration of this location is changed (connection is re-established, to apply new changes) + * The client is reinstalled (connection is re-established during the reinstall) + * The service location mode is changed or is disabled (connection is terminated) + + This mode may be used when your users require constant access to a given VPN location. + +## Managing service locations + +To make a location act as a service location, go to the given location's settings. + +
+ +Find the service locations section: + +
+ +Here you can select one of the service location modes. + +{% hint style="warning" %} +If your location is MFA protected, you won't be able to set is as a service location. The location must have MFA disabled in order to use service location mode. +{% endhint %} + +After selecting one of the modes and saving your changes, the location will function as a service location. After the configuration of the Defguard client is updated for your instance, the location will be hidden in the client's UI. The connection to the location will be established in the background without any user input. + +## Network configuration updates + +If you have enterprise features enabled, the Defguard Client periodically updates it's network configuration if it's changed in Defguard Core. This also applies to service locations, but in order for the configuration update to happen for a service location, the Defguard Client must be open. This means that the configuration won't be updated when the user hasn't logged in yet, since the Client is not running at that point. In other words, **the user must first login and start the Client for a configuration update to automatically happen**. + +## Service location connection management in depth + +{% hint style="info" %} +This section describes the current behavior of the Defguard Client on Windows. +{% endhint %} + +Service locations are managed by a background service (`defguard-service`) responsible for managing VPN connections. The background service is running independently from the Desktop Client and is always active. The service is responsible for establishing the connection on system boot and terminating/restarting it under specific circumstances (e.g. when user logs in if using the pre-logon mode). + +### Pre-logon + +If you selected the pre-logon mode, the connection will be established on system boot. If the service detects a login event, the connection will be terminated. + +After login, the connection won't be established unless a system logoff event is detected. In such case, the connection is established again until another login event occurs. + +### Always-on + +If you selected the always-on mode, the connection will be established on system boot. + +The connection won't be terminated or restarted unless the Desktop Client receives a network update or is uninstalled. + +## Troubleshooting + +### Restarting the background service + +In order to force a reconnect to the service location, you can restart the background service that manages it. To do this on Windows, go to search and open `services.msc` as an administrator. + +
+ +Next, find a service called "Defguard Service". Right click on it and select the restart option. + +
+ +
+ +This will restart the background service and re-connect to the service location. + +### Checking if connection is established + +This can be checked either by: + +1. Going to the Defguard Core web interface and checking if the given Client is connected. This is a less reliable way as it can report the status with a delay. We recommend checking the status directly on the given machine. +2. On the given Windows machine: + 1. Go to "Settings"\\ + +
+ 2. Network & Internet\\ + +
+ 3. Change adapter settings\\ + +
+ 4. The VPN connection should be visible here, if it's established (for example in the case of an always on mode). + +### Network change + +If the network you use to access the internet (or more specifically, the VPN gateway) changes (for example, you switch Wi-Fis) while the service location connection is established, the connection will stop working. To resolve this issue, you will need to restart your device or restart the service responsible for management of the service locations, so the connection is re-established. diff --git a/admin-and-features/ssh-authentication.md b/features/ssh-authentication.md similarity index 91% rename from admin-and-features/ssh-authentication.md rename to features/ssh-authentication.md index 2ab6d3d..3f329e3 100644 --- a/admin-and-features/ssh-authentication.md +++ b/features/ssh-authentication.md @@ -2,14 +2,14 @@ ## Overview -Defguard allows you to configure SSH authentication on your servers to use public SSH keys stored in your instance's database. This is possible by using the [AuthorizedKeysCommand option](http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/sshd\_config.5#AuthorizedKeysCommand) in OpenSSH daemon configuration file. +Defguard allows you to configure SSH authentication on your servers to use public SSH keys stored in your instance's database. This is possible by using the [AuthorizedKeysCommand option](http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/sshd_config.5#AuthorizedKeysCommand) in OpenSSH daemon configuration file. {% hint style="info" %} Each user can manage their public SSH (and GPG keys) in their user profile. Also, when provisioning YubiKeys - those keys are also available in user profile (with info on which YK they are stored): -![](../../.gitbook/assets/yk.png) + {% endhint %} The specific API endpoint used for this is `/api/v1/ssh_authorized_keys`. It returns a list of public keys, each in a new line. It allows you to filter you query by specifying a username, a group or a combination of both. diff --git a/user-snat-bindings.md b/features/user-snat-bindings.md similarity index 91% rename from user-snat-bindings.md rename to features/user-snat-bindings.md index 1e6f4dd..23232f5 100644 --- a/user-snat-bindings.md +++ b/features/user-snat-bindings.md @@ -1,7 +1,9 @@ # User SNAT bindings {% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](enterprise/license.md#enterprise-is-free-up-to-certain-limits). +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. {% endhint %} {% hint style="info" %} diff --git a/admin-and-features/wireguard/README.md b/features/wireguard/README.md similarity index 100% rename from admin-and-features/wireguard/README.md rename to features/wireguard/README.md diff --git a/features/wireguard/behavior-customization.md b/features/wireguard/behavior-customization.md new file mode 100644 index 0000000..e5e5900 --- /dev/null +++ b/features/wireguard/behavior-customization.md @@ -0,0 +1,44 @@ +# VPN & Client behaviour customization + +{% hint style="warning" %} +#### Availability + +This feature is available in all plans, with usage limits. See the [pricing page](https://defguard.net/pricing/) for details. +{% endhint %} + +After purchasing the Enterprise License the _Enterprise features_ **tab will be activated**, enabling the administrator to configure additional features: + +
+ +### Disable for users to manage their devices + +When this option is enabled, **only users in the Admin group can manage devices in user profile**, for any other users adding/editing/removing their VPN devices is disabled. + +### Disable ability to configure other VPN clients then Defguard desktop client + +If '_Disable users' ability to manually configure WireGuard client_' option is **enabled**, then any user **has only possibility to configure Defguard desktop client.** + +This option will not be available for users: + +
+ +### Client traffic policy selection + +One of the unique features of Defguard desktop client is the ability for users to choose whether to route only **predefined network traffic** or **all traffic** from their device through a connected VPN location. + +
+ +However, in some cases administrators may want to enforce a specific behavior - allowing access only to predefined traffic or requiring all traffic to pass through the VPN. + +

+ +\ +The **Client Traffic Policy** setting enables administrators to control this behavior as needed. The available options are: + +* **None** - Users can freely choose between routing predefined traffic or all traffic through the VPN. +* **Disable all traffic** - Only predefined traffic is allowed, the "All traffic" option is disabled for users. +* **Force all traffic** - All traffic is routed through the VPN, the "All traffic" option is enforced and cannot be changed by users. + +{% hint style="warning" %} +Please note that this option is only client-side enforced, meaning the user may manually modify Wireguard interface to force all traffic to go through the VPN. +{% endhint %} diff --git a/admin-and-features/wireguard/create-your-vpn-network.md b/features/wireguard/create-your-vpn-network.md similarity index 87% rename from admin-and-features/wireguard/create-your-vpn-network.md rename to features/wireguard/create-your-vpn-network.md index 88a4407..0a2875f 100644 --- a/admin-and-features/wireguard/create-your-vpn-network.md +++ b/features/wireguard/create-your-vpn-network.md @@ -1,6 +1,6 @@ # Create/Manage VPN Location -A VPN location is a VPN network to which users can connect to. Every location has a [dedicated gateway](../../deployment-strategies/gateway/) (or [multiple gateways if you deploy a high-availability solution](../../deployment-strategies/high-availability-and-failover.md#gateway-high-availability)). +A VPN location is a VPN network to which users can connect to. Every location has a [dedicated gateway](../../deployment-strategies/gateway.md) (or [multiple gateways if you deploy a high-availability solution](../../deployment-strategies/high-availability-and-failover.md#gateway-high-availability)). {% hint style="success" %} Defguard supports **multiple locations**, for each location to work you need to configure it and deploy a dedicated gateway. @@ -33,7 +33,7 @@ By providing the VPN IPs/masks, you are configuring both: **the VPN internal net This field can contain multiple IP addresses (both IPv4 and IPv6), separated by a comma (e.g. `10.10.20.1/24,fc00::abcd:0:1/96`). {% hint style="info" %} -### Dual-stack VPN networks +**Dual-stack VPN networks** Defguard supports dual-stack VPN networks, allowing simultaneous assignment of both IPv4 and IPv6 addresses to clients. Each VPN network can include multiple IPv4 and IPv6 subnets, and connected clients will automatically receive one address from each defined subnet. This enables seamless communication over both IP versions within a single VPN session. {% endhint %} @@ -81,6 +81,14 @@ Right now Defguard only manages routing of Allowed IPs (adding to routing table If you want the _All Traffic_ to work in the desktop client you need to also configure MASQUARED/NAT for the VPN interface. [Example of that here.](../../tutorials/step-by-step-setting-up-a-vpn-server/#enabling-to-access-internet-through-your-vpn) {% endhint %} +{% hint style="info" %} +## Allowed IPs with exceptions + +If you use broad _Allowed IPs_ (for example `0.0.0.0/0`) and want to exclude specific networks, note that WireGuard does not support explicit exclusions. Instead, the allowed range must be split into multiple CIDR blocks that cover everything except the excluded subnets. + +To simplify this, you can use an **Allowed IPs calculator** to generate the correct set of CIDR blocks for your intended traffic routing. +{% endhint %} + ### DNS This specifies DNS resolvers and search domains. Supported format is by comma separation, e.g.: @@ -104,7 +112,7 @@ By defining a group, assigning users to that group and then choosing this group( By enabling this setting, this location **will require Multi-Factor Authentication** on each connection to this location. {% hint style="danger" %} -This feature is only supported in [**Defguard Desktop Client**](../../help/desktop-client/)**.** +This feature is only supported in [**Defguard Desktop Client**](../../using-defguard-for-end-users/desktop-client/)**.** {% endhint %} Each connection in the client: @@ -115,15 +123,15 @@ Each connection in the client: {% hint style="warning" %} For this feature to work, the user must: -1. configure their [TOTP settings in the profile](../../help/setting-up-2fa-mfa.md#one-time-password) -2. [SMTP settings needs to be set up](../../notifications/setting-up-smtp-for-email-notifications.md) and the user must enable Email tokens in their profile. +1. configure their [TOTP settings in the profile](../../using-defguard-for-end-users/setting-up-2fa-mfa.md#one-time-password) +2. [SMTP settings needs to be set up](../notifications/setting-up-smtp-for-email-notifications.md) and the user must enable Email tokens in their profile. {% endhint %} #### Keep alive interval Configurable time interval (in seconds) used to send periodic packets to ensure that the connection remains active. This is particularly useful in environments like NAT (Network Address Translation) or firewalls that may close idle connections. -**Peer disconnect threshold** +#### **Client disconnect threshold** Since Multi-Factor Authentication (MFA) is used to enforce zero-trust security, a peer (user) that remains inactive for a specified time interval (defined in seconds within the settings) will be disconnected. Additionally, the session configuration will be removed from the gateway. This ensures that when the peer reconnects, they must complete the MFA process again. diff --git a/admin-and-features/wireguard/dns-and-domains.md b/features/wireguard/dns-and-domains.md similarity index 68% rename from admin-and-features/wireguard/dns-and-domains.md rename to features/wireguard/dns-and-domains.md index 2a8cf0c..8e7c912 100644 --- a/admin-and-features/wireguard/dns-and-domains.md +++ b/features/wireguard/dns-and-domains.md @@ -8,4 +8,4 @@ To change / add DNS settings or a DNS search domain: For example: -
+
diff --git a/admin-and-features/wireguard/executing-custom-gateway-commands.md b/features/wireguard/executing-custom-gateway-commands.md similarity index 100% rename from admin-and-features/wireguard/executing-custom-gateway-commands.md rename to features/wireguard/executing-custom-gateway-commands.md diff --git a/features/wireguard/multi-factor-authentication-mfa-2fa/README.md b/features/wireguard/multi-factor-authentication-mfa-2fa/README.md new file mode 100644 index 0000000..cbae45d --- /dev/null +++ b/features/wireguard/multi-factor-authentication-mfa-2fa/README.md @@ -0,0 +1,63 @@ +--- +description: >- + Defguard is the sole VPN solution that genuinely implements Multi-Factor + Authentication (MFA) before a WireGuard® VPN connection is established, + significantly enhancing security against cyberattacks. +--- + +# Multi-Factor Authentication (MFA/2FA) + +## TL;DR; + +* MFA (Multi-Factor Authentication) is a method of securing IT systems that requires the user to confirm their identity using at least two or more independent verification factors. +* MFA during a VPN connection requires the user to authenticate in the VPN client with two or more factors **before the connection can be established**. +* Defguard is the **only solution that enables MFA for WireGuard® VPN connections.** +* MFA is a widely overused marketing term for many (if not all) WireGuard®-based VPN solutions. In most other cases, it simply refers to **2FA for accessing the configuration panel or performing the initial client setup, and no MFA during connection stage**. + +## What Multi-Factor Authentication actually is? + +MFA (Multi-Factor Authentication) is a method of securing IT systems that requires the user to confirm their identity using at least two or more independent verification factors. + +There are three main categories of MFA: + +* Something a user knows: e.g., password, PIN, or answer to a security question. +* Something a user has: a physical token, smartphone, authenticator app generating one-time codes, or a security key. +* Something a user is: biometric data such as a fingerprint, face scan, or voice recognition + +IT systems build authentication methods using those three areas and leverage them to secure operations done on the system (logging in into the system, establishing a connection, etc.). + +## How Defguard handles MFA? + +Defguard is a unique VPN solution that can be configured to use either: + +1. [**internal**](internal-sso-based-mfa.md) **- based on** [**built-in IdP/SSO**](../../openid-connect/) - where users in Defguard profile manage their MFA methods (TOTP, Email, Mobile Biometry) and then use them to establish a VPN connection, +2. [**external**](external-sso-based-mfa.md) **- using** [**cloud IdP/SSO**](../../external-openid-providers/) **providers** such as [Google](../../external-openid-providers/google.md), [Microsoft](../../external-openid-providers/microsoft.md), [Okta](../../external-openid-providers/okta.md), [Jumpcloud](../../external-openid-providers/jumpcloud.md) (and others) to authorize each connection using those providers in Defguard desktop/mobile before the connection can be established. + +In addition, when establishing a VPN connection, **Defguard enforces extra security measures** (including additional MFA steps in the user has category). It first securely establishes session keys (WireGuard® pre-shared keys), and only then configures the VPN location (our VPN gateway). The connection is possible to establish only with a device that has successfully passed the full authorization flow, enabling it to connect using its WireGuard® private/public keys and session keys. + +Defguard also **supports multiple VPN locations (multiple VPNs), each of which can be configured independently to use either internal or external MFA**. + +### Multi device MFA + +Some of Defguard’s MFA methods are even more sophisticated, such as establishing a VPN connection using mobile biometric authentication in the desktop client. This method requires: + +User prerequisites (something a user has in terms of MFA terminology): + +* A private WireGuard® key corresponding to the public key configured during the Defguard enrollment session. +* A mobile device successfully enrolled and added to the user profile (as a second VPN device). +* Private keys in the mobile device’s secure key store, generated during the mobile device enrollment process, which are accessible only via the device’s biometric authentication.\\ + +Extended MFA flow using two devices: + +1. Scan the QR code displayed in the desktop app using the enrolled mobile device. +2. Perform MFA using the biometric authentication and private/public key pair, which is only accessible after successful biometric verification. +3. Only after these steps can the remaining Defguard flow, as described above, proceed. + +## Why MFA for each connection Is not only Important but necessary + +The main purpose of MFA is to strengthen security by acting as a highly effective barrier against cyberattacks such as phishing or brute-force attacks. With an effective MFA implementation, even if an attacker gains access to a user’s basic credentials (in WireGuard®’s case, typically the private key stored on the device), they will still be unable to connect to the VPN without the additional factor(s). This prevents access to critical private network resources and applications, blocking further exploitation and greatly reducing the risk of unauthorized access. + +This means that relying on external SSO only for the initial device configuration is not sufficient to provide security in today’s environment. Even worse, marketing a VPN solution as providing MFA under these circumstances is highly misleading and potentially harmful to user security. + +\ +\\ diff --git a/features/wireguard/multi-factor-authentication-mfa-2fa/external-sso-based-mfa.md b/features/wireguard/multi-factor-authentication-mfa-2fa/external-sso-based-mfa.md new file mode 100644 index 0000000..c8d92af --- /dev/null +++ b/features/wireguard/multi-factor-authentication-mfa-2fa/external-sso-based-mfa.md @@ -0,0 +1,46 @@ +# External SSO based MFA + +In order to enable the External MFA authentication: + +1. Your instance **must have** [external OIDC/SSO configured](../../external-openid-providers/). +2. Select the VPN Location from the dropdown list on the Network Overview, and pressing the **Edit Location** button in the top right corner of the page. +3. Select the External MFA in the menu. + +
+ +#### Client disconnect threshold + +When MFA is enabled on a location, Defguard periodically (currently every **1 minute**) checks statistics if a client is connected and if the period of inactivity (defined in this option) is met, a client is disconnected. + +Thus, the gateway needs to be configured to send statistics in that period. + +{% hint style="info" %} +We recommend to set: + +* Gateway to send statistics every 30sec +* Peer disconnect threshold we recommend it to be min. 300 (5 min) +{% endhint %} + +### Testing MFA on Defguard client + +When a location has External MFA enabled, after clicking Connect in the Desktop client ([here you can find information about Mobile Client External MFA](../../../using-defguard-for-end-users/mobile-client/instance-connect.md#external-mfa)), there will be information displayed about authentication requirement: + +
+ +In order to authenticate the user will be prompted to click on Authenticate with your configured OIDC (like Authenticate with Google) - which will open the browser and start the authentication session with your OIDC/SSO provider by the [Defguard Enrollment ](../../../using-defguard-for-end-users/enrollment/)service (which is the only public component). + +After successful authentication, the user will be informed by the enrollment service like so: + +
+ +And the VPN should be connected. + +Video describing whole process: + +{% embed url="https://www.youtube.com/embed/81MH7VXmHR0" %} + +## Biometry as an internal MFA method + +Users can use biometry as an internal MFA method on their mobile devices. If a device has configured biometry as an MFA method, you will see ![](<../../../.gitbook/assets/Screenshot 2025-08-18 at 13.56.49.png>) icon, next to the device name. + +
diff --git a/features/wireguard/multi-factor-authentication-mfa-2fa/internal-sso-based-mfa.md b/features/wireguard/multi-factor-authentication-mfa-2fa/internal-sso-based-mfa.md new file mode 100644 index 0000000..757b396 --- /dev/null +++ b/features/wireguard/multi-factor-authentication-mfa-2fa/internal-sso-based-mfa.md @@ -0,0 +1,60 @@ +# Internal SSO based MFA + +Enabling Internal MFA for a desired VPN Location is done by: + +1. Going into Defguard to **VPN Overview** +2. Selecting the VPN Location from the dropdown list, and pressing the **Edit Location** button in the top right corner of the page +3. Check the "**Internal MFA**" checkbox under the **MFA requirement** section +4. Set **peer disconnect threshold**, we recommend it to be min. 300 (5 min) - see chapter [below](internal-sso-based-mfa.md#peer-disconnect-threshold). +5. And **save changes**. + +
+ +### Peer disconnect **threshold** + +When MFA is enabled on a location, Defguard periodically (currently every **1 minute**) checks statistics if a client is connected and if the period of inactivity (defined in Peer disconnect threshold option) is met, a client is disconnected. + +Thus, the gateway needs to be configured to send statistics in that period. + +
+ +We recommend to set: + +* gateway to send statistics every 30sec +* Peer disconnect threshold we recommend it to be min. 300 (5 min) + +### Client update after enabling MFA + +{% hint style="warning" %} +When MFA configuration is changed, all clients must do an [Instance Update](../../../using-defguard-for-end-users/desktop-client/instance-configuration.md#updating-instance). +{% endhint %} + +### Testing MFA on Defguard client + +If a VPN has MFA enabled, before connecting you will be asked to complete the authentication step first: + +
+ +### Supported MFA methods + +For now, MFA is only available with the following methods: + +* [TOTP - Time-based one-time password](../../../using-defguard-for-end-users/setting-up-2fa-mfa.md#one-time-password) +* Email - requires [SMTP to be configured](../../notifications/setting-up-smtp-for-email-notifications.md) +* [Biometry using Defguard Mobile Application](../../../using-defguard-for-end-users/desktop-client/using-multi-factor-authentication-mfa.md#multi-factor-authentication-via-mobile-biometry) + +{% hint style="warning" %} +Please remember to configure TOTP on you user account and/or SMTP settings for MFA on the desktop client to work. +{% endhint %} + +### User MFA setup + +After enabling MFA for a given VPN, users will need to enable MFA for their accounts to be able to connect. This process is described in [setting-up-2fa-mfa.md](../../../using-defguard-for-end-users/setting-up-2fa-mfa.md "mention"). For simplicity & security, the desktop client uses the same MFA methods as the Defguard server. + +An error message will be shown if users attempt to select an MFA method that has not been enabled for their accounts: + +
+ +### Successful authentication + +If authentication succeeds, the VPN two-factor authentication modal will be closed and connection to the selected VPN will be attempted. Users will be asked to authenticate on every connection to a VPN with MFA enabled. diff --git a/admin-and-features/wireguard/network-overview.md b/features/wireguard/network-overview.md similarity index 100% rename from admin-and-features/wireguard/network-overview.md rename to features/wireguard/network-overview.md diff --git a/admin-and-features/wireguard/remote-desktop-activation.md b/features/wireguard/remote-desktop-activation.md similarity index 69% rename from admin-and-features/wireguard/remote-desktop-activation.md rename to features/wireguard/remote-desktop-activation.md index fac7821..e07bfd4 100644 --- a/admin-and-features/wireguard/remote-desktop-activation.md +++ b/features/wireguard/remote-desktop-activation.md @@ -7,12 +7,12 @@ description: How to manually generate token for user as an administrator. This process enables system **administrators** to create and distribute desktop **activation tokens to users facing access issues to the Defguard instance**. It's handy if a user is already enrolled (has an account) but has not configured the desktop client and doesn't have access to Defguard (is outside the internal network and can't access Defguard). {% hint style="info" %} -Users can activate / configure their desktop client themselves - for that documentation please go to: [Adding an instance in the client documentation](../../help/desktop-client/instance-configuration.md). +Users can activate / configure their desktop client themselves - for that documentation please go to: [Adding an instance in the client documentation](../../using-defguard-for-end-users/desktop-client/instance-configuration.md). {% endhint %} Navigate to the user's list page. -
+
Select "Configure Desktop Client" from the action menu. @@ -24,8 +24,13 @@ This option is only available if the instance has at least one localization, and You will be presented with a choice to send an activation token via email or you can choose to just display the token and deliver it through other methods. -
+
-After receiving the token, the user will need to follow the activation process in the client. You can find out more about it in [#adding-instance](../../help/desktop-client/instance-configuration.md#adding-instance "mention"). +After receiving the token, the user will need to follow the activation process in the client. You can find out more about it in [#adding-instance](../../using-defguard-for-end-users/desktop-client/instance-configuration.md#adding-instance "mention"). + +This token also allows for updating information, read more about it in [#updating-instance](../../using-defguard-for-end-users/desktop-client/instance-configuration.md#updating-instance "mention"). + +Here is a video describing whole process: + +{% embed url="https://www.youtube.com/embed/KdyZoAlBb9k" %} -This token also allows for updating information, read more about it in [#updating-instance](../../help/desktop-client/instance-configuration.md#updating-instance "mention"). diff --git a/admin-and-features/yubikey-provisioning.md b/features/yubikey-provisioning.md similarity index 96% rename from admin-and-features/yubikey-provisioning.md rename to features/yubikey-provisioning.md index 793cc21..50d5ae4 100644 --- a/admin-and-features/yubikey-provisioning.md +++ b/features/yubikey-provisioning.md @@ -88,7 +88,7 @@ This path describes how the admin can provision a key for a user, but the same p You can see available clients in Defguard web-application under "provisioners" tab. -
+
To provision the key: @@ -96,10 +96,10 @@ To provision the key: 2. Insert a YubiKey to machine that is running the provisioner client. 3. Select "Add YubiKey" from the actions menu for a User in the list. -
+
4. Select your provisioner and click the "Provision YubiKey" button. -
+
The service will take a short moment to prepare and provision your keys. Once the process is done, the modal will close, and you will see a notification in the corner of the screen. diff --git a/for-developers/dev-env-setup/README.md b/for-developers/dev-env-setup/README.md index 4821549..d9a7efd 100644 --- a/for-developers/dev-env-setup/README.md +++ b/for-developers/dev-env-setup/README.md @@ -106,7 +106,7 @@ cargo run ### Minimum required settings -Consult [Configuration](../../configuration.md) manual for a list of all available configuration settings. +Consult [Configuration](../../deployment-strategies/configuration.md) manual for a list of all available configuration settings. * `DEFGUARD_COOKIE_INSECURE=true` - running HTTP server locally does not need secured cookies * `DEFGUARD_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` - 64-character long security key diff --git a/for-developers/dev-env-setup/translations-web/README.md b/for-developers/dev-env-setup/translations-web/README.md index 615ee27..8d3f71a 100644 --- a/for-developers/dev-env-setup/translations-web/README.md +++ b/for-developers/dev-env-setup/translations-web/README.md @@ -1,4 +1,4 @@ -# Translations (web) +# Translations (core/web) Frontend translations are using [typesafe-i18n](https://github.com/ivanhofer/typesafe-i18n) library. diff --git a/health-check.md b/health-check.md deleted file mode 100644 index 69b43ef..0000000 --- a/health-check.md +++ /dev/null @@ -1,72 +0,0 @@ -# Health check - -## Core & Proxy - -### Rest API - -[Core](https://github.com/defguard/defguard) and [Proxy](https://github.com/defguard/proxy) provides health endpoint at `GET /api/v1/health` which checks whether the application server is running. - -Example request: - -```bash -curl "https://defguard.example.com/api/v1/health" -``` - -Example response: - -``` -alive -``` - -### gRPC status health - -#### Proxy (available from v0.6.0) - -To verify gRPC services for **Proxy** are alive, there is endpoint at `GET /api/v1/health-grpc` that verify it. - -Example request: - -```bash -curl "https://enroll.example.com/api/v1/health-grpc" -``` - -Possible responses: - -``` -200 - Proxy is working and is connected to CORE -503 - Proxy works but is not connected to CORE -``` - -#### Core (available from v1.0.0) - -To check if core gRCP service is alive, we recommend to use community tools like [grpc\_health\_probe](https://github.com/grpc-ecosystem/grpc-health-probe). - -Example request for core: - -```sh -./grpc_health_probe -addr=defguard.example.com:50055 -``` - -Example response for core: - -``` -status: SERVING -``` - -## Gateway - -You can enable in gateway config ([example config](https://github.com/DefGuard/gateway/blob/main/example-config.toml)) a health check port, by adding the following line: - -``` -health_port = 55003 -``` - -In this example, gateway will open an additional HTTP port number 55003 and will return the following HTTP status codes: - -*
200 - Gateway is working and is connected to CORE
-  
-* ``` - 503 - gateway works but is not connected to CORE - ``` - -By default no healthcheck ports are open. diff --git a/help/desktop-client/README.md b/help/desktop-client/README.md deleted file mode 100644 index 7cf5b6f..0000000 --- a/help/desktop-client/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# Desktop Client - -### Overview - -Desktop client provides an easy way to access VPN locations of multiple Defguard instances via user-friendly UI. - -Download latest release here: [https://defguard.net/download/](https://defguard.net/download/) - -For development/pre-releases, go to GitHub: [https://github.com/DefGuard/client/releases](https://github.com/DefGuard/client/releases) - -Guides: - -* [Instance configuration](instance-configuration.md) -* [Using Multi-Factor Authentication](using-multi-factor-authentication-mfa.md) - - - -### Windows - -Our desktop client has **bundled** official WireGuard client - as we use **wg.exe** to manage the WireGuard tunnels. - -{% hint style="danger" %} -If you have the official WireGuard client installed - Defguard client installation may fail. -{% endhint %} - -### MacOS - -Has no external requirements and we have wireguard-go bundled. - -### Linux - -{% hint style="warning" %} -On Linux the desktop client uses `resolvconf` to manage DNS servers. On newer distributions it should be a symbolic link to `resolvectl`, more details can be found on the [troubleshooting](../broken-reference/) page. -{% endhint %} - -### Ubuntu - -#### Ubuntu 24 - -The libwebkit2gtk-4.0 library which our client depends on is not available in the default apt package repositories on Ubuntu 24.04 (there is only libwebkit2gtk-4.1 which doesn't work with current client). Client installation is still possible, but requires using some workarounds: - -To safely install a package from Ubuntu Jammy repositories without breaking your system: - -1. **Add Jammy Repo:** - * Open `/etc/apt/sources.list`: - - ```bash - sudo nano /etc/apt/sources.list - ``` - * Add the Jammy repository with `[arch=amd64]` for your architecture: - - ``` - deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main universe - ``` - * Save and exit. -2. **Pin the Jammy Repo with low priority:** - * Create `/etc/apt/preferences.d/jammy.pref`: - - ```bash - sudo nano /etc/apt/preferences.d/jammy.pref - ``` - * Add the following: - - ``` - Package: * - Pin: release n=jammy - Pin-Priority: -10 - ``` - * Save and exit. -3. **Install the Specific Package:** - - ```bash - sudo apt update - sudo apt install -t jammy libwebkit2gtk-4.0 - ``` -4. **Optionally: Remove Jammy Repo After Use:**\ - Delete or comment out the Jammy entry in `/etc/apt/sources.list`. - -#### ArchLinux - -There is an [AUR package](https://aur.archlinux.org/packages/defguard-client)[: defguard-client](https://aur.archlinux.org/packages/defguard-client). - -If you don't know how to install AUR packages, please follow these guidelines: - -* Manual install: [https://wiki.archlinux.org/title/Arch\_User\_Repository](https://wiki.archlinux.org/title/Arch_User_Repository) -* Installation through PARU (AUR Helper): [https://owlhowto.com/how-to-install-paru-on-arch-linux/](https://owlhowto.com/how-to-install-paru-on-arch-linux/) - -### Client update - -Defguard Client regularly checks for updates and in order to do so operating system name and installed application version are sent to the Defguard update service. - -This functionality can be turned off in the Client settings under Updates section so that no data is sent. - -

"Check for updates" setting

- -If a new version is available, a notification with a download button will be shown near the bottom of the menu. - -

New Desktop Client version available for download

diff --git a/help/mobile-client/README.md b/help/mobile-client/README.md deleted file mode 100644 index 9ab58ad..0000000 --- a/help/mobile-client/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Mobile Client - -{% hint style="warning" %} -Mobile client is currently under development and are in **beta**, current page should be considered as preview. Some parts of UI may look different in upcoming release. -{% endhint %} - -### Installation - -1. Join closed beta for [iOS](https://testflight.apple.com/join/Jvdhkt7h) or [Android](https://play.google.com/store/apps/details?id=net.defguard.mobile). -2. Download and install the app on your device. - -### Guides - -These guides explains how to use the Defguard Mobile to connect securely to VPN locations within your Defguard instance. It covers the entire process, from installation, adding new instances, connecting to locations, to managing your VPN connection settings. - -* [Instance adding guide](instance-adding.md#adding-instance-during-enrollment) -* [Connecting to Instance guide](instance-connect.md#connecting-to-instance) -* [Managing Instance guide](instance-manage.md#managing-your-instance) diff --git a/in-depth/Untitled Diagram.drawio b/in-depth/Untitled Diagram.drawio deleted file mode 100644 index 0ce3163..0000000 --- a/in-depth/Untitled Diagram.drawio +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/in-depth/architecture-decision-records/1.6.md b/in-depth/architecture-decision-records/1.6.md new file mode 100644 index 0000000..b5c8e0b --- /dev/null +++ b/in-depth/architecture-decision-records/1.6.md @@ -0,0 +1,11 @@ +# 1.6 + +## 2025-10-16 Desktop client auto-provisioning + +In order to support client auto-provisioning of the desktop client we've introduced support for initializing the client from a provisioning file ([#627](https://github.com/DefGuard/client/pull/627)). If a client is "uninitialized" (has no instance configured) it can read required enrollment config from a file stored in app data directory. The process is explained further in the [docs](../../features/desktop-client-auto-provisioning/#client-side-implementation). + +This file-based approach allows us to support provisioning on various platforms independent of the specific tooling used by system administrators. + +Furthermore since the majority of users are on the Windows platform we also updated our MSI package to support provisioning scenarios in Active Directory and Entra ID environments as described [here](../../features/desktop-client-auto-provisioning/#windows-auto-provisioning). + +To enable this functionality we also needed to introduce a change to the OpenID directory sync functionality - when using Microsoft provider it is now possible to [create users in Defguard during sync](../../features/external-openid-providers/microsoft.md#creating-defguard-user), without waiting for the first login. diff --git a/in-depth/architecture/README.md b/in-depth/architecture/README.md index 69e2951..cfc709c 100644 --- a/in-depth/architecture/README.md +++ b/in-depth/architecture/README.md @@ -1,42 +1,69 @@ # Architecture -By design **Defguard core (the main component) is meant to be deployed in your secure network segments** (available only from an internal network or by VPN) and operations that require public access (like user onboarding, enrollment, password reset, etc.) **are done using a secure proxy:** +## Design Principles -

Defguard architecture

+Defguard is a zero-trust, VPN-centric access platform built on WireGuard®. Its design cleanly separates the control plane (Core) from the data plane (Gateways) and exposes a minimal public surface (Gateway for VPN; Proxy for secure web flows). Administrative and identity-sensitive services remain off the public internet, behind controlled network boundaries. -This approach is vastly different from most (if not all) VPN/IdP solutions, which are a simple or monolithic application focus on functionalities (like generating configs, managing users, etc.) and most of the time is publicly available on the Internet for any attacker. +
-If you want full privacy, Defguard only exposes publicly **components designed for this purpose:** +

Defguard Logical Architecture Diagram

-* WireGuard® gateway - to enable VPN access -* Public Proxy for secure remote processes like: - * [User enrollment and onboarding](../../admin-and-features/remote-user-enrollment/) - * [Desktop Client configuration](../../admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md) +### **Separation of Concerns** -## C4 component model +Each Defguard component serves a distinct purpose, ensuring clear functional isolation: -Below you can see Defguard architecture in [C4 model](https://c4model.com/) divided into context, containers and components. +* The Core operates as the _control plane_: storing state, enforcing policy, and managing users and devices. +* The Gateway serves as the _data plane_: forwarding traffic, enforcing ACLs, and maintaining local operational independence. +* The Proxy acts as a _secure edge layer_: handling user-facing traffic and offloading authentication flows. -## Context +This modular architecture simplifies scaling, security audits, and upgrades. -![Context look at Defguard architecture](../puml/architecture-context.svg) +### **Minimize Exposure** -## Containers +Defguard is designed around the principle of least exposure — only the absolutely necessary components are reachable from the public internet. -![Containers look at Defguard architecture](../puml/architecture-containers.svg) +* The Proxy is the _only_ component exposing a public HTTPS interface. +* The Gateway exposes only a single UDP port for WireGuard connections. +* The Core, database, and identity integrations (OIDC, LDAP, etc.) remain entirely private, accessible only from trusted networks. -## Components +This ensures the smallest possible attack surface while still supporting remote enrollment, authentication, and VPN connectivity. -![Components look at Defguard architecture](../puml/architecture-components.svg) +### **Defense in Depth** -### Basics +Every communication layer is protected by redundant and complementary security mechanisms: -Core is a Rust web server which is exposed as REST API and gRPC web server with typescript and rust clients, it handles connection to database, LDAP server and gateway. Core also handles user authorization via LDAP account. It's configurable using Environmental Variables which you can find [here](../../configuration.md). +* All internal API traffic uses gRPC (recommended over TLS). +* Firewall rules restrict network flows to specific IPs and ports. +* Sensitive services (Core, DB) are deployed in private network segments inaccessible from the internet. -Gateway is a small CLI gRPC client written in Rust which sends network statistics to Core server and apply network configuration changes on message from core.\ -Our frontend is React app written in Typescript which allows handling all API calls via Web UI.\ -See detailed gRPC docs [here](https://google.com). +This layered approach reduces the blast radius of any potential compromise. -### Example setup flow +### **Zero-Trust Posture** -After creating your network in our wizard and running our gateway program core will message it with network data. Gateway after receiving data will set up your network using WireGuard commands you can think of it like a wrapper on WireGuard commands which also sends network information through gRPC. After successfully setting up your network gateway will start sending your networks stats in period given as argument on gateway program start or if not provided at default which is 60 seconds. You can see all of your network statistics, connected users, bandwidth, user devices on the overview page. +Defguard adopts a zero-trust philosophy: no implicit trust is given to users, devices, or networks. + +* Access is always authenticated and authorized dynamically. +* Multi-Factor Authentication (MFA) is supported natively for VPN connections via per-location pre-shared keys (PSKs) that serve as one-time authorization tokens. +* Device enrollment and configuration are bound to verified identities and can be revoked or rotated at any time. + +This model ensures that even within an established tunnel, every access decision remains policy-driven and verifiable. + +### **Graceful Degradation** + +The platform is built for resilience and autonomy: + +* Gateways cache configuration and continue to operate even if the Core becomes temporarily unavailable. +* Core services remain functional (e.g., OpenID login, admin operations) if a Gateway is offline. +* Gateways report state deltas to the Core when connectivity is restored, ensuring accurate statistics and consistency. + +This approach prevents downtime during transient network or control-plane failures. + +### **Observability and Auditability** + +Security and reliability rely on visibility. Defguard provides built-in observability and audit mechanisms: + +* Gateways periodically send metrics and peer statistics to the Core for dashboards and alerts. +* Every administrative action (e.g., user addition, configuration change) is logged for traceability. +* Logs and metrics can be exported to external monitoring systems (SIEM, Prometheus, etc.) for centralized analysis. + +Continuous visibility ensures operational awareness and compliance with audit requirements. diff --git a/admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/architecture.md b/in-depth/architecture/architecture.md similarity index 95% rename from admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/architecture.md rename to in-depth/architecture/architecture.md index 7767245..50a8715 100644 --- a/admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/architecture.md +++ b/in-depth/architecture/architecture.md @@ -18,7 +18,7 @@ In typical REST API terms, the pre-shared key can be thought of as an analogue t To enable MFA functionality, Desktop Client uses the [proxy](https://github.com/DefGuard/proxy) to bridge communication between itself and Defguard Core. Below is a diagram of the authorization process that is performed each time the Client initiates a connection to an MFA-enabled location: -
+
## Disconnecting peers diff --git a/in-depth/client-application-feature-compatibility.md b/in-depth/client-application-feature-compatibility.md new file mode 100644 index 0000000..ea02a6a --- /dev/null +++ b/in-depth/client-application-feature-compatibility.md @@ -0,0 +1,14 @@ +# Client application feature compatibility + +Defguard consists of multiple **server-side components** (Core, Gateway, Proxy) and multiple **client applications** (Desktop, Mobile). + +For the purpose of compatibility and feature availability, this documentation assumes that: + +* all server-side components are deployed in the **same version**, and are collectively referred to as **Server**, +* the user-facing software (Desktop or Mobile) is referred to as the **Client**. + +Use this page to quickly verify whether a given feature will work in your environment (Server and Client combinations). + +### Feature compatibility matrix + +
FeatureIntroduced inMinimum Server versionMinimum Client version
Service Locations1.61.61.6
Setting MTU1.6Client-only feature1.6
Desktop Client Auto Provisioning1.61.61.6
Client Traffic Policy Selection1.61.61.6
diff --git a/in-depth/defguard-architecture.png b/in-depth/defguard-architecture.png deleted file mode 100644 index 19f31c5..0000000 Binary files a/in-depth/defguard-architecture.png and /dev/null differ diff --git a/in-depth/defguard-simple.drawio b/in-depth/defguard-simple.drawio deleted file mode 100644 index 8faa0b5..0000000 --- a/in-depth/defguard-simple.drawio +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/in-depth/defguard.drawio b/in-depth/defguard.drawio deleted file mode 100644 index 72b40e6..0000000 --- a/in-depth/defguard.drawio +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/in-depth/puml/architecture-components.puml b/in-depth/puml/architecture-components.puml deleted file mode 100644 index 6a264a2..0000000 --- a/in-depth/puml/architecture-components.puml +++ /dev/null @@ -1,41 +0,0 @@ -@startuml -title Defguard architecture - components -!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml - -System_Ext(wireguard, "Wireguard server", "Provides VPN functionality") -Container(web_app, "Defguard web application", "React, Typescript", "Provides UI for user") -System_Boundary(c1, "Community", "Core server") { - Container(mfa, "MFA web app", "React, Typescript", "Provides UI for MFA login solution") - Container(core_server, "API gateway", "Rust", "Performs authentication and caching, load balances to specific services") - Container(gateway, "Gateway client", "Rust", "Allows to manage wireguard server from defguard") - Container(webhooks, "Webhooks","Rust", "Provides outgoing webhooks mechanism") - Container(web3, "Web3", "Provides integration with web 3 functionalities") - Container(mfa_backend, "MFA backend", "Rust", "Provides REST API for MFA web app") - Container(grpc_server, "GRPC server", "Rust", "Provides GRPC connection for Gateway and YubiBridge") - ContainerDb(db, "Database", "PostgreSQL", "Stores all platform data") -} -System_Boundary(c2, "Enterprise",) { - Container(openid, "OpenID provider", "Rust", "Provides Login with Defguard functionality in trusted apps") - Container(yubibridge, "Yubi-Bridge", "Python", "Allows to create PGP keys based on user data from Defguard and transfer them to YubiKey") - Container(ldap, "OpenLDAP synchronization", "Provide OpenLDAP sync functionality") - Container(oauth2, "OAuth2", "Provides OAuth2 functionality") -} -System_Ext(ldap_server, "OpenLDAP server", "") -Rel(core_server, ldap, "Uses", "", "") -Rel(web_app, mfa, "Uses", "REST") -Rel(web_app, web3, "Uses", "REST") -Rel(core_server, web3, "Uses", "", "") -Rel(web_app, core_server, "Uses", "REST") -Rel(mfa, core_server, "Uses", "REST") -Rel(mfa, mfa_backend, "Uses", "REST") -Rel(core_server, mfa_backend, "Uses", "") -Rel(core_server, webhooks, "Uses", "") -Rel(core_server, grpc_server, "Uses", "") -Rel(core_server, oauth2, "Uses", "") -Rel(core_server, openid, "Uses", "") -Rel(ldap, ldap_server, "Uses", "HTTPS") -Rel(gateway, grpc_server, "Uses", "GRPC","") -Rel(gateway, wireguard, "Uses", "", "") -Rel(core_server, db, "Uses", "SQL", "") -Rel(yubibridge, grpc_server, "Uses", "GRPC", "") -@enduml diff --git a/in-depth/puml/architecture-containers.puml b/in-depth/puml/architecture-containers.puml deleted file mode 100644 index 43da9c5..0000000 --- a/in-depth/puml/architecture-containers.puml +++ /dev/null @@ -1,21 +0,0 @@ -@startuml -title Defguard architecture - containers -!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml - -Person(user, "User", "Defguard user") -System_Boundary(c1, "Defguard web platform") { - Container(mfa, "MFA login", "React, Typescript", "Provides UI for MFA login solution") - Container(core_server, "Core server", "Rust", "Provides REST API for MFA, network managment, users, etc.") - Container(gateway, "Gateway client", "Rust", "Allows to manage wireguard server from defguard") - Container(web_app, "Defguard web application", "React, Typescript", "Provides UI for user") - ContainerDb(db, "Database", "PostgreSQL", "Stores all platform data") - Container(yubibridge, "Yubi-Bridge", "Python", "Allows to create PGP keys based on user data from Defguard and transfer them to YubiKey") -} -Rel(user, mfa, "Uses", "HTTPS", $tags="firewall") -Rel(user, web_app, "Uses", "HTTPS", $tags="firewall") -Rel(web_app, core_server, "Uses", "REST") -Rel(mfa, core_server, "Uses", "REST") -Rel(gateway, core_server, "Uses", "GRPC","") -Rel(core_server, db, "Uses", "SQL", "Reads from and writes to") -Rel(yubibridge, core_server, "Uses", "GRPC", "Reads user data to provision YubiKey") -@enduml diff --git a/in-depth/puml/architecture-context.puml b/in-depth/puml/architecture-context.puml deleted file mode 100644 index 70a5fbf..0000000 --- a/in-depth/puml/architecture-context.puml +++ /dev/null @@ -1,22 +0,0 @@ -@startuml -title Defguard architecture - context -!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml -Person(user, "User", "Defguard user") -Person(admin, "Administrator", "Manages users and network have access to network overview and network usage by user") -System(web, "Defguard", "Allows interacting with core server and handles all functionality") -System(mfa, "MFA login", "Confirm multi-factor authentication using TOTP - Google authenticator, Web3, WebAuthn/FIDO2 ") -System_Ext(wireguard, "Gateway client", "Provides VPN functionality") -System_Ext(ldap, "LDAP server", "Provides LDAP sync functionality") -System(yubibridge, "YubiBridge", "Provides YubiKey provision functionality") -SystemDb(database, "PostgreSQL") - -Rel(admin, web, "Uses", "HTTPS", $tags="firewall") -Rel(admin, mfa, "Uses", "HTTPS", $tags="firewall") -Rel(user, web, "Uses", "HTTPS", $tags="firewall") -Rel(user, mfa, "Uses", "HTTPS", $tags="firewall") -Rel(web, ldap, "Uses", "HTTPS", "Authenticate using current session user and manage data") -Rel(web, wireguard, "Uses", "GRPC", "Authenticate using JWT") -Rel(web, mfa, "Uses", "REST", "") -Rel(web, database, "Uses", "SQL") -Rel(yubibridge, web, "Uses", "GRPC", "Authenticate using JWT and fetch job with user data") -@enduml diff --git a/in-depth/puml/openid-flow.puml b/in-depth/puml/openid-flow.puml deleted file mode 100644 index 763f2c9..0000000 --- a/in-depth/puml/openid-flow.puml +++ /dev/null @@ -1,26 +0,0 @@ -@startuml openid flow -title Openid Flow -actor Actor as actor -actor -> Client: Sign in with defguard -Client -> DG_BACKEND: Redirect on api/v1/oauth/authorize url with client parameters -DG_BACKEND -> DG_BACKEND: Check if user is authorized -alt user unauthorized -DG_BACKEND -> DG_FRONTEND: Redirect to login page -DG_FRONTEND -> DG_BACKEND: Authorize user api/v1/auth/login -DG_BACKEND -> DG_BACKEND: Check if MFA enabled for user -alt user mfa enabled -DG_BACKEND -> DG_FRONTEND: return MFA info with 201 status code -DG_FRONTEND -> DG_BACKEND: MFA request -DG_BACKEND -> DG_BACKEND: Validate MFA -end -end -DG_BACKEND -> DG_BACKEND: Check if user authorized client before -alt Client unauthorized by user -DG_BACKEND -> DG_FRONTEND: 302 Redirect to consent -DG_FRONTEND -> DG_BACKEND: Authorization and consent api/v1/oauth/authorize -end -DG_BACKEND -> DG_BACKEND: Validate client id, scopes and redirect url -DG_BACKEND -> Client: 302 Redirect with authorization code on client specified redirect url -Client -> DG_BACKEND: Send authorization code and state using POST method to api/v1/oauth/token -DG_BACKEND -> Client: ID Token, Access token, Refresh token -@enduml \ No newline at end of file diff --git a/features/roadmap.md b/in-depth/roadmap.md similarity index 100% rename from features/roadmap.md rename to in-depth/roadmap.md diff --git a/in-depth/secure-by-design.md b/in-depth/secure-by-design.md new file mode 100644 index 0000000..46aeede --- /dev/null +++ b/in-depth/secure-by-design.md @@ -0,0 +1,58 @@ +# Secure By Design + +Defguard, unlike most systems that focus primarily on functionality prioritizes **security first and then builds functionality on top of secure foundations**. It is developed using a [Secure by Design approach](https://en.wikipedia.org/wiki/Secure_by_design), with the following principles embedded in both architecture and code: + +1. Least Privilege / Zero Trust +2. Segmentation of systems and components +3. Secure technology stack +4. Capability for inspection and verification +5. Security audits and testing + +Below, you will find detailed information on how each of these principles has been designed and implemented. + +### Zero Trust + +Zero Trust means that **no user or device is trusted by default**. Every access request to a resource must be explicitly authenticated and authorized. The most effective modern implementation of this principle includes strong identity verification mechanisms such as Multi-Factor Authentication (MFA)combined with robust access control policies. + +To address this, **Defguard enforces Multi-Factor Authentication for every VPN connection**. Unlike many cloud-based VPN solutions that apply MFA only to access the configuration control plane, Defguard requires MFA during the actual VPN connection process, ensuring that authentication is enforced at the data plane level, not just the management interface. + +### Segmentation of systems and components + +Defguard separates all components and enables **deployment of the main component** (Core) which is responsible for business logic and has access to user data (e.g., via integration with SSO, LDAP, or Active Directory) **in a fully isolated environment**. The Core can be deployed without direct Internet exposure and is not accessible from application components that are publicly exposed (e.g., the Edge Proxy component). + +In contrast, many cloud-based VPN solutions expose all core components to the public Internet, increasing their potential attack surface and making them more susceptible to compromise. + +More details are available in the [Architecture chapter](architecture/) of this documentation. + +### Secure technology stack + +The choice of programming language and frameworks/libraries is fundamental, as it directly affects: + +* Exposure to vulnerabilities +* The likelihood of implementation errors +* System behavior under failure conditions +* The ability to detect and mitigate attacks + +Defguard is built in Rust, which is recommended by leading security organizations worldwide due to its strong memory safety guarantees and modern security model: + +* NSA:[ https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/3215760/](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/3215760/) +* CISA/NSA Joint:[ https://www.cisa.gov/sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf](https://www.cisa.gov/sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf) +* DARPA:[ https://www.darpa.mil/research/programs/translating-all-c-to-rust](https://www.darpa.mil/research/programs/translating-all-c-to-rust) +* French ANSSI Rust Guide:[ https://github.com/ANSSI-FR/rust-guide](https://github.com/ANSSI-FR/rust-guide) + +### Inspection, verification & security audits + +To fulfill this principle, the system must meet the following standards: + +* Code and architecture transparency – components, algorithms, and data flows should be analyzable. +* Logs and audit trails – every significant operation (e.g., who did what and when) must be recorded. +* Documentation and requirements traceability – linking requirements to implementation, testing, and analysis. +* Openness to independent inspection – allowing external auditors or regulators to assess security and compliance. + +Defguard is open source, and the Enterprise components are fully open as well. To our knowledge, it is the only VPN solution that openly publishes: + +* Periodic security audits: [https://defguard.net/pentesting/](https://defguard.net/pentesting/) +* Daily vulnerability reports (CVE) for all software components (SBOM): [https://defguard.net/sbom/](https://defguard.net/sbom/) +* Full roadmap, development process, and [Architecture Decision Records](architecture-decision-records/) + +
diff --git a/in-depth/statistics.md b/in-depth/statistics.md deleted file mode 100644 index 68bfe6a..0000000 --- a/in-depth/statistics.md +++ /dev/null @@ -1,6 +0,0 @@ -# Statistics - -Defguard uses gateway service to store and display VPN usage statistics. See [architecture overview](architecture.md) -for details of core-gateway interaction. - -Once your gateway service is up and diff --git a/integrations/api-tokens.md b/integrations/api-tokens.md deleted file mode 100644 index 1316829..0000000 --- a/integrations/api-tokens.md +++ /dev/null @@ -1,58 +0,0 @@ -# REST API - -{% hint style="warning" %} -This is an enterprise feature. To use it, purchase our [enterprise license](../enterprise/license.md) or ensure that your deployment does not exceed the [usage limits](../enterprise/license.md#enterprise-is-free-up-to-certain-limits). -{% endhint %} - -{% hint style="warning" %} -API functionality: - -1. requires Defguard version 1.2.4+ -2. is also **available without enterprise license**, if your instance does not exceed the limits [described here](../enterprise/license.md#enterprise-is-free-up-to-certain-limits). -{% endhint %} - -## REST API documentation - -You can explore the Defguard REST API using [Swagger UI](https://swagger.io/tools/swagger-ui/) by going to `/api-docs`. - -API specification JSON in OpenAPI format can also be fetched from `/api/v1/api-docs`. - -Admin users can generate API tokens to enable request authentication for custom external tools which use Defguard REST API. - -Tokens retain the same access permissions as their owner, so be careful when sharing them with others. - -## Generating API token - -## Setup - -To generate a new API token, go to your profile page and click the `Add new API Token`button: - -
- -Fill in your chosen token name and submit form: - -
- -Copy generated token. This is the only time the token will be available in plain text form. If you lose it you will have to generate a new one. - -
- -In the API token list you can later rename or delete a token: - -
- -## Usage - -Defguard API uses a standard **Bearer token authentication** scheme. - -This means that an API token can be passed in the `Authorization` header to authenticate a given request instead of a session cookie used by the web UI: - -```bash -Authorization: Bearer -``` - -Example GET request: - -```bash -curl -H "Authorization: Bearer " /api/v1/me -``` diff --git a/releases/0.10/groups.png b/releases/0.10/groups.png deleted file mode 100644 index 155bbe5..0000000 Binary files a/releases/0.10/groups.png and /dev/null differ diff --git a/releases/0.10/ssh-gpg.keys.png b/releases/0.10/ssh-gpg.keys.png deleted file mode 100644 index df4038c..0000000 Binary files a/releases/0.10/ssh-gpg.keys.png and /dev/null differ diff --git a/releases/0.10/yk.png b/releases/0.10/yk.png deleted file mode 100644 index 40c117c..0000000 Binary files a/releases/0.10/yk.png and /dev/null differ diff --git a/releases/0.11/user-disable.png b/releases/0.11/user-disable.png deleted file mode 100644 index b26170b..0000000 Binary files a/releases/0.11/user-disable.png and /dev/null differ diff --git a/releases/0.7/enrollment.png b/releases/0.7/enrollment.png deleted file mode 100644 index 4853fd7..0000000 Binary files a/releases/0.7/enrollment.png and /dev/null differ diff --git a/releases/0.7/enrollment_msg.png b/releases/0.7/enrollment_msg.png deleted file mode 100644 index f450bd2..0000000 Binary files a/releases/0.7/enrollment_msg.png and /dev/null differ diff --git a/releases/0.8/Defguard-Desktop-Client.png b/releases/0.8/Defguard-Desktop-Client.png deleted file mode 100644 index 235be6d..0000000 Binary files a/releases/0.8/Defguard-Desktop-Client.png and /dev/null differ diff --git a/releases/0.8/emails.png b/releases/0.8/emails.png deleted file mode 100644 index 17fd4a3..0000000 Binary files a/releases/0.8/emails.png and /dev/null differ diff --git a/releases/0.8/santa-defguard.jpg b/releases/0.8/santa-defguard.jpg deleted file mode 100644 index 46f7de9..0000000 Binary files a/releases/0.8/santa-defguard.jpg and /dev/null differ diff --git a/releases/0.9/mfa.png b/releases/0.9/mfa.png deleted file mode 100644 index 65e7115..0000000 Binary files a/releases/0.9/mfa.png and /dev/null differ diff --git a/releases/0.9/reset.png b/releases/0.9/reset.png deleted file mode 100644 index bb6f9d7..0000000 Binary files a/releases/0.9/reset.png and /dev/null differ diff --git a/releases/0.9/tunnel.png b/releases/0.9/tunnel.png deleted file mode 100644 index 78e80f5..0000000 Binary files a/releases/0.9/tunnel.png and /dev/null differ diff --git a/resources/troubleshooting/README.md b/resources/troubleshooting/README.md deleted file mode 100644 index a1dae45..0000000 --- a/resources/troubleshooting/README.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -description: Here are some common issues / problems that are frequently encountered. ---- - -# Troubleshooting Guide - -{% hint style="info" %} -Before contacting support, please see if the answer cannot be found here: -{% endhint %} - -## Desktop client real-time/auto sync doesn't work - -The client communicates with core to initiate the handshake through the secure proxy - which is also the enrollment service - [more details about the architecture here](../../admin-and-features/wireguard/multi-factor-authentication-mfa-2fa/architecture.md) so it's critical it works and is properly configured. - -Common problems may be: - -1. proxy / enrollment isn't working -2. DEFGUARD\_ENROLLMENT\_URL is set incorrectly in core - if set incorrectly the client will try to connect to default URL which is "http://localhost:8080" and MFA will not work. - -## Nothing happens after clicking on "Use authenticator app" in client - -See the "[Desktop client real-time/auto sync doesn't work](./#desktop-client-real-time-auto-sync-doesnt-work)" answer. - -## I use Multi-Factor Authentication and am disconnected after _X-time_ - -location, After enabling Multi-Factor Authentication for a location, the configuration of the gateway changes. Without MFA, peers (devices) are persistent (always in the Kernel memory) and gateway only changed the gateway configuration if a peer is added/removed/changed. - -But when MFA is enabled, peers **are only added to the gateway** after successful MFA on the client (and pre-shared key exchange with client and gateway to establish a dedicated key for the session). - -Also, there is a setting in the location named _Peer Disconnect Threshold (seconds):_ - -
- -This setting specifies that if the **peer is inactive for **_**(defined seconds)**_, the gateway **should remove it from the configuration** (as it should not be persistent since MFA is required). - -So if you are disconnected from the location: - -1. Check what is your setting for peer disconnect. -2. We have a known bug - that after disconnecting Defguard Desktop Client doesn't properly detect that and has a still active connection (and actually is disconnected). You need to reconnect. Also, it's [being fixed and will be released in 1.1 version of the client](https://github.com/DefGuard/client/issues/351). - -## Client: failed to configure DNS (Linux) - -This error commonly occurs on Ubuntu 22. Defguard client internally calls `resolvconf` to set DNS servers. The only tested backend is `systemd-resolved`, so make sure you use it before proceeding further (`systemctl status systemd-resolved`). - -On newer Ubuntu distributions (23 and up) `resolvconf` is, by default, a symbolic link to `resolvectl` and this is the recommended way of interacting with the system's DNS configuration. On Ubuntu 22 the symbolic link doesn't exist and the most straightforward way to fix this issue is to manually create it: - -```bash -sudo ln -s /usr/bin/resolvectl /usr/sbin/resolvconf -``` - -If this fails, one may also try installing one of the packages providing the `resolvconf` command, like `openresolv` or, ⁣ but`resolvconf` this has not been tested and may cause issues with `systemd-resolved`, so proceed at your own risk. - -## Client: Failed to parse IP address - -
- -This error usually indicates that the client version is outdated and can't communicate with proxy/core services. Try upgrading the desktop client application. - -## Client: **Could not start MFA process** - -When setting up MFA/2FA in Defguard, you may encounter the following error when entering the code in the desktop client: **"Could not start MFA process".** - -Additionally, client application debug logs may show the following error:\ -\&#xNAN;**"Failed to deserialize the JSON body into the target type: code: invalid type: string "005325", expected u32 at line 1 column 268."** - -This error indicates that one of the following components is outdated: - -* Defguard core -* Defguard proxy -* Client application - -Try upgrading these components to the latest stable version to resolve the issue. - -## TOTP / Email codes for MFA do not work - -If you are having problems with TOTP codes form 2FA/MFA (when logging in to Defguard or when connecting to VPN) please make sure your clock on the server that Defguard core is running is set properly. - -Best would be to set up on the server NTP time synchronization. - -## I get the following error: There was a network error. Can't reach proxy - -This error may happen when the client is unable to make a POST/GET request to your proxy web server. Make sure your proxy is accessible by the client, e.g. by making a GET request by hand or visiting your enrollment/proxy page from the same machine you are running the client on. - -In some rarer cases, your web server may not accept TLS versions lower than 1.3. Since the maximum version of TLS supported by the client is 1.2, it won't be able to connect to your web server, producing the mentioned error. - -## I get the following error: _h2 protocol error: http2 error: stream error received: not a result of an error_ - -This error is common if you use a reverse-proxy for any of our components. - -Every reverse proxy has a timeout for keeping the connection alive. You can increase the timeout value to see less errors, but they will eventually appear. - -Ignore them, this is a normal behaviour. - -## Gateway throws "No buffer space available" error - -In the log files, you can see the following message: - -``` -Jul 08 08:33:24 defguard defguard-gateway[1241]: [2025-07-08T06:33:24Z ERROR defguard_gateway::gateway] Failed to update network configuration: Firewall error: Netlink error: Failed while reading a message from socket: Os { code: 105, kind: Uncategorized, message: "No buffer space available" } -``` - -To fix this, you'll need to set larger socket buffer sizes using kernel parameters: - -``` -net.core.rmem_max = 67108864 -net.core.wmem_max = 67108864 -net.ipv4.tcp_rmem = 4096 87380 67108864 -net.ipv4.tcp_wmem = 4096 65536 67108864 -net.core.rmem_default = 524288 -net.core.wmem_default = 524288 -``` - -More info here: [https://github.com/DefGuard/defguard/issues/1303](https://github.com/DefGuard/defguard/issues/1303) - - - -## Enrollment URL shows http://localhost:8080 despite `DEFGUARD_URL` is different - -You are probably looking for `DEFGUARD_ENROLLMENT_URL` which is the URL needed to add device (image below). - -
- -Please check [this article](../../configuration.md#enrollment-configuration). - -## How to check if the VPN is working / my VPN is not working - -If you have configured your Defguard instance correctly, after connecting to the VPN you should be able to ping your VPN server, for example if you have the following setup: - -

Example VPN server IP

- -After connecting to VPN you should be able to ping: 10.1.1.1. - -### VPN Location settings changed - -Check if the VPN location configuration has changed. If it did, and you do not have Enterprise license where real-time config sync is automatic, the user needs to [update their client configuration by updating that instance manually.](../../help/desktop-client/instance-configuration.md#updating-instance) - -### Conflicting networks - -If you are **not able to ping the VPN server,** the **most common problem is that you have chosen a network that may be in conflict with your other networks** (local network, network from your Internet provider, etc.). - -To examine your routing use on Mac and Linux `netstat -rn` command. Let's look at the example from above, the VPN network is: 10.1.1.0/24, let's look at the network route table: - -``` -root# netstat -rn  ✔  18:40:46   -Routing tables - -Internet: -Destination Gateway Flags Netif Expire -default 10.123.123.1. UGScg en0 -10.10.0/24 link#13 UCS en0 ! -10.0.0.0/8 link#13 UCS en0 ! -10.1.1.0/24 10.1.1.1. UHLWI utun6 1007 -``` - -In the example above you can see that the whole 10.0.0.0 network (with mask 255.0.0.0 eg /8) is routed through default device en0. - -{% hint style="danger" %} -Because of the main routing 10.0.0.0/8 the VPN server routing the network 10.1.1.0/24 (which is included in 10.0.0.0/8) will not work. -{% endhint %} - -### Firewall rulles - -Another common problem is that **your server, on which the gateway is working, has some firewall rules that interfere with VPN network.** Please examine carefully `ufw` and `iptables` (even if ufw is disabled there may be `iptables` rules). - -### VPN location ACLs - -If a user has no access to the VPN location, sometimes admins forget that they **change the VPN settings and change a group that is allowed to access the VPN location**. If the user is not a part of that group which VPN location is configured to access: - -
- -will not be able to connect. - -## I can access VPN but not my local network / Internet - -Defguard only manages VPN server configuration (for now, we are planning ACLs / firewall management) which means it basically configures the VPN interface and peers. - -Then when the client / user connects it actually establishes **a secure tunnel between their computer network and your server (that VPN interface)**. - -From there, what happens to this traffic is the **administrator role.** The most common scenarios to do are: - -* add routing rules, so that the traffic from that interface/VPN IP network gets routed to your network - this approach gives the advantage that users VPN ip persists in the network and the user is visible with it's VPN ip in your local network -* Masquerade or NAT - a common use case is to masquerade or NAT the traffic - which is **actually required if you want users to access Internet from the VPN -** this process is [described in detailed in this tutorial](../../tutorials/step-by-step-setting-up-a-vpn-server/#enabling-to-access-internet-through-your-vpn). - -## Unable to sign in to your Defguard instance with correct credentials - -The user tries to sign in to a Defguard instance but gets a 401 response with message "Session is required". - -This issue is most likely caused by a misconfigured `DEFGUARD_URL` . Please have a look at the configuration options described in [General configuration](../../configuration.md#general-configuration) documentation. - -If you want to access your Defguard instance without TLS (using an `http://` URL), please also make sure you have everything configured according to [Auth cookies configuration](../../configuration.md#auth-cookies-configuration) documentation. - -## User lost access to their 2FA methods - -If a user lost their TOTP app or security key and is therefore unable to log in, it is possible for an admin to disable MFA for their account. - -In order to do this, go to the `Users` page and find the relevant user in the list. Then click on the cog button on the right and select `Disable MFA`. You will be then asked to confirm your choice. - -It's recommended that after MFA is disabled, the user should configure a new MFA method as soon as possible. diff --git a/screencasts/defguard-screencast.mkv b/screencasts/defguard-screencast.mkv deleted file mode 100644 index 80fcfab..0000000 Binary files a/screencasts/defguard-screencast.mkv and /dev/null differ diff --git a/support-1/how-to-submit-an-issue.md b/support-1/how-to-submit-an-issue.md new file mode 100644 index 0000000..e81eb49 --- /dev/null +++ b/support-1/how-to-submit-an-issue.md @@ -0,0 +1,59 @@ +# How to submit an issue + +## Submitting an issue + +To help us diagnose and resolve problems efficiently, please follow the process below when submitting an issue. + +### 1. Enable debug logging + +Before reproducing the issue, set the log level of **all relevant components** to `DEBUG`.\ +This ensures we capture the necessary details for troubleshooting. + +Here is how you can do it in each component + +* core: use `--log-level debug` option or set `DEFGUARD_LOG_LEVEL` environment variable to `debug` +* gateway: use `--log-level debug` option or set `DEFGUARD_LOG_LEVEL` environment variable to `debug` +* proxy: use `--log-level debug` option or set `DEFGUARD_PROXY_LOG_LEVEL` environment variable to `debug` +* client: use `--log-level debug` option or set `DEFGUARD_LOG_LEVEL` environment variable to `debug` +* `mobile client: select "debug" in "View Application Logs" section` + +### 2. Reproduce the problem + +Reproduce the issue while `DEBUG` logging is enabled.\ +The logs will automatically include: + +* Application version +* Operating system information + +### 3. Collect logs and screenshots + +After reproducing the issue, gather logs from **all relevant components**.\ +Make sure to include **all of them** in your report. + +For UI components, also take screenshots if the issue affects layout, design, or visual behavior. + +{% hint style="warning" %} +Please include only the log entries captured around the time the issue occurred and make sure the logs contain the actual error message.\ +This helps us identify the root cause without having to sift through unnecessary log data. +{% endhint %} + +### 4. Provide steps to reproduce + +In addition to logs, clearly describe how the issue can be reproduced. Include: + +* Description of your deployment strategy +* Exact steps you took +* Expected behavior +* Actual behavior + +### 5. Submit your report + +Go to [Defguard issues page](https://github.com/DefGuard/defguard/issues) and open a new issue. Select appropriate category, whether it's a "Bug report", "Feature request" or a "Security vulnerability". When opening an issue, attach: + +* Logs from all components +* Clear reproduction steps +* Any additional context you think may help (environment details, configuration snippets, etc.) + +## Example submission + +You'll find example issue submission [here](https://github.com/DefGuard/defguard/issues/1542). diff --git a/support-1/server-migration-and-licence-transfer.md b/support-1/server-migration-and-licence-transfer.md new file mode 100644 index 0000000..dbb03e6 --- /dev/null +++ b/support-1/server-migration-and-licence-transfer.md @@ -0,0 +1,39 @@ +# Server migration and licence transfer + +This guide explains how to migrate your Defguard instance to a new server while keeping your licence valid and compliant. + +## Licence information + +Each Defguard licence is bound to a single machine. + +When migrating to a new server, you must ensure that only one active instance is using the same licence key at any given time. + +## Migration scenarios + +### Migration with acceptable downtime (simpler) + +This method is recommended when a short interruption in service is not a problem. + +You will reuse your existing licence key, but you must first stop the old server before activating the new one to ensure licence compliance. + +Steps: + +1. Shut down the old Defguard server. Ensure the old instance is completely stopped before proceeding. +2. Install and configure Defguard on the new server. Use the same licence key from your previous installation. +3. Verify functionality on the new server. Confirm that users can connect and that configuration data is correctly migrated. + +### Migration with zero downtime + +This method allows you to migrate Defguard to a new server without interrupting service. + +It requires a temporary transition licence, which lets both servers run simultaneously for testing and verification before switching over. + +Steps: + +1. Contact the Defguard Sales team at [sales@defguard.net](mailto:sales@defguard.net). Request a 7-day transition licence for migration purposes. +2. Install and configure Defguard on the new server using the transition licence. This allows both servers to temporarily coexist. +3. Test and verify the new setup to ensure all configurations and integrations work correctly. +4. Once verification is complete: + 1. Shut down the old Defguard server. + 2. Replace the transition licence on the new server with your original licence key. + diff --git a/support-1/troubleshooting/README.md b/support-1/troubleshooting/README.md new file mode 100644 index 0000000..f01f9d5 --- /dev/null +++ b/support-1/troubleshooting/README.md @@ -0,0 +1,420 @@ +--- +description: Here are some common issues / problems that are frequently encountered. +--- + +# Troubleshooting Guide + +{% hint style="info" %} +Before contacting support, please see if the answer cannot be found here: +{% endhint %} + +## Desktop client real-time/auto sync doesn't work + +The client communicates with core to initiate the handshake through the secure proxy - which is also the enrollment service - [more details about the architecture here](../../in-depth/architecture/architecture.md) so it's critical it works and is properly configured. + +Common problems may be: + +1. proxy / enrollment isn't working +2. DEFGUARD\_ENROLLMENT\_URL is set incorrectly in core - if set incorrectly the client will try to connect to default URL which is "http://localhost:8080" and MFA will not work. + +## Nothing happens after clicking on "Use authenticator app" in client + +See the "[Desktop client real-time/auto sync doesn't work](./#desktop-client-real-time-auto-sync-doesnt-work)" answer. + +## I use Multi-Factor Authentication and am disconnected after _X-time_ + +After enabling Multi-Factor Authentication (MFA) for a location, the configuration of the gateway changes. Without MFA, peers (devices) are persistent (always in the kernel memory) and gateway only changes its configuration if a peer is added/removed/changed. + +But when MFA is enabled, peers **are only added to the gateway** after successful MFA on the client (and pre-shared key exchange with client and gateway to establish a dedicated key for the session). + +Also, there is a setting in the location named _Peer Disconnect Threshold (seconds):_ + +
+ +This setting specifies that if the **peer is inactive for \_(defined seconds)**\_, the gateway **should remove it from the configuration** (as it should not be persistent since MFA is required). + +So if you are disconnected from the location: + +1. Check what is your setting for peer disconnect. +2. We have a known bug - that after disconnecting Defguard Desktop Client doesn't properly detect that and has a still active connection (and actually is disconnected). You need to reconnect. Also, it's [being fixed and will be released in 1.1 version of the client](https://github.com/DefGuard/client/issues/351). + +## Client: failed to configure DNS (Linux) + +This error commonly occurs on Ubuntu 22. Defguard client internally calls `resolvconf` to set DNS servers. The only tested backend is `systemd-resolved`, so make sure you use it before proceeding further (`systemctl status systemd-resolved`). + +On newer Ubuntu distributions (23 and up) `resolvconf` is, by default, a symbolic link to `resolvectl` and this is the recommended way of interacting with the system's DNS configuration. On Ubuntu 22 the symbolic link doesn't exist and the most straightforward way to fix this issue is to manually create it: + +```bash +sudo ln -s /usr/bin/resolvectl /usr/sbin/resolvconf +``` + +If this fails, one may also try installing one of the packages providing the `resolvconf` command, like `openresolv` or, ⁣ but`resolvconf` this has not been tested and may cause issues with `systemd-resolved`, so proceed at your own risk. + +### Check DNS name resolution + +If the internal DNS servers are configured but users can't connect to internal hosts requiring name resolution, you may want to check the following: + +1. Routing: `ip route` - are requests to network segments where DNS servers live routed through the wireguard interface? +2. Wireguard interface: `sudo wg` - are network segments where DNS servers live on the `allowed ips` list? +3. Try resolving the names manually using your DNS servers: `dig @DNS_SERVER_IP my.internal.service.com` + +## Client: Failed to parse IP address + +
+ +This error usually indicates that the client version is outdated and can't communicate with proxy/core services. Try upgrading the desktop client application. + +## Client: **Could not start MFA process** + +When setting up MFA/2FA in Defguard, you may encounter the following error when entering the code in the desktop client: **"Could not start MFA process".** + +Additionally, client application debug logs may show the following error:\ +\&#xNAN;**"Failed to deserialize the JSON body into the target type: code: invalid type: string "005325", expected u32 at line 1 column 268."** + +This error indicates that one of the following components is outdated: + +* Defguard Core +* Defguard Proxy +* Client application + +Try upgrading these components to the latest stable version to resolve the issue. + +## TOTP / Email codes for MFA do not work + +If you are having problems with TOTP codes form 2FA/MFA (when logging in to Defguard or when connecting to VPN) please make sure your clock on the server that Defguard core is running is set properly. + +Best would be to set up on the server NTP time synchronization. + +## I get the following error: There was a network error. Can't reach proxy + +This error may happen when the client is unable to make a POST/GET request to your proxy web server. Make sure your proxy is accessible by the client, e.g. by making a GET request by hand or visiting your enrollment/proxy page from the same machine you are running the client on. + +In some rarer cases, your web server may not accept TLS versions lower than 1.3. Since the maximum version of TLS supported by the client is 1.2, it won't be able to connect to your web server, producing the mentioned error. + +## I get the following error: _h2 protocol error: http2 error: stream error received: not a result of an error_ + +This error is common if you use a reverse proxy for any of our components. + +Every reverse proxy has a timeout for keeping the connection alive. You can increase the timeout value to see less errors, but they will eventually appear. + +Ignore them, this is a normal behaviour. + +## Gateway throws "No buffer space available" error + +In the log files, you can see the following message: + +``` +Jul 08 08:33:24 defguard defguard-gateway[1241]: [2025-07-08T06:33:24Z ERROR defguard_gateway::gateway] Failed to update network configuration: Firewall error: Netlink error: Failed while reading a message from socket: Os { code: 105, kind: Uncategorized, message: "No buffer space available" } +``` + +To fix this, you'll need to set larger socket buffer sizes using kernel parameters: + +``` +net.core.rmem_max = 67108864 +net.core.wmem_max = 67108864 +net.ipv4.tcp_rmem = 4096 87380 67108864 +net.ipv4.tcp_wmem = 4096 65536 67108864 +net.core.rmem_default = 524288 +net.core.wmem_default = 524288 +``` + +More info here: [https://github.com/DefGuard/defguard/issues/1303](https://github.com/DefGuard/defguard/issues/1303) + +See also our [Linux kernel tuning guide](../../deployment-strategies/linux-kernel-wireguard-tuning.md). + +## Enrollment URL shows http://localhost:8080 despite `DEFGUARD_URL` is different + +You are probably looking for `DEFGUARD_ENROLLMENT_URL` which is the URL needed to add device (image below). + +
+ +Please check [this article](../../deployment-strategies/configuration.md#enrollment-configuration). + +## Enrollment URL has changed + +If for any reason the Enrollment URL has changed (e.g. the domain from: _enroll.company.com_ to _setup.company.com),_ all desktop or mobile applications need to be manually updated with the new URL. + +{% hint style="warning" %} +**This manual process including tokens issued by administrator is intentional** – so that neither the user themselves, nor a potential attacker, can manually change the configuration or do so without the user/administrator’s knowledge. +{% endhint %} + +In order to do so: + +* **The administrator** needs to send an update token to each person - [see this documentation page.](https://docs.defguard.net/features/remote-user-enrollment#restarting-enrollment-manually) +* **The user** needs to update manually the Enrollment URL providing also the received token - [see this documentation page](../../using-defguard-for-end-users/desktop-client/). + +## How to check if the VPN is working / my VPN is not working + +If you have configured your Defguard instance correctly, after connecting to the VPN you should be able to ping your VPN server, for example if you have the following setup: + +

Example VPN server IP

+ +After connecting to VPN you should be able to ping: 10.1.1.1. + +### VPN Location settings changed + +Check if the VPN location configuration has changed. If it did, and you do not have Enterprise license where real-time config sync is automatic, the user needs to [update their client configuration by updating that instance manually.](../../using-defguard-for-end-users/desktop-client/instance-configuration.md#updating-instance) + +### Conflicting networks + +If you are **not able to ping the VPN server,** the **most common problem is that you have chosen a network that may be in conflict with your other networks** (local network, network from your Internet provider, etc.). + +To examine your routing use on Mac and Linux `netstat -rn` command. Let's look at the example from above, the VPN network is: 10.1.1.0/24, let's look at the network route table: + +``` +root# netstat -rn  ✔  18:40:46   +Routing tables + +Internet: +Destination Gateway Flags Netif Expire +default 10.123.123.1. UGScg en0 +10.10.0/24 link#13 UCS en0 ! +10.0.0.0/8 link#13 UCS en0 ! +10.1.1.0/24 10.1.1.1. UHLWI utun6 1007 +``` + +In the example above you can see that the whole 10.0.0.0 network (with mask 255.0.0.0 eg /8) is routed through default device en0. + +{% hint style="danger" %} +Because of the main routing 10.0.0.0/8 the VPN server routing the network 10.1.1.0/24 (which is included in 10.0.0.0/8) will not work. +{% endhint %} + +### Firewall rulles + +Another common problem is that **your server, on which the gateway is working, has some firewall rules that interfere with VPN network.** Please examine carefully `ufw` and `iptables` (even if ufw is disabled there may be `iptables` rules). + +### VPN location ACLs + +If a user has no access to the VPN location, sometimes admins forget that they **change the VPN settings and change a group that is allowed to access the VPN location**. If the user is not a part of that group which VPN location is configured to access: + +
+ +will not be able to connect. + +## I can access VPN but not my local network / Internet + +Defguard only manages VPN server configuration (for now, we are planning ACLs / firewall management) which means it basically configures the VPN interface and peers. + +Then when the client / user connects it actually establishes **a secure tunnel between their computer network and your server (that VPN interface)**. + +From there, what happens to this traffic is the **administrator's responsibility.** The most common scenarios are: + +* add routing rules, so that the traffic from that interface/VPN IP network gets routed to your network - this approach gives the advantage that users VPN ip persists in the network and the user is visible with it's VPN IP in your local network +* Masquerade or NAT - a common use case is to masquerade or NAT the traffic - which is **required if you want users to access Internet from the VPN -** this process is [described in detailed in this tutorial](../../tutorials/step-by-step-setting-up-a-vpn-server/#enabling-to-access-internet-through-your-vpn). + +## Unable to sign in to your Defguard instance with correct credentials + +The user tries to sign in to a Defguard instance but gets a 401 response with message "Session is required". + +This issue is most likely caused by a misconfigured `DEFGUARD_URL` . Please have a look at the configuration options described in [General configuration](../../deployment-strategies/configuration.md#general-configuration) documentation. + +If you want to access your Defguard instance without TLS (using an `http://` URL), please also make sure you have everything configured according to [Auth cookies configuration](../../deployment-strategies/configuration.md#auth-cookies-configuration) documentation. + +## User lost access to their 2FA methods + +If a user lost their TOTP app or security key and is therefore unable to log in, it is possible for an admin to disable MFA for their account. + +In order to do this, go to the `Users` page and find the relevant user in the list. Then click on the cog button on the right and select `Disable MFA`. You will be then asked to confirm your choice. + +It's recommended that after MFA is disabled, the user should configure a new MFA method as soon as possible. + +## Unix socket permission errors when desktop client attempts to connect to VPN on Linux machines + +To secure access to the background service which manages network interfaces (which requires elevated permissions) the Unix socket (`/var/run/defguard.socket`) used for gRPC communication is only accessible for users in the `defguard` group. + +This means that the user who runs the GUI client must belong to this group. An incorrect setup results in `Permission denied` errors when attempting to connect to a VPN location. + +By default the official packages (deb, rpm etc) should handle creating this group and adding the user, but in case of some unexpected errors it can also be done manually by running the following shell commands: + +* check if the `defguard` group exists: \\ + + ```bash + $ getent group defguard + defguard:x:988:some_user # this indicated that the group exists and user some_user is a member + + ``` +* if the group does not exist (you get no lines of output for the above command) create it manually:\\ + + ```bash + $ sudo groupadd -r defguard + ``` +* add current user to the group:\\ + + ```bash + sudo usermod -a -G groupname $USER + ``` +* for the group membership changes to take effect you now need to reboot or log out and back in +* confirm that your user is a member of `defguard` group:\\ + + ```bash + id -nG | grep -q defguard && echo "You are a member of defguard group" || echo "You are NOT a member of defguard group" + ``` +* verify that the socket itself has correct permissions:\\ + + ```bash + $ ls -l /var/run/defguard.socket + srw-rw---- 1 root defguard 0 Sep 15 15:02 /var/run/defguard.socket + + ``` + +## Unix socket does not exist. Error `No such file or directory (os error 2)` when trying to connect to a location + +The socket file at `/var/run/defguard.socket` is created by the background service used by the client to manage network interfaces. + +This service is usually run as a [systemd service](https://github.com/DefGuard/client/blob/f9c8d36166181aa3363957643baf793ce206043a/resources-linux/defguard-service.service) installed by a relevant package. + +In case an issue occured during installation and the service is not enabled you can do it manually by running the following commands: + +```bash +# Reload systemd to recognize new service file +sudo systemctl daemon-reload + +# Enable service to start on boot +sudo systemctl enable defguard-service + +# Start the service now +sudo systemctl start defguard-service +``` + +## Windows client is unable to connect + +If the Windows client is unable to connect to establish a connection and shows command timeout errors it's useful to look into the application logs in the settings screen or in the [log files](../../using-defguard-for-end-users/desktop-client/#log-files) themselves. + +If the background service logs contain errors similar to `Unable to access interface: No such file or directory` it might indicate that due to some unforeseen combination of factors a tunnel has not been shut down correctly. + +To verify that this is the case open the system service manager and look for any services named `WireGuard Tunnel` + +
+ +If any such services are present, remove them and retry the connection. + +## Desktop client high disk usage + +Some users may experience unusually high disk activity from the Defguard desktop client, even when the app appears idle. This is almost always caused by SQLite performing full-table scans on large statistics tables. + +### **1. Check Your Client Version** + +The fix for the original table-scan problem was introduced in **v1.5.2**. + +**Steps:** + +* Open Defguard Desktop +* Look at the **bottom-left corner** → confirm the version is ≥ **v1.5.2** +* If not, download the latest version: [https://defguard.net/download/](https://defguard.net/download/) + +### **2. Check the Database Size** + +If the stats purge mechanism is not working correctly or heavy usage generates too much data, the database can grow very large. + +**Location of the DB file: `C:\Users\AppData\Roaming\net.defguard\defguard.db`** + +**Typical sizes:** + +* Normal usage: a few MB +* Problematic: tens or hundreds of MB (e.g., 50–200 MB) + +### **3. Temporary Workarounds** + +{% hint style="danger" %} +Before trying any fix, **back up your database file**. +{% endhint %} + +**Option A — Trim Stats Tables (safe & recommended)** + +Install [SQLite](https://sqlite.org/index.html), open the DB, and run: + +```sql +delete from location_stats; +delete from tunnel_stats; +``` + +This immediately reduces the DB size and disk I/O. + +**Option B — Remove the Database Entirely (quickest, but requires re-enrollment)** + +1. Close Defguard completely +2. Delete the database file: `C:\Users\AppData\Roaming\net.defguard\defguard.db` +3. Re-enroll your device in Defguard (you will need your enrollment link or admin setup) + +This is the nuclear option but works reliably. + +### **Long-Term Fix** + +The stats subsystem is being **fully redesigned** in the upcoming **2.0** release.\ +The new implementation will avoid these SQLite table-scan issues entirely. + +## Client connects but cannot reach VPN servers + +On some networks - especially mobile or carrier-grade networks - the MTU (Maximum Transmission Unit) may be lower than usual. When this happens, VPN packets can exceed the network's MTU and get dropped during transmission. This often results in partial connectivity issues or a complete failure to connect to VPN servers. + +To address this, the Defguard client allows you to manually configure the MTU. Lowering the MTU reduces packet size so that traffic fits within the network’s limits and can be transmitted reliably. + +As a general guideline, MTU values in the range of **1300-1500** work well in most cases. If you're experiencing connectivity problems, try lowering the MTU gradually within this range until the connection stabilizes. + +
+ +## Disconnecting from location show "Connection failed" system error + +
+ +Issue occurs on Linux distributions with `NetworkManager` installed. + +This error occurs because `NetworkManager` tries to manage Defguard network interfaces. This doesn't affect VPN connection and is a **visual** bug only. + +To prevent this error from appearing, you can configure `NetworkManager` to stop managing network interfaces created by Defguard. To do so, we need to create a config for `NetworkManager`. + +1. Create config file + +```shellscript +sudo nano /etc/NetworkManager/conf.d/90-defguard.conf +``` + +2. Fill this file with this config. (Defguard tunnels start with `wg` by default) + +```shellscript +[keyfile] +unmanaged-devices=interface-name:wg* +``` + +3. Save your file, and then restart `NetworkManager`. + +```shellscript +sudo systemctl restart NetworkManager +``` + +## Command 'resolvconf' required by wireguard-rs couldn't be found. + +On some Linux distributions (for example Debian 12 and 13), Defguard may fail to establish VPN tunnel after clicking "Connect" on a specified location. This is caused by lack of `resolvconf` command. + +To resolve this issue, install missing dependency with: + +```shellscript +sudo apt install openresolv +``` + +## macOS: all VPN connections get disconnected when one VPN tunnel terminates + +This is how macOS behavies. Currently, there isn't any workaround for this problem. + +## macOS: VPN tunnel terminates when changing networks + +Normally, the VPN tunnel should stay connected while changing networks (for example, from Wi-Fi to Ethernet). However, there are some cases when the tunnel terminates: + +* A phisical interface gets unplugged from the machine (for example, USB network adapter). In such case, the VPN tunnel gets disconnected because the network interface disappears. +* There isn't any connection to Defguard Gateway within a certain amount of time. In that case, check _Peer Disconnect Threshold (seconds):_ in Client Settings. + +
+ +## Android app "Failed host lookup" error. + +When connecting to a location with external OpendID provider, the application shows the following error: `DioException [connection error]: The connection errored: Failed host lookup`. + +
+ +This usually happens when aggressive battery optimization policy is used by the Android system, resulting in network connectivity issues and dns lookup errors. To fix it: + +1. Go to Settings -> Apps -> App management -> Defguard -> Battery usage +2. Enable the "Allow background activity" switch. + +Defguard app should now be able to connect to the server even when in background during the OpenID authentication. + diff --git a/resources/troubleshooting/client-all-traffic-connection-issues.md b/support-1/troubleshooting/client-all-traffic-connection-issues.md similarity index 100% rename from resources/troubleshooting/client-all-traffic-connection-issues.md rename to support-1/troubleshooting/client-all-traffic-connection-issues.md diff --git a/support-1/troubleshooting/client-opening-issues-on-linux.md b/support-1/troubleshooting/client-opening-issues-on-linux.md new file mode 100644 index 0000000..65c8c01 --- /dev/null +++ b/support-1/troubleshooting/client-opening-issues-on-linux.md @@ -0,0 +1,16 @@ +# Client openning issues on Linux + +If the application opens to a **blank white window** or **crashes immediately**, it is likely due to a rendering conflict with the WebKit engine's hardware acceleration. + +### Symptoms + +* The application window opens but remains entirely white. +* The process terminates (crashing) immediately after the window appears. +* Logs indicate errors related to `Compositing` or `GPU acceleration`. + +### Solution + +Setting the `WEBKIT_DISABLE_COMPOSITING_MODE` environment variable to `1` forces the client to use a more stable rendering path. + +Also in certain cases `WEBKIT_DMABUF_RENDERER_DISABLE_GBM` to `1` is also required. + diff --git a/support-1/troubleshooting/desktop-client-connectivity-issues.md b/support-1/troubleshooting/desktop-client-connectivity-issues.md new file mode 100644 index 0000000..03e4484 --- /dev/null +++ b/support-1/troubleshooting/desktop-client-connectivity-issues.md @@ -0,0 +1,158 @@ +# Desktop Client connectivity issues + +## Overview + +This guide provides instructions for troubleshooting common network connectivity issues that can be encountered when using WireGuard VPN clients to access VPN-protected resources. + +## Preparing for testing + +Before beginning connectivity tests, ensure: + +* Disable ACLs and MFA for the VPN location being tested +* Temporarily disable firewall rules dropping ICMP traffic on the gateway server + +{% hint style="warning" %} +Remember to restore the original settings after you conclude your testing. +{% endhint %} + +This way we remove additional factors and can check if the basic VPN connection is configured correctly. + +## VPN Gateway Public IP + +First, verify basic network connectivity to the gateway's public IP: + +```bash +ping +``` + +**Troubleshooting if IP is unreachable:** + +* Verify the IP address is correctly configured in [location settings](../../features/wireguard/create-your-vpn-network.md#gateway-address) +* Verify your gateway-side firewall rules don't block traffic from the internet +* Check client-side firewall rules if you use them + +## VPN Connection Test + +If the public IP is reachable, attempt to connect using the VPN client: + +* Initiate connection to the VPN location +* If errors occur, check [client logs](../../using-defguard-for-end-users/desktop-client/#log-files) for detailed information + +## VPN Network Connectivity + +Once connected to a VPN location, test internal VPN connectivity by trying to ping the Gateway internal IP configured in [location settings](../../features/wireguard/create-your-vpn-network.md#gateway-vpn-ip-addresses-and-masks): + +```bash +ping +``` + +**Example:** If your VPN subnet is `10.0.10.0/24`, the gateway is typically `10.0.10.1` + +If you have the official [WireGuard CLI](https://www.wireguard.com/install/) installed you can also verify the VPN connection by checking for the latest handshake. If there's no handshake, a connection has not been established.
+ +
+ +**If gateway is unreachable within VPN subnet:** + +* This indicates WireGuard connection failed to establish +* Client will automatically disconnect after 5 minutes (300 seconds) if no WireGuard traffic is detected (this threshold is configurable in client settings) +* This might indicate that the VPN server is not allowing UDP traffic on the [specified port](../../features/wireguard/create-your-vpn-network.md#gateway-port) +* Check if the firewall is [configured correctly](../../deployment-strategies/hardware-os-network-and-firewall-recommendations.md#gateway) to allow UDP traffic on the selected port + +### Verify UDP Port Connectivity + +If you want to explicitly test if UDP traffic is allowed between the client and VPN server you can do the following: + +* start a test UDP server on the gateway server: + + ```bash + socat UDP-RECV: - + ``` +* send a message from a client machine: + + ```bash + echo "Hello UDP test" | socat - UDP:: + ``` +* if UDP traffic is allowed, a message should appear in your server terminal + +### Loss of connection after network change + +The connection to the VPN network may stop working if your internet network has changed while the connection was active (for example if you switched Wi-Fis). This can be resolved by simply re-connecting to a given VPN location. + +## DNS Configuration Issues + +If the VPN connection establishes, but you still cannot access VPN-protected resources it can sometimes mean there's an issue with the [DNS server](../../features/wireguard/create-your-vpn-network.md#dns) configured for a given VPN location. + +**To verify DNS functionality:** + +* Check if DNS configuration in location settings is correct +* Test DNS resolution for the resources you're trying to access + +**DNS Testing Commands:** + +**Linux:** + +```bash +# Test DNS resolution +nslookup +dig + +# Check which DNS servers are being used +systemd-resolve --status +cat /etc/resolv.conf +``` + +**macOS:** + +```bash +# Test DNS resolution +nslookup +dig + +# Check DNS configuration +scutil --dns +``` + +**Windows:** + +```powershell +# Test DNS resolution +nslookup + +# Check DNS configuration +ipconfig /all + +# Flush DNS cache (if needed) +ipconfig /flushdns +``` + +**Troubleshooting DNS Issues:** + +* Verify DNS server IP addresses in location settings +* Test with different DNS servers (e.g., 8.8.8.8, 1.1.1.1) +* Verify there are no firewall rules on your gateway server which would block DNS access + +## MTU Issues + +If VPN connects but you cannot access certain resources, another possible cause is an invalid MTU configuration of the network interface. + +By default WireGuard uses an MTU of 1420 bytes, but some ISPs may limit packet size. + +**To test MTU limits:**\ +**Linux:** + +```bash +ping -M do -s 1420 +``` + +**Windows:** + +```powershell +ping -f -l 1420 +``` + +You can try to lower the packet size until the ping command succeeds to find the limit. + +**Workaround:** + +* Set a lower MTU value manually for the WireGuard interface created by the client diff --git a/resources/troubleshooting/sending-support-info.md b/support-1/troubleshooting/sending-support-info.md similarity index 53% rename from resources/troubleshooting/sending-support-info.md rename to support-1/troubleshooting/sending-support-info.md index b9a1de1..fba50f7 100644 --- a/resources/troubleshooting/sending-support-info.md +++ b/support-1/troubleshooting/sending-support-info.md @@ -18,7 +18,25 @@ Before submitting the logs, after you have changed the logging to debug, please You can easly send us client logs by going _Settings ->_ in the _Log_ window you will have the possibility to see the logs, but also two buttons, to Copy the logs or Download them - so you can easly share them with us: -
+
+ +## Mobile client + +To view the mobile client logs open the side menu by tapping the menu icon. + +
+ +Tap the _View Application Logs_ link from the side menu. + +
+ +You will see the application logs. Tap the menu icon again to see possible actions. + +
+ +Tap the _Share logs file_ item to sent the log file using a desired app. + +
## Core @@ -26,4 +44,4 @@ When contacting support you can send us **anonymous** support data by: 1. In **Settings > Support** tab you'll be able to generate and send support data that can be used when debugging your issues. 2. To download configuration and logs use appropriate buttons. You can attach them to bug report in our GitHub repository or send them in Matrix. -3. The "Send email" button is active only if you [configured the SMTP server](../../notifications/setting-up-smtp-for-email-notifications.md). +3. The "Send email" button is active only if you [configured the SMTP server](../../features/notifications/setting-up-smtp-for-email-notifications.md). diff --git a/resources/troubleshooting/webauthn-security-keys.md b/support-1/troubleshooting/webauthn-security-keys.md similarity index 100% rename from resources/troubleshooting/webauthn-security-keys.md rename to support-1/troubleshooting/webauthn-security-keys.md diff --git a/resources/troubleshooting/windows-installer-exit-codes.md b/support-1/troubleshooting/windows-installer-exit-codes.md similarity index 99% rename from resources/troubleshooting/windows-installer-exit-codes.md rename to support-1/troubleshooting/windows-installer-exit-codes.md index 6749a4a..a30bf32 100644 --- a/resources/troubleshooting/windows-installer-exit-codes.md +++ b/support-1/troubleshooting/windows-installer-exit-codes.md @@ -2,7 +2,7 @@ description: Desktop Client windows installer exist codes list. --- -# Windows installer exit codes +# Client Windows installer exit codes | Error code | Value | Description | | ------------------------------------------ | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/support.md b/support.md index 80ef8cc..eddd258 100644 --- a/support.md +++ b/support.md @@ -1,32 +1,45 @@ # Getting help -## Check out our troubleshooting guide +## Troubleshooting guide -We developed a comprehensive [troubleshooting guide](resources/troubleshooting/) to help resolve your issue. We've put significant effort into ensuring it's current and thorough. +We developed a comprehensive [troubleshooting guide](support-1/troubleshooting/) to help resolve your issue. We've put significant effort into ensuring it's current and thorough. -## Contacting Support +## Community support (for all plans) -If you have bought an [Enterprise plan with premium support](https://defguard.net/pricing/), you can reach us at: +Having trouble with Defguard deployment or configuration? Reach out to our community for help. -* Email: support@defguard.net +Support is provided both by the community and by us (the Defguard authors) using GitHub Discussions. Create a new discussion using this [form](https://github.com/DefGuard/defguard/discussions/new/choose). -## Community Support +## Email Support (for paid plans only) -Community support is done by the community as well as us (Defguard authors) on our [Matrix](https://matrix.to/#/#defguard:teonite.com) - **Support** channel. +If you have bought a [Business or Enterprise license](https://defguard.net/pricing/), you can reach us at our support email [support@defguard.net](mailto:support@defguard.net). -{% hint style="info" %} -Since this a community support, please remember that it may take some time to get a response, as there is no-one _assigned_ for the support 24/h - especially during the weekends, when people are just off. +{% hint style="warning" %} +Please remember to send your support request from the same domain used when purchasing the license. If you contact us from a different domain, your request will be redirected to our community support. {% endhint %} -### Do you have Slack/Discord? +## Found a bug? Need a feature? -Matrix is vastly more secure than those (convenient) platforms - and open source (which we are as well). We may bring a bridge to Discord in the future, but no guarantees. +{% hint style="warning" %} +Please remember to create an issue only if you're sure that you found a bug or you're missing a feature. If you are unsure whether something is a bug or a missing feature, start with a [GitHub Discussion first](https://github.com/DefGuard/defguard/discussions/new/choose). +{% endhint %} -## Found a bug? Need a feature? +Create an issue in our [main repository](https://github.com/DefGuard/defguard/issues). + +In order for your issue to be processed efficiently, make sure it's well described. Please read [our guide on how to submit issues](support-1/how-to-submit-an-issue.md). + +Please use our issue templates for [bugs](https://github.com/DefGuard/defguard/issues/new?assignees=\&labels=bug\&projects=\&template=bug_report.md\&title=) and [features](https://github.com/DefGuard/defguard/issues/new?assignees=\&labels=feature\&projects=\&template=feature_request.md\&title=). Try to fill as much information as possible. -* Here you can submit [a bug](https://github.com/DefGuard/defguard/issues/new?assignees=\&labels=bug\&projects=\&template=bug_report.md\&title=) -* And here you can submit [a feature request](https://github.com/DefGuard/defguard/issues/new?assignees=\&labels=feature\&projects=\&template=feature_request.md\&title=) +## Solved an issue yourself? + +Please share your solution with the community so others can benefit from it. Leave a short description of the observed behaviour, expected behaviour, and the solution in our [Show and Tell section](https://github.com/DefGuard/defguard/discussions/categories/show-and-tell) on GitHub Discussions. + +## Reporting a security vulnerability + +{% hint style="danger" %} +Please do not report security vulnerabilities via GitHub issues. Dedicated reporting channels are listed below. +{% endhint %} -## Reporting a Vulnerability +To report a security vulnerability open a [security advisory](https://github.com/defguard/defguard/security/advisories/new). -Please do **not open GitHub Issues for security issues you encounter**. To reporting a vulnerability open a [security advisory here](https://github.com/defguard/defguard/security/advisories/new). +You can also send us an encrypted email message according to instructions in our [Vulnerability Disclosure Policy](https://defguard.net/security/#VDP-title). diff --git a/tutorials/step-by-step-setting-up-a-vpn-server/README.md b/tutorials/step-by-step-setting-up-a-vpn-server/README.md index 3c4a163..17377ba 100644 --- a/tutorials/step-by-step-setting-up-a-vpn-server/README.md +++ b/tutorials/step-by-step-setting-up-a-vpn-server/README.md @@ -64,7 +64,7 @@ You can log into the UI using the default admin user: When you log in to your instance with user admin and the password that was generated for you, you should see that the VPN gateway is connected: -

Defguard live status of WireGuard VPN gateway

+
### Connecting to your VPN using Defguard desktop client @@ -72,11 +72,11 @@ Download the latest client from: [https://github.com/DefGuard/client/releases](h Now, go to **Defguard** Web UI (in this example: _https://my-server.defguard.net_) and go to _My Profile_ and click on _Add Device:_ -

Adding a new device/desktop client in Defguard user profile

+
Then choose _Defguard Client Remote Desktop Activation_ - which will easily configure your Desktop client: -

Defguard supports both desktop client and configuring any WireGuard Client

+
Defguard will show what **URL** (which is - as you see - your enrollment service URL) and **token** to paste to your desktop client: @@ -86,23 +86,23 @@ You can easily copy those with buttons provided in Defguard, and paste to your d In desktop client, click on \_**+ Add instance** \_ and provide the URL and token: -

Configuring the client with a new instance

+
After that, the client will ask you to name your device (however you like), after that click finish: -

Naming your device

+
The client will instantly show your Defguard instance and the VPN (we named _Example):_ -

Client after successfully adding a new instance

+
Also, you should see in your profile, that the client is configured and visible (for now - no details of IPs, etc - will automatically show details when you connect with your client): -

Defguard showing the newly configured client in user profile

+
Now let's click _**Connect**_ and see if the VPN works, the best way to do so, is to open a terminal app and **ping** the VPN server address. Also to see nice statistics, choose in the client menu from _Grid view_ (which is nice if you have multiple VPNs) the option _Detailed view:_ -

Nice statistics in Defguard client

+
Now let's test if the VPN network is accessible. To do so, let's ping the VPN gateway internal IP: _10.22.33.1_ @@ -110,7 +110,7 @@ Now let's test if the VPN network is accessible. To do so, let's ping the VPN ga As an administrator, you will probably be happy to see this - Defguard VPN dashboard: -

Defguard VPN dashboard

+
{% hint style="info" %} This completes your VPN setup - both server and client. @@ -163,7 +163,7 @@ root@server:~# sysctl -p Now we need to configure firewall [NAT](https://en.wikipedia.org/wiki/Network_address_translation), so that the server will "_translate/masq_" VPN traffic behind its public IP. In order to do that, we need to add rules to MASQUERADE VPN network behind the public interface of the server. {% hint style="info" %} -From version 1.3.0, gateway can automatically apply masquerade to traffic on all interfaces without the need for manual configuration. Refer to [#masquerade](../../admin-and-features/access-control-list/#masquerade "mention") for details. If you use this feature, you can skip the following manual masquerade setup step. +From version 1.3.0, gateway can automatically apply masquerade to traffic on all interfaces without the need for manual configuration. Refer to [#masquerade](../../features/access-control-list/#masquerade "mention") for details. If you use this feature, you can skip the following manual masquerade setup step. {% endhint %} We know that VPN network is 10.22.33.0/24 now we need to be sure what interface has the public IP (in our case: 185.33.37.51) - let's figure it out with this command: @@ -239,7 +239,7 @@ To Action From Defguard is the only (known to us) WireGuard client that during connection provides a choice to **route all your traffic through the VPN.** Just (before connecting) choose the option: **Allow all traffic** and click connect! -

Choosing to forward all traffic through VPN

+
This is very useful, since some times you just want to be connected to your VPN to have the server/VPN networks accessible, and sometimes (like in the scenarios mentioned before) you want to hide and encrypt your traffic. diff --git a/help/adding-wireguard-devices/README.md b/using-defguard-for-end-users/adding-wireguard-devices/README.md similarity index 100% rename from help/adding-wireguard-devices/README.md rename to using-defguard-for-end-users/adding-wireguard-devices/README.md diff --git a/help/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md b/using-defguard-for-end-users/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md similarity index 87% rename from help/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md rename to using-defguard-for-end-users/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md index 71000ad..ec7a0e5 100644 --- a/help/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md +++ b/using-defguard-for-end-users/adding-wireguard-devices/configuring-a-device-for-a-new-vpn-location.md @@ -5,13 +5,13 @@ If you (or your Defguard administrator) have added a new VPN Location and you wo 1. Go to **your profile** (_My Profile -_ which you'll find on the navigation on the left side of the screen) 2. Click on the **gear icon on the device you want to download Location configuration** - a menu for that device will apear: -
+
3. Choose **Show configuration** The same configuration screen will popup as you were adding this device, but now you can choose a new location: -
+
4. **Download and configure your Wireguard VPN** exactly the same way you did it during the [adding device process](./). diff --git a/help/changing-your-password.md b/using-defguard-for-end-users/changing-your-password.md similarity index 100% rename from help/changing-your-password.md rename to using-defguard-for-end-users/changing-your-password.md diff --git a/help/cli-client.md b/using-defguard-for-end-users/cli-client.md similarity index 88% rename from help/cli-client.md rename to using-defguard-for-end-users/cli-client.md index f533ccb..46fa70e 100644 --- a/help/cli-client.md +++ b/using-defguard-for-end-users/cli-client.md @@ -28,18 +28,18 @@ Binary: [https://github.com/DefGuard/client/releases/download/v1.2.0/dg-linux-aa ### Installation -Installation is straightforward. As a root, install it as any other package of a given type (deb/rpm). +Installation is straightforward. As a root, install it as any other package of a given type (deb/rpm). #### Deb archive ```bash -apt install ./dg-linux-x86_64-v1.2.0-dg.deb +apt install ./dg-linux-x86_64-v1.5.0-dg.deb ``` -#### RPM +#### DNF ```bash -rpm -i ./dg-linux-x86_64-v1.2.0-dg.rpm +dnf install ./dg-linux-x86_64-v1.5.0-dg.rpm ``` #### Post install @@ -54,7 +54,7 @@ dg --help #### Defguard Core setup -Defguard CLI works only with [network devices](../admin-and-features/network-devices.md), so to use it, you will need to first add a new network device. Refer to the network device documentation to learn more. +Defguard CLI works only with [network devices](../features/network-devices.md), so to use it, you will need to first add a new network device. Refer to the network device documentation to learn more. After you've configured your network device on Defguard core, you will be presented with the following command: @@ -94,6 +94,20 @@ systemctl start dg You can configure the service and set the log verbosity by editing `/etc/defguard/dg.conf`. +#### Specifying a custom configuration path + +You can use a custom config path to save your network configuration by providing it as a command argument: + +``` +dg --config ./config.json enroll -u -t +``` + +And then to connect: + +``` +dg --config ./config.json +``` + ### Debugging and troubleshooting It may be easier to identify a problem by passing one of the following flags, which control the logging verbosity level: diff --git a/using-defguard-for-end-users/desktop-client/README.md b/using-defguard-for-end-users/desktop-client/README.md new file mode 100644 index 0000000..672bcf0 --- /dev/null +++ b/using-defguard-for-end-users/desktop-client/README.md @@ -0,0 +1,79 @@ +# Desktop Client + +### Overview + +Desktop client provides an easy way to access VPN locations of multiple Defguard instances via user-friendly UI. + +Download latest release here: [https://defguard.net/download/](https://defguard.net/download/) + +For development/pre-releases, go to GitHub: [https://github.com/DefGuard/client/releases](https://github.com/DefGuard/client/releases) + +Guides: + +* [Instance configuration](instance-configuration.md) +* [Using Multi-Factor Authentication](using-multi-factor-authentication-mfa.md) + +### macOS + +Defguard Desktop Client is available in the [App Store](https://apps.apple.com/pl/app/defguard-desktop-client/id6754601166). + +### Linux + +{% hint style="warning" %} +On Linux the desktop client uses `resolvconf` to manage DNS servers. On newer distributions it should be a symbolic link to `resolvectl`, more details can be found on the [troubleshooting](https://github.com/DefGuard/docs/blob/docs/help/broken-reference/README.md) page. +{% endhint %} + +{% hint style="warning" %} +On Linux the desktop client requires the user to belong to the `defguard` group in order to access the `defguard.socket` Unix socket used for IPC. + +The official packages handle group setup, but logging out and back in or rebooting might be required on initial client install to refresh group membership. This is no longer required on subsequent updates. +{% endhint %} + +### ArchLinux + +There is an [AUR package](https://aur.archlinux.org/packages/defguard-client)[: defguard-client](https://aur.archlinux.org/packages/defguard-client). + +If you don't know how to install AUR packages, please follow these guidelines: + +* Manual install: [https://wiki.archlinux.org/title/Arch\_User\_Repository](https://wiki.archlinux.org/title/Arch_User_Repository) +* Installation through PARU (AUR Helper): [https://owlhowto.com/how-to-install-paru-on-arch-linux/](https://owlhowto.com/how-to-install-paru-on-arch-linux/) + +### Ubuntu 22.04 / Debian 12 + +Download `defguard-client_{x.x.x}_{arch}_ubuntu-22-04-lts.deb` from [releases](https://github.com/DefGuard/client/releases). + +### Client update + +Defguard Client regularly checks for updates and in order to do so operating system name and installed application version are sent to the Defguard update service. + +This functionality can be turned off in the Client settings under Updates section so that no data is sent. + +
+ +If a new version is available, a notification with a download button will be shown near the bottom of the menu. + +

New Desktop Client version available for download

+ +### Storage + +Application data is stored in following locations: + +| Platform | Storage directory | +| --------- | ---------------------------------------------- | +| Windows | C:\Users\\\\AppData\Roaming\net.defguard | +| macOS | $HOME/Library/Containers/net.defguard | +| BSD/Linux | $HOME/.local/share/net.defguard | + +### Log files + +All relevant application logs should be available in the clients Settings where they can be filtered by source and log level:\\ + +
+ +In case of unexpected issues, the log files themselves can be found in the following default locations: + +| Platform | Client logs | Background service logs | +| --------- | -------------------------------------------------------------------- | ------------------------------------------------------ | +| Windows | C:\Users\\AppData\Roaming\net.defguard\logs | C:\Logs\defguard-service | +| macOS | $HOME/Library/Containers/net.defguard/Data/Library/Logs/net.defguard | $HOME/Library/Group Containers/group.net.defguard/Logs | +| BSD/Linux | $HOME/.local/share/net.defguard/logs | /var/log/defguard-service | diff --git a/help/desktop-client/instance-configuration.md b/using-defguard-for-end-users/desktop-client/instance-configuration.md similarity index 89% rename from help/desktop-client/instance-configuration.md rename to using-defguard-for-end-users/desktop-client/instance-configuration.md index d51a9ab..32a21c7 100644 --- a/help/desktop-client/instance-configuration.md +++ b/using-defguard-for-end-users/desktop-client/instance-configuration.md @@ -15,7 +15,7 @@ Defguard Desktop Client is required if you want to use Multi-Factor Authenticati {% hint style="info" %} If you are looking for how to generate tokens for your users as an Administrator, look here: -[remote-desktop-activation.md](../../admin-and-features/wireguard/remote-desktop-activation.md "mention") +[remote-desktop-activation.md](../../features/wireguard/remote-desktop-activation.md "mention") {% endhint %} 1. Log in to your Defguard account. @@ -43,6 +43,12 @@ If you are looking for how to generate tokens for your users as an Administrator
+### One-click Desktop Configuration + +You can skip the whole process of entering token/url by clicking "One-click Desktop Configuration" during remote device activation. Here is a video describing whole process: + +{% embed url="https://www.youtube.com/embed/q5-AXOPLgHc" %} + ### Connecting to Instance 1. Select your Instance from menu @@ -87,7 +93,7 @@ Your Instance will update immediately. Defguard Desktop stores all information locally and doesn't communicate with Defguard outside the registration process. This means that information about instances are snapshots of the moment you registered them in the desktop client, and you might want to update that, for example when some new locations are added or removed. {% hint style="success" %} -If you have an Enterprise License, all desktop clients and all instances are [synchronized automatically and in real-time.](../../admin-and-features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md) +If you have an Enterprise License, all desktop clients and all instances are [synchronized automatically and in real-time.](../../features/remote-user-enrollment/automatic-real-time-desktop-client-configuration.md) {% endhint %} ### Removing Instance diff --git a/using-defguard-for-end-users/desktop-client/mtu-setting.md b/using-defguard-for-end-users/desktop-client/mtu-setting.md new file mode 100644 index 0000000..4a7412f --- /dev/null +++ b/using-defguard-for-end-users/desktop-client/mtu-setting.md @@ -0,0 +1,10 @@ +# MTU Setting + +Defguard client supports manual MTU configuration to ensure stable VPN connections on mobile and carrier-grade networks. These networks often enforce lower MTU limits, which can cause VPN traffic to be dropped even though the tunnel appears connected. + +Adjusting the MTU reduces packet size so traffic fits within network constraints, improving reliability without server-side changes. Typical working values are in the **1300-1500** range. + +
+ +*** + diff --git a/help/desktop-client/using-multi-factor-authentication-mfa.md b/using-defguard-for-end-users/desktop-client/using-multi-factor-authentication-mfa.md similarity index 50% rename from help/desktop-client/using-multi-factor-authentication-mfa.md rename to using-defguard-for-end-users/desktop-client/using-multi-factor-authentication-mfa.md index 0ac666e..e6d0191 100644 --- a/help/desktop-client/using-multi-factor-authentication-mfa.md +++ b/using-defguard-for-end-users/desktop-client/using-multi-factor-authentication-mfa.md @@ -1,9 +1,5 @@ # Using Multi-Factor Authentication (MFA) -{% hint style="danger" %} -Connecting to location with required **external** MFA is possible in the desktop client since **version 1.5.0.** Please check out [**https://github.com/DefGuard/client/releases**](https://github.com/DefGuard/client/releases) for new releases. -{% endhint %} - * Up to version 1.4, only internal MFA was supported, user could only use MFA methods configured in his profile. * Since version 1.5 (currently in alpha), MFA can be configured per location, and administrators can choose whether a location will use internal MFA or external OIDC/SSO provider. @@ -39,13 +35,42 @@ Your connection will be established immediately after successful authentication. * If you're using "Authenticator App", please enter code generated within your authenticator app. {% hint style="info" %} -If you don't know how to setup or use your **Authenticator App** please check [this article](../setting-up-2fa-mfa.md#setting-up-2famfa) for detailed information. +If you don't know how to set up or use your **Authenticator App,** please check [this article](../setting-up-2fa-mfa.md#setting-up-2famfa) for detailed information. {% endhint %} -
+
+ +{% hint style="info" %} +If you need a guide explaining how to use Mobile Client as your MFA method, please [scroll down.](using-multi-factor-authentication-mfa.md#authenticating-via-biometry) +{% endhint %} 3. After entering code, click **Verify** -
+
Your connection will be established immediately after this step. + +## Multi-Factor Authentication via Mobile Biometry + +After configuring VPN on your mobile device and [enabling Biometry](../mobile-client/using-biometry-as-mfa-method.md#setting-up-biometry), we not only enable Biometry based connecting on a mobile device, but add an extra security layer to have the most secure/sophisticated MFA method available. + +After enabling Biometry we create an additional private/public key par, with the private key stored on the hardware/secure storage, and inform in the UI, that this device now can be used for MFA using Biometry on a desktop client: + +
+ +Now, when you connect on the desktop client to a location that has Internal MFA configured, you can choose **“Mobile App”** for MFA, then a QR code will be shown. + +
+ +This QR code to be scanned on the mobile device for additional MFA steps: + +1. Biometry authentication, that enables access to device secure storage +2. Additional validation with private/public key pair between mobile/desktop/core server. After that, our “normal” MFA flow (with session keys, WireGuard private/public keys) takes place. + +Here is a video showcasing this process: + +{% embed url="https://www.youtube.com/watch?v=b-XC76k4KVU" %} + +And here you can see the whole flow done with multiple steps including the user, desktop (and mobile) the Proxy and Defguard Core and gateway in the final step: + +
diff --git a/help/enrollment/README.md b/using-defguard-for-end-users/enrollment/README.md similarity index 100% rename from help/enrollment/README.md rename to using-defguard-for-end-users/enrollment/README.md diff --git a/help/enrollment/with-external-sso-google-microsoft-custom.md b/using-defguard-for-end-users/enrollment/with-external-sso-google-microsoft-custom.md similarity index 100% rename from help/enrollment/with-external-sso-google-microsoft-custom.md rename to using-defguard-for-end-users/enrollment/with-external-sso-google-microsoft-custom.md diff --git a/help/enrollment/with-internal-defguard-sso.md b/using-defguard-for-end-users/enrollment/with-internal-defguard-sso.md similarity index 96% rename from help/enrollment/with-internal-defguard-sso.md rename to using-defguard-for-end-users/enrollment/with-internal-defguard-sso.md index 71c28cd..78a877e 100644 --- a/help/enrollment/with-internal-defguard-sso.md +++ b/using-defguard-for-end-users/enrollment/with-internal-defguard-sso.md @@ -35,7 +35,7 @@ What is great about this is that after the enrollment process is done - the desk When accessing the enrollment service in the browser, the process is extended with the possibility to configure the **initial VPN device/access manually.** {% hint style="info" %} -Even if the user will do enrollment in the browser - the desktop client can be configured later by using: [Remote desktop client activation.](../../admin-and-features/wireguard/remote-desktop-activation.md) +Even if the user will do enrollment in the browser - the desktop client can be configured later by using: [Remote desktop client activation.](../../features/wireguard/remote-desktop-activation.md) {% endhint %} ## User onboarding after enrollment diff --git a/using-defguard-for-end-users/mobile-client/README.md b/using-defguard-for-end-users/mobile-client/README.md new file mode 100644 index 0000000..a078629 --- /dev/null +++ b/using-defguard-for-end-users/mobile-client/README.md @@ -0,0 +1,28 @@ +# Mobile Client + +### Installation + +Mobile applications are available in the official app stores for [Android](https://play.google.com/store/apps/details?id=net.defguard.mobile) and [iOS](https://apps.apple.com/us/app/defguard-vpn-client/id6748068630). + +### Guides + +These guides explain how to use the Defguard Mobile to connect securely to VPN locations within your Defguard instance. It covers the entire process, from installation, adding new instances, connecting to locations, to managing your VPN connection settings. + +* [Instance adding guide](instance-adding.md#adding-instance-during-enrollment) +* [Connecting to Instance guide](instance-connect.md#connecting-to-instance) +* [Managing Instance guide](instance-manage.md#managing-your-instance) + +### Automatic configuration update + +When the configuration of an Instance is being updated (for e.g. switching from no-MFA → internal-MFA), mobile client **does** **not** refresh the Instance configuration automatically if the **app is opened**.\ +This is an intended behaviour. + +If you want to manually update your Instance perform: + +* **Manual pull-to-refresh** on the instance screen. +* **Restart of the application** (reopening the app) + + + + + diff --git a/help/mobile-client/instance-adding.md b/using-defguard-for-end-users/mobile-client/instance-adding.md similarity index 71% rename from help/mobile-client/instance-adding.md rename to using-defguard-for-end-users/mobile-client/instance-adding.md index 625d52e..9ec388c 100644 --- a/help/mobile-client/instance-adding.md +++ b/using-defguard-for-end-users/mobile-client/instance-adding.md @@ -1,24 +1,27 @@ +# Adding new Instance -## Adding instance during the enrollment +In this guide, you will learn how to add Instance in mobile app. -In this guide, you will learn how to add Instance in mobile app. +If you are after the enrollment process, please follow [this guide](instance-adding.md#adding-instance-in-defguard) -If you are after the enrollment process, please follow [this guide](#adding-instance-in-defguard) - -### Enrollment via external SSO +## Enrollment via external SSO 1. Go to your enrollment page. Click **Select** under "Enrollment process". -
+ +
2. In this example we use Google as OIDC provider so our button is "Sign in with Google". Your organization can use different OIDC provider. -
+ +
3. You will be redirected to your OIDC provider login page, please log in. After doing this, you will be redirected and shown a screen with **URL, Token and QR Code**. -
+ +
4. Open Defguard Mobile on your smartphone 5. Click **Scan QR Code** -
+ +
6. Scan QR generated in step 3. 7. Enter the name of your device. For example "iPhone 11" @@ -28,43 +31,49 @@ If you are after the enrollment process, please follow [this guide](#adding-inst If you can't scan QR Code, select **Add Instance Manually** in **step 5** and enter URL and Token from **step 3**. {% endhint %} +## Enrollment via Email - -### Enrollment via Email Find enrollment **Instance URL** and **Token** in your "Defguard user enrollment" email. It should look like this: -
+ +
If you want to enroll via Web Browser, click **Start enrollment** or: + 1. Go to your enrollment page. Click **Select** under "Enrollment process". -
+ +
2. Enter your **Token** and click **Send**. -
-Now, follow [Enrollment via Web Browser](#enrollment-via-web-browser) guide. +
+Now, follow [Enrollment via Web Browser](instance-adding.md#enrollment-via-web-browser) guide. -### Enrollment via Web Browser +## Enrollment via Web Browser -1. Upon starting enrollment process you will see something like this: -**Before proceeding, read the text carefully, as it may contain important information given by your administrator,** then click **Next**. -
+1. Upon starting enrollment process you will see something like this: **Before proceeding, read the text carefully, as it may contain important information given by your administrator,** then click **Next**. +
2. In this step you can optionally enter your phone number after entering it. Proceed by clicking the **Next** button. -
+ +
3. Now, you need to set up your password. After entering the password, proceed by clicking **Next**. -
-4. This is the step where we can add our mobile device. Enter the name of your device, then click **Create Configuration**. -
+
+ +4. This is the step where we can add our mobile device. Enter the name of your device, then click **Create Configuration**. -5. You will see a screen like this. -
+
+ +5. You will see a screen like this. + +
6. Open Defguard on your mobile device. Click **Scan QR Code**, and scan the code from **step 5**. -
+ +
7. After scanning the QR code, enter the name of your device and confirm. @@ -72,25 +81,26 @@ Now, follow [Enrollment via Web Browser](#enrollment-via-web-browser) guide. If you can't scan QR Code, select **Add Instance Manually** in **step 6** and enter URL and Token from **step 5**. {% endhint %} - - -### Adding Instance in Defguard - +## Adding Instance in Defguard 1. Log in to your Defguard account. 2. Go to **My Profile** tab. 3. Click **Add new device** button inside **User Devices** list. +
-4. Select **Remote Device Activation** and click **Next**. +4. Select **Remote Device Activation** and click **Next**. +
5. After that you will see URL, Token and QR Code. **Take a screenshot of QR code**, we will need it in next step. +
6. Open Defguard Mobile on your smartphone 7. Click **Scan QR Code** -
+ +
8. Scan QR generated in step 5. 9. Enter the name of your device. For example "iPhone 11" diff --git a/help/mobile-client/instance-connect.md b/using-defguard-for-end-users/mobile-client/instance-connect.md similarity index 76% rename from help/mobile-client/instance-connect.md rename to using-defguard-for-end-users/mobile-client/instance-connect.md index b2bacef..476f9b2 100644 --- a/help/mobile-client/instance-connect.md +++ b/using-defguard-for-end-users/mobile-client/instance-connect.md @@ -1,20 +1,22 @@ -## Connecting to Instance +# Connecting to Instance In this guide, you will learn how to connect to location. If you haven't added an instance yet, follow [this guide](instance-adding.md#adding-instance-during-the-enrollment). -### Connecting to location without MFA +## Connecting to location without MFA 1. Open Defguard 2. Click on Instance you want to connect to. +
3. Click **"Connect"** next to location you want to use. +
{% hint style="info" %} The first time you connect, app will ask whether you want to route **predefined traffic** or **all traffic**. You will see screen like this: -
+ * **Predefined traffic** will only route traffic specified by your administrator. * **All traffic** will route everything through VPN tunnel. @@ -22,49 +24,45 @@ The first time you connect, app will ask whether you want to route **predefined You can select **Remember my choice** if you don't want to be asked again. If you want to change your traffic routing method after your first connection go to [this article](instance-manage.md#changing-traffic-routing-method-after-first-connection) - - {% endhint %} 4. Choose your routing method 5. Confirm + {% hint style="warning" %} Your phone will need to add new VPN configuration, you will see popup like this: -
+ + Please click **Allow**, without this permission, Defguard cannot establish VPN connection. {% endhint %} - {% hint style="info" %} If your location does not use MFA, your VPN connection should be established immediately after confirming your routing method. {% endhint %} - {% hint style="info" %} Some VPN locations require extra security when connecting. This is called MFA (Multi-Factor Authentication). There are two types: * Internal MFA: You confirm your identity directly in the app, for example by entering a code from your Authenticator App or email. * External MFA: You are redirected to a secure login page (like Google or Microsoft) outside the app to confirm your identity. - {% endhint %} - {% hint style="warning" %} -If your location is using MFA please go to [section 3.2 "Connecting to location with MFA](#connecting-to-location-with-mfa) +If your location is using MFA please go to [section 3.2 "Connecting to location with MFA](instance-connect.md#connecting-to-location-with-mfa) {% endhint %} - -### Connecting to location with MFA +## Connecting to location with MFA 1. Open Defguard 2. Go to **Instances** and click **Connect** next to location you want to use. -
+ +
{% hint style="info" %} The first time you connect, app will ask whether you want to route **predefined traffic** or **all traffic**. You will see screen like this: -
+ * **Predefined traffic** will only route traffic specified by your administrator. * **All traffic** will route everything through VPN tunnel. @@ -72,59 +70,54 @@ The first time you connect, app will ask whether you want to route **predefined You can select **Remember my choice** if you don't want to be asked again. If you want to change your traffic routing method after your first connection go to [this article](instance-manage.md#changing-traffic-routing-method-after-first-connection) - - {% endhint %} -3. Choose your routing method, and confirm. -Depending on your location settings you will need to authenticate with [external](#external-mfa) or [internal](#internal-mfa) MFA. +3. Choose your routing method, and confirm. +Depending on your location settings you will need to authenticate with [external](instance-connect.md#external-mfa) or [internal](instance-connect.md#internal-mfa) MFA. -#### External MFA +### External MFA If the VPN location requires OpenID for authentication (external MFA) you will see screen like this: -
-Click **Authenticate with OpenID** and you will be redirected to a secure login page (for example Google/Microsoft). Follow the instructions on the screen to log in. After successful authentication please return to Defguard. -In the app you will see screen like this: +
+ +Click **Authenticate with OpenID** and you will be redirected to a secure login page (for example Google/Microsoft). Follow the instructions on the screen to log in. After successful authentication please return to Defguard. In the app you will see screen like this:
After successful authentication, return to Defguard Mobile, your connection will be established automatically. - -#### Internal MFA +### Internal MFA {% hint style="warning" %} When connecting with MFA for the first time, you will have the option to select **Remember my choice**. Select this option if you want to always use this method for this location. {% endhint %} -1. If you are connecting for first time, or if you have not clicked **Remember my choice** during previous connection, you will need to choose your MFA method. -
+1. If you are connecting for first time, or if you have not clicked **Remember my choice** during previous connection, you will need to choose your MFA method. + +
2. Choose method configured for your account, and click **Connect**. - - If you're using "Email" method, please enter code sent to your email. - - If you're using "Authenticator App", please enter code generated within your authenticator app. + * If you're using "Email" method, please enter code sent to your email. + * If you're using "Authenticator App", please enter code generated within your authenticator app. + {% hint style="info" %} -If you don't know how to setup or use your **Authenticator App** please check [this article](/help/setting-up-2fa-mfa.md#setting-up-2famfa) for detailed information. +If you don't know how to setup or use your **Authenticator App** please check [this article](../setting-up-2fa-mfa.md#setting-up-2famfa) for detailed information. {% endhint %} -3. After this step, your connection will be established immediately. +3. After this step, your connection will be established immediately. -### Disconnecting from VPN +## Disconnecting from VPN To disconnect from a VPN location in Defguard: -1. Open Defguard. +1. Open Defguard. 2. Go to the active instance 3. Click **Disconnect** button next to the location you are currently connected to. -
+ +
+ {% hint style="info" %} After disconnecting, your device will stop sending traffic through the VPN and return to your regular internet connection. {% endhint %} - - - - - - diff --git a/help/mobile-client/instance-manage.md b/using-defguard-for-end-users/mobile-client/instance-manage.md similarity index 64% rename from help/mobile-client/instance-manage.md rename to using-defguard-for-end-users/mobile-client/instance-manage.md index 7428523..0f3023a 100644 --- a/help/mobile-client/instance-manage.md +++ b/using-defguard-for-end-users/mobile-client/instance-manage.md @@ -1,32 +1,32 @@ - -## Managing your instance +# Managing your Instance In this guide you will learn how to manage your instances. If you haven't added your instance yet, follow [this guide](instance-adding.md#adding-instance-in-defguard) -### Changing traffic routing method after first connection +## Changing traffic routing method after first connection 1. Open Defguard. 2. Go to **Instances** in the app menu. 3. Press & Hold the **Connect** button next to the location you want to update. 4. When the popup appears, look for the option **Select Traffic Routing**. -
+ +
5. You will see this: -
-6. Choose method and click **Connect** +
+6. Choose method and click **Connect** -### Changing MFA method after first connection +## Changing MFA method after first connection 1. Go to **Instances** in the app menu. 2. Press & Hold **Connect** button next to location name and wait until popup shows. -
+
3. Click **Select MFA Method**. 4. You will see this: -
-5. Choose method and click **Connect** +
+5. Choose method and click **Connect** diff --git a/using-defguard-for-end-users/mobile-client/using-biometry-as-mfa-method.md b/using-defguard-for-end-users/mobile-client/using-biometry-as-mfa-method.md new file mode 100644 index 0000000..61fcc54 --- /dev/null +++ b/using-defguard-for-end-users/mobile-client/using-biometry-as-mfa-method.md @@ -0,0 +1,26 @@ +# Using Biometry as MFA method + +In this guide, you will learn how to use biometry as MFA method when connecting to VPN location. + +### Setting up Biometry + +{% hint style="warning" %} +Biometry can be configured during adding Instance. If you skip this step, you will not be able to add biometry later, only removing and adding Instance again will trigger this modal. +{% endhint %} + +1. First, start the process of adding a new Instance ([check this article](instance-adding.md#adding-instance-in-defguard)). You will see this screen. + +
+ +2. Click **Yes**, after confirming your biometry method, you will see the following screen. + +
+ +Biometry is now configured, and will be used as a primary MFA method. If you want to change your MFA method, please check [this guide](instance-manage.md#changing-mfa-method-after-first-connection), you will be able to use Biometry as your third MFA method. + +
+ +### Connecting to MFA location with biometry enabled + +The whole process is the same as before, but instead of using TOTP/Email codes, you authenticate with biometry. For a detailed guide about connecting to Location, [check this article](instance-connect.md#connecting-to-location-with-mfa). + diff --git a/help/overwiew.md b/using-defguard-for-end-users/overwiew.md similarity index 100% rename from help/overwiew.md rename to using-defguard-for-end-users/overwiew.md diff --git a/help/setting-up-2fa-mfa.md b/using-defguard-for-end-users/setting-up-2fa-mfa.md similarity index 100% rename from help/setting-up-2fa-mfa.md rename to using-defguard-for-end-users/setting-up-2fa-mfa.md