4 ms·
If you're exposing a developer instance to the network and it has port knocking deployed, why does it matter? The discoverability of such a service is basically
by fao_ 6y ago
If you're exposing a developer instance to the network and it has port knocking deployed, why does it matter? The discoverability of such a service is basically zero.
What are the chances of the cracker finding the exact combination of ports to knock on, and then the exact key to use? If they're able to do that then they are a dedicated attacker and they're mitm'ing a presumably encrypted connection on your network, so you probably have more problems than just one bad machine, they already replicated or replaced a certificate on your machine, or worse.
And if you then expose a service that isn't via the port knocking algorithm, surely that would show up?
> We're not even comfortable with long-lived keys anymore
Can you not just change the key N number of logins and factor in 2FA as well?
I'm not sure how port knocking cannot, at least theoretically, be used in conjunction with the other measures you talked about.
- tptacek 6y agoThe premise of your comment is that you're deploying dev instances on routable IP addresses on networks without default-closed filtering, in a configuration where it's theoretically possible that people could directly get a remote shell into that machine. Don't do that. In AWS (for example), have a dev VPC, and a WireGuard forwarder on it (or, if you're doing things 2010-style, an SSH bastion). If the machine needs to expose 443 directly to the Internet, give it an EIP; have the VPC prevent traffic to anything but 443 (and WireGuard). What, in that architecture, would port knocking even be accomplishing? Keeping the wrong developer off your machine? As for how attackers would break port knocking: if you believe attackers can't passively watch traffic, either directly or through redirection, I have good news for you about how much money you need to spend on encrypting traffic!
- gridlockd 6y agoYou're telling people not to do a simple thing, instead telling them to do a far more complex thing. You do not give a single argument on why the complex thing is meaningfully safer in practice. If security is equal for all practical purposes in either case, this would be the wrong thing to do, because it is easier to fuck up complex things and it's more expensive to manage them. https://xkcd.com/538/ https://xkcd.com/538/
- fao_ 6y agoNot just this, but they're assuming that everyone's server setups are enterprise-grade! People regularly still put raspberry pis and other kinds of low-cost computers on the public internet (William Gibson, for example, hosts hackers.town on a server setup in his (probably metaphorical) basement), and their answer to that is: "Don't do that".
- cheweh 6y agoRe: sniffing, if I were implementing port knocking I would use the "single packet authorization" variant like in knockknock, which makes sniffing much less useful to an attacker.
- tptacek 6y agoAt the point where you're installing network cryptography tools to authorize access to your machine, why not just use a real cryptographic tunnel?
- juliusdavies 6y agoI just prepend a secret letter to every possible ssh account on my server ('root' becomes 'jroot') and so that way "ssh root@myserver.com" can never work even if you know my root password. And this way my defense is opaque to attackers passively monitoring my network traffic (the username is encrypted in the ssh protocol). Oh shit, I just gave away my secret on a public forum... Ha ha, fooled you! I use a different secret letter in actual practice! (Or do I?) p.s. Pretty sure port-knocking offers less protection than this scheme.
- tptacek 6y agoThis does basically approximate my take on port knocking. :)