Danke johnassel
a) Schlüssel werden auch nicht so oft benutzt wie Passwörter, d.h. es werden primär Passwörter angegriffen.
b) Da stimme ich dir zu, Mordor. root sollte keinen direkten, externen Zugang haben. Irgendeinen Benutzer anlegen reicht aus und mit diesem dann einloggen. Aber im Hinterkopf mit d).
c) Wenn ich einen Shell-Zugang habe, dann bin ich nicht automatisch root. Dafür muss ich ja noch weitere Dienste angreifen. Ausserdem ist sudo ist ja nicht für z.B. den Webserver möglich. Was aber effektiv egal ist, denn auch als Webserver kann ich z.B. Spam verschicken oder weitere Software runterladen und ausführen (z.B. IRC-Proxy, ftp-Server installieren, etc). Mehr Sicherheit bekommst du mit z.B. selinux. Ich halte das für einen (simplen) (v)Server übertrieben. Hier geht es nicht um kritische Daten.
d) IP-Bereich für den SSH begrenzen. Klingt simpel, wird aber gerne übersehen. Wieso sollte man aus z.B. China einen SSH-Zugriff auf den Server erlauben? Und wer ist so dumm und greift Server im eigenen Land bzw. noch beim eigenen Provider an? Daher macht es Sinn den Bereich auf seinen eigenen DSL-Provider, Schule/Uni/Arbeitgeber sowie eventuell Freunde zu begrenzen.
Hier im Forum wird dagegen immer wieder vorgeschlagen, SSH, etc global zu erlauben und dann potentielle Angreifer über fehlgeschlagene Logins per fail2ban zu sperren. Leider wird hierbei übersehen, dass dieses nicht gegen eine Sicherheitslücke im SSH-Server hilft, denn dieser wird dennoch die ersten 2, 3 Logins annehmen. Genau solche Sicherheitslücken gab es in der Vergangenheit Konsequenzen des OpenSSL-Debakels | heise Security und wird es auch immer wieder geben.