Ubuntu 16.04/SSH haerten

Aus Hyperweb & OpenSim
Wechseln zu: Suche

Benutzerverwaltung

root Account erzeugen

(Zur Vertiefung siehe auch: Wiki)

Begründung: Wer mit dem Benutzeraccount auf den Server kommt, hat wahrscheinlich das Benutzerpasswort ausgespäht. In solch einem Szenario bietet sudo keinen Schutz! Deshalb wird hier ein vollwertiger root Account mit separatem Passwort erstellt, und die Benutzung von sudo verboten. Diese Konfiguration erfordert selbstverständlich Disziplin, den root Account auch wirklich nur zu Administratonszwecken zu verwenden und schnellstmöglich wieder zu verlassen.

Ein Passwort für root anlegen und danach zweimal das neue Passwort eingeben:

sudo passwd root

Dann den root Account freigeben:

sudo passwd -u root

=> Ausgabe "passwd: password expiry information changed", wenn das Kommando erfolgreich war.

Zuletzt sudo verbieten durch Rauswurf des Benutzers aus der Gruppe "sudo", ab jetzt vom richtigen root Account aus:

deluser example sudo

Dabei ist example in dieser Anleitung beispielhaft der Name des bisherigen mit sudo verwendeten Login-Users. Falls nicht bereits ein ehemaliger sudo-User existiert:

adduser example --ingroup users

Weiteren Benutzer-Account erzeugen

Aus Sicherheitsgründen betreiben wir OpenSim unter einem eigenen Account, ebenfalls nur mit gewöhnlichen Benutzerrechten. Das hat den Vorteil, dass im OpenSim-Account niemals ein Passwort eingegeben werden muss.

adduser maria --ingroup users

Kontrolle: Beide User example und maria dürfen nun nur noch in der Gruppe users sein.
1) mit su <Account> den Account wechseln
2) mit id -Gn die eigenen Gruppen anzeigen lassen

Überzählige Gruppen können gelöscht werden mit:

deluser <Account> <zu löschende Gruppe>

SSH härten

(Zur Vertiefung siehe auch: Wiki)

Die meisten scriptgesteuerten Angriffe zielen auf bekannte Ports und bekannte User. Deshalb stellen wir hier SSH auf einen unüblichen Port um, und beschränken den Zugang auf einen einzigen (namentlich genannten) User ohne root-Rechte.

Hinweis: Generell empfiehlt es sich, diese Konfiguration nur vorzunehmen, wenn ein aktuelles Backup des Gesamtsystems vorhanden ist. Sich mit SSH-Konfigurationsfehlern aus dem System auszusperren ist endgültig!
Notanker: Die meisten Serververmieter bieten (nach Kundenlogin) auf den Webseiten zur Serverkonfiguration die Möglichkeit, von einem Rettungssystem zu booten. Von dort sind Korrekturen an der Konfigurationsdatei noch möglich, das Rettungssystem mountet den gemieteten Server als gewöhnliche Festplatte.

Achtung! Den neuen Port vorher in der Firewall freigeben, sonst sperrst du dich selber aus!

1) In /etc/ssh/sshd_config den Port auf einen willkürlich gewählten umstellen, zum Beispiel Port 12345.
=> Nach erfolgreichem Verbindungstest über den neuen Port, den alten Port 22 in der Firewall schließen.

Achtung! Vor dem nächsten Schritt muss bereits im System ein weiterer Benutzer (ohne root Rechte) angelegt sein, sonst sperrst du dich selber aus! Also gegebenfalls einen neuen (gewöhnlichen) Benutzer einrichten, wie im vorigen Kapitel beschrieben.

2) In /etc/ssh/sshd_config folgende 5 Parameter ändern bzw. ergänzen:
=> Parameter LoginGraceTime auf "120" setzen, also 2 Minuten Zeit für Loginversuche
=> Parameter PermitRootLogin auf "no" setzen
=> Parameter AllowUsers example auf den speziell eingerichteten Benutzer (ohne root Rechte) setzen
=> Parameter MaxAuthTries 3 auf drei Loginversuche setzen
=> Parameter MaxSessions 1 auf maximal einen gleichzeitig eingeloggten User setzen.

Hinweis: Die Parameter AllowUsers, MaxAuthTries und MaxSessions sind in der Beispieldatei nicht vorhanden, also müssen die Zeilen von Hand unter die beiden vorhandenen eingefügt werden.

Tests:
=> Den Server einmal durchbooten und schauen, ob du mit dem neuen Account einloggen kannst. Wenn nicht, Backup einspielen...
=> Versuchen, als Benutzer root einzuloggen.

Hinweise: Es ist möglich, sich mit mehreren Konsolenfenstern einzuloggen. Alle Logins des selben Users vom selben Rechner aus gelten als eine Session. Wenn du erst mal remote eingeloggt bist, kann lokal auf dem Server der User mit dem Kommando su NeuerUser gewechselt werden. (Der neue User muss auf dem System bereits einen Account haben.)



Weiter: Zeit und Sprachen einstellen