From f2b74f31c077b32c270df4f1e875e628c336c2af Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Wed, 20 Dec 2023 07:49:03 -0600 Subject: [PATCH] update post --- .../file_server.png | Bin 33142 -> 70604 bytes .../posts/tailscale-ssh-serve-funnel/index.md | 40 ++++++++++++------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/content/posts/tailscale-ssh-serve-funnel/file_server.png b/content/posts/tailscale-ssh-serve-funnel/file_server.png index 83247e8ce427208d9efafb851056717a1a2194e5..f9bee4def38366d423cf294de72330a4274cb23f 100644 GIT binary patch literal 70604 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 z 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 literal 33142 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%0A}diT(2MC`v8=LcXK17jr3M!9a&D*t@;NP9n$Ww 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 w^(3!WjG6OjsO4v diff --git a/content/posts/tailscale-ssh-serve-funnel/index.md b/content/posts/tailscale-ssh-serve-funnel/index.md index 006657c..76a2bec 100644 --- a/content/posts/tailscale-ssh-serve-funnel/index.md +++ b/content/posts/tailscale-ssh-serve-funnel/index.md @@ -2,7 +2,7 @@ title: "Tailscale Feature Highlight: SSH, Serve, and Funnel" date: 2023-12-20 # lastmod: 2023-12-18 -description: "Exploring some of my favorite Tailscale bonus features: SSH, Serve, and Funnel." +description: "Exploring some of my favorite Tailscale addon features: SSH, Serve, and Funnel." featured: false toc: true comment: true @@ -14,7 +14,7 @@ tags: - vpn --- -I've spent the past two years in love with [Tailscale](https://tailscale.com/), which builds on the [secure and high-performance Wireguard VPN protocol](/cloud-based-wireguard-vpn-remote-homelab-access/) and makes it [really easy to configure and manage](/secure-networking-made-simple-with-tailscale/). Being able to easily (and securely) access remote devices as if they were on the same LAN pretty awesome to begin with, but Tailscale is packed with an ever-expanding set of features that can really help to streamline your operations too. Here are three of my favorites. +I've spent the past two years in love with [Tailscale](https://tailscale.com/), which builds on the [secure and high-performance Wireguard VPN protocol](/cloud-based-wireguard-vpn-remote-homelab-access/) and makes it [really easy to configure and manage](/secure-networking-made-simple-with-tailscale/). Being able to easily (and securely) access remote devices as if they were on the same LAN is pretty awesome to begin with, but Tailscale is packed with an ever-expanding set of features that can really help to streamline your operations too. Here are three of my favorites. ### Tailscale SSH Tailscale already takes care of issuing, rotating, and otherwise managing the Wireguard keys used for securing communications between the systems in your tailnet. [Tailscale SSH](https://tailscale.com/kb/1193/tailscale-ssh) lets it do the same for your SSH keys as well. No more manually dropping public keys on systems you're setting up for remote access. No more scrambling to figure out how to get your private key onto your mobile device so you can SSH to a server. No more worrying about who has access to what. Tailscale can solve all those concerns for you - and it does it without impacting traditional SSH operations: @@ -33,7 +33,7 @@ To actually use the feature, though, you'll need to make sure that your Tailscal // Allow all connections. { "action": "accept", "src": ["*"], "dst": ["*:*"] }, ], - "ssh": [ + "ssh": [ // [tl! highlight:start] // Allow all users to SSH into their own devices in check mode. { "action": "check", @@ -41,7 +41,7 @@ To actually use the feature, though, you'll need to make sure that your Tailscal "dst": ["autogroup:self"], "users": ["autogroup:nonroot", "root"] } - ] + ] // [tl! highlight:end] } ``` @@ -85,7 +85,13 @@ Most of my tailnet nodes are tagged with a location (`internal`/`external`) inst } ``` -These ACLs can get [pretty granular](https://tailscale.com/kb/1018/acls), and I think it's pretty cool to be able to codify your SSH access rules in a centrally-managed policy instead of having to manually keep track of which keys are on which systems. +This way, SSH connections originating from `internal` systems will be accepted, while those originating from untagged systems[^web1] will have the extra check for tailnet authentication. You might also note that this policy prevents connections from tagged systems as the `root` user, requiring instead that the user log in with their own account and then escalate as needed. + +[^web1]: Or the Tailscale admin web console - as we'll soon see. + +These ACLs can get [pretty granular](https://tailscale.com/kb/1018/acls), and I think it's pretty cool to be able to codify your SSH access rules in a centrally-managed[^vcs] policy instead of having to manually keep track of which keys are on which systems. + +[^vcs]: And potentially [version-controlled](https://tailscale.com/kb/1204/gitops-acls). Once SSH is enabled on a tailnet node and the ACL rules are in place, you can SSH from a Tailscale-protected system to another as easily as `ssh [hostname]` and you'll be connected right away - no worrying about keys or fumbling to enter credentials. I think this is doubly cool when implemented on systems running in The Cloud; Tailscale provides the connectivity so I don't need to open up port 22 to the world. @@ -100,19 +106,21 @@ Last login: Tue Dec 19 04:17:15 UTC 2023 from 100.73.92.61 on pts/3 john@tsdemo:~$ # [tl! .nocopy:end] ``` -As a bonus, I can also open an SSH session from the Tailscale [admin console](https://login.tailscale.com/admin/machines): +As a bonus, I can also open an SSH session from the Tailscale [admin console](https://login.tailscale.com/admin/machines)[^web2]: ![web_ssh_1](web_ssh_1.png) ![web_ssh_2](web_ssh_2.png) ![web_ssh_3](web_ssh_3.png) +[^web2]: SSH connections originating from the admin portal are associated with that logon, so they will follow the `check` portion of the policy. The first attempt to connect will require reauthentication with Tailscale, and subsequent connections will auto-connect for the next 12 hours. + That even works from mobile devices, too! ### Tailscale Serve I've [mentioned in the past](/federated-matrix-server-synapse-on-oracle-clouds-free-tier/#reverse-proxy-setup) how impressed I was (and still am!) by the [Caddy webserver](https://caddyserver.com/) and how effortless it makes configuring a reverse proxy with automatic TLS. I've used it for a *lot* of my externally-facing projects. -Caddy is great, but it's not quite as easy to use for internal stuff - I'd need a public DNS record and inbound HTTP access in order for the ACME challenge to complete and a cert to be issued and installed. That's probably not a great fit for wanting to proxy my [Proxmox host](/ditching-vsphere-for-proxmox/#on-the-host). That's where the capabilities of [Tailscale Serve](https://tailscale.com/kb/1312/serve) really come in handy. +Caddy is great, but it's not quite as easy to use for internal stuff - I'd need a public DNS record and inbound HTTP access in order for the ACME challenge to complete and a cert to be issued and installed, or I would have to manually create a certificate and load it in the Caddy config. That's probably not a great fit for wanting to proxy my [Proxmox host](/ditching-vsphere-for-proxmox/#on-the-host). And that is where the capabilities of [Tailscale Serve](https://tailscale.com/kb/1312/serve) really come in handy. > *Tailscale Serve is a feature that allows you to route traffic from other devices on your Tailscale network (known as a tailnet) to a local service running on your device. You can think of this as sharing the service, such as a website, with the rest of your tailnet.* @@ -144,7 +152,7 @@ The command also supports some useful flags: Update without interactive prompts (default false) ``` -Tailscale serve be used for spawning a simple file server (like this one which shares the contents of the `/demo` directory): +Tailscale Serve can be used for spawning a simple file server (like this one which shares the contents of the `/demo` directory): ```shell sudo tailscale serve /demo # [tl! .cmd] Available within your tailnet: # [tl! .nocopy:5] @@ -157,7 +165,9 @@ Press Ctrl+C to exit. ![file server](file_server.png) -Or for proxying another web server, like [Cockpit](https://cockpit-project.org/) which runs on `https://localhost:9090`: +Note that this server is running in the foreground, and that it's serving the site with an automatically-generated automatically-trusted [Let's Encrypt](https://letsencrypt.org/) certificate. + +I can also use Tailscale Serve for proxying another web server, like [Cockpit](https://cockpit-project.org/), which runs on `http://localhost:9090`: ```shell sudo tailscale serve --bg 9090 # [tl! .cmd] Available within your tailnet: # [tl! .nocopy:6] @@ -171,7 +181,9 @@ To disable the proxy, run: tailscale serve --https=443 off ![cockpit](cockpit.png) -But what if I want to proxy another service (like [netdata](https://www.netdata.cloud/), which runs on `http://localhost:19999`) at the same time? I can either proxy it on another port: +This time, I included the `--bg` flag so that the server would run in the background, and I told it to proxy port `9090` instead of a file path. + +But what if I want to proxy *another* service (like [netdata](https://www.netdata.cloud/), which runs on `http://localhost:19999`) at the same time? I can either proxy it on another port, like `8443`: ```shell sudo tailscale serve --bg --https 8443 19999 # [tl! .cmd] Available within your tailnet: # [tl! .nocopy:9] @@ -204,7 +216,7 @@ To disable the proxy, run: tailscale serve --https=443 off ![netdata](netdata.png) {{% notice note "Stubborn Apps" %}} -Not all web apps adapt well to being served at a different path than they expect. It works fine for netadata, but did not work with Cockpit (at least not without digging deeper into the configuration to change the base URL). But hey, that's why we've got options. +Not all web apps adapt well to being served at a different path than they expect. It works fine for netadata, but did not work with Cockpit (at least not without digging deeper into the configuration to change the base URL). But hey, that's why we've got options! {{% /notice %}} ### Tailscale Funnel @@ -274,8 +286,8 @@ Now only nodes with the `funnel` tag will be able to enable Funnel. From there, the process to activate Tailscale Funnel is basically identical to that of Tailscale Serve - you just use `tailscale funnel` instead of `tailscale serve`. -{{% notice warning "Serve vs Funnel" %}} -A given port can be served via Serve (only available within the tailnet) *or* Funnel (available within the tailnet and to the internet), but not both. If you want to Serve one resource and Funnel another, you'll need to use different ports for that. +{{% notice warning "Funnel Ports, Not Resources" %}} +A Funnel configuration is applied to the **port** that Tailscale Serve uses to make a resource available, not the resource itself. In the example above, I have both Cockpit and netdata being served over port `443`. If I try to use `sudo tailscale funnel --set-path /netdata 19999` to Funnel just the netdata instance, that will actually Funnel *both* resources instead of just the one. {{% /notice %}} If I want to make the netdata instance available publicly while keeping Cockpit internal-only, I'll need to serve netdata on a different port. Funnel [only supports](https://tailscale.com/kb/1223/funnel#limitations) ports `443`, `8443`, and `10000`, so I'll use `8443`: @@ -292,7 +304,7 @@ To disable the proxy, run: tailscale funnel --https=8443 off It will take 10 or so minutes for the public DNS record to get created, but after that anyone on the internet (not just within my tailnet!) would be able to access the resource I've shared. -I can use `tailscale serve status` to confirm that both Cockpit and netdata are served internally on port `443`, and just netdata is published externally on port `8443`: +I can use `tailscale serve status` to confirm that both Cockpit and netdata are served internally on port `443`, but only netdata is published externally on port `8443`: ```shell sudo tailscale serve status # [tl! .cmd] # [tl! .nocopy:9]