IPv6-ghost-ship: Using TOTP as part of an AWS EC2 IPv6 address
github.com
github.com
Clever idea, wouldn't have thought of it on my own.
That is a pretty bad idea in practice though, the issue(s) being: IP addresses are public (especially to anyone in the middle of your connection) and it's trivially brute-forceable.
But I wasn't aware that TOTP was brute-forcable. What is the mechanism to achieve this (given only a set of IP address and their timestamps)?
There's no way to lock out after N failures or even to rate limit attempts.
Running anything like fail2ban on IP address misses would stop brute forcing in its tracks.
None of this fixes even a passive mitm attack, but it's still better.
Given it’s a single machine with a /80, couldn’t the machine rate limit attempts to any IP in the /80? Ie rate limit by source, and separately rate limit by destination. Cover both bases.
https://github.com/aidansteele/ipv6-ghost-ship/blob/main/mai...
Actually, occurs to me now, the brute force approach could still be used then, so that does have to be mitigated separately (which is possible).
So you would need to brute force SSH (which is already decently hard) AND brute force the IP every 30 seconds.
This would stop the constant and relentless failed auth logs. (Yes there are other methods, but this one is novel and good as well)
Glad to see him on HN front-page.
Is there any practical reason? Like easier routing? Just curious.
That is exactly my question, is there a technical / practical reason for this? Or is it simply an arbitrary prefix?
I'm more curious as to why the /80. This is the very first time I've seen anything less than a /64. Without digging into the details, I'm guessing(?) that the network is a /64 (almost certainly), and on that network there can be /16 nodes (65536), each of which can have /48 (300 Trillion) vhosts.
And I thought I had left CIDR behind with IPv4... Sigh.
Who cares if they need 100 or 200 or 500,000. Give them a /64 or /80 and let them use it for whatever they come up with. As to why specifically /64 and /80 it probably makes the internal net magic easier versus something that isn't 4-byte aligned.
> As to why specifically /64 and /80 it probably makes the internal net magic easier versus something that isn't 4-byte aligned.
Thanks for the insight!
Why would you do that, when there are so many good tools you can use to do it for you way better than your feeble grey meat sack can?
I mean sure, I remember 127.0.0.1 and 8.8.8.8 and 9.9.9.9, but decent passwords these days are no more memorable than ipv6 addresses.
Although frankly the functional part of most V6 addresses isn't that much more. Using ULA, of which there are enough of that organizations need not fear constant overlap like 10/8, the network side of our private internet space is only 6 characters and fixed host addresses are often 2. eg, fde3af::1.
We get cute with 6to4 mappings and some routing games and so they may look more like fde3:af00:12:34::1 but the local subnet is handed out via prefix delegation so end users rarely, if ever, need to care.
How do you fit the fixed 8-bit ULA prefix (fd00::/8) plus the 40 random bits you're supposed to use for the Global ID (per RFC 4193) into six hex characters? It should be at least 12, e.g. fdXX:XXXX:XXXX::/48.
As for remembering addresses, yes, just use (m)DNS. You can even set up an mDNS Discovery Proxy[0][1] so that devices which don't support mDNS themselves can resolve the names via regular unicast DNS.
“You could use the feature to run 281 trillion containers with their own IPs (which I assume is what AWS intended for the feature), but I wanted to find a more fun use.”Operating systems don't support non-64 prefixes very well and v6 wasn't designed to work like that.
Then how do routers work? Docker containers? VMs running on a machine with some part of a /64?
For those like me who are bad with remembering acronyms.