Remote Linux Admin Consultant - Best Practice [geschlossen]

19

Wir beauftragen einen Berater in Indien als Linux-Administrator. Wir kennen ihn nicht gut und er benötigt Root-Zugriff auf alle unsere Server, um seine Arbeit zu erledigen (einschließlich eines Sicherheits-Audits).

Was ist die beste Vorgehensweise, um einem Remote-Berater solche Arbeiten zu ermöglichen, damit wir vor bösartigen Aktivitäten geschützt sind?

Danke im Voraus.

Anderson Tess
quelle
66
Wenn Sie jemandem nicht vertrauen, geben Sie ihm keinen Zugriff auf Ihre Server. Zeitraum. Stellen Sie jemanden ein, dem Sie vertrauen können.
EEAA
6
Sie können nicht umhin, sich zu fragen, ob dies eine Aktion ist, die von höheren Stellen angeordnet wurde, und Sie suchen nach Munition / guten Argumenten dagegen?
Matt
5
LOL ... Ist das eine gute Idee?
ewwhite
5
Wenn Sie jemandem Root-Zugriff auf Ihre Server gewähren, haben Sie absolut keine Möglichkeit, sich systematisch vor bösartigen Aktivitäten auf den Rechnern zu schützen, auf die die Person Root-Zugriff hat.
Craig
3
Hoffe, Sie haben gute Offline-Backups
CaffeineAddiction

Antworten:

55

Nicht . Außerdem besteht für Sie die gleiche Gefahr der Unfähigkeit wie für Böswilligkeit .

Ich möchte sagen, dass es in Indien wahrscheinlich großartige Systemadministratoren gibt, aber die Art und Weise, wie viele Unternehmen Dinge tun, ist schrecklich.

Wenn Sie durch einen Karosseriebau gehen, werden Sie wahrscheinlich auch einen ziemlich großen Einschnitt sehen, und es ist unwahrscheinlich, dass viele von ihnen ihre Mitarbeiter ordnungsgemäß überprüft haben. Ich habe mit drei gesprochen, von denen einer für mich gearbeitet hat und keiner von ihnen hat technische Interviews geführt.

Wenn Sie also jemanden aus der Ferne einstellen müssen, um Himmels willen, interviewen Sie ihn selbst und stellen Sie sicher, dass er seine Arbeit kennt. Die Systemadministration ist viel zu wichtig, um sie blind übergeben zu können

Nun, da ich den Teil der "Unfähigkeit" behandelt habe,

Administration ist ein ziemlich weit gefasster Satz. Und jemand mit Root-Zugriff kann alles tun . Nun persönlich denke ich , ein Konto für den Administrator erstellen und ihm die Möglichkeit gibt , sich durch sudo zu erheben ist eine bessere Idee (die Config - Management - System sollte umgehen , wenn Sie viele Server haben). Das heißt, auch das setzt ein gewisses Maß an Vertrauen voraus. Es gibt so viele Geschichten über den Schaden, den ein verärgerter Sysadmin anrichten kann. Alle Passwörter ändern? Sicher, Sie könnten irgendwann einsteigen, aber es ist nicht trivial, und es würde wahrscheinlich mehr kosten, als Sie sparen.

Betrachten Sie also einen Einheimischen. Wenn nicht, ziehen Sie jemanden in Betracht, den Sie selbst überprüft und direkt eingestellt haben .

