Files
proxmox/scripts/cloudflare-tunnels/docs/CLOUDFLARE_ACCESS_SETUP.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

323 lines
8.4 KiB
Markdown

# Cloudflare Access Setup Guide
This guide walks you through setting up Cloudflare Access (Zero Trust) to protect your Proxmox UI endpoints with SSO/MFA.
## Overview
Cloudflare Access provides:
-**Single Sign-On (SSO)** - Use your existing identity provider
-**Multi-Factor Authentication (MFA)** - Additional security layer
-**Device Posture Checks** - Require managed devices
-**Audit Logs** - Track all access attempts
-**Session Management** - Control session duration
## Prerequisites
1. ✅ Cloudflare account with Zero Trust enabled
2. ✅ Domain `d-bis.org` managed by Cloudflare
3. ✅ Tunnels created and configured (see main README)
4. ✅ DNS records created (CNAME pointing to tunnels)
## Step 1: Enable Cloudflare Zero Trust
1. **Navigate to Cloudflare Zero Trust:**
- Go to: https://one.dash.cloudflare.com
- Sign in with your Cloudflare account
2. **Verify Zero Trust is enabled:**
- If not enabled, you'll be prompted to enable it
- This is free for up to 50 users
## Step 2: Create Tunnels in Cloudflare Dashboard
For each Proxmox host, create a separate tunnel:
### 2.1 Create Tunnel for ml110-01
1. **Go to Zero Trust → Networks → Tunnels**
2. **Click "Create a tunnel"**
3. **Select "Cloudflared"**
4. **Enter tunnel name:** `tunnel-ml110`
5. **Click "Save tunnel"**
6. **Copy the tunnel token** (starts with `eyJ...`)
- Save this securely - you'll need it for VMID 102
### 2.2 Create Tunnel for r630-01
Repeat the same process:
- **Tunnel name:** `tunnel-r630-01`
- **Copy tunnel token**
### 2.3 Create Tunnel for r630-02
Repeat the same process:
- **Tunnel name:** `tunnel-r630-02`
- **Copy tunnel token**
## Step 3: Configure Tunnel Public Hostnames
For each tunnel, configure the public hostname:
### 3.1 Configure ml110-01 Tunnel
1. **Click on tunnel `tunnel-ml110`**
2. **Click "Configure"**
3. **Go to "Public Hostnames" tab**
4. **Click "Add a public hostname"**
5. **Configure:**
- **Subdomain:** `ml110-01`
- **Domain:** `d-bis.org`
- **Service:** `https://192.168.11.10:8006`
- **Type:** HTTP
6. **Click "Save hostname"**
### 3.2 Configure r630-01 Tunnel
Repeat for r630-01:
- **Subdomain:** `r630-01`
- **Domain:** `d-bis.org`
- **Service:** `https://192.168.11.11:8006`
### 3.3 Configure r630-02 Tunnel
Repeat for r630-02:
- **Subdomain:** `r630-02`
- **Domain:** `d-bis.org`
- **Service:** `https://192.168.11.12:8006`
## Step 4: Create DNS Records
Create CNAME records in Cloudflare DNS:
1. **Go to Cloudflare Dashboard → DNS → Records**
2. **Add records:**
| Type | Name | Target | Proxy | TTL |
|------|------|--------|-------|-----|
| CNAME | `ml110-01` | `<tunnel-id-ml110>.cfargotunnel.com` | 🟠 Proxied | Auto |
| CNAME | `r630-01` | `<tunnel-id-r630-01>.cfargotunnel.com` | 🟠 Proxied | Auto |
| CNAME | `r630-02` | `<tunnel-id-r630-02>.cfargotunnel.com` | 🟠 Proxied | Auto |
**Important:**
- ✅ Use CNAME (not A records)
- ✅ Enable proxy (orange cloud)
- ✅ Replace `<tunnel-id-*>` with actual tunnel IDs from Step 2
## Step 5: Configure Cloudflare Access Applications
For each Proxmox host, create an Access application:
### 5.1 Create Application for ml110-01
1. **Go to Zero Trust → Access → Applications**
2. **Click "Add an application"**
3. **Select "Self-hosted"**
4. **Configure Application:**
- **Application name:** `Proxmox ml110-01`
- **Application domain:** `ml110-01.d-bis.org`
- **Session duration:** `8 hours` (or your preference)
5. **Click "Next"**
### 5.2 Configure Access Policy
1. **Click "Add a policy"**
2. **Policy name:** `Allow Team Access`
3. **Action:** `Allow`
4. **Include:**
- **Select:** `Emails`
- **Value:** `@yourdomain.com` (or specific emails)
- **OR** select `Country` and choose your country
5. **Require:**
-**Multi-factor authentication** (MFA)
-**Email verification** (optional but recommended)
6. **Click "Next"**
### 5.3 Configure Additional Settings
1. **CORS settings:** Leave default (not needed for Proxmox UI)
2. **Cookie settings:** Leave default
3. **Click "Add application"**
### 5.4 Repeat for Other Hosts
Repeat Steps 5.1-5.3 for:
- **r630-01** → `r630-01.d-bis.org`
- **r630-02** → `r630-02.d-bis.org`
## Step 6: Configure Identity Providers (Optional but Recommended)
If you want to use SSO instead of email-based auth:
### 6.1 Add Identity Provider
1. **Go to Zero Trust → Access → Authentication**
2. **Click "Add new" under Identity Providers**
3. **Select your provider:**
- Google Workspace
- Microsoft Azure AD
- Okta
- Generic OIDC
- Generic SAML
- etc.
4. **Follow provider-specific setup instructions**
### 6.2 Update Access Policies
1. **Go back to Applications**
2. **Edit each application policy**
3. **Change "Include" to use your identity provider**
4. **Save changes**
## Step 7: Advanced Security Settings (Recommended)
### 7.1 Device Posture Checks
Require managed devices:
1. **Go to Zero Trust → Settings → WARP**
2. **Enable WARP for your organization**
3. **Go to Zero Trust → Access → Applications**
4. **Edit application policy**
5. **Add "Require" condition:**
- **Select:** `Device Posture`
- **Require:** `Managed device` or `WARP client`
### 7.2 Country Blocking
Block access from specific countries:
1. **Edit application policy**
2. **Add "Exclude" condition:**
- **Select:** `Country`
- **Value:** Select countries to block
### 7.3 IP Allowlisting
Restrict to specific IPs:
1. **Edit application policy**
2. **Add "Include" condition:**
- **Select:** `IP Address`
- **Value:** Your office/home IP ranges
## Step 8: Test Access
### 8.1 Test DNS Resolution
```bash
dig ml110-01.d-bis.org
dig r630-01.d-bis.org
dig r630-02.d-bis.org
```
Should resolve to Cloudflare IPs.
### 8.2 Test HTTPS Access
```bash
# Should redirect to Cloudflare Access login
curl -I https://ml110-01.d-bis.org
```
### 8.3 Test Browser Access
1. **Open browser**
2. **Navigate to:** `https://ml110-01.d-bis.org`
3. **Should see Cloudflare Access login page**
4. **Login with your credentials**
5. **Complete MFA if required**
6. **Should redirect to Proxmox UI**
## Step 9: Monitor Access
### 9.1 View Access Logs
1. **Go to Zero Trust → Access → Logs**
2. **View authentication attempts**
3. **Check for failed login attempts**
### 9.2 Set Up Alerts
1. **Go to Zero Trust → Settings → Notifications**
2. **Configure email alerts for:**
- Failed authentication attempts
- Suspicious activity
- Policy violations
## Troubleshooting
### Access Page Not Showing
**Problem:** Direct access to Proxmox UI, no Cloudflare Access page
**Solutions:**
1. Verify DNS record has proxy enabled (orange cloud)
2. Check tunnel is running: `systemctl status cloudflared-ml110`
3. Verify application is configured correctly
4. Check Cloudflare dashboard for tunnel status
### MFA Not Working
**Problem:** MFA prompt not appearing
**Solutions:**
1. Verify MFA is enabled in policy
2. Check identity provider settings
3. Verify user has MFA configured
### Can't Access After Login
**Problem:** Login successful but can't reach Proxmox UI
**Solutions:**
1. Check tunnel is running
2. Verify tunnel configuration points to correct IP:port
3. Check Proxmox UI is accessible internally
4. Review tunnel logs: `journalctl -u cloudflared-ml110 -f`
## Security Best Practices
1.**Always enable MFA** - Required for admin interfaces
2.**Use short session durations** - 4-8 hours for admin access
3.**Enable device posture checks** - Require managed devices
4.**Monitor access logs** - Review regularly for suspicious activity
5.**Use IP allowlisting** - If you have static IPs
6.**Enable email verification** - Additional security layer
7.**Set up alerts** - Get notified of failed attempts
## Quick Reference
### Application URLs
- ml110-01: `https://ml110-01.d-bis.org`
- r630-01: `https://r630-01.d-bis.org`
- r630-02: `https://r630-02.d-bis.org`
### Tunnel Names
- `tunnel-ml110`
- `tunnel-r630-01`
- `tunnel-r630-02`
### Service Names
- `cloudflared-ml110.service`
- `cloudflared-r630-01.service`
- `cloudflared-r630-02.service`
## Next Steps
After completing this setup:
1. ✅ Test access to all three Proxmox hosts
2. ✅ Configure monitoring (see `MONITORING_GUIDE.md`)
3. ✅ Set up alerting (see `MONITORING_GUIDE.md`)
4. ✅ Review access logs regularly
5. ✅ Update policies as needed
## Support
For issues:
1. Check [Troubleshooting Guide](TROUBLESHOOTING.md)
2. Review Cloudflare Zero Trust documentation
3. Check tunnel logs: `journalctl -u cloudflared-*`