firewall.itecnologys.com uses Access OTP; Tailscale :18443 remains break-glass. Co-authored-by: Cursor <cursoragent@cursor.com>
6.5 KiB
SPEC-053 — Acesso privado ao pfSense (sem exposição pública)
Criado: 2026-09-11
Operador: Roger
Status: ✅ Implementado no big1
Sistemas: Proxmox big1 · VM 100 pfSense · Traefik CT114 · Cloudflare zona itecnologys.com · Tailscale
Relacionado: Spec 045 · SPEC-056 · ACCESS-BIG1.md · role_network_security.txt
Update 2026-09-11 (SPEC-056):
firewall.itecnologys.comvoltou como canal browser via CF Tunnel+Access (não é exposição directa WAN). Tailscale:18443permanece break-glass.
Objectivo
Remover a WebGUI/API do pfSense da internet e definir um canal admin privado (Tailscale + LAN), reduzindo superfície de ataque (brute-force / scanners na login page do firewall).
Decisão
| Antes | Depois |
|---|---|
https://firewall.itecnologys.com → Traefik → https://10.10.10.1:10443 (público) |
Sem routers Traefik para esse Host |
Cloudflare A firewall.itecnologys.com proxied |
A aponta 95.216.14.146, DNS-only (cinzento) |
| Público HTTP(S) | 404 / sem serviço |
| Admin | Tailscale → big1 proxy :18443 · ou LAN :10443 · ou consola PVE |
Como aceder à interface (canónico)
1) Tailscale (recomendado — PC caesar)
https://100.116.138.100:18443/
- TLS até ao pfSense (passthrough).
- Certificado self-signed do pfSense — aceitar no browser.
- Login: credenciais admin do vault (não versionar senhas nesta SPEC).
Serviço no big1 (persistente):
| Item | Valor |
|---|---|
| Unit | pfsense-admin-ts.service |
| Bind | 100.116.138.100:18443 → 10.10.10.1:10443 |
| Pré-requisito | rota 10.10.10.1/32 dev vmbr4000 src 10.10.10.254 (o unit aplica no start) |
systemctl status pfsense-admin-ts
# no big1
curl -sk https://100.116.138.100:18443/ | grep -i title
2) LAN (a partir de uma VM, ex. 101/102)
https://10.10.10.1:10443/
Confirmado: VMs na vmbr4000 alcançam TCP :10443; o CT114 Traefik não deve ser o caminho público.
3) Consola Proxmox
UI PVE → VM 100 → Console (sem Guest Agent no pfSense).
SSH com chave (acesso de qualquer sítio com Tailscale)
Não expor SSH do pfSense na WAN. Canal: Tailscale → big1 ProxyJump → 10.10.10.1:22.
| Item | Valor |
|---|---|
| User | admin |
| Chave no big1 | /root/.ssh/pfsense_roger_ed25519 |
| Fingerprint | SHA256:RRh+KGuEeIum2vOuofepTRxcarjx/UQA+/ODCODTK8U |
| Instalada em | User Manager admin → Authorized Keys (API PATCH 2026-09-11) |
| Canónico detalhado | ACCESS-PFSENSE.md |
Privada (copiar para o laptop)
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACDVe/9zRpBZdFy7JLdrAGzy630bWlItlluVx3On41qOHgAAAKhnsP6cZ7D+
nAAAAAtzc2gtZWQyNTUxOQAAACDVe/9zRpBZdFy7JLdrAGzy630bWlItlluVx3On41qOHg
AAAEB1I+d9Xc1/GCuPZPR1E6Qx32QbikfO7sARFMc2WLD9A9V7/3NGkFl0XLskt2sAbPLr
fRtaUi2WW5XHc6fjWo4eAAAAIXJvZ2VyQHBmc2Vuc2UtYW55d2hlcmUtMjAyNi0wOS0xMQ
ECAwQ=
-----END OPENSSH PRIVATE KEY-----
Pública
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINV7/3NGkFl0XLskt2sAbPLrfRtaUi2WW5XHc6fjWo4e roger@pfsense-anywhere-2026-09-11
No PC (Tailscale) — ~/.ssh/config
Host big1
HostName 100.116.138.100
User root
Port 4422
IdentityFile ~/.ssh/id_ed25519
Host pfsense
HostName 10.10.10.1
User admin
Port 22
ProxyJump big1
IdentityFile ~/.ssh/pfsense_roger_ed25519
IdentitiesOnly yes
StrictHostKeyChecking accept-new
chmod 600 ~/.ssh/pfsense_roger_ed25519
ssh pfsense
No big1 — /root/.ssh/config
Host pfsense
HostName 10.10.10.1
User admin
Port 22
IdentityFile /root/.ssh/pfsense_roger_ed25519
IdentitiesOnly yes
Nota de rede: o host big1 precisa da rota /32 via vmbr4000 (senão cai em vmbr1 e ARP falha). O unit pfsense-admin-ts garante isso ao arrancar.
API (agentes / automação)
| Canal | URL | Uso |
|---|---|---|
| ❌ Público | https://firewall.itecnologys.com/api/v2/ |
Desactivado (sem router Traefik) |
| ✅ Privado | https://10.10.10.1:10443/api/v2/ a partir do big1 (com rota vmbr4000) |
NAT, firewall, apply |
| Auth | Basic api_cursor (vault) |
Não colar segredos em chat |
Alterações NAT/firewall: só com OK explícito do Roger.
Alterações aplicadas (2026-09-11)
- Removidos do Traefik CT114 (
/root/traefik/dynamic.yml):pfsense-Routerpfsense-http-Router
Backup:dynamic.yml.bak-depub-pfsense-*
- Cloudflare zona
itecnologys.com: registo Afirewall→proxied: false. - Criado e enabled:
pfsense-admin-ts.serviceno big1. - Validação: público
firewall.itecnologys.com→ 404; TS:18443→ 200 Login;rently.myvexx.comOK. - Chave SSH
pfsense_roger_ed25519gerada no big1 e instalada emadminvia API (authorizedkeys); loginssh pfsensevalidado (BatchMode OK). - WAN admin lock (2026-09-11): removida EasyRule
pass any→:22; regras block WAN→wanip:22e WAN→wanip:10443. Validado: WAN bloqueado; Tailscale:18443+ LAN SSH/GUI OK. Backup:/root/config-backup-before-wan-admin-lock-*.xmlno pfSense.
Riscos e mitigação
| Risco | Mitigação |
|---|---|
| Login pfSense na internet | Removido (esta SPEC) |
| Comprometer admin = WAN/NAT | Acesso só Tailscale / LAN / consola |
Rota host errada (vmbr1) |
/32 via vmbr4000 no unit |
CT114 sem TCP à :10443 |
Não usar Traefik público; admin via TS proxy no host |
Não reinstalar routers Traefik para firewall.itecnologys.com sem nova SPEC + Cloudflare Access (se um dia for necessário nome público).
Checklist operacional
- Tailscale no PC activo
- Abrir
https://100.116.138.100:18443/→ Login systemctl is-active pfsense-admin-ts= activecurl -sk -o /dev/null -w '%{http_code}\n' https://firewall.itecnologys.com/≠ 200 (esperado 404)- SSH
ProxyJump+ chavepfsense_roger_ed25519no laptop (ssh pfsense)
Fora de âmbito
- Instalar Tailscale dentro do pfSense (opcional futuro).
- Advertise subnet
10.10.10.0/24no Tailscale (opcional futuro). - Cloudflare Access no domínio público (só se reabrir exposição com controlo).
Referências
ACCESS-BIG1.md— SSH/UI do host big1- Spec 045 — hardening 4422/8006 + Tailscale admin
- Credenciais: vault Obsidian /
CREDENCIAIS_COMPLETAS_*(não duplicar senhas aqui)