Geselle Geek
quelle
35
Es fällt mir schwer genug, dem Mann, der eine Tür von mir entfernt ist , privilegierten Zugang zu gewähren, geschweige denn jemandem, der 12 Zeitzonen entfernt ist. Mein Verstand verwirrt, dass jemand dies überhaupt als Option in Betracht ziehen würde.
EEAA
7
Wenn Sie eine Werkstatt durchlaufen, werden Sie nicht einmal wissen, wer wirklich im Besitz dieser Stammberechtigungsnachweise ist. Sie können nicht garantieren, dass die Person, die heute an Ihren Systemen arbeitet, die gleiche Person ist, die morgen daran arbeitet. Sie haben keine Garantie dafür, dass diese Leute nicht buchstäblich ihre Root-Passwörter per E-Mail aneinander senden (ich habe es zu oft gesehen), und so weiter.
Craig
2
Niemand sollte sich als root in eine moderne Linux-Distribution einloggen. Das Root-Konto sollte nicht einmal ein Passwort haben. Stattdessen sollte es Benutzer geben, die subefugt sind, sich zu root zu erheben. Wenn jemand sagt, er brauche "Root-Zugriff", sollte er danach fragen. Wenn diese Person angibt, "das Root-Passwort" zu benötigen, ist sie für die Ausführung der Aufgabe sowieso nicht zuständig.
Monty Harder
@MontyHarder meinst du, (bestimmte) Benutzer sollten die sudoBerechtigung haben , sich selbst zu root zu erheben? Wenn nicht, können Sie Ihre bewährten Methoden für die suErhebung zum Root-Benutzer beschreiben, ohne ein Root-Kennwort zu haben und zu verteilen?
MadHatter unterstützt Monica
2
@MontyHarder das macht sehr viel Sinn, es ist einfach nicht das, was Sie das erste Mal gesagt haben; sudound susind zwei völlig verschiedene Dinge. Danke fürs klarstellen.
MadHatter unterstützt Monica
33

Tun Sie dies nicht, wie bereits erwähnt.

Die einzige Möglichkeit, sich zu schützen, besteht darin, Folgendes zu tun:

  1. Bestehen Sie darauf, dass der Berater ein Konfigurationsmanagementsystem Ihrer Wahl verwendet.
  2. Der Berater erstellt Konfigurationsmanagement-Manifeste für die Aktionen, die Sie ausführen müssen.
  3. Der Berater testet die Manifeste auf einem Testsystem.
  4. Wenn der Berater bereit ist, schreibt er die Konfiguration in ein Code-Repository.
  5. Alle Änderungen werden entweder von einem Mitarbeiter oder einem anderen Berater überprüft , der absolut keine Beziehung zum ersten Mitarbeiter hat und keine Möglichkeit hat, mit diesen in Kontakt zu treten.
  6. Sobald die Änderungen abgemeldet sind, werden sie von Ihnen oder einem Mitglied Ihres Personals auf den Server angewendet. Der ursprüngliche Berater sollte keinen Zugriff auf eines Ihrer Systeme haben.

Es sollte klar sein, dass dies ein sehr umständlicher und ineffizienter Prozess ist. Wenn Sie jedoch darauf bestehen, dass Sie Arbeiten von einer nicht vertrauenswürdigen Person annehmen, ist dies eine Möglichkeit, mit Dingen umzugehen.

Wie ich jedoch empfohlen habe, ist es viel besser, eine bekannte, vertrauenswürdige Person einzustellen.

EEAA
quelle
Warum nicht? Ich arbeite aus der Ferne und verwalte rund 300 dedizierte Server. Innerhalb einer Stunde könnte ich alles zerstören, wenn ich möchte. Aber das würde ich natürlich nicht tun, selbst wenn ich gefeuert würde. Ich bin für das Erstellen von Backups verantwortlich, habe die höchsten Privilegien (nicht nur ich, einige von uns) und wir können jederzeit bösartig werden. Der Grund, warum wir das nicht tun, ist Moral und Ethik. Wir lieben Unternehmen und Mitarbeiter und unsere Arbeit im Allgemeinen. Das Wichtigste dabei ist, jemandem zu vertrauen und eine moralische Person für diesen Job zu finden.
Flüchtling
@fugitive Du sprichst von einer anderen Situation. Ich gehe davon aus, dass Sie von dem Unternehmen, für das Sie sich beraten, als vertrauenswürdig eingestuft werden, da Sie sonst nicht die Berechtigungen erhalten, die Sie haben. Im Falle des OP ist es klar, dass sie diesem Berater nicht vertrauen, weshalb ich empfohlen habe, dieser Person keine Berechtigungen für wichtige Systeme zu erteilen.
EEAA
Nun, Vertrauen muss verdient werden. :)
Flüchtling
10

Was ist die beste Vorgehensweise, um einem Remote-Berater solche Arbeiten zu ermöglichen, damit wir vor bösartigen Aktivitäten geschützt sind?

