I'm A Person enumera algunos buenos pasos. Me gustaría agregar que el uso de la directiva AllowUsers en sshd_config le permite especificar que solo ciertos usuarios pueden iniciar sesión, por ejemplo. "AllowUsers imaperson" significa que imaperson puede iniciar sesión, pero cualquier intento de iniciar sesión en root, apache, postgres o cualquier otra cuenta existente en el sistema fallará, incluso con una contraseña correcta. Esto lleva las cosas un paso más allá que 'PermitRootLogin no'.
Para responder a tu pregunta más grande, no estás siendo hackeado per se; Estás siendo escaneado automáticamente. Continúa casi continuamente y a ciegas en Internet, por lo que el consejo de A Person sobre el puerto predeterminado es útil. Mi servidor personal tuvo aproximadamente 200 intentos en las últimas 12 horas, lo cual es normal o incluso bajo. Por lo general, es ruido y no un ataque dirigido a ti.
Intentos fallidos en las últimas 12 horas:
145 root
10 bin
1 mail
1 news
1 postgres