PHP, TLS, etc… We appear to be facing a tsunami of vulnerabilities being discovered in record time. Further, the window to act on these vulnerabilities has basically closed to zero; hackers’ tools now automatically fold the very latest vulnerabilities into their botnets within minutes/hours of discovery. I have always been extremely reluctant to expose any of my services - even with the latest and greatest security tools. My choice to stay totally within the confines of tailscale seems vindicated given this week’s news. How are you all taking this?


I also practice domain/IP obfuscation in addition to high port:
This eliminates scanning almost completely. They can’t find an IP to go with my base domain, first of all. And even if a bot is scanning the IPv4 address space and all the ports and it finds the reverse proxy it can’t get past it without knowing a FQDN. I still get the occasional hit from such bots but it’s very rare.
Also, all my public services are secured with mTLS (preferably) or at the very least a long key in a custom HTTP header (both enforced at the proxy).
You should also use a default self-signed cert for something generic like “localhost” on your reverse proxy so random IP scan don’t see any domain when they hit your IP, but legitimate queries coming through the domain name still see the right cert.
In my case I have defined a fallback in Caddy so any request that doesn’t match one of the explicitly handled domains will be an error.
I use a
route {}block withhandle {}blocks inside it, and the last handle has anerrordirective in it.https://*.example.com { route { @foo host "foo.example.com" handle @foo { reverse_proxy http://whatever:12334/ } ... more proxy hosts ... handle { error 400 } } }The
routeblock is essential here because handlers inside a route block are processed strictly in the order they are defined. Outside route blocks that is not true, caddy will try to optimize and can execute directives in any order it sees fit.Thank you for sharing this, vey insightful