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

  • CarrotsHaveEars
    link
    fedilink
    13 months ago

    Well, with root enabled, the SSH server at least need to verify the key, no? It’s wasting CPU power albeit tiny amount.

  • irotsoma
    link
    fedilink
    23 months 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.

  • @[email protected]
    link
    fedilink
    213 months ago

    That server’s root access is now vulnerable to a compromise of the systems that have the private key.

      • @[email protected]
        link
        fedilink
        English
        103 months 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.

        • @[email protected]
          link
          fedilink
          13 months 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

  • @[email protected]
    link
    fedilink
    53 months ago

    Nope, not really. The only reason ppl recommend it is, because “you have then to guess the username too”. Which is just not relevant if you use strong authentication method like keys or only strong passwords.

      • @[email protected]
        link
        fedilink
        53 months ago

        Most comments here suggest 3 things

        1. least privilege: Which is ok, but on a Server any modification you do requires root anyway, there is usually very little benefit
        2. Additional protection through required sudo password: This is for example easily circumvented by modifying the bashrc or similar with an sudo alias to get the password
        3. Multiuser & audittrails: yes this is a valid point, on a system that is modified or administered by multiple ppl there are various reasons lime access logging and UAC for that

        An actual person from the pen testing world: https://youtu.be/fKuqYQdqRIs

    • @[email protected]
      link
      fedilink
      2
      edit-2
      3 months ago

      That is absolutely not the reason ANYONE recommends it, unless you are a complete noob and entirely unfamiliar with computer security at all, and are just pulling assumptions out of your ass. Don’t fucking do that, don’t post with confidence when you’re just making shit up because you think you know better. Because you don’t.

      If there is a vulnerability in SSH (and it’s happened before), attackers could use that to get into root directly, quickly, and easily. It’s an instant own.

      If root login is disabled, it’s way less likely that whatever bug it is ALSO allows them to bypass root login being disabled. Now they have to yeah, find a user account, compromise that, try to key log or session hijack or whatever they set up, be successful, and elevate to root. That’s WAY more work, way more time to detect, to install patches.

      If the effort is higher, then this kind of attack isn’t going to be used to own small fry servers; it’s only be worth it for bigger targets, even if they’re more well protected.

      If you leave root enabled, you’re already burnt. You’re already a bot in the DDoS network.

      And why? You couldn’t be bothered to type one extra command in your terminal? One extra word at the start of each command?

      Sorry bitch, eat your fucking vegetables

  • @[email protected]
    link
    fedilink
    English
    223 months 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

    • @[email protected]
      link
      fedilink
      English
      73 months ago

      Sudo also allows for granular permissions of which commands are allowed and which aren’t.

    • @[email protected]
      link
      fedilink
      6
      edit-2
      3 months 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…

      • @[email protected]
        link
        fedilink
        English
        3
        edit-2
        3 months 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

          • @[email protected]
            link
            fedilink
            English
            23 months 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

  • esa
    link
    fedilink
    93 months 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.

  • @[email protected]
    link
    fedilink
    743 months 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.

  • oshu
    link
    fedilink
    93 months 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.

  • Phoenixz
    link
    fedilink
    123 months 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.

    • @[email protected]
      link
      fedilink
      53 months 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

  • @[email protected]
    link
    fedilink
    English
    23 months ago

    The multi-tennant approach to the linux operating system isn’t just for security. It’s the way the OS was designed to operate. You’re not meant to use root as an ordinary user.

    Disabling root removes the safety net, but it also plugs the security hole that leaving root enabled leaves.

  • @[email protected]
    link
    fedilink
    English
    303 months 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.

  • @[email protected]
    link
    fedilink
    43 months ago

    Lots of self-important, irrational, hand-wavy responses to this question as usual.

    Assuming you are the only user (sounds like it) and you secure your client device properly, then no, there is no reason not to do what you propose. Go ahead and do it, you’ll save yourself lots of redundant typing and clicking.

    Others here can keep performing their security theater to ward off the evil spirits.

  • deadcatbounce
    link
    fedilink
    123 months 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.

  • @[email protected]
    link
    fedilink
    15
    edit-2
    3 months 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.