So it’s my first time setting up a VPS. Is it to be expected to ban 54 IPs over a 12h timespan? The real question for me is whether this is normal or too much.

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  |- Total failed:     586
|  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
`- Actions
   |- Currently banned: 51
   |- Total banned:     54
   `- Banned IP list:   [list of IPs]

fail2ban sshd.conf

$ sudo cat /etc/fail2ban/jail.d/sshd.conf 
[sshd]
enabled = true
mode = aggressive
port = ssh
backend = systemd
maxretry = 3
findtime = 600
bantime = 86400

I have disabled SSH login via password. And only allow it over an SSH key.

$ sudo sshd -T | grep -E -i 'ChallengeResponseAuthentication|PasswordAuthentication|UsePAM|PermitRootLogin'
usepam no
permitrootlogin no
passwordauthentication no
  • mavu@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    0
    ·
    12 hours ago

    imagine the modern internet like a school yard of a very large school during recess, and it has just snowed.

    Now imagine having ssh on port 22 as you a wearing a bright red wooly cap and standing in the middle of the yard jumping up and down and waving hands.

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

    I personally wouldn’t waste your time with bans

    Enable public key authentication and disable passwords

  • Phoenixz@lemmy.ca
    link
    fedilink
    English
    arrow-up
    0
    ·
    18 hours ago

    That’s very little actually

    Move your SSH port from the standard 22 to one of the higher ones, like 53822

    It’ll remove 99.something% of your attacks as nobody bothers with those ports.

      • nibbler@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        0
        ·
        13 hours ago

        so everyone can open them… so what? attacker who already gained local access can crash your original sshd and spin up his own one? admittedly a thinkable scenario… but can this even be abused in a pubkey auth scenario?

        • Helix 🧬@feddit.org
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 hours ago

          Mostly true, however the thing saving you would be host key verification, not pubkey authentication.

          I’m just not into security by obscurity coupled with compromising the inbuilt mechanisms for making sure only root can open an SSHd.

          Do you think high ports are irrelevant or only in this case for SSHd? If the former, why do you think the distinction exists in the first place?

        • mavu@discuss.tchncs.de
          link
          fedilink
          English
          arrow-up
          0
          ·
          12 hours ago

          I don’t see a reason to worry about that. Only matters if the machine is alreay compromised, and then it doesn’t matter either.

          • Helix 🧬@feddit.org
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 hours ago

            There are different levels of compromise: you could have local access or root access. This might allow a hacker to gain root access by faking an SSHd and asking for a password or something like that. Host key verification would save you in that case, but then again, there’s probably funny MITM things you can do with an existing SSHd.

  • nonentity@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    Rookie numbers.

    My favourite f2b rule is the one strike ban on SSH root login attempts. Any IP originating a SSH root login attempt is clearly compromised, and gets black holed on all my hosts for a month.

    Note: direct SSH login isn’t permitted at all, the daemon is exposed purely to log the attempts.

      • nonentity@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 day ago

        The actual span is a random period between 2 and 4 weeks, it’s interesting to watch how long it takes for attempts to resume.

        I prefer a more granular visibility, repeat offenders automagically ratchet up their stay in the sin bin.

  • pHr34kY@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    They’re portscanning bots.

    I made SSH IPv6-only and it stopped. You can’t scan IPv6 space for open ports.

        • pHr34kY@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 day ago

          The smallest possible subnet has 18.4 quintillion addresses.

          You can’t scan it before encountering the heat death of the universe.

          Outgoing connections are made on a different address that does not accept incoming connections. You never disclose your real IP when browsing.

          So, no. It can’t be done.

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

            That’s only if you use the brute force method

            IPs are not secret and can be leaked in various ways. Don’t count on IPv6 as a security mechanism as that’s not what it was designed to do

            • pHr34kY@lemmy.world
              link
              fedilink
              English
              arrow-up
              0
              ·
              12 hours ago

              It’s literally called “IPv6 privacy extension”. It’s what it does.

              Unless you’re in the middle and fowarding the packets, you won’t stumble across a connectable IPv6 endpoint.

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

                The IPv6 privacy extensions are something else entirely and are not used for anything server side

                You should research IPv6 port scanning techniques. It is harder than IPv4 but still doable depending on the context. If your goal is simply to reduce network traffic due to bots that’s one thing. However, it should not be considered a security mechanism.

  • Shimitar@downonthestreet.eu
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    Yeah. Sounds about right.

    First of all disable root login over ssh. Second, move your ssh from port 22 to another port of your liking. Third, disable password authentication altogether and use only solid certificates.

    • Toribor@corndog.social
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 days ago

      Switching SSH to a non-standard port can cut down on log noise but it doesn’t really help with security. It’s trivial to identify ssh running on any port and attackers typically do full port scans anyway.

      I’d put that effort towards allowlisting only trusted public ips or setting up wire guard/tailscale for ssh access instead.

    • i_am_not_a_robot@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 days ago

      Root login and password authentication are already disabled, and it’s very uncommon for self hosters to use SSH certificates at all.

      Changing the SSH port away from 22 does not improve security unless your password is “password” or “admin”. Anybody who’s even slightly sophisticated will find your SSH service on the correct port and make requests there instead.

      • CorrectAlias@piefed.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 days ago

        I don’t think changing the port has the intention of better security here, just reduces the amount of requests that dumb bots make. It’s noticable if you try it.

      • Shimitar@downonthestreet.eu
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 days ago

        Yes, I meant ssh private/public keys, not certificates …

        And changing the port reduces the amount of attempts in any case.

  • bizdelnick@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    Yes, it is normal.

    # fail2ban-client status sshd
    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 10
    |  |- Total failed:     4433
    |  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
    `- Actions
       |- Currently banned: 27
       |- Total banned:     668
       `- Banned IP list:   2.57.122.194 45.148.10.183 195.178.110.30 2.57.122.208 92.118.39.195 103.74.123.88 92.118.39.23 2.57.122.196 92.118.39.197 45.148.10.151 92.118.39.236 178.20.210.185 68.178.161.186 80.94.92.183 92.118.39.63 2.57.122.197 2.57.122.191 2.57.122.189 80.94.92.171 94.156.152.18 14.225.7.70 45.78.198.199 211.253.9.160 159.224.213.138 1.214.42.172 103.239.165.114 77.239.111.233
    
  • Bloefz@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    That’s not a lot even. I’ve seen much worse. Also with password disabled. Some idiot bots still try to send it whole password lists.

    Just move your SSH to another port, that is enough to get rid of most of the nuisance scans. Or allow SSH only on IPv6. That usually covers it (The IPv6 address space is too big to scan, unless you have a TLD directly pointing to your IPv6)

    What I personally do is run an overlay VPN like tailscale and allow SSH in only via that.

    • irmadlad@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 days ago

      What I personally do is run an overlay VPN like tailscale and allow SSH in only via that.

      Same. I use Tailscale as an overlay on the pFsense box and the server itself.

  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    Just 54? Those are rookie numbers bro. You need to open up a few more ports. LOL Honestly tho, seems pretty standard. You could change the SSH port which might lower some of the noise but bots now days are pretty sophisticated and it would be trivial to just scan your server and find out which port is SSH. If you want to stop tailing fail2ban nervously on the daily, you could use the hosts.allow/hosts.deny which would lock it down even further. Just remember to set host.allow first then host.deny. You could also deploy any number of secondary security packages like CrowdSec, Wazuh, et al.