Ich bin dabei, einen Cloud-Server so zu konfigurieren, dass er den folgenden Stack ausführt: Ruby, Passenger, Apache; unter Ubuntu 10.04 (Lucid Lynx).
Um die Verwaltung des Servers zu vereinfachen, richte ich RSA-Schlüssel ein root
, www-data
damit ich ssh
auf den Server zugreifen kann. Das , was ich tat es nicht wie war das www-data
‚s .ssh
Verzeichnis in sat /var/www
dem das Standardverzeichnis Setup für Apache ist. Ich mache mir Sorgen, dass das .ssh
Verzeichnis verfügbar gemacht werden kann , wenn Apache nicht richtig konfiguriert ist .
Ich bin auf die Lösung gestoßen, die ~/.ssh/authorized_keys
Datei durch Ändern von in an einen zentralen Speicherort AuthorizedKeysFile
zu verschieben /etc/ssh/sshd_config
. Dies bietet zwei Vorteile: Einen einzigen Speicherort für Schlüssel, und Sie müssen sich keine Gedanken über eine fehlerhafte Apache-Konfiguration machen. Der einzige Nachteil, den ich mir vorstellen kann, ist, dass jetzt jeder Benutzer für die Anmeldung auf dem Server verfügbar ist (eindeutig ein zweischneidiges Schwert der zentralen Schlüsseldatei).
Gibt es etwas, das ich in dieser Konfiguration vermisst habe? Habe ich mich überbelichtet oder ist dies eine bessere Lösung als einzelne authorized_keys
Dateien?
Ich bin grün, wenn es um Serververwaltung geht, aber ich bin bereit, schlechte Namen für schlechte Dinge zu nennen. : D
quelle
id_rsa
Datei gibt~/.ssh
und sie es schaffen, das zu lesen)Antworten:
Alle Schlüsseldateien können in demselben Verzeichnis zentralisiert und nicht in derselben Datei gemischt werden.
Richten Sie die
sshd_config
Datei einfach so ein:Auf deinem Server:
/etc/ssh/authorized_keys/www-data
/etc/ssh/authorized_keys/root
In Bezug auf die Zugriffsrechte werden diese Einstellungen von sshd akzeptiert:
/etc/ssh/authorized_keys
gehörtroot:root
und hat den Modus 755. Schlüsseldateien gehörenroot:root
und haben den Modus 644.Andere Modi funktionieren möglicherweise, aber ich habe sie nicht getestet.
quelle
Im Allgemeinen würde ich nicht tun, was Sie vorschlagen. Es verstößt gegen gängige Annahmen (wie das
~/.ssh/authorized_keys
Arbeiten für Ihre Benutzer) und führt Probleme ein, die Sie bereits in Ihrer Frage angesprochen haben. Wenn Sie vor der Implementierung eklatante Probleme feststellen, ist Ihre Lösung nicht ideal.Was die Sicherheit betrifft, halte ich es auch für eine SCHRECKLICHE Idee, dass jeder ein Dienstkonto teilt: Im Moment sind es nur Sie, und Sie wissen, dass Sie die Änderungen vornehmen. In 5 Jahren, wenn Sie 5 Administratoren haben, werden Sie wissen wollen, wer was geändert hat, und in den Audit-Protokollen nachsehen wollen, wer welchen Schlüssel wann verwendet hat.
Sie sind besser dran, wenn sich Leute als sich selbst anmelden und
sudo
etwas Ähnliches verwenden, um ihre Privilegien zu erweitern und das zu tun, was sie tun müssen.Wenn Sie dennoch SSH-Schlüssel zentralisieren möchten, sollten Sie sich ein Bereitstellungssystem wie Puppet oder radmind ansehen , um die
authorized_keys
Dateien in den entsprechenden~user/.ssh/
Verzeichnissen zu verwalten / zu verteilen (oder eine selbst entwickelte Lösung zu entwickeln, mit der SCPs eingesetzt werden können).Wenn Sie auf mehrere Server erweitern, sollten Sie sich den LDAP-Patch für öffentliche Schlüssel für ältere Versionen von OpenSSH (oder die
AuthorizedKeysCommand
Direktive und ein entsprechendes Skript in einer neueren Version von OpenSSH) ansehen, damit Sie Ihre Benutzer zentralisieren und nicht verteilen müssen ihre Schlüssel in Ihrem gesamten Netzwerk, aber das ist wahrscheinlich ziemlich weit weg für Sie.quelle
root
noch habenwww-data
ist das richtig?~www-data/.ssh
Verzeichnis zu haben ist keine schreckliche Sache (mit entsprechenden Berechtigungen ist es kein wesentliches Risiko), aber wenn Sie es verwenden wollen, ist~www-data/.ssh
es wahrscheinlich besser, Ihr Webroot nicht zu haben~www-data
(entweder das Webroot- oderwww-data
das Home-Verzeichnis von Move ). Die Unterscheidung der Benutzer ist das größere Argument IMHO - Ich weiß, wenn ich mich anmelde, weißjsmith
ich, dass es John Smith ist. Wenn ichwww-data
Login sehe, muss ich mehr graben, um herauszufinden, wer das war.AuthorizedKeysFile
in/etc/ssh/sshd_config
Standardwerten%h/.ssh/authorized_keys
. Hier%h
ist ein Platzhalter für das Home-Verzeichnis. Was hält Sie davon ab, es auf/some/folder/ssh_keys_by_user/%h/
oder sogar einzustellen/root/ssh_keys/%u
. Sie können dem jeweiligen Benutzer sogar Schreibzugriff auf seine einzelne Datei gewähren (und nur seine), um die Datei mit dem Standardspeicherort (mitln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys
) zu verknüpfen und die oben genannten Annahmen nicht zu verletzen.