• ChaoticNeutralCzech@feddit.de
      link
      fedilink
      English
      arrow-up
      0
      ·
      7 months ago

      That’s why “availability” is a core tenet of security (according to some cybersecurity course I took). It is easy to prevent unauthorized access to data if you have no requirements on authorized access.

  • catloaf@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    7 months ago

    Don’t expose anything to the Internet that you don’t absolutely have to. If you can, put everything behind a VPN gateway.

    Make backups. Follow the 3-2-1 rule.

      • taaz@biglemmowski.win
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        7 months ago

        I wouldn’t recommend putting ssh behind any vpn connection unles you have a secondary access to the machine (for example virtual tty/terminal from your provider or local network ssh). At best, ssh should be the only publicly accessible service (unless hosting other services that need to be public accessible).

        I usually move the ssh port to some higher number just to get rid of the basic scanners/skiddies.

        Also disable password login (only keys) and no root login.

        And for extra hardening, explicitly allow ssh for only users that need it (in sshd config).

        • Poutinetown@lemmy.ca
          link
          fedilink
          English
          arrow-up
          0
          ·
          7 months ago

          Ssh behind a wire guard VPN server is technically more secure if you don’t have a key-only login, but a pain if the container goes down or if you need to access the server without access to wireguards VPN client on your device.

          • Lem453@lemmy.ca
            link
            fedilink
            English
            arrow-up
            0
            ·
            edit-2
            7 months ago

            Highly recommend getting a router that can accept wireguard connections. If the router goes down you’re not accessing anything anyways.

            Then always put ssh behind the wireguard connections.

            For a homelab, there is rarely a need to expose ssh directly so best practice will always be to have multi layered security when possible.

            • Poutinetown@lemmy.ca
              link
              fedilink
              English
              arrow-up
              0
              ·
              7 months ago

              Yeah it’s good to have a system separate from the main server. It’s always so frustrating having to debug wireguard issues cause there’s some problem with docker

  • foggy@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Setup Fail2ban

    Login only with SSH keys. MFA on SSH login. Use SSH proto 2.

    Disable passwords, x11 forwarding, root logins

    Reduce Idle timeout interval

    Limit users’ SSH access

    That should be more than enough for the average use case.

    • taladar@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      7 months ago

      Regular updates are definitely necessary too. Also, if you do limit SSH users to a chroot make sure you limit TCP (port) forwarding too.

      • foggy@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        7 months ago

        Yep. Use SSH keys, not just protocol.

        On connection, it’ll ask for your SSH password (this is different from the users password).

        After that with something like authelia in place, you’ll be asked for a 2fa code.

        • MaggiWuerze@feddit.de
          link
          fedilink
          English
          arrow-up
          0
          ·
          7 months ago

          So, no. SSH can’t do 2FA? I would need to set up Authelia and connect through that? I already use ssh keys instead of passwords to connect to my server

          • foggy@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            7 months ago

            Yes it can. I literally have it set up right now.

            When I connect to my vps I am promoted for the password for my SSH key. Only works on a machine that has the ssh key.

            Then I need to use 2fa.

  • Decronym@lemmy.decronym.xyzB
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    7 months ago

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

    Fewer Letters More Letters
    DNS Domain Name Service/System
    IP Internet Protocol
    SSH Secure Shell for remote terminal access
    SSL Secure Sockets Layer, for transparent encryption
    TCP Transmission Control Protocol, most often over IP
    VNC Virtual Network Computing for remote desktop access
    VPN Virtual Private Network
    VPS Virtual Private Server (opposed to shared hosting)

    8 acronyms in this thread; the most compressed thread commented on today has 9 acronyms.

    [Thread #693 for this sub, first seen 20th Apr 2024, 15:55] [FAQ] [Full list] [Contact] [Source code]

  • Rimu@piefed.social
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    Ubuntu has a set of scripts you can run to harden a new server (not advisable on a server that has already been configured for something). You need an Ubuntu Pro subscription to access them but you can get a free trial and then cancel it after you’ve finished.

    More info at https://ubuntu.com/security/cis.

    I did this process for a customer recently and it was pretty straightforward and much much more thorough (over 100 configuration changes) than just tweaking SSH and fail2ban.

    I expect other commercially-oriented distros offer something similar.

  • Pyrosis@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Firewall and deciding on an entry point for system administration is a big consideration.

    Generating a strong unique password helps immensely. A password manager can help with this.

    If this is hosting services reducing open ports with something like Nginx Proxy Manager or equivalent. Tailscale and equivalent(wire guard, wireguard-easy, headscale, net bird, and net maker) are also options.

    Getting https right. It’s not such a big deal if all the services are internal. However, it’s not hard to create an internal certificate authority and create certs for services.

    If you have server on a VPS. Firewall is again your primary defense. However, if you expose something like ssh fail2ban can help ban ips that make repeated attempts to login to your system. This isn’t some drop in replacement for proper ssh configuration. You should be using key login and secure your ssh configuration away from password logins.

    It also helps if you are using something like a proxy for services to setup a filter list. NPM for example allows you to outright deny connection attempts from specific IP ranges. Or just deny everything and allow specific public IPs.

    Also, if you are using something like proxmox. Remember to configure your services for least privileges. Basically the idea being just giving a service what it needs to operate and no more. This can encompass service user/group names for file access ect.

    All these steps add up to pretty good security if you constantly assess.

    Even basic steps in here like turning on the firewall and only opening ports your services need help immensely.

    • Possibly linux@lemmy.zip
      link
      fedilink
      English
      arrow-up
      0
      ·
      7 months ago

      The biggest thing is to change the defaults and to limit access. Unless your are the target of a nation state the attacks against your network will be automated.

    • perishthethought@lemm.ee
      link
      fedilink
      English
      arrow-up
      0
      ·
      7 months ago

      … is an intrusion prevention software framework. Written in the Python programming language, it is designed to prevent brute-force attacks. It is able to run on POSIX systems that have an interface to a packet-control system or firewall installed locally, such as iptables or TCP Wrapper.

  • slazer2au@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Move services away from known ports and don’t use ports that end with well known port numbers (22,80,443).

    Moving ssh from 22 to 2222 or 443 to 10443 does nothing. You have ~65000 ports. Pick something random like 6744 or 2458

    • Still does nothing when scanning the entire ipv4 address space achievable so quickly. You can also use services like shodan to find vulnerable services on any ports.

      Use SSH keys, stay upgraded. Make management services (SSH, RDP, admin services) accessible only via VPN (WireGuard). Only expose 80 and 443 to the internet, if necessary.

      • slazer2au@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        7 months ago

        Moving ports does help. It is not a sure thing but when used in conjunction with other security mechanism can help get rid the of the low hanging fruit of scriptkiddies and automated scans.

            • towerful@programming.dev
              link
              fedilink
              English
              arrow-up
              0
              ·
              7 months ago

              It defends against the lowest level of automation. And if that is a legit threat in your model, you are going to have a bad time.
              It’s just going to trip you up at some point

              • Possibly linux@lemmy.zip
                link
                fedilink
                English
                arrow-up
                0
                ·
                7 months ago

                I’m not saying it should be your only defense. I’m saying that changing defaults is a good idea for secure systems.

                For instance, you should change the default WiFi password on your router.

        • towerful@programming.dev
          link
          fedilink
          English
          arrow-up
          0
          ·
          7 months ago

          But scriptkiddies and automated scans are not a security threat. If they were a legitimate threat to your server, you have bigger problems.
          All it does is reduce log chatter.

          Anyone actually wanting in would port scan, then try and connect to each port, and quickly identify an SSH port

          • solrize@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            7 months ago

            Imagine that the xz exploit actually made it into your server, so your sshd was vulnerable. Having it on another port does seem helpful then. In fact i sometimes think of putting mine on a random secret address in the middle of a /64 ipv6 range, but I haven’t done that yet.

            it occurs to me, the xz exploit and similar is a good reason not to run the latest software. It affected Debian Sid but not the stable releases. I’m glad I only run the stable ones.

            • towerful@programming.dev
              link
              fedilink
              English
              arrow-up
              0
              ·
              7 months ago

              Just have 2 ipv4 assigned to your server. Have 1 for all your services, and run ssh on the other allowing root login with the password “admin”.
              A random ipv6 in the same subnet as your server is just obscurity.

              The XZ exploit would be functionally similar to allowing root login using the password “admin”.
              Would doing that on a different port be secure? No? Then a different port is not security, it’s obscurity.

              Obscurity is just going to trip you up at some point and reduce log chatter.

              And yes, running LTSB/stable is a sensible choice for servers.

            • ShortN0te@lemmy.ml
              link
              fedilink
              English
              arrow-up
              0
              ·
              7 months ago

              Imagine that the xz exploit actually made it into your server, so your sshd was vulnerable. Having it on another port does seem helpful then.

              Nope. Your entire server can be scanned in less than a second for an open ssh port.

              IPv6 does not change the fact since when your server is attacked the hist IP is already known.

              • solrize@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                7 months ago

                Maybe I’m missing something but how is the host ip known? The server has a maybe-known range of addresses, but I don’t announce which address has an sshd listening. There are 2**64 addresses in the range, so scanning in 1 second doesn’t sound feasible.

          • Possibly linux@lemmy.zip
            link
            fedilink
            English
            arrow-up
            0
            ·
            7 months ago

            Automated attacks are a huge threat. Changing defaults shouldn’t be your only security practice but it can significantly help defend a network.

      • Possibly linux@lemmy.zip
        link
        fedilink
        English
        arrow-up
        0
        ·
        7 months ago

        It breaks automation. Same thing for changing any default. Change default names, directories and anything else that’s to predictable

  • lemmyreader@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Ask yourself a few questions first before following the massive amount of suggestions and then locking yourself out and so on.

    • What are you worried about ?
    • How important is your stuff ?
    • Make backups and check them

    Still worried ? Then there’s the easy way out : Hire some security auditor to help you find holes you left.

  • LordOfTheChia@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    Do a search for you server OS + STIG

    Then, for each service you’re hosting on that server, do a search for:

    Service/Program name + STIG/Benchmark

    There’s tons of work already done by the vendors in conjunction with the DoD (and CIS) to create lists of potential vulnerable settings that can be corrected before deploying the server.

    Along with this, you can usually find scripts and/or Ansible playbooks that will do most of the hardening for you. Though it’s a good Idea to understand what you do and do not need done.

  • Chyi@fasheng.ing
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Minimize installation and keep it streamlined. Update promptly. Choose applications that are still supported or have an active community.