mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-12 04:10:32 +01:00
Tagged devices should not have access permissions of their owning user #481
Closed
opened 2025-12-29 02:18:47 +01:00 by adam
·
18 comments
No Branch/Tag Specified
main
update_flake_lock_action
gh-pages
kradalby/release-v0.27.2
dependabot/go_modules/golang.org/x/crypto-0.45.0
dependabot/go_modules/github.com/opencontainers/runc-1.3.3
copilot/investigate-headscale-issue-2788
copilot/investigate-visibility-issue-2788
copilot/investigate-issue-2833
copilot/debug-issue-2846
copilot/fix-issue-2847
dependabot/go_modules/github.com/go-viper/mapstructure/v2-2.4.0
dependabot/go_modules/github.com/docker/docker-28.3.3incompatible
kradalby/cli-experiement3
doc/0.26.1
doc/0.25.1
doc/0.25.0
doc/0.24.3
doc/0.24.2
doc/0.24.1
doc/0.24.0
kradalby/build-docker-on-pr
topic/docu-versioning
topic/docker-kos
juanfont/fix-crash-node-id
juanfont/better-disclaimer
update-contributors
topic/prettier
revert-1893-add-test-stage-to-docs
add-test-stage-to-docs
remove-node-check-interval
fix-empty-prefix
fix-ephemeral-reusable
bug_report-debuginfo
autogroups
logs-to-stderr
revert-1414-topic/fix_unix_socket
rename-machine-node
port-embedded-derp-tests-v2
port-derp-tests
duplicate-word-linter
update-tailscale-1.36
warn-against-apache
ko-fi-link
more-acl-tests
fix-typo-standalone
parallel-nolint
tparallel-fix
rerouting
ssh-changelog-docs
oidc-cleanup
web-auth-flow-tests
kradalby-gh-runner
fix-proto-lint
remove-funding-links
go-1.19
enable-1.30-in-tests
0.16.x
cosmetic-changes-integration
tmp-fix-integration-docker
fix-integration-docker
configurable-update-interval
show-nodes-online
hs2021
acl-syntax-fixes
ts2021-implementation
fix-spurious-updates
unstable-integration-tests
mandatory-stun
embedded-derp
prtemplate-fix
v0.28.0-beta.1
v0.27.2-rc.1
v0.27.1
v0.27.0
v0.27.0-beta.2
v0.27.0-beta.1
v0.26.1
v0.26.0
v0.26.0-beta.2
v0.26.0-beta.1
v0.25.1
v0.25.0
v0.25.0-beta.2
v0.24.3
v0.25.0-beta.1
v0.24.2
v0.24.1
v0.24.0
v0.24.0-beta.2
v0.24.0-beta.1
v0.23.0
v0.23.0-rc.1
v0.23.0-beta.5
v0.23.0-beta.4
v0.23.0-beta3
v0.23.0-beta2
v0.23.0-beta1
v0.23.0-alpha12
v0.23.0-alpha11
v0.23.0-alpha10
v0.23.0-alpha9
v0.23.0-alpha8
v0.23.0-alpha7
v0.23.0-alpha6
v0.23.0-alpha5
v0.23.0-alpha4
v0.23.0-alpha4-docker-ko-test9
v0.23.0-alpha4-docker-ko-test8
v0.23.0-alpha4-docker-ko-test7
v0.23.0-alpha4-docker-ko-test6
v0.23.0-alpha4-docker-ko-test5
v0.23.0-alpha-docker-release-test-debug2
v0.23.0-alpha-docker-release-test-debug
v0.23.0-alpha4-docker-ko-test4
v0.23.0-alpha4-docker-ko-test3
v0.23.0-alpha4-docker-ko-test2
v0.23.0-alpha4-docker-ko-test
v0.23.0-alpha3
v0.23.0-alpha2
v0.23.0-alpha1
v0.22.3
v0.22.2
v0.23.0-alpha-docker-release-test
v0.22.1
v0.22.0
v0.22.0-alpha3
v0.22.0-alpha2
v0.22.0-alpha1
v0.22.0-nfpmtest
v0.21.0
v0.20.0
v0.19.0
v0.19.0-beta2
v0.19.0-beta1
v0.18.0
v0.18.0-beta4
v0.18.0-beta3
v0.18.0-beta2
v0.18.0-beta1
v0.17.1
v0.17.0
v0.17.0-beta5
v0.17.0-beta4
v0.17.0-beta3
v0.17.0-beta2
v0.17.0-beta1
v0.17.0-alpha4
v0.17.0-alpha3
v0.17.0-alpha2
v0.17.0-alpha1
v0.16.4
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.16.0-beta7
v0.16.0-beta6
v0.16.0-beta5
v0.16.0-beta4
v0.16.0-beta3
v0.16.0-beta2
v0.16.0-beta1
v0.15.0
v0.15.0-beta6
v0.15.0-beta5
v0.15.0-beta4
v0.15.0-beta3
v0.15.0-beta2
v0.15.0-beta1
v0.14.0
v0.14.0-beta2
v0.14.0-beta1
v0.13.0
v0.13.0-beta3
v0.13.0-beta2
v0.13.0-beta1
upstream/v0.12.4
v0.12.4
v0.12.3
v0.12.2
v0.12.2-beta1
v0.12.1
v0.12.0-beta2
v0.12.0-beta1
v0.11.0
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.1
v0.6.0
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
CLI
DERP
DNS
Nix
OIDC
SSH
bug
database
documentation
duplicate
enhancement
faq
good first issue
grants
help wanted
might-come
needs design doc
needs investigation
no-stale-bot
out of scope
performance
policy 📝
pull-request
question
regression
routes
stale
tags
tailscale-feature-gap
well described ❤️
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#481
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @vbrandl on GitHub (Apr 21, 2023).
Bug description
I want to allow my personal devices to ssh into my servers but not allow my servers to ssh between each other. All devices belong to the same headscale user. My servers are tagged
ssh, my personal devices are untagged and my user is in thesshusergroup.The Tailscale documentation states (https://tailscale.com/kb/1068/acl-tags/#authentication-and-authorization):
According to the Tailscale documentation, I would expect a ACL allowing ssh from
group:sshusertotag:sshto produce the described behaviour. All my untagged devices should be able to ssh into the tagged servers (which they do) but my servers are also able to ssh between each other.To Reproduce
Context info
@github-actions[bot] commented on GitHub (Oct 18, 2023):
This issue is stale because it has been open for 180 days with no activity.
@vbrandl commented on GitHub (Oct 29, 2023):
This seems like a security bug to me, since it does not match the behavior of tailscale. Can anyone with more in-depth knowledge comment on this?
@github-actions[bot] commented on GitHub (Jan 28, 2024):
This issue is stale because it has been open for 90 days with no activity.
@kradalby commented on GitHub (Jan 30, 2024):
Yes, you are right, they should be "detached" from the user when they are tagged. Right now we dont have the code necessary to handle this. I have removed the stale tag for further tracking.
Per now I would classify it as "ACLs are not fully implemented" rather than a security bug as we do not support all features.
@vbrandl commented on GitHub (Jan 30, 2024):
Since there are various places in the headscale documentation, that link to https://tailscale.com/kb/1068/acl-tags, where the "detaching" behavior is described, I would still consider this a security bug. As a user reading the documentation, it is not clear, where and how headscale diverges from tailscale. This seems dangerous to me...
@github-actions[bot] commented on GitHub (May 16, 2024):
This issue is stale because it has been open for 90 days with no activity.
@vbrandl commented on GitHub (May 16, 2024):
I don't think this should be marked as stale and forgotten...
@kradalby commented on GitHub (May 16, 2024):
I agree, removed the mark, we just have not had capacity to get to it.
@kradalby commented on GitHub (Jun 20, 2024):
I made a PR doing some of the untangeling work to make this possible, removing the username from magicdns names. Which should make this a tiny bit easier.
@mikelococo commented on GitHub (Jul 23, 2024):
Are there any suggested strategies for maintaining hostname continuity in the face of this change? This seems like a more-significant-than-usual breaking change in that it's likely to require changes not just to the headscale config but to potentially all services and clients on the tailnet that know each other by their MagicDNS name.
I see in https://github.com/juanfont/headscale/releases/tag/v0.23.0-beta1 that it suggests a temporary workaround, but one that is planned to be removed:
Does
extra_recordsprovide a path to maintain the existing MagicDNS entries? https://github.com/juanfont/headscale/blob/main/docs/dns-records.md discusses the config-format but is silent on the relationship betweenextra_records,base_domain, and auto-assigned MagicDNS entries. Is usingextra_recordsto emulate the old username-style subdomains valid?If one only cares about dns name continuity for the nodes registered to a single user, is modifying the
base_domainof an existing tailscale instance a valid migration strategy? For example, chaging thebase_domainfromexample.comtomyuser.example.comsuch that all nodes now appear at the FQDN previously reserved for nodes registered tomyuser.I feel like this change in particular is likely to generate migration/support questions due to the very disruptive nature of changing existing names, some amount of migration guidance would be quite helpful as the release nears.
@nblock commented on GitHub (Sep 10, 2024):
I tested the
extra_recordsapproach you mentioned and it works:Setup
laptopassigned to useralice: 100.64.0.2, fd7a:115c:a1e0::2serverassigned to userbob: 100.64.0.3, fd7a:115c:a1e0::3Results
Testcase: use_username_in_magic_dns=true
Headscale configuration:
Content of:
/etc/resolv.confonserver:Lookup results (via:
dig +short @100.100.100.100 NAME A/AAAA)Testcase: use_username_in_magic_dns=false and extra records for nodes
Headscale configuration:
Content of:
/etc/resolv.confonserver:Lookup results (via:
dig +short @100.100.100.100 NAME A/AAAA)@kradalby do you consider the above approach as recommended, long-term "workaround" once
dns.use_username_in_magic_dnsis completely removed? If so, I'm going to follow-up with a PR for the DNS docs where this approach is documented for users.@kradalby commented on GitHub (Sep 11, 2024):
I suppose it is a fair workaround, I would recommend not relying on the username based dns names as it will be hard to keep up to date for individuals, but if they are up for it, I suppose it doesnt hurt to call out that this is possible.
@almereyda commented on GitHub (Sep 12, 2024):
Just as a side-note, the IPv6 address used in the example is the same for both nodes:
fd7a:115c:a1e0::2server.bobis probablyfd7a:115c:a1e0::3instead.@nblock commented on GitHub (Sep 12, 2024):
Fixed, thx!
@klausmark commented on GitHub (Mar 1, 2025):
Could a possible workaround be creating a system user and transferring all tagged nodes to this user?
@kradalby commented on GitHub (May 7, 2025):
While tags has not been focused on in this release, it might have been touched up and I would be grateful to hear feedback if the current beta changed anything for this issue.
@almereyda commented on GitHub (Sep 23, 2025):
The overlapping issue #2325 has a little update on this from May 16 https://github.com/juanfont/headscale/issues/2325#issuecomment-2886586434, which might be of interest to people not subscribed there:
Implementation has begun in:
@kradalby commented on GitHub (Dec 11, 2025):
Changes to separate the tags from users has been merged into
mainin #2885 and #2931. I will encourage you to help testing this if you are able to buildmainand run it.I will close this to track progress, but there might still be bugs and the likes related to this change. As part of hardening this feature, we are tracking all related tags bugs over time in v0.28.0 milestone.