What do you guys do about usernames / passwords for your local services?

AMillionMonkeys@lemmy.world to Selfhosted@lemmy.world – 63 points –

Basically every local service is accessed via a web interface, and every interface wants a username and password. Assuming none of these services are exposed to the internet, how much effort do you put into security here?
Personally, I didn't really think about it when I started. I make a half-assed effort at security where I don't use "admin" or anything obvious as the username, and I use a decent-but-not-industrial password - but I started reusing the u/p as the number of services I'm running grew. I have my browsers remember the u/ps.
Should one go farther than this? And if so, what's the threat model? Is there an easier way?

83

Public-facing: Password generator, stored in a password manager.

Internal LAN: Everything gets the same re-used, low-effort password.

Nobody is going to hack my CUPS server.

Yes, basically on internal LAN I put admin admin to everything.

But if they do, they have every password for all your stuff. hopefutlly you have Ipv6 disabled

Just because each device has a globally routable IP address doesn't mean they can be accessed from outside your LAN. You still have to add a firewall rule to open a port to the device.

I was referring to the latest CVE for ipv6 where an attacker just sends a flood of IPv6 packets which puts things like WindowsOS into a mode for remote code execution, even via webpage. Windows remedy right now is turnoff all ipv6 capability, as they don't have a fix yet

do self hosters use Windows? i would have thought most people were running Linux

I have seen both. Typically you expect somebody self hosting to be about privacy and freedom, and thus choosing Linux, but there are WinFans too

That still wouldn't get past your firewall

Apparently crafted webpage could be a vector. Router has to block fragmented packages also. The issue is non savvy people get shipped a router with Ipv6 firewall turned off (as a shit default setting) and don't know to check it. And as it is a worm type it can come in with otger binaries

That's a Windows problem, not an IPv6 problem.

Of course, but for a person with all machines on network having same user name and password it could become a larger problem

IPv6 should not be disabled under any circumstances.

In fact, many devices in my house have IPv4 disabled. Disabling IPv4 on my public-facing SSH reduced the attack traffic to zero.

IPv4 is shit.

Why not disable ipv6 for local lan?

I disable It on everything for next decade until it's mainstream.
.

IP4 is shit

Lol, right, right. It's only run the internet for what, 40 years now?

Guess you missed the recent gaping hole in IP6 on Windows?

IP6 is only really useful in large (i.e. enterprise) environments . It offers no practical benefit to small networks at the moment.

And even enterprise will only switch as they build out new infrastructure. The cost to switch is very high, and the risk is far more concerning than any potential benefit.

It offers no practical benefit to small networks at the moment.

The internet is not a “small network”, and I assume your small network is connected to it. You need local IPv6 routing to have access to IPv6-only hosts which are becoming more and more because it’s reasonable in terms of price to get an IPv6 block unlike IPv4 blocks which are being auctioned for tens of thousands of dollars at this point (!!!!).

Also restoring global addressing is a huge benefit. P2P communications in IPv4 has become an insane mess of workarounds due to lack of addresses and this becomes worse the more layers of NAT you stick behind each other to try to save your ass from the rising tide.

I’m really sick of hearing these idiotic excuses over and over, “it’s hard” this, “it’s unsafe” that, “it’s expensive”, “understanding the eldritch secrets of IPv6 has driven 5 of my colleagues into madness” skill issue. THERE ARE NO MORE IPV4 ADDRESSES. So unless your network is so fucked that you haven’t managed to fix it in 26 years, since IPv6 has been standardized, or it really is just an internal network with no outward facing services where it doesn’t matter when someone who just has IPv6 can’t access it because they wouldn’t be able to access it anyway, and you’re not some kind of ISP, you have no reason not to have support for it at this point and you absolutely never have a reason to tell people it’s not “useful” because that is straight up wrong in the general case even if it might be true for your situation.

How many people are running public facing windows servers in their homelab/self-hosted environment?

And just because "it's worked so far" isn't a great reason to ignore new technology.
IPv6 is useful for public facing services. You don't need a single proxy that covers all your http/s services.
It's also significantly better for P2P applications, as you no longer need to rely on NAT traversal bodges or insecure uPTP type protocols.

If you are unlucky enough to be on IPv4 CGNAT but have IPv6 available, then you are no longer sharing reputation with everyone else on the same public IPv4 address. Also, IPv6 means you can get public access instead of having to rely on some RPoVPN solution.

