Das Produkt meines Unternehmens ist im Wesentlichen eine Linux-Box (Ubuntu), die sich in einem fremden Netzwerk befindet und unsere Software ausführt. Bisher hatten wir weniger als 25 Boxen in freier Wildbahn und haben sie mit TeamViewer verwaltet.
Wir sind jetzt dabei, 1000 dieser Boxen auszuliefern, und TeamViewer ist keine Option mehr. Meine Aufgabe ist es, eine Möglichkeit zu finden, auf diese Boxen zuzugreifen und die Software auf ihnen zu aktualisieren . Diese Lösung sollte in der Lage sein, Firewalls zu durchdringen und was Sie haben.
Ich habe überlegt:
1. Eigenentwickelte Lösung (z. B. ein Linux-Dienst), die einen SSH-Reverse-Tunnel zu einem Server in der Cloud und einen weiteren Dienst in der Cloud herstellt, der diese verfolgt und Ihnen ermöglicht, eine Verbindung zu ihnen herzustellen .
Dies ist offensichtlich arbeitsintensiv und fühlt sich offen gesagt an, als würde man das Rad neu erfinden, da so viele andere Unternehmen bereits auf dieses Problem gestoßen sein müssen. Trotzdem bin ich mir nicht sicher, ob wir einen großartigen Job machen werden.
2. Tools wie Marionette, Koch oder OpenVPN
Ich habe versucht, so viel wie möglich zu lesen, aber ich kann nicht genug durch das Marketing sprechen, um die naheliegende Wahl zu verstehen.
Niemand außer uns muss sich mit diesen Boxen verbinden. Gibt es jemanden mit einschlägiger Erfahrung, der mir einige Hinweise geben kann?
quelle
Antworten:
Updates ziehen, nicht pushen
Während Sie skalieren, wird es unmöglich, Push- Updates für alle Ihre Produkte durchzuführen.
Lassen Sie Ihre Produkte stattdessen regelmäßig ihre Aktualisierungen abrufen, und fügen Sie dann dem Server zusätzliche Kapazität hinzu, wenn Sie wachsen.
Wie?
Dieses Problem wurde bereits gelöst, wie Sie vorgeschlagen haben. Hier sind einige Ansätze, die ich mir vorstellen kann.
rsync
/scp
die benötigten Dateien.Raw-Download + Signaturprüfung :
ansible : Ansible ist ein großartiges Tool zum Verwalten von Systemkonfigurationen. Es ist im Bereich der Puppen / Köche, aber ohne Agenten (verwendet Python) und so konzipiert, dass es idempotent ist. Wenn die Bereitstellung Ihrer Software ein kompliziertes Bash-Skript erfordern würde, würde ich ein Tool wie dieses verwenden, um die Durchführung Ihrer Updates zu vereinfachen.
Natürlich gibt es andere Möglichkeiten, dies zu tun. Aber es bringt mich zu einem wichtigen Punkt.
Unterschreiben / validieren Sie Ihre Updates!
Unabhängig davon, was Sie tun, müssen Sie unbedingt über einen Mechanismus verfügen, der sicherstellt, dass Ihr Update nicht manipuliert wurde. Ein böswilliger Benutzer könnte sich in einer der oben genannten Konfigurationen als Updateserver ausgeben. Wenn Sie Ihr Update nicht validieren, ist Ihre Box viel einfacher zu hacken und in sie einzusteigen.
Eine gute Möglichkeit, dies zu tun, besteht darin, Ihre Aktualisierungsdateien zu signieren. Sie müssen ein Zertifikat führen (oder jemand dafür bezahlen), aber Sie können Ihren Fingerabdruck auf jedem Ihrer Geräte installieren, bevor Sie sie ausliefern, damit diese manipulierte Updates ablehnen können.
Physische Sicherheit
Wenn jemand physischen Zugriff auf die Bereitstellung des Kunden hat, kann er natürlich problemlos den Server übernehmen. Aber zumindest können sie die anderen Bereitstellungen nicht angreifen! Die physische Sicherheit liegt wahrscheinlich in der Verantwortung Ihres Kunden.
Sicherheit
Was auch immer Sie tun, Sicherheit muss von Anfang an eingebaut werden . Schneiden Sie hier keine Ecken - Sie werden es am Ende bereuen, wenn Sie dies tun.
Das vollständige Sichern dieses Update-Systems fällt nicht in den Geltungsbereich dieses Beitrags. Ich empfehle dringend, einen Berater zu engagieren, wenn Sie oder jemand in Ihrem Team keine Kenntnisse in diesem Bereich haben. Es ist jeden Cent wert.
quelle
fpm
undaptly
zwei großartige Tools sind, die das Erstellen und Hosten Ihrer eigenen Pakete erheblich vereinfachen. Ich habe diesen Prozess erst kürzlich durchlaufen und es war ziemlich schön.Müssen Sie tatsächlich darauf zugreifen?
Oder aktualisieren Sie sie einfach? Weil Sie sie selbst aktualisieren lassen können, ähnlich wie treffende Updates von sich aus unbeaufsichtigt.
Wenn Sie sich anmelden müssen
Warum lauscht kein OpenSSH-Dämon über die Portweiterleitung? Jeder Kunde kann einen eigenen Sicherheitsschlüssel haben und wird nur bei Bedarf verbunden.
Bis zu Ihren Kunden
Sie müssen berücksichtigen, was der Kunde auch zu akzeptieren bereit ist. Sie sind möglicherweise nicht mit dem Fernzugriff auf ihr Netzwerk oder nur mit bestimmten Technologien / Konfigurationen vertraut.
quelle
Ich schlage ein Orchestrierungswerkzeug wie Marionette oder Salz vor .
Salt ist eine Nachrichtenwarteschlange und kann eine dauerhafte ausgehende Verbindung von Ihrer Appliance zu einem Masterserver herstellen. Sie können dies verwenden, um beliebige Befehle auf den Appliances auszuführen ... wie z
apt-get
.Die andere Option ist Puppet, wo Sie noch einen Master-Server haben und die Clients ausgehende Verbindungen von ihren Standorten aus herstellen.
Ich verwende beide Tools für einen ähnlichen Zweck, bei dem ich möglicherweise keine administrative Kontrolle über die Firewall habe.
quelle