Maybe I’m using the wrong terms, but what I’m wondering is if people are running services at home that they’ve made accessible from the internet. I.e. not open to the public, only so that they can use their own services from anywhere.

I’m paranoid a f when it comes to our home server, and even as a fairly experienced Linux user and programmer I don’t trust myself when it comes to computer security. However, it would be very convenient if my wife and I could access our self-hosted services when away from home. Or perhaps even make an album public and share a link with a few friends (e.g. Nextcloud, but I haven’t set that up yet).

Currently all our services run in docker containers, with separate user accounts, but I wouldn’t trust that to be 100% safe. Is there some kind of idiot proof way to expose one of the services to the internet without risking the integrity of the whole server in case it somehow gets compromised?

How are the rest of you reasoning about security? Renting a VPS for anything exposed? Using some kind of VPN to connect your phones to home network? Would you trust something like Nextcloud over HTTPS to never get hacked?

  • droidpenguin@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 years ago

    Ya my paranoia only allows me to expose Wireguard to access everything. I sleep better at night knowing that’s the only thing exposed. Too many instances of major companies getting hacked who have dedicated security teams to manage that. I am one person, learning to manage my own stuff in my free time.

  • ulemmyagain@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    I only have my (non default) ssh port exposed. I just use an ssh tunnel to access all my services. I don’t know if this is a good idea or not, but it works for me.

    • carzian@lemmy.ml
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 years ago

      Security through obfuscation is never a good idea. Best practices for exposing ssh (iirc):

      • disable root login (or at least over ssh)
      • disable password login over ssh, use key pairs instead
      • use fail2ban to prevent brute forcing
      • install security updates frequently

      All of those are pretty easy to do, and after that you’re in a really good place.

      I don’t see a problem with ssh tunneling to access services, as long as the ssh server is secured correctly

      • ulemmyagain@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 years ago

        I should install fail2ban. I already have everything else covered. I’ve only heard of fail2ban, not very familiar with it. Is it necessary if password login is disabled? Can you brute force ssh keys? I really appreciate your advice.

        • carzian@lemmy.ml
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 years ago

          I definitely recommend you do your own research into this. Brute forcing ssh keys should be practically impossible. Is it necessary to install fail2ban with password login disabled? Not sure, I’m of the opinion that it won’t hurt, just one more line of defense. It’s pretty easy to setup.

  • MaxMouseOCX@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    Run your own vpn, and only allow access to your services remotely if they are coming through that vpn.

    Now you’ve shifted some of the security over to how secure your vpn server’s authentication is.

    • witten@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 years ago

      Why not use Wireguard from your phones all the time, even at home? Just performance?

        • witten@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 years ago

          I don’t know about your particular use case, but I’ve found that some apps experience problems when the IP address of a resource they’re using changes out from under them. Like either they experience temporary connectivity issues during the transition or even just stop being able to reach the resource until restarted. However if your setup is working for you, that’s great!

            • witten@lemmy.world
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              2 years ago

              The app that comes to mind as having problems with changing IPs is the Home Assistant app. It would simply lose connectivity when the IP changed and never do another DNS lookup to connect again… I always had to restart it. The “solution” for me was not to change IPs and just leave Wireguard on. It’s cool that Ultrasonic handles it though.

          • a1studmuffin@aussie.zone
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 years ago

            I’m confused why the IP address of a resource is changing for you when you’re moving in/out of the wireguard tunnel? In my setup the LAN IP addresses always stay the same whether I’m on the local network or accessing remotely, It’s just the route to them that changes (over a different ethernet adapter). Perhaps that’s what you meant, or there’s some crazy configs out there I’m unaware of.

            • witten@lemmy.world
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              2 years ago

              I fully admit I may be doing this wrong. But in order to connect to a server over Wireguard I’m connecting to it over its Wireguard IP address. (And if I’m not connecting to it over Wireguard I don’t connect to it over a Wireguard IP address.) It’s relevant to note that I’m not using Wireguard as a traditional VPN where all traffic bound for the internet is tunneled over Wireguard. Instead, I’m using it strictly for point-to-point tunneling from a client to one of my servers. In other words, my default routes don’t go to Wireguard. Maybe that’s the difference here?

    • Semi-Hemi-Demigod@kbin.social
      link
      fedilink
      arrow-up
      0
      ·
      2 years ago

      I was able to reduce that to just SSH by having my Wireguard host on a VPS and connecting out from home. Running SSH on 443 is a neat idea.

        • Semi-Hemi-Demigod@kbin.social
          link
          fedilink
          arrow-up
          0
          ·
          2 years ago

          It’s more about gaining access from inside a network that doesn’t allow outbound on 22. For the web to work it would need 443 so connecting out on 443 might work

              • Manifish_Destiny@lemmy.world
                link
                fedilink
                arrow-up
                0
                ·
                2 years ago

                I’m not missing any point. It should be clear to people who don’t understand security that running a protocol on a different port doesn’t mean shit for safety. “Because it doesn’t get as much attention” wouldn’t mean anything to any enterprise firewall the moment it’s not an http header.

  • I’ve had 22, 80, & 443 open for literal decades. Key auth only on ssh. 80 & 443 rev proxy to inside web services I want to expose only. Also host game servers as needed.

    Keep your stuff up to date and follow best practices for securing it. Use things like crowdstrike. If you can segment your network, go ahead.

    Unless you have a target on your head your main concern is going to be scripts looking for vulnerabilities.

    • EddyBot@feddit.de
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 years ago

      This year I started using DynDNS with only my IPv6 address since IPv4 is behind CGNAT and it actually works quite well nowadays

      • kratoz29@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 years ago

        What do you mean works? Like you could access from everywhere some services like Plex or Nextcloud?

          • kratoz29@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 years ago

            Ok, I’m not sure of how exactly this works, but I’m gonna check it out since I have IPv6 addresses.

            Just to be clear, even from IPv4 only can access my exposed services?

            • EddyBot@feddit.de
              link
              fedilink
              English
              arrow-up
              0
              ·
              2 years ago

              If you expose ports on IPv4 or IPv6 (port forwarding) anyone can access the service behind these ports if they know your address but so do you too

  • BCsven@lemmy.ca
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    I’m somewhat like you, in that I recognize I’m not a network guru. My home server with containers, as well as a few other devices are blacklisted from accessing the internet at my router. When i have needed outside access I have one machine with wireguard and some ip forwarding/masqurade etc so I have one connection in but can see the LAN for logging into stuff “locally”. The only pain is non internet access devices losing sync with a time server.

  • Bristlerock@kbin.social
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    Exposed is the right term. Other than my Wireguard VPN port, everything I have exposed is HTTPS behind Authelia MFA and SWAG.

    I’m tempted to switch Wireguard for Tailscale, as the level of logging with WG has always bothered me. Maybe one day.

  • effingjoe@kbin.social
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    2 years ago

    I think many of us are using reverse proxies, and opening port 443 (https) and maybe port 80 (http).

      • Aiden@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        0
        ·
        2 years ago

        For lots of things I self host that I wanna expose, I’ll just open a random port like 6952 and then reverse proxy w/ nginx on my web server. Not sure how secure it is, but it works

        • cestvrai@lemm.ee
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 years ago

          Ports are probed and scanned constantly so a random port doesn’t make so much difference. I would use a strict firewall with the server IP whitelisted.

          • fuckwit_mcbumcrumble@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 years ago

            Ever since I moved to a ridiculously high port I haven’t had any access attempts on my server. 6952 won’t do shit, but if you’re between 40000 and 65000 you probably won’t get anything.

            • Retiring@lemmy.ml
              link
              fedilink
              English
              arrow-up
              3
              ·
              2 years ago

              That’s security through obscurity and one should never rely on this strategy alone

              • fuckwit_mcbumcrumble@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                2 years ago

                If it’s your only form of security then it’s bad. But if it’s on combination with other measures then it’s a good thing.

                I wouldn’t let anyone who hits my ip/port directly into my openvpn. But not having china and russia bomboarding me with requests is nice.

          • Dandroid@dandroid.app
            link
            fedilink
            English
            arrow-up
            0
            ·
            edit-2
            2 years ago

            Can they see what you are hosting on that port, though? Like say I want to open ssh to my server from the internet (I don’t do this and I wouldn’t unless it was temporary), but I don’t want to open it on port 22 because that’s too obvious. Are there bots that just try every protocol until they find one that your server responds to? Or is there a way to dig up information on what is being exposed behind that port?

  • majestictechie@lemmy.fosshost.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    The only port I open is for wireguard. That way I can access all services on my LAN. Wireguard is also very secure and requires keys based authentication so is hard to brute. It also allows me to secure myself if I ever need to join WiFi or an untrusted network

  • milkjug@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    80, 443 for HTTP/S, and 587 for a VPN service. Reason being that I travel frequently, and often have to connect through a bunch of different networks, Airport WiFi, mobile roaming, hotel WiFi, etc. and you never know the kinds of network restrictions they impose on their pipes.

    80 and 443 is least likely to be dropped, while 587 is a common SMTP port that could make it through most networks.

  • TheInsane42@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    Openvpn to connect to the network, 80 and 443 for static websites, that’s it.

    Email gets delivered by a VPS via a different port, ssh acces via vps as well. No initial connections from an ip not from the my country as well.