Any device on the network would make it vulnerable, what does a server have to do with anything?

If the router/gateway/network (IE not local) firewall is blocking forwarding unknown IPv6, then it's a compromised server connected to via IPv6 that has the ability to leverage the exploit (IE your windows client connecting to a compromised server that is actively exploiting this IPv6 CVE).

It's not like having IPv6 enabled on a windows machine automatically makes it instantly exploitable by anyone out there.
Routers/firewalls will only forward IPv6 for established connections, so your windows machine has to connect out.

Unless you are specifically forwarding to a windows machine, at which point you are intending that windows machine to be a server.

Essentially the same as some exploit in some service you are exposing via NAT port forwarding.
Maybe a few more avenues of exploit.

Like I said. Why would a self-hoster or homelabber use windows for a public facing service?!

… all it can take is going to a website from a windows device… maybe less, it was literally discovered a couple days ago…

It's not like having IPv6 enabled on a windows machine automatically makes it instantly exploitable by anyone out there.

Yes it actually kinda does, that’s why this exploit is considered the highest priority and critical.

But sure… downplay it, because we only think servers are at risk…

Yeesh buddy.

If your windows computer makes an outbound connection to a server that is actively exploiting this, then yes: you will suffer.

But having a windows computer that is chilling behind a network firewall that is only forwarding established ipv6 traffic (like 99.9999% of default routers/firewalls), then you are extremely extremely ultra unlucky to be hit by this (or, you are such a high value target that it's likely government level exploits). Or, you are an idiot visiting dogdy websites or running dodgy software.

Once a device on a local network has been successfully exploited for the RCE to actually gain useful code execution, then yes: the rest of your network is likely compromised.
Classic security in layers. Isolatation/layering of risky devices (that's why my homelab is on a different vlan than my home network).
And even if you don't realise your windows desktop has been exploited (I really doubt that this is a clean exploit, you would probably notice a few BSOD before they figure out how to backdoor), it then has to actually exploit your servers.
Even if they turn your desktop into a botnet node, that will very quickly be cleaned out by windows defender.
And I doubt that any attacker will have time to actually turn this into a useful and widespread exploit, except in targeting high value targets (which none of us here are. Any nation state equivalent of the US DoD isn't lurking on Lemmy).

It comes back to: why are you running windows as a server?

ETA:
The possibility that high value targets are exposing windows servers on IPv6 via public addresses is what makes this CVE so high.
Sensible people and sensible companies will be using Linux.
Sensible people and sensible companies will be very closely monitoring what's going on with windows servers exposed by ipv6.
This isn't an "ipv6 exploit". This is a windows exploit. Of which there have been MANY!

IPv6 was just found to have a critical exploit, and the solution is to disable it.

The only windows machine on my home network is the backup Windows laptop that I only boot when I need to run something like Odin to flash a tablet or some niche Nintendo switch management software.

And now your entire system/network is vulnerable because of it. Great idea!

Yes, the machine that stays off 363 days of the year is such a security risk to my home network 🙄

Great, so let’s suppress a warning because YOU are fine…

Maybe other people don’t realize the issue, but of course you aren’t thinking about anyone but yourself now aren’t you?

I was referring to the latest CVE for ipv6 where an attacker just sends a flood of IPv6 packets which puts things like WindowsOS into a mode for remote code execution, even via webpage. Windows remedy right now is turnoff all ipv6 capability, as they don't have a fix yet

I know about that one. The 800MB "fix" for it has been crashing machines quite hard.

I don't have that problem because I don't run Windows.

Windows is shit.

Is ipv6 that bad.

I keep hearing there is no real benefit and risk to it?

Ipv6 is fantastic, it has less overhead than v4 and removes the need for NAT or other translation. Support can be spotty in cheaper and older devices but there's no reason not to learn and adopt it where possible.

You have to take extra steps to ensure that the benefits of NAT aren't lost when you switch to ipv6. Everyone knowing exactly which device you're using because a single ipv6 IP per-device is the default.

Ipv6 is nice, but also you need to know what you're doing to get all the benefits without any of the downsides.

Most devices generate a random IPv6 address and change it frequently. Your browser fingerprint is much more useful for device tracking than your IP address anyways.

+1, your list of browser extensions, list of plugins and list of available fonts are also available to anyone trying to fingerprint you. This idea that NAT will somehow obscure you enough to be anonymous online is security voodoo.

Your firewall should take care of that, it's pretty rare to be connected directly without one and by default any decent routing package will filter incoming traffic that's not in the state tracking table. NAT isn't designed for security, any security benefit it provides is a side effect rather than the intended purpose.

Edit: check out ipv6 privacy extensions too, there are solutions there that can reduce info disclosure if that's a concern. You can accomplish many of the same benefits of NAT with v6 features without the downsides that NAT brings.

Not access, knowledge. Giving a specifically unique device identifier every time you visit a page is different from the website guessing if you visited recently based on your screen size and cookies.

You have to set up ipv6 to change regularly to avoid that.

I mean, the horror of having to tick a box to use rotating v6 addresses. These are all solved problems, they're not a flaw worth ignoring the entire ipv6 protocol over. Most major operating systems have moved to stable privacy preserving addresses by default, that's true, but it's not all that difficult to turn on address randomization and rotation either. And, hell, if you're that married to NAT as security just use NAT66 and call it a day, nothing about NAT is exclusive to ipv4.

There was an article that many Routers were shipped with Ipv6 firewall off, and less savvy users would never know to check

Everything gets a different, long random password. It's not a hassle because my password manager handles everything. It's bitwarden for whatever I may need to access elsewhere, few admin logins there, keepass everything else.

All my local services follow the same rules as any other service. I have no idea what the passwords are, they are all random and long as fuck in my password manager. 2FA with a hardware key where allowed, TOTP if not.

What possible reason would anyone have to "relax" or security on local services? That would mean having 2 streamlines which only adds friction.

I strongly suggest you move all your credentials out of your browsers and into a password manager.

Apps: SSO via Authentik where I can, unique user/pass combo via Bitwarden where I can't (or, more realistically, don't want to).

General infra: Unique RSA keys, sometimes Ed25519

Core infra: Yubikey

This is overkill for most, but I'm a systems engineer with a homelab, so it works well for me.

If you're wanting to practice good security hygiene, the bare minimum would be using unique cred pairs (or at least unique passwords) per app/service, auto-filled via a proper password manager with a browser extension (like KeePassXC or Bitwarden).

Edit: On the network side, if your goal is to just do some basic internal self-hosting, there's nothing wrong with keeping your topo mostly flat (with the exception of a separate VLAN for IoT, if applicable). Outside of that, making good use of firewalls will help you keep things pretty tight. The networking rabbit hole is a deep one, not always worth the dive unless you're truly wanting to learn for the sake of a cert/job/etc.

Unify them.

Now I have a full FOSS Active Directory for SSO logging into computers and services that supports 2FA where desired.

Keycloak to provide OIDC, although in hindsight I should have gone with Authelia Authentik

I’ve been looking into some kind of simple SSO to handle this. I’m tired of entering passwords (even if it’s all done by the password manager) a single authentication point with a single user would be great.

Keycloak and friend are way too complex. Ideally I would like to have something in my nginx reverse proxies that would handle authentication at that level and tell the final app what user is logged on in some safe way.

any oauth (I use kanidm) and oauth2-proxy solves that and now you can easily use passkeys to log into your intranet resources.

Never tried Authelia or Authentik but I've heard good things about them. I'm sure one of them will integrate with a reverse proxy.

Those solutions are still way too complex and corporate to my likes. :(

I'd like to encourage you to take another look at Authentik, it sounds like their Proxy Provider is exactly what you're looking for: https://docs.goauthentik.io/docs/providers/proxy/

Authentik can certainly get complex, but only if you want/need it to. It is by far the most user-friendly IDP solution I've found, especially for what it offers. Their docs also have step-by-step guides for how to integrate a lot of popular self-hosted apps.

Only takes a couple mins to spin up a test environment using their Docker compose file: https://docs.goauthentik.io/docs/installation/docker-compose

Thanks, I’ll have another look.

For sure! If you do end up taking it for a spin, feel free to ping me with any questions.

Same way I do at work. Different accounts and passwords for each service internally. Any service exposed to the net (game and email servers mostly) is on a segregated network and each machine has unique credentials to help prevent lateral movement. Self hosted Bitwarden tracks it all.

I do it for the same reason I require outbound firewall rules for almost everything on my home network - I’m a masochist.

Since I'm already using Bitwarden, generating and storing passwords is easy. I use my name as the username, though that user doesn't have admin privileges.

Personally keep it very simple using same username and password for my services. But I also don't host anything of value, just messing around with a few different projects I come across. Yes it's not good practice, but nothing is exposed works well for me.

Like several people here, I've also been interested in setting up an SSO solution for my home network, but I'm struggling to understand how it would actually work.

Lets say I set up an LDAP server. I log into my PC, and now my PC "knows" my identity from the LDAP server. Then I navigate to the web UI for one of my network switches. How does SSO work in this case? The way I see it, there are two possible solutions.

  • The switch has some built-in authentication mechanism that can authenticate with the LDAP server or something like Keycloak. I don't see how this would work as it relies upon every single device on the network supporting a particular authentication mechanism.
  • I log into and authenticate with an HTTP forwarding server that then supplies the username/password to the switch. This seems clunky but could be reasonably secure as long as the username/password is sufficiently complex.

I generally understand how SSO works within a curated ecosystem like a Windows-based corporate network that uses primarily Microsoft software for everything. I have various Linux systems, Windows, a bunch of random software that needs authentication, and probably 10 different brands of networking equipment. What's the solution here?

Your confusion is confusing me lol

I don't see how this would work as it relies upon every single device on the network supporting a particular authentication mechanism.

Wdym? That's not a thing, you can have some devices on LDAP some with local logins and some with OIDC or any other combination. Authentication is generally an application layer thing and switches operate at layer 2 maybe 3 if it's doing some routing. As long as your network has a functioning DHCP server the web UI of the switch will be able to communicate with the LDAP server that you configure it to

I think I'm misunderstanding how LDAP works. It's probably obvious, but I've never used it.

If my switch is expecting a username and password for login, how does it go from expecting a web login to "the LDAP server recognizes this person, and they have permissions to access network devices, so I'll let them in."?

Also, to be clear, I'm referring to the process of logging in and configuring the switch itself, not L2 switching or L3 routing.

If the switch supports it, you login with local credentials first, navigate to its config page and configure LDAP under there. You'll tell it the IP address of the LDAP server as well as give it its client side configuration. You give it a bind account credentials (a dedicated service account with as minimal permissions as needed) that it uses to lookup the users on the server as well as Organization Unit paths and such

When a user goes to login the switch will query the provided credentials against the LDAP server, if it's valid the LDAP server will respond with a success and the switch will log the user in

Generally there is always a local account fallback in the event that the LDAP server is unavailable for whatever reason

I have a local instance of Vaultwarden that I use to generate and store the credentials for my local services, and I use normal cloud-hosted Bitwarden for all my other passwords.

My goal is to have all my services being a reverse proxy, even on LAN, and use passwordless authentication via passkeys/webauthn. I haven’t yet tried it but have been eyeing this: https://github.com/stonith404/pocket-id?ref=selfh.st

I am very much looking for feedback on this self-proclaimed simple oidc. Authentik is not as bad as Keycloak, but from what I reckon theres still room for improvement! -fingers crossed-

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

Fewer Letters More Letters
CGNAT Carrier-Grade NAT
DHCP Dynamic Host Configuration Protocol, automates assignment of IPs when connecting to a network
DNS Domain Name Service/System
HTTP Hypertext Transfer Protocol, the Web
IP Internet Protocol
IoT Internet of Things for device controllers
NAT Network Address Translation
SSH Secure Shell for remote terminal access
SSO Single Sign-On
nginx Popular HTTP server

[Thread #927 for this sub, first seen 20th Aug 2024, 14:45] [FAQ] [Full list] [Contact] [Source code]

Currently I have terrible local password rules.

Once I get my Vaultwarden reinstalled, everything will use properly managed passwords, with 2FA for things like servers/services/admin accounts (routers, DNS, etc).

Don't remember the tool, maybe someone here does, but there's some web service out there that boasts a "no storage" approach. You provide some URI and some other value (maybe username) and it makes a password for you, but it's always the same for a given combination. Basically it's a purely functional generator.

Downside would be forgetting a minor detail (Did it end with a slash or not? What was the username?) or the site going down. You can achieve the same thing yourself with a hash calculator but those passwords are a bitch to type in.

tl;dr just use KeePass

I use anzo and as password an empty string. It's never been guessed :p