Aus rechtlicher Sicht: Due Diligence im Vorfeld und strafrechtliche Verfolgung von Vertragsverletzungen.

Sie beginnen mit den üblichen guten Einstellungspraktiken, die auch bei der Einstellung von Mitarbeitern vor Ort (und / oder Dienstleistern) Anwendung finden. Dazu gehören die Überprüfung des bereitgestellten Lebenslaufs, die Anforderung von Zeugnissen und Zertifizierungsnummern, die Überprüfung und der Anruf ihrer Referenzen, Befragung, möglicherweise sogar eine Hintergrundüberprüfung oder Sicherheitsüberprüfung usw. usw.

Dann wenden Sie die Karotte an : Bezahlen Sie fairen Wert, bieten Sie attraktive Arbeit, tolle Kollegen, gute Arbeitsbedingungen und Vorteile usw. ( Wenn Sie Erdnüsse bezahlen, bekommen Sie Affen. )

Und der Knüppel : Verstoßen Sie gegen die Bestimmungen Ihres Arbeits- / Dienstleistungsvertrags und wir werden unsere Anwälte an Ihnen erkranken und Sie bankrott machen!

Leider wird beides beim Überschreiten von Grenzen und Zeitzonen immer schwieriger.

Sobald Sie sich entschieden haben, jemanden einzustellen:

  • Klare Richtlinien und Richtlinien. Die Menschen sollten sich bewusst sein, was sie tun sollen und was nicht.
  • Es gilt der Grundsatz des minimalen Zugangs, der es Menschen (aus Versehen oder absichtlich) erschwert, Dinge zu tun, die sie nicht tun sollten. Für den typischen Systemadministrator bedeutet dies häufig immer noch vollständigen Zugriff, aber ein Sicherheitsprüfer sollte beispielsweise keinen vollständigen Administratorzugriff benötigen, sondern kann einfach die vorhandenen Administratoren auffordern, in seinem Namen ein Skript auszuführen, das die Details sammelt, die er für die Erstellung seines Berichts benötigt. Ein solches Skript kann einfach vorab überprüft werden.
  • vertrauen, aber verifizieren. Lassen Sie einfach das vorhandene Personal die Arbeit eines neuen Tischlers überprüfen und wie immer Audit-Informationen sammeln.
  • usw. usw.

In dieser Frage wird beschrieben, was meine Kunden normalerweise tun müssen, um einen Remotezugriff für mich einzurichten. Dies könnte auch für Sie ein Ausgangspunkt sein.

HBruijn
quelle
3
"Wenn man Erdnüsse bezahlt, bekommt man Affen" oder Elefanten. Ich bin mir nicht sicher, ob das besser oder schlechter ist als Affen.
ein
Nur um hinzuzufügen, der "Stick" -Teil Ihrer Antwort ist möglicherweise schwieriger durchzusetzen, wenn sich die andere Partei in einem anderen Land befindet. Sie sollten sich zuerst mit einem sachkundigen / erfahrenen Anwalt beraten, um festzustellen, welche Möglichkeiten Sie haben, falls etwas schief geht.
user121391
Die Durchsetzung nach einem Vorfall ist wahrscheinlich mehr als die Zusammenarbeit mit einer Partei, der Sie in erster Linie vertrauen können. Aus dem gleichen Grund gibt es Menschen, denen Sie voll und ganz vertrauen können und denen Sie instinktiv vertrauen sollten.
Craig
7

Es gibt eine systemische Methode, um sich selbst zu schützen, die ich nicht erwähnt habe.

Hosten Sie Ihre Linux-Instanzen als VMs auf einem Virtualisierungshypervisor (VMware, Xenserver, Hyper-V usw.).

Geben Sie dem Remote-Administrator keinen Administratorzugriff auf den Hypervisor. Der Remote-Administrator würde nur Root-Zugriff auf die VMs selbst erhalten.

Implementieren Sie ein hypervisorbasiertes Sicherungssystem (Unitrends, Veeam, vSphere Data Protection usw.)

Bewahren Sie mindestens einen Snapshot pro Tag für jede Linux-VM auf und gehen Sie dabei so weit zurück, wie Sie es für erforderlich halten.

