From 8e2a02d57d42f2995aabc7fae8d683043ca516d4 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 27 Aug 2025 15:22:47 -0700 Subject: [PATCH] Add some docs about geoblocking --- docs.json | 3 +- images/country_rules.png | Bin 0 -> 55191 bytes .../{bypass-rules.mdx => rules.mdx} | 20 ++++- manage/geoblocking.mdx | 84 ++++++++++++++++++ manage/integration-api.mdx | 2 +- manage/managed.mdx | 6 +- 6 files changed, 109 insertions(+), 6 deletions(-) create mode 100644 images/country_rules.png rename manage/access-control/{bypass-rules.mdx => rules.mdx} (96%) create mode 100644 manage/geoblocking.mdx diff --git a/docs.json b/docs.json index 183a49e..41ed65c 100644 --- a/docs.json +++ b/docs.json @@ -45,6 +45,7 @@ ] }, "manage/healthchecks-failover", + "manage/geoblocking", { "group": "Clients", "pages": [ @@ -56,7 +57,7 @@ { "group": "Access Control", "pages": [ - "manage/access-control/bypass-rules", + "manage/access-control/rules", "manage/access-control/forwarded-headers" ] }, diff --git a/images/country_rules.png b/images/country_rules.png new file mode 100644 index 0000000000000000000000000000000000000000..2638961050a5097c0fc83e62db3b2bc96da693e9 GIT binary patch literal 55191 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 literal 0 HcmV?d00001 diff --git a/manage/access-control/bypass-rules.mdx b/manage/access-control/rules.mdx similarity index 96% rename from manage/access-control/bypass-rules.mdx rename to manage/access-control/rules.mdx index b415a99..8b77b3b 100644 --- a/manage/access-control/bypass-rules.mdx +++ b/manage/access-control/rules.mdx @@ -1,5 +1,5 @@ --- -title: "Bypass Rules" +title: "Rules" description: "Configure rules to allow or deny access to resources without authentication" --- @@ -13,6 +13,10 @@ Rules allow you to either "allow" and bypass the Pangolin auth system (no pin, l Completely reject requests that match the rule. Useful for blocking admin paths or sensitive endpoints. + + + Pass requests that match the rule to the next stage for user to authenticate with SSO, password, or pin. Useful for enforcing auth on specific paths while allowing others. + ## Types of Rules @@ -53,6 +57,20 @@ Path match rules allow URL patterns defined with plain text and wildcards (`*`) - **Validation:** Each pattern segment must correspond to a URL segment, and wildcards match zero or more characters within that segment. A pattern like `/blog*` only matches the first segment, so URLs with extra segments require additional placeholders (e.g., `/blog*/*`). +### Country + + +Geo blocking is only available for targets created with managed nodes or in the cloud because we need to host services to resolve IP addresses and evolve it quickly as network change. + +Fully self hosted users can install a [Traefik plugin](/self-host/community-guides/geoblock) for geo blocking support. + + +Country match rules allow you to specify allowed or denied countries for requests based on their IP address. This is useful for geo-restrictions or compliance with regional regulations. + +We use a IP database to geolocate the IP address but this is not always accurate. We try to keep it updated, but there may be cases where the location is incorrect. + +Select the "ALL" option to match all countries for allowing or denying access. + ### CIDR CIDR (Classless Inter-Domain Routing) notation specifies IP address ranges using an IP address and a network prefix length. The format is [IP address]/[prefix length]. diff --git a/manage/geoblocking.mdx b/manage/geoblocking.mdx new file mode 100644 index 0000000..b48d145 --- /dev/null +++ b/manage/geoblocking.mdx @@ -0,0 +1,84 @@ +--- +title: "Geo Blocking" +description: "Configure geo blocking to restrict access based on geographic location" +--- + + +Geo blocking is only available for targets created with managed nodes or in the cloud because we need to host services to resolve IP addresses and evolve it quickly as network change. + +Fully self hosted users can install a [Traefik plugin](/self-host/community-guides/geoblock) for geo blocking support. + + +## Benefits of Geo Blocking + +Geo blocking provides several important security and compliance advantages: + +### Security Benefits +- **Reduce Attack Surface**: Block access from regions with high levels of malicious activity or where you don't expect legitimate users +- **Prevent Unauthorized Access**: Limit exposure to threat actors operating from specific geographic locations +- **Compliance Requirements**: Meet regulatory requirements that restrict data access based on geographic location +- **Resource Protection**: Prevent unnecessary load on your services from regions where you don't operate + +## Implementing Geo Blocking with Bypass Rules + +Geo blocking in Pangolin is implemented using [bypass rules](access-control/bypass-rules) with country-based matching. You can create rules that either allow or deny access based on the visitor's country. + + + Pangolin Dashboard + + +### Setting Up Geo Blocking Rules + +1. Navigate to your target resource and select the **Rules** tab +2. Create a new rule and select **Country** as the match type +3. Choose your rule action: + - **Allow**: Bypass authentication for users from specific countries + - **Deny**: Block all access from specific countries + - **Pass to Auth**: Let users from specific countries proceed to authentication + +### Common Geo Blocking Patterns + +#### Allow Only Specific Countries +Create a "Deny" rule that blocks all countries except those you want to allow: + +1. Create a **Deny** rule +2. Select **Country** match type +3. Choose "ALL" to match all countries +4. Add priority: 100 (lower priority) + +Then create specific allow rules for your approved countries: + +1. Create **Allow** rules for each approved country +2. Set higher priority (e.g., 10, 20, 30) so they process first + +#### Block Specific High-Risk Countries +Create targeted deny rules for specific countries while allowing all others: + +1. Create **Deny** rules for each country you want to block +2. Select the specific countries from the dropdown +3. Set appropriate priorities + +#### Regional Access Control +Combine geo blocking with other rule types for sophisticated access control: + +1. **Path + Country**: Block admin paths (`/admin/*`) from all countries except your headquarters +2. **IP + Country**: Allow specific IPs from restricted countries (for VPN users or partners) +3. **CIDR + Country**: Combine network-based and geography-based restrictions + +### Best Practices + + +IP geolocation is not always 100% accurate. Users with VPNs, proxies, or mobile networks may appear to be from different countries than expected. + + +### Rule Priority Example + +``` +Priority 1: Allow - Country: United States +Priority 2: Allow - Country: Canada +Priority 3: Allow - Country: United Kingdom +Priority 4: Deny - Country: ALL +``` + +This configuration allows access only from the US, Canada, and UK while blocking all other countries. + diff --git a/manage/integration-api.mdx b/manage/integration-api.mdx index 34022cf..34c7096 100644 --- a/manage/integration-api.mdx +++ b/manage/integration-api.mdx @@ -6,7 +6,7 @@ description: "Learn how to use Pangolin's REST API to automate and script operat The API is REST-based and supports many operations available through the web interface. Authentication uses Bearer tokens, and you can create multiple API keys with specific permissions for different use cases. -For Pangolin self-hosted, the integration API must be enabled. Check out [the documentation](../self-host/advanced/integration-api) for how to enable the integration API. +For Pangolin self-hosted, the integration API must be enabled. Check out [the documentation](/self-host/advanced/integration-api) for how to enable the integration API. ## Authentication diff --git a/manage/managed.mdx b/manage/managed.mdx index 12ab84f..d06a1ef 100644 --- a/manage/managed.mdx +++ b/manage/managed.mdx @@ -8,7 +8,7 @@ description: "More reliable and low-maintenance self-hosted Pangolin server with With this option, you still run your own Pangolin node — your tunnels, SSL termination, and traffic all stay on your server. The difference is that management and monitoring are handled through our cloud dashboard, which unlocks a number of significant benefits. - You can deploy a managed Pangolin node in seconds [using the installer](../self-host/quick-install-managed). + You can deploy a managed Pangolin node in seconds [using the installer](/self-host/quick-install-managed). ## How It Works @@ -58,10 +58,10 @@ We're planning to add more analytics, alerting, and management tools to make you ## Getting Started - You can deploy a managed Pangolin node in seconds [using the installer](../self-host/quick-install-managed). + You can deploy a managed Pangolin node in seconds [using the installer](/self-host/quick-install-managed). -Ready to convert your existing self-hosted node to managed? Learn how in our [conversion guide](../self-host/convert-managed). +Ready to convert your existing self-hosted node to managed? Learn how in our [conversion guide](/self-host/convert-managed). For detailed information about how nodes work and their advantages, see our [nodes](/manage/nodes) documentation.