bugzilla-daemon at mindrot.org
2022-Sep-12 21:26 UTC
[Bug 3473] New: Option to use non-temporary IPv6 source addresses for sessions
https://bugzilla.mindrot.org/show_bug.cgi?id=3473
Bug ID: 3473
Summary: Option to use non-temporary IPv6 source addresses for
sessions
Product: Portable OpenSSH
Version: v9.0p1
Hardware: Other
OS: Linux
Status: NEW
Severity: enhancement
Priority: P5
Component: ssh
Assignee: unassigned-bugs at mindrot.org
Reporter: bugzilla.mindrot.org at pobox.madduck.net
When IPv6-privacy addresses are in use, Linux generates new IPv6
addresses at regular intervals, and deprecates old ones. Those
deprecated addresses won't get used for new connections, but where they
are active in existing connections, they remain valid until the end of
their validity period. Once the validity lifetime expires, however, the
source address simply vanishes, and all TCP connections using this
address die. Arguably, this could be fixed at kernel-level, and those
addresses kept alive, but hear me out?
I can set `net.ipv6.conf.default.use_tempaddr=1`, and the IPv6 address
encoding my MAC address will be used for all outgoing connections ?
this would fix the problem ? but it would also mean that I become
instantly trackable across locations, because of my MAC address.
With SSH, I also don't generally care about privacy like I do with HTTP
& Co.. In fact, when I log in to remote systems, I *like* it when
reverse DNS works and `w` and `last` and what-have-you-command show
from whence folks are logged in.
I am not sure it's at all possible, but I surely wanted to file a
wishlist issue that SSH offer an option to choose a non-temporary,
non-privacy IPv4 for outgoing connections, as if
`net.ipv6.conf.default.use_tempaddr` was set to 1, not 2.
If it's any help, then here is the `ip addr` output for both types of
addresses:
```
inet6 fc00:39:39:0:defb:48ff:fe15:304/64 scope global dynamic
mngtmpaddr noprefixroute
valid_lft 86345sec preferred_lft 14345sec
inet6 fc00:39:39:0:574a:eeb:ba9c:f9a2/64 scope global temporary
dynamic
valid_lft 85878sec preferred_lft 9933sec
```
The first is static in that it encodes the MAC address. The second is
random. The `mngtmpaddr` is the flag you are after.
I.e.: can SSH be configured to prefer using `mngtmpaddr` source
addresses for outgoing connections over the temporary ones, even if the
system is configured to prefer the temporary ones?
Thanks for your consideration!
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2022-Sep-13 08:59 UTC
[Bug 3473] Option to use non-temporary IPv6 source addresses for sessions
https://bugzilla.mindrot.org/show_bug.cgi?id=3473 --- Comment #1 from martin ? <bugzilla.mindrot.org at pobox.madduck.net> --- I am aware of the `-b` option, and one could obviously write a wrapper around `ssh` to determine the source address to use, and then pass it on to `ssh`. However, not many stories exist where a wrapper around `ssh` solved more problems than it would introduce new ones, so this is best avoided. The best solution would be to influence IPv6 source address selection somehow, but I could not find glibc to export such functionality yet. I'll take it up with them. ;) -- You are receiving this mail because: You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2022-Sep-14 10:06 UTC
[Bug 3473] Option to use non-temporary IPv6 source addresses for sessions
https://bugzilla.mindrot.org/show_bug.cgi?id=3473
--- Comment #2 from martin ? <bugzilla.mindrot.org at pobox.madduck.net>
---
Mind me while I continue talking to myself ;)
The key lies in RFC 5014, I think, and with reference to the section 9
usage example, the following line should do the trick:
preferences = IPV6_PREFER_SRC_CGA | IPV6_PREFER_SRC_HOME |
IPV6_PREFER_SRC_PUBLIC
However, at least my glibc include files' `struct addrinfo` do not
define a field `ai_eflags`, and a bit of browsing the Web doesn't
instill a lot of confidence that this functionality is supported by
glibc.
I'll have to do a bit more research before I dip my toes into the glibc
issue tracking waters about this?
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2022-Sep-16 03:58 UTC
[Bug 3473] Option to use non-temporary IPv6 source addresses for sessions
https://bugzilla.mindrot.org/show_bug.cgi?id=3473
Darren Tucker <dtucker at dtucker.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dtucker at dtucker.net
--- Comment #3 from Darren Tucker <dtucker at dtucker.net> ---
Note that you can use a ProxyCommand to make outbound connections with
whatever address selection policy you want (and, if you use
ProxyUseFdpass, there's no overhead for using that connection). See
OpenBSD's netcat
(https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/netcat.c?annotate=1.219,
function fdpass()) for an example of the latter.
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.