What do you guys do about usernames / passwords for your local services?
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?
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.
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.
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.
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.
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.
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?
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.
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.
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-
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.
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.
Once I get my Vaultwarden reinstalled, everything will use properly managed passwords, with 2FA for things like servers/services/admin accounts (routers, DNS, etc).
Everything uses OIDC or LDAP if OIDC is not supported. If both are not supported, then it's http basic auth handled by the proxy server, with the auth request directed to the OIDC server again.
Results in universal login for all services.