Gewähren Sie dem Remote-Administrator KEINEN Schreibzugriff auf die Backup-Repositorys.

Wenn Sie dies tun, erhalten Sie Backup-Snapshots von jeder Linux-Instanz, über die der Remote-Administrator keine Kontrolle hat. Wenn der Remote-Administrator absichtlich oder versehentlich Probleme hat, können Sie jederzeit ein Backup von vor dem Auftreten des Problems erstellen, um die Vorgänge zu bewerten und möglicherweise einen sauberen Zustand wiederherzustellen.

Dies ist kein Beweis für einen Hypervisor-Seitenkanalangriff, der möglicherweise von einer VM aus gemountet werden kann, auf die der Angreifer root-Zugriff hat.

Wenn Ihre Backups nicht rechtzeitig genug sind, werden Sie dadurch nicht geschützt.

Sie müssen absolut darauf vertrauen, wer die Kontrolle über Ihren Hypervisor und die Backup-Infrastruktur hat.

Wenn Sie dies in der Cloud tun (AWS, Azure usw.), unterscheiden sich die Implementierungsdetails, aber das allgemeine Konzept ist dasselbe.

Teilen Sie die Verantwortlichkeiten im Wesentlichen auf Parteien auf, die keine Geschäftspartner sind, und stellen Sie nur Personen ein, denen Sie vertrauen.

Craig
quelle
1
Wenn Sie das alles erledigt haben, sind Sie bereits der Systemadministrator und stellen einen entfernten Lakaien oder PJ ein.
Criggie
3
Nicht völlig. Sie verwalten nur den Hypervisor und die Sicherungen. Das ist zugegebenermaßen nichts. Aber es ist auch nicht unbedingt die gleiche Qualifikation oder Verwaltungslast. Wenn Sie eine Virtualisierung durchführen (wir sind es), haben Sie wahrscheinlich eine andere Person oder andere Personen, die dafür verantwortlich sind, was auch immer auf den einzelnen VMs geschieht.
Craig
1
Obwohl die allgemeine Idee gut ist, hilft sie nur gegen Inkompetenz / Fehler (Löschen der Produktionsdatenbank usw.), nicht gegen Arglist (es sei denn, Sie überprüfen jede Änderung täglich und vergleichen den Inhalt der Änderungen, im Wesentlichen eine tägliche vollständige Prüfung). Der Schaden kann auch nicht mit technischen Dingen in Zusammenhang stehen, zum Beispiel können Kundendaten oder Geschäftsgeheimnisse nicht auf diese Weise zurückgehalten werden, da er nur reaktiv ist.
user121391
@ user121391: Ich kann dem nicht wirklich widersprechen, insbesondere in Bezug auf die Datenexfiltration. Sobald die Daten erfasst sind, haben Sie keine Kontrolle mehr.
Craig
-1

Gib ihm sein eigenes Benutzerkonto. Finden Sie dann genau heraus, worauf er Zugriff haben muss, und gewähren Sie nur diesen Zugriff, aber sonst nichts. Wenn er beispielsweise einen Apache-Webserver neu konfigurieren muss, verwenden Sie eine ACL, um ihm Schreibzugriff auf die Apache-Konfigurationsdateien zu gewähren, und konfigurieren sudoSie ihn so, dass er den Apache-Dienst neu startet, aber keine anderen Befehle als Root ausführt. Wie immer sollten Sie Backups von allem aufbewahren, auf das Sie ihm Zugriff gewähren (in diesem Fall von Ihren Apache-Konfigurationsdateien).

Micheal Johnson
quelle
3
Wenn Sie die Berechtigung zum Konfigurieren und Neustarten eines Apache haben, der als Root ausgeführt wird, werden im Wesentlichen Root-Berechtigungen vergeben. Es ist einfach genug, eine beliebige Binärdatei vom Apache-Prozess ausführen zu lassen, z. B. um Protokolle an diese weiterzuleiten. Richten Sie Apache besser so ein, dass es als Nicht-Root-Server ausgeführt werden kann und weiterhin an privilegierte Ports gebunden ist. Das habe ich in der Vergangenheit in dieser Situation getan .
MvG