On a server I have a public key auth only for root account. Is there any point of logging in with a different account?

  • irotsoma
    link
    fedilink
    21 day ago

    It’s rarely a good idea to log in as root, doubly so if it’s a system with sensitive data or services that could easily be disrupted accidentally. And even more important if multiple users log in. How will you know who broke things to teach them if they don’t log in first. The only time I log in to any system as root other than a test system is when I need to sftp to access files or some other system that doesn’t have a way to elevate permissions.

  • @bizdelnick@lemmy.ml
    link
    fedilink
    92 days ago

    It’s a bad practice to log in as root even for administrative tasks. You need to run numerous commands, some of hem can be potentially dangerous while not requiring root privileges. So normally you have an admin user in the sudo/wheel group and need to login to this account. Also, this adds some protection in case your key has leaked.

  • @thefartographer@lemm.ee
    link
    fedilink
    733 days ago
    1. Swiss cheese slices: make them holes too tight.
    2. When you run everything as root, if you fuck your shit, your shit’s fucked.

    “Best practices” tend to come from other people’s whoopsies. But it’s always good to question things, too.

  • Its a concept called defense in depth. Without root login now you require the key AND sudo password.

    Also, outside of self hosted you will have multiple people logging in. You want them to log in with their own users for logging and permission management.

      • ☂️-
        link
        fedilink
        2
        edit-2
        2 days ago

        you would need 2 different exploits for 2 different types of attack though.

        its always good to have an extra layer of “oh shit i need another exploit”. unless your threat modelling includes nation-states, that is.

          • @Lemmchen@feddit.org
            link
            fedilink
            English
            10
            edit-2
            3 days ago

            How did the attacker gain your user’s privileges? Malware-infected user installation? A vulnerability in genuine software running as your user? In most scenarios these things only become worse when running as root instead.

            • @ShortN0te@lemmy.ml
              link
              fedilink
              63 days ago

              The scenario OC stated is that if the attacker has access to the user on the server then the attacker would still need the sudo password in order to get root privileges, contrary to direct root login where the attack has direct access to root privileges.

              So, now i am looking into this scenario where the attack is on the server with the user privileges: the attacker now modifies for example the bashrc to alias sudo to extract the password once the user runs sudo.

              So the sudo password does not have any meaningful protection, other then maybe adding a time variable which is when the user accesses the server and runs sudo

                • @JasonDJ@lemmy.zip
                  link
                  fedilink
                  03 days ago

                  Nah just set up PAM to use TOTP or a third party MFA service to send a push to your phone for sudo privs.

                • @ShortN0te@lemmy.ml
                  link
                  fedilink
                  13 days ago

                  And what do you suggest to use otherwise to maintain a server? I am not aware of a solution that would help here? As an attacker you could easily alias any command or even start a modified shell that logs ever keystroke and simulates the default bash/zsh or whatever.

            • SavvyWolf
              link
              fedilink
              English
              03 days ago

              I don’t think that actually works; the attacker could just remove .bashrc and create a new file with the same name.

                • SavvyWolf
                  link
                  fedilink
                  English
                  02 days ago

                  The home directory would need to be immutable, not bashrc.

              • WheelchairArtist
                link
                fedilink
                13 days ago

                you’re right. that’s something i wanted to look into. guess setfacl would do the trick?

      • @markstos@lemmy.world
        link
        fedilink
        33 days ago

        This was downvoted, but is a good question.

        If your account is compromised, the shell init code could be modified to install a keylogger to discover the root password. That’s correct.

        Still, that capture doesn’t happen instantly. On a personal server, it could be months until the owner logs in next. On a corporate machines, there may be daily scans for signs of intrusion, malware, etc. Either way, the attacker has been slowed down and there is a chance they won’t succeed in a timeframe that’s useful to them.

        It’s perhaps like a locking a bike: with right tool and enough time, a thief can steal the bike. Sometimes slowing them down sufficiently is enough to win.

  • @Rivalarrival@lemmy.today
    link
    fedilink
    English
    283 days ago

    Zero-day exploits are security holes that exist and are used by bad actors, but aren’t yet known to you, or anyone capable of closing the hole. The clock to patch the hole doesn’t start running until the exploit is known: it stands at zero days until the good guys know it exists.

    What zero-day exploits exist for ssh?

    By definition, you don’t know. So, you block root login, and hope the bad actor doesn’t also know a zero-day for sudo.

    • @BCsven@lemmy.ca
      link
      fedilink
      -22 days ago

      Only the server should have the private key. Why would other systems have the private key?

      • @forbiddenlake@lemmy.world
        link
        fedilink
        English
        102 days ago

        The client has the private key, the server has the corresponding public key in its authorized keys file.

        The server is vulnerable to the private key getting stolen from the client.

        • @BCsven@lemmy.ca
          link
          fedilink
          12 days ago

          For ssh they both have private and public keys. The server could be at risk of having it’s own private key compromised if somebody breaks in, and vice versa a compromised client can lose its private key. The original wording made it sound like a compromised server would steal client keys.

          Also passworded keys are recommended

        • ☂️-
          link
          fedilink
          1
          edit-2
          2 days ago

          it is also vulnerable to whatever ssh exploits that can bypass the key

          • @x00z@lemmy.world
            link
            fedilink
            English
            22 days ago

            Finding an exploit in ssh is worth more than whatever your server has to offer though.

            • ☂️-
              link
              fedilink
              1
              edit-2
              2 days ago

              thats a good point. unless you forget to update it in a timely manner.

              that includes most servers out there ime, so

  • @ohshit604@sh.itjust.works
    link
    fedilink
    English
    42 days ago

    Is there any point of logging in with a different account?

    When you edit & save a file as root, root takes ownership of that file. I personally don’t like having to run chmod or chown every time I make minor changes to something.

    • @Futurama@lemmy.world
      link
      fedilink
      English
      62 days ago

      No, that’s not correct. If you create a new file as root, it will own that file. But editing an existing file doesn’t change the owner or group of that file.

  • Phoenixz
    link
    fedilink
    133 days ago

    It’s just another way of minimizing your attack surface. It’s pretty much the same as hiding behind a barrier when being shot at, you stick yourself out as little as possible.

    In the same way it also helps to change your SSH port to somewhere in the high numbers like 38265. This is anecdotal of course, but the amount of attacks on SSH went down by literally 99% by just changing the port like that

    Then you accept only keys, you lock down root (so the username must be guessed as well) and yeah, you’re safe.

    • @JustAnotherKay@lemmy.world
      link
      fedilink
      52 days ago

      This is anecdotal

      Not just anecdotal. The default SSH port gets hit by ridiculous numbers of bots because a lot of people don’t bother to change it. This will be true no matter what machine you’re on. Hell, your desktop at home has probably been scanned quite a few times even if all you do is watch porn on it

  • @lordnikon@lemmy.world
    link
    fedilink
    English
    213 days ago

    Yes it’s always better to login with a user and sudo so your commands are logged also having disable passwords for ssh but still using passwords for sudo gives you the best protection

    • @grrgyle@slrpnk.net
      link
      fedilink
      5
      edit-2
      3 days ago

      Also double check that sudo is the right command, by doing which sudo. Something I just learned to be paranoid of in this thread.

      Unless which is also compromised, my god…

      • @sludgewife@lemmy.blahaj.zone
        link
        fedilink
        English
        2
        edit-2
        3 days ago

        which sudo will check $PATH directories and return the first match, true. however when you type sudo and hit enter your shell will look for aliases and shell functions before searching $PATH.

        to see how your shell will execute ‘sudo’, say type sudo (zsh/bash). to skip aliases/functions/builtins say command sudo

        meh nvm none of these work if your shell is compromised. you’re sending bytes to the attacker at that point. they can make you believe anything

          • @sludgewife@lemmy.blahaj.zone
            link
            fedilink
            English
            22 days ago

            no, if the attacker can change files in your account, they can read every byte you type in and respond with anything, including pretending to be a normal shell. im not sure how to prevent ssh from running commands in your shell

  • deadcatbounce
    link
    fedilink
    153 days ago

    One always minimises attack surfaces and the possibility of fat fingered mistakes. The lower privileges that you grant yourself the better.

    You’d think that Dave Cutler who, I believe, designed Windows NT coming from a Unix style background would have followed these principles but no. I discovered *nix late sadly.

  • @rtxn@lemmy.world
    link
    fedilink
    15
    edit-2
    3 days ago

    It’s another slice of Swiss cheese. If the user has a strong enough password or other authentication method through PAM, it might stop or hinder an attacker who might only have a compromised private key, for example. If multiple users have access to the same server and one of them is compromised, the account can be disabled without completely crippling the system.

    Using sudo can also help you avoid mistakes (like accidentally rebooting a production server) by restricting which commands are available to the user.

  • oshu
    link
    fedilink
    93 days ago

    I never login with the root account. Not even on the console. You don’t want everything you do running as root unless it is required. Otherwise it is much easier for a little mistake to become a big mess.

  • esa
    link
    fedilink
    93 days ago

    If ssh has a security issue and you permit root logins then hostiles likely have an easier time getting access to root on the machine than if they only get access to your user account—then they need multiple exploits.

    Generally you also want to be root as little as possible. Hence sudo, run0, etc.

  • nanook
    link
    fedilink
    53 days ago

    You can disasble passwords so ONLY keys work, and you can firewall ssh to ONLY IPs you originate from.

    • @grrgyle@slrpnk.net
      link
      fedilink
      23 days ago

      Just don’t forget to check if your IP has changed if ssh suddenly starts timing out with no error indication no matter what you do and oh god what is actually wrong

      I think there’s a way to setup an alert for this.