Document private Tailscale admin for pfSense and Proxmox.
SPEC-053 WAN lock for SSH/WebGUI; SPEC-054 mirrors the same model for PVE :8006. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
22f475d5be
commit
cf2c0fba23
2 changed files with 171 additions and 0 deletions
99
Infra-Network/ACCESS-BIG1.md
Normal file
99
Infra-Network/ACCESS-BIG1.md
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# ACCESS — Proxmox host **big1**
|
||||
|
||||
**Status:** canónico · **Atualizado:** 2026-09-11
|
||||
**Operador:** Roger
|
||||
**SPEC:** `SPEC-054-PROXMOX-PRIVATE-ADMIN.md`
|
||||
**Uso:** agentes NÃO perguntam de novo — ler este ficheiro.
|
||||
|
||||
> Acesso ao **servidor** (SSH / UI PVE), não a outra sessão de chat.
|
||||
> Cada chat Cursor é isolado.
|
||||
> **Mesmo modelo que o pfSense:** admin pela **Tailscale**, não pela internet.
|
||||
|
||||
---
|
||||
|
||||
## Host
|
||||
|
||||
| Item | Valor |
|
||||
|------|--------|
|
||||
| Nome | **big1** (`big1.itecnologys.com`) |
|
||||
| Software | Proxmox `pve-manager/9.1.4` (kernel 6.17.x) |
|
||||
| **Não confundir** | **BIG** (VM500 RentCharge) ≠ **big1** (Hetzner) |
|
||||
|
||||
---
|
||||
|
||||
## SSH do host (só chave)
|
||||
|
||||
| Item | Valor |
|
||||
|------|--------|
|
||||
| IP público | `95.216.14.162` |
|
||||
| Tailscale | `100.116.138.100` |
|
||||
| Porta | **`4422`** (não 22) |
|
||||
| Utilizador | `root` |
|
||||
| Auth | `PasswordAuthentication no` · `PermitRootLogin without-password` |
|
||||
| Chave dedicada (agente) | `/root/.ssh/cursor_agent_ed25519` |
|
||||
| Fingerprint | `SHA256:srUl0EmzpFjjzRMQ0YUxeuRnEd2BWqEOy90+cu000lk` (`cursor-agent-session-20260909`) |
|
||||
| Host key ED25519 | `SHA256:HaeXqXuXrm7ddAt+6bDj+G43tVRrQBpRKRluEfcnsLg` |
|
||||
|
||||
```bash
|
||||
# Canónico (Tailscale — de qualquer sítio do mundo)
|
||||
ssh -i ~/.ssh/… -p 4422 root@100.116.138.100
|
||||
|
||||
# Emergência só se Tailscale falhar (chave; não senha)
|
||||
ssh -i ~/.ssh/… -p 4422 root@95.216.14.162
|
||||
```
|
||||
|
||||
`4422` na internet pública está **DROP** excepto via Tailscale/`lo` (hardening Spec 045).
|
||||
|
||||
**Nunca colar a chave privada em chat.** Se a sessão já corre no big1, a chave está em `/root/.ssh/`. Se corre noutra máquina, o operador copia por canal privado (`cat` local → `chmod 600` no destino).
|
||||
|
||||
Outras chaves no host (não usar senha): `id_rsa` / fingerprints RSA `root@95.216.14.162`, `root@big1`, ED25519 `PROXMOX-HERTZNER-3`, RSA `root@big`.
|
||||
|
||||
Revogar só a chave do agente:
|
||||
|
||||
```bash
|
||||
# no cliente
|
||||
ssh-keygen -R "[95.216.14.162]:4422"
|
||||
# no big1
|
||||
sed -i '/cursor-agent-session-20260909/d' /root/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
Backup: `/root/.ssh/authorized_keys.bak.*` no big1.
|
||||
|
||||
---
|
||||
|
||||
## HTTPS Proxmox (WebUI) — privado como o pfSense
|
||||
|
||||
| Canal | URL |
|
||||
|-------|-----|
|
||||
| **Tailscale (canónico)** | **https://100.116.138.100:8006/** |
|
||||
| IP público `:8006` | **Bloqueado** (iptables DROP; ~100k+ drops) |
|
||||
| Cert | CN=`big1.itecnologys.com` |
|
||||
|
||||
De qualquer sítio: Tailscale ligado → abrir `https://100.116.138.100:8006/` no browser.
|
||||
|
||||
Persistência: `/etc/network/if-up.d/zzz-tailscale-admin-hardening` + `/etc/iptables/rules.v4`
|
||||
(ACCEPT `tailscale0`/`lo` → `4422,8006`; DROP resto).
|
||||
|
||||
---
|
||||
|
||||
## Guests (a partir do big1)
|
||||
|
||||
```bash
|
||||
qm guest exec <VMID> -- <comando>
|
||||
pct exec <CTID> -- <comando>
|
||||
```
|
||||
|
||||
SSH guest (quando rede OK): `root` / `805353` — **não** abre o host.
|
||||
|
||||
CT130 Obsidian: ver `ACCESS-CT130-OBSIDIAN.md`.
|
||||
|
||||
---
|
||||
|
||||
## Relacionados
|
||||
|
||||
- `ACCESS-CT130-OBSIDIAN.md`
|
||||
- `.cursor/rules/access-big1.mdc`
|
||||
|
||||
## pfSense
|
||||
|
||||
Ver **ACCESS-PFSENSE.md** e **SPEC-053-PFSENSE-PRIVATE-ADMIN.md** (GUI/SSH privados via Tailscale; sem firewall.itecnologys.com público).
|
||||
72
Infra-Network/SPEC-054-PROXMOX-PRIVATE-ADMIN.md
Normal file
72
Infra-Network/SPEC-054-PROXMOX-PRIVATE-ADMIN.md
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
# SPEC-054 — Acesso privado ao Proxmox WebUI (big1) — mesmo modelo que pfSense
|
||||
|
||||
**Criado:** 2026-09-11
|
||||
**Operador:** Roger
|
||||
**Status:** ✅ Já implementado (Spec 045 + hardening iptables); documentado canonicamente aqui
|
||||
**Sistemas:** Proxmox **big1** · Tailscale
|
||||
**Relacionado:** Spec 045 · `ACCESS-BIG1.md` · `SPEC-053-PFSENSE-PRIVATE-ADMIN.md`
|
||||
|
||||
---
|
||||
|
||||
## Objectivo
|
||||
|
||||
Garantir que a **WebUI do Proxmox (`:8006`)** e o **SSH do host (`:4422`)** não são o alvo fácil de bots na internet — acesso admin **via Tailscale**, igual ao pfSense.
|
||||
|
||||
---
|
||||
|
||||
## Decisão (paralelo ao pfSense)
|
||||
|
||||
| Serviço | Público | Canónico (privado) |
|
||||
|---------|---------|---------------------|
|
||||
| Proxmox WebUI `:8006` | **DROP** iptables | `https://100.116.138.100:8006/` |
|
||||
| SSH host `:4422` | **DROP** excepto TS/`lo` | `ssh -p 4422 root@100.116.138.100` |
|
||||
| pfSense WebGUI `:10443` | **BLOCK** WAN (SPEC-053) | `https://100.116.138.100:18443/` |
|
||||
| pfSense SSH `:22` | **BLOCK** WAN (SPEC-053) | `ssh pfsense` (ProxyJump big1) |
|
||||
|
||||
---
|
||||
|
||||
## Como aceder de qualquer sítio
|
||||
|
||||
1. Tailscale no dispositivo
|
||||
2. Browser: **https://100.116.138.100:8006/**
|
||||
3. SSH: `ssh -p 4422 root@100.116.138.100`
|
||||
|
||||
---
|
||||
|
||||
## Implementação (já activa no big1)
|
||||
|
||||
| Item | Local |
|
||||
|------|--------|
|
||||
| if-up hook | `/etc/network/if-up.d/zzz-tailscale-admin-hardening` |
|
||||
| rules persistentes | `/etc/iptables/rules.v4` |
|
||||
| Script referência | `/root/hardening_big1.sh` |
|
||||
|
||||
Regras:
|
||||
|
||||
```bash
|
||||
# ACCEPT só Tailscale + localhost
|
||||
iptables -A INPUT -i tailscale0 -p tcp -m multiport --dports 4422,8006 -j ACCEPT
|
||||
iptables -A INPUT -i lo -p tcp -m multiport --dports 4422,8006 -j ACCEPT
|
||||
# DROP resto
|
||||
iptables -A INPUT -p tcp --dport 4422 -j DROP
|
||||
iptables -A INPUT -p tcp --dport 8006 -j DROP
|
||||
```
|
||||
|
||||
**Não** altera `/etc/network/interfaces` (proibido sem 3 confirmações).
|
||||
|
||||
---
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Tailscale activo no PC/telemóvel
|
||||
- [ ] `https://100.116.138.100:8006/` → login PVE
|
||||
- [ ] Contadores DROP `:8006` sobem (`iptables -L INPUT -n -v | grep 8006`)
|
||||
- [ ] pfSense: ver `ACCESS-PFSENSE.md`
|
||||
|
||||
---
|
||||
|
||||
## Referências
|
||||
|
||||
- `ACCESS-BIG1.md`
|
||||
- `ACCESS-PFSENSE.md`
|
||||
- Spec 045 — hardening 4422/8006
|
||||
Loading…
Reference in a new issue