Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

agnos.is Forums

  1. Home
  2. Selfhosted
  3. What steps do you take to secure your server and your selfhosted services?

What steps do you take to secure your server and your selfhosted services?

Scheduled Pinned Locked Moved Selfhosted
selfhosted
58 Posts 32 Posters 470 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • O [email protected]

    Anything else?

    I This user is from outside of this forum
    I This user is from outside of this forum
    [email protected]
    wrote on last edited by
    #13

    There are ip lists that let you iptables drop all traffic from China and Russia.

    Strongly recommend.

    O L 2 Replies Last reply
    0
    • I [email protected]

      There are ip lists that let you iptables drop all traffic from China and Russia.

      Strongly recommend.

      O This user is from outside of this forum
      O This user is from outside of this forum
      [email protected]
      wrote on last edited by
      #14

      I was auto banning all countries but my own but now I’m hosting one resource that has an audience including Chinese…

      Good advice outside of this use case! 🙂

      I 1 Reply Last reply
      0
      • O [email protected]

        Inspired by this comment to try to learn what I'm missing.

        • Cloudflare proxy
        • Reverse Proxy
        • Fail2ban
        • Docker containers on their own networks
        kratoz29@lemm.eeK This user is from outside of this forum
        kratoz29@lemm.eeK This user is from outside of this forum
        [email protected]
        wrote on last edited by
        #15

        I expose some stuff through IPv6 only with my Synology NAS (I am CGNATED) and I have always wondered if I still need to use fail2ban in that environment...

        My Synology has an auto block feature that from my understanding is essentially fail2ban, what I don't know is if such a feature works for all my exposed services but Synology's.

        L 1 Reply Last reply
        0
        • G [email protected]

          My new strategy is to block EVERY port except WireGuard. This doesn't work for things you want to host publicly ofc, like a website, but for most self host stuff I don't see anything better than that.

          R This user is from outside of this forum
          R This user is from outside of this forum
          [email protected]
          wrote on last edited by
          #16

          I do this too. Took me a little effort to set things up, but now its so easy.

          1 Reply Last reply
          0
          • O [email protected]

            Inspired by this comment to try to learn what I'm missing.

            • Cloudflare proxy
            • Reverse Proxy
            • Fail2ban
            • Docker containers on their own networks
            ace@lemmy.ananace.devA This user is from outside of this forum
            ace@lemmy.ananace.devA This user is from outside of this forum
            [email protected]
            wrote on last edited by
            #17

            Default block for incoming traffic is always a good starting point.
            I'm personally using crowdsec to good results, but still need to add some more to it as I keep seeing failed attacks that should be blocked much quicker.

            1 Reply Last reply
            0
            • O [email protected]

              Inspired by this comment to try to learn what I'm missing.

              • Cloudflare proxy
              • Reverse Proxy
              • Fail2ban
              • Docker containers on their own networks
              M This user is from outside of this forum
              M This user is from outside of this forum
              [email protected]
              wrote on last edited by
              #18

              Just tailscale really.

              My services are only exposed to the tailscale network, so I don't have to worry about otger devices on my LAN.

              A good VPN with MFA is all you really need if you are the only user.

              1 Reply Last reply
              0
              • O [email protected]

                Inspired by this comment to try to learn what I'm missing.

                • Cloudflare proxy
                • Reverse Proxy
                • Fail2ban
                • Docker containers on their own networks
                J This user is from outside of this forum
                J This user is from outside of this forum
                [email protected]
                wrote on last edited by
                #19

                use a cheap vlan switch to make an actual vlan DMZ with the services' router

                use non-root containers everywhere. segment services in different containers

                1 Reply Last reply
                0
                • O [email protected]

                  I was auto banning all countries but my own but now I’m hosting one resource that has an audience including Chinese…

                  Good advice outside of this use case! 🙂

                  I This user is from outside of this forum
                  I This user is from outside of this forum
                  [email protected]
                  wrote on last edited by
                  #20

                  Yeah, there were other countries to ban, but those 2 cut my attacks down 90%.

                  Also consider a honeypot that triggers when anyone tries to ssh it at all.

                  1 Reply Last reply
                  0
                  • O [email protected]

                    Inspired by this comment to try to learn what I'm missing.

                    • Cloudflare proxy
                    • Reverse Proxy
                    • Fail2ban
                    • Docker containers on their own networks
                    M This user is from outside of this forum
                    M This user is from outside of this forum
                    [email protected]
                    wrote on last edited by
                    #21

                    in the context of the comment you referenced:

                    Definitely have the server on its own VLAN. It shouldn't have any access to other devices that are not related to the services and I would also add some sort of security software.

                    If you have a public service that you expect to have multiple users on you definitely should have some level of monitoring whether it is just the application logs from the forum that you want to host or further have some sort of EDR on the server.

                    Things I would do if I was hosting a public forum:

                    • Reverse proxy
                    • fail2ban
                    • dedicated server that does not have any personal data or other services that are sensitive
                    • complete network isolation with VLAN
                    • send application logs to ELK
                    • clamAV

                    And if the user base grows I would also add:

                    • EDR such as velociraptor
                    • an external firewall / ips
                    • possibly move from docker to VM for further isolation (not likely)
                    1 Reply Last reply
                    0
                    • akatsukilevi@lemmy.worldA [email protected]

                      Disable password authentication on SSH

                      Enable firewall and block all ports you're not using(most firewalls do this by default)

                      Switch to a LTS kernel(not security related, but it keeps things going smooth... Technically it is safer since it gets updated less often so it is a bit more battle tested? Never investigated whenever a LTS kernel is safer than a standard one)

                      Use Caddy to proxy to services instead of directly exposing them out

                      HTTPS for web stuff(Caddy does it automatically)

                      R This user is from outside of this forum
                      R This user is from outside of this forum
                      [email protected]
                      wrote on last edited by
                      #22

                      Enable firewall and block all ports you're not using(most firewalls do this by default)

                      this one haven't failed me....yet.

                      PS: please don't pentest me

                      1 Reply Last reply
                      0
                      • kratoz29@lemm.eeK [email protected]

                        I expose some stuff through IPv6 only with my Synology NAS (I am CGNATED) and I have always wondered if I still need to use fail2ban in that environment...

                        My Synology has an auto block feature that from my understanding is essentially fail2ban, what I don't know is if such a feature works for all my exposed services but Synology's.

                        L This user is from outside of this forum
                        L This user is from outside of this forum
                        [email protected]
                        wrote on last edited by
                        #23

                        My Synology has an auto block feature that from my understanding is essentially fail2ban, what I don’t know is if such a feature works for all my exposed services but Synology’s

                        I'd be surprised if it works for custom services. Fail2ban has to know what's running and haw to have access to its log file to know what is a failed authentication request. The best you can do without log access is to rate limit new tcp connections. But still you should know what's the service behind because 5 new SSH sessions per minute and IP can be reasonable 5 new http1.0 connections likely cannot load a single html page.

                        1 Reply Last reply
                        0
                        • akatsukilevi@lemmy.worldA [email protected]

                          Disable password authentication on SSH

                          Enable firewall and block all ports you're not using(most firewalls do this by default)

                          Switch to a LTS kernel(not security related, but it keeps things going smooth... Technically it is safer since it gets updated less often so it is a bit more battle tested? Never investigated whenever a LTS kernel is safer than a standard one)

                          Use Caddy to proxy to services instead of directly exposing them out

                          HTTPS for web stuff(Caddy does it automatically)

                          justenoughducks@feddit.nlJ This user is from outside of this forum
                          justenoughducks@feddit.nlJ This user is from outside of this forum
                          [email protected]
                          wrote on last edited by
                          #24

                          Dropping instead of blocking might technically be better because it wastes a bit more bot time and they see it as "it doesn't exist" rather than an obsticle to try exploits on. Not sure if that is true though.

                          For me:

                          • ssh server only with keys

                          • absolutely no ssh forwarding, only available to local network via firewall rules

                          • docker socket proxy for everything that needs socket access

                          • drop non-used ports, limit IPs for local-only services (e.g. paperless)

                          • crowdsec on traefik for the rest (sadly it blocks my VPN IPs also)

                          • Authelia over everything that doesn't break the native apps (jellyfin and home assistant are the two that it breaks so far, and HA was very intermittent so I made a separate authelia rule and mobile DNS entry for slightly reduced rules)

                          • proper umask rules on all docker directories (or as much as possible)

                          • main drive FDE with a separate boot drive with FDE keyfile on a dongle that is removed except for updates and booting to make snatch-and-grabs useless and compromising bootloader impractical

                          • full disk encryption with passworded data drives, so even if a smash and grab happens when I leave the dongle in, the sensitive data is still encrypted and the keys aren't in memory (makes a startup script with a password needed, so no automated startups for me)

                          For more info, I followed a lot of stuff on: https://github.com/imthenachoman/How-To-Secure-A-Linux-Server

                          1 Reply Last reply
                          0
                          • O [email protected]

                            Inspired by this comment to try to learn what I'm missing.

                            • Cloudflare proxy
                            • Reverse Proxy
                            • Fail2ban
                            • Docker containers on their own networks
                            irmadlad@lemmy.worldI This user is from outside of this forum
                            irmadlad@lemmy.worldI This user is from outside of this forum
                            [email protected]
                            wrote on last edited by
                            #25
                            • Fail2ban
                            • UFW
                            • Reverse Proxy
                            • IPtraf (monitor)
                            • Lynis (Audit)
                            • OpenVas (Audit)
                            • Nessus (Audit)
                            • Non standard SSH port
                            • CrowdSec + Appsec
                            • No root logins
                            • SSH keys
                            • Tailscale
                            • RKHunter
                            1 Reply Last reply
                            0
                            • O [email protected]

                              Inspired by this comment to try to learn what I'm missing.

                              • Cloudflare proxy
                              • Reverse Proxy
                              • Fail2ban
                              • Docker containers on their own networks
                              D This user is from outside of this forum
                              D This user is from outside of this forum
                              [email protected]
                              wrote on last edited by
                              #26

                              Tailscale and being at my house is the only two ways in so I feel those are pretty good for me.

                              1 Reply Last reply
                              0
                              • G [email protected]

                                My new strategy is to block EVERY port except WireGuard. This doesn't work for things you want to host publicly ofc, like a website, but for most self host stuff I don't see anything better than that.

                                irmadlad@lemmy.worldI This user is from outside of this forum
                                irmadlad@lemmy.worldI This user is from outside of this forum
                                [email protected]
                                wrote on last edited by
                                #27

                                My new strategy is to block EVERY port

                                Wow! All 65535 +/-, in and out? That's one way to skin a cat.

                                G 1 Reply Last reply
                                0
                                • irmadlad@lemmy.worldI [email protected]

                                  My new strategy is to block EVERY port

                                  Wow! All 65535 +/-, in and out? That's one way to skin a cat.

                                  G This user is from outside of this forum
                                  G This user is from outside of this forum
                                  [email protected]
                                  wrote on last edited by
                                  #28

                                  ez pz:

                                  #!/usr/sbin/nft -f
                                  table inet filter {
                                      chain input {
                                          type filter hook input priority raw; policy accept;
                                          iif "lo" accept
                                          ct state established,related accept
                                          iif "enp1s0" udp dport 51820 accept
                                          iif "enp1s0" drop
                                      }
                                  
                                      chain forward {
                                          type filter hook forward priority raw; policy accept;
                                          iif "lo" accept
                                          ct state established,related accept
                                          iif "enp1s0" udp dport 51820 accept
                                          iif "enp1s0" drop
                                      }
                                  
                                      chain output {
                                          type filter hook output priority raw; policy accept;
                                      }
                                  }
                                  
                                  irmadlad@lemmy.worldI 1 Reply Last reply
                                  0
                                  • G [email protected]

                                    ez pz:

                                    #!/usr/sbin/nft -f
                                    table inet filter {
                                        chain input {
                                            type filter hook input priority raw; policy accept;
                                            iif "lo" accept
                                            ct state established,related accept
                                            iif "enp1s0" udp dport 51820 accept
                                            iif "enp1s0" drop
                                        }
                                    
                                        chain forward {
                                            type filter hook forward priority raw; policy accept;
                                            iif "lo" accept
                                            ct state established,related accept
                                            iif "enp1s0" udp dport 51820 accept
                                            iif "enp1s0" drop
                                        }
                                    
                                        chain output {
                                            type filter hook output priority raw; policy accept;
                                        }
                                    }
                                    
                                    irmadlad@lemmy.worldI This user is from outside of this forum
                                    irmadlad@lemmy.worldI This user is from outside of this forum
                                    [email protected]
                                    wrote on last edited by
                                    #29

                                    I've seen it done as such:

                                    1 Reply Last reply
                                    0
                                    • O [email protected]

                                      Inspired by this comment to try to learn what I'm missing.

                                      • Cloudflare proxy
                                      • Reverse Proxy
                                      • Fail2ban
                                      • Docker containers on their own networks
                                      H This user is from outside of this forum
                                      H This user is from outside of this forum
                                      [email protected]
                                      wrote on last edited by
                                      #30

                                      One thing I do is instead of having an open SSH port, I have an OpenVPN server that I’ll connect to, then SSH to the host from within the network. Then, if someone hacks into the network, they still won’t have SSH access.

                                      C O 2 Replies Last reply
                                      0
                                      • O [email protected]

                                        Inspired by this comment to try to learn what I'm missing.

                                        • Cloudflare proxy
                                        • Reverse Proxy
                                        • Fail2ban
                                        • Docker containers on their own networks
                                        S This user is from outside of this forum
                                        S This user is from outside of this forum
                                        [email protected]
                                        wrote on last edited by
                                        #31

                                        I put up a sign that says, "No hackers allowed plz"

                                        O 1 Reply Last reply
                                        0
                                        • H [email protected]

                                          One thing I do is instead of having an open SSH port, I have an OpenVPN server that I’ll connect to, then SSH to the host from within the network. Then, if someone hacks into the network, they still won’t have SSH access.

                                          C This user is from outside of this forum
                                          C This user is from outside of this forum
                                          [email protected]
                                          wrote on last edited by
                                          #32

                                          I do the same, but with Wireguard instead of OpenVPN. The performance is much better in my experience and it sucks less battery life.

                                          O 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups