Zdalny konsultant administratora systemu Linux - najlepsze praktyki [zamknięte]


19

Zatrudniamy konsultanta w Indiach jako naszego administratora systemu Linux. Nie znamy go dobrze, a on wymaga dostępu root do wszystkich naszych serwerów, aby wykonać swoją pracę (w tym audyt bezpieczeństwa).

Jaka jest najlepsza praktyka umożliwiająca zdalnemu konsultantowi wykonanie takiej pracy, abyśmy byli chronieni przed złośliwymi działaniami?

Z góry dziękuję.


66
Jeśli komuś nie ufasz, nie dawaj mu dostępu do swoich serwerów. Kropka. Zatrudnij kogoś, komu możesz zaufać.
EEAA

6
Nie możesz przestać się zastanawiać, czy jest to akcja zlecana przez przełożonych i szukasz amunicji / dobrych argumentów przeciwko niej?
Matt

5
LOL ... Czy to dobry pomysł?
ewwhite

5
Jeśli dajesz komuś dostęp root do swoich serwerów, nie masz absolutnie żadnej możliwości, aby systematycznie chronić się przed złośliwymi działaniami na komputerach, do których dana osoba ma dostęp root.
Craig

3
Mam nadzieję, że masz dobre kopie zapasowe offline
CaffeineAddiction

Odpowiedzi:


55

Nie rób tego . Ponadto grozi ci tyle samo nieudolności, co złośliwość z tego, co widziałem w typowym sposobie, w jaki firmy sobie z tym radzą.

Chciałbym powiedzieć, że prawdopodobnie w Indiach są świetni administratorzy systemów, ale sposób, w jaki wiele firm robi rzeczy, jest straszny.

Jeśli przechodzisz przez salon fryzjerski, prawdopodobnie zauważysz, że trafia do nich dość duża ciężarze, a wiele z nich prawdopodobnie nie przeprowadziło prawidłowej weryfikacji swoich pracowników. Rozmawiałem z trzema, z których jeden pracowałem i żaden z nich nie przeprowadził żadnych wywiadów technicznych.

Tak więc, jeśli musisz zatrudnić kogoś zdalnie, na miłość boską, przesłuchaj go osobiście i upewnij się, że zna swoją pracę. Administracja systemem jest zdecydowanie zbyt ważna, aby przekazać ją komuś na ślepo

Teraz, kiedy poradziłem sobie z częścią „nieudolności”,

Administracja jest dość szerokim wyrażeniem. A ktoś z dostępem do roota może zrobić wszystko . Teraz osobiście uważam, że utworzenie konta dla administratora i umożliwienie mu awansowania przez sudo jest lepszym pomysłem (z czym powinien sobie radzić system zarządzania konfiguracją, jeśli masz wiele serwerów). To powiedziawszy, nawet to opiera się na pewnym zaufaniu. Jest tak wiele historii o zwykłych szkodach, jakie może wyrządzić niezadowolony administrator. Zmienić wszystkie hasła? Pewnie , że w końcu możesz się dostać, ale nie jest to trywialne i prawdopodobnie kosztowałoby więcej niż oszczędzasz.

Więc rozważ lokalny. Jeśli nie, rozważ osobę, którą sam zweryfikowałeś i którą bezpośrednio zatrudniłeś .


35
Mam wystarczająco dużo czasu, aby dać uprzywilejowany dostęp facetowi, który jest o kilka kroków ode mnie, nie mówiąc już o oddaleniu się o 12 stref czasowych. Mój umysł zastanawia się, że ktokolwiek nawet uznałby to za opcję.
EEAA

7
Jeśli przechodzisz przez warsztat, nie będziesz nawet wiedział, kto tak naprawdę jest w posiadaniu tych podstawowych uprawnień, nie masz gwarancji, że osoba pracująca w twoich systemach dzisiaj będzie tą samą osobą, która będzie pracowała nad nimi jutro, nie masz żadnej gwarancji, że ci ludzie dosłownie nie będą wysyłać do siebie hasła (-ów) na poziomie roota w sposób wyraźny (widziałem to zbyt wiele razy) i tak dalej.
Craig

2
Nikt nie powinien logować się do nowoczesnej dystrybucji Linuksa jako root. Konto root nie powinno nawet mieć hasła. Zamiast tego powinni być użytkownicy, którzy mają suuprawnienia do podniesienia się do rootowania. Gdy ktoś mówi, że potrzebuje „dostępu do konta root”, powinien o to poprosić. Jeśli ta osoba mówi, że potrzebuje „hasła roota”, to i tak nie jest kompetentny do wykonania tej pracy.
Monty Harder

@MontyHarder, czy masz na myśli, że (niektórzy) użytkownicy powinni mieć sudouprawnienia do podnoszenia siebie na root? Jeśli nie, czy mógłbyś nakreślić swoje najlepsze praktyki dotyczące supodnoszenia się do rootowania bez posiadania i rozpowszechniania hasła roota?
MadHatter obsługuje Monikę

2
@MontyHarder ma to sens, po prostu nie jest to to, co powiedziałeś za pierwszym razem; sudoi susą dwie zupełnie różne rzeczy. Dzięki za wytłumaczenie.
MadHatter obsługuje Monikę

33

Jak już wspomniano, nie rób tego.

Jedynym sposobem, w jaki możesz się zabezpieczyć, jest zrobienie czegoś takiego:

  1. Nalegaj, aby konsultant używał wybranego przez ciebie systemu zarządzania konfiguracją.
  2. Konsultant napisze manifesty zarządzania konfiguracją dla działań, które należy wykonać.
  3. Konsultant przetestuje manifesty w systemie testowym.
  4. Gdy będzie gotowy, konsultant prześle konfigurację do repozytorium kodów.
  5. Wszystkie zmiany są sprawdzane przez członka personelu lub innego konsultanta, który absolutnie nie ma związku z pierwszym i nie ma możliwości skontaktowania się z nimi.
  6. Po wylogowaniu zmiany są one stosowane na serwerze przez Ciebie lub członka personelu. Pierwotny konsultant nie powinien mieć dostępu do żadnego z twoich systemów.

Jak powinno być jasne, jest to bardzo niezdarny i nieefektywny proces, ale jeśli nalegasz na przyjęcie pracy od niezaufanej osoby, jest to jeden ze sposobów radzenia sobie z różnymi sprawami.

Jednak, jak zalecałem, znacznie lepiej jest zatrudnić znaną, zaufaną osobę.


Dlaczego nie? Pracuję zdalnie, zarządzając około 300 serwerami dedykowanymi, w ciągu godziny mógłbym wszystko zniszczyć, jeśli chcę. Ale oczywiście nie zrobiłbym tego, nawet gdybym został zwolniony. Jestem odpowiedzialny za tworzenie kopii zapasowych, mam najwyższe uprawnienia (nie tylko ja, kilku z nas) i możemy w każdej chwili zostać złośliwymi. Powodem, dla którego tego nie robimy - jest moralność i etyka. Kochamy firmę i pracowników oraz naszą pracę w ogóle. Najważniejsze jest, aby komuś zaufać i znaleźć osobę moralną do tej pracy.
zbieg z

@fugitive Mówisz o innej sytuacji. Zakładam, że ufasz firmie, z którą się konsultujesz, w przeciwnym razie nie udzieliliby ci twoich uprawnień. W przypadku PO jasne jest, że nie ufają temu konsultantowi, dlatego odradzam udzielanie tej osobie uprawnień w systemach, które mają znaczenie.
EEAA

Cóż, trzeba zdobyć zaufanie. :)
zbieg

10

Jaka jest najlepsza praktyka umożliwiająca zdalnemu konsultantowi wykonanie takiej pracy, abyśmy byli chronieni przed złośliwymi działaniami?

Z prawnego punktu widzenia: należyta staranność i surowe kary za naruszenie umowy.

Zaczynasz od zwykłych dobrych praktyk zatrudniania, które obowiązują również przy zatrudnianiu pracowników lokalnych (i / lub dostawców usług), które obejmują sprawdzanie faktów w dostarczonym CV, proszenie o transkrypcje edukacji i numery certyfikatów, sprawdzanie i dzwonienie do ich referencji, wywiad, a może nawet kontrola w tle lub kontrola bezpieczeństwa itp. itp.

Następnie zastosuj marchewkę : zapłać godziwą wartość, zaoferuj atrakcyjną pracę, niesamowitych współpracowników, dobre warunki pracy i świadczenia itp. ( Jeśli płacisz orzeszki ziemne, dostajesz małpy ).

I kij : złam warunki umowy o pracę / umowę o świadczenie usług, a my obarczymy cię prawnikami i doprowadzimy do bankructwa!

Niestety oba powyższe stają się coraz trudniejsze przy przekraczaniu granic i stref czasowych.

Gdy zdecydujesz się kogoś zatrudnić:

  • jasne wytyczne i polityki, ludzie powinni być świadomi tego, co powinni robić, a czego nie.
  • obowiązuje zasada minimalnego dostępu, utrudniająca ludziom (przypadkowo lub celowo) robienie rzeczy, których nie powinni. Dla typowego administratora systemu często oznacza to nadal pełny dostęp, ale na przykład audytor bezpieczeństwa nie powinien potrzebować pełnego dostępu administratora, ale może po prostu poprosić istniejących administratorów o uruchomienie skryptu w jego imieniu, który zbiera dane potrzebne do złożenia raportu. Taki skrypt można łatwo sprawdzić wcześniej.
  • ufaj ale sprawdzaj. Wystarczy, że istniejący personel sprawdzi pracę nowego stolarza i jak zawsze zbierze informacje z audytu.
  • itd itd.

To pytanie zawiera szczegółowe informacje na temat tego, co zwykle proszę moich klientów, aby ustanowić dla mnie zdalny dostęp, co może być również punktem wyjścia dla Ciebie.


3
„jeśli zapłacisz orzeszki ziemne, dostaniesz małpy” lub słonie. Choć przyszło mi to do głowy, nie jestem pewien, czy to lepsze, czy gorsze niż małpy.
CVn

Dodajmy, że część „przyklejona” w odpowiedzi może być trudniejsza do wyegzekwowania, jeśli druga strona znajduje się w innym kraju. Powinieneś najpierw skonsultować się z doświadczonym / doświadczonym prawnikiem, aby sprawdzić, jakie masz możliwości na wypadek, gdyby coś poszło nie tak.
user121391,

Ponadto egzekwowanie prawa po incydencie prawdopodobnie jest do bani bardziej niż praca ze stroną, której możesz zaufać. Z tego samego powodu są ludzie, którym możesz całkowicie zaufać, do których możesz nie być skłonny automatycznie, i ludzie, których instynktownie przyciągasz, do których prawdopodobnie nie powinieneś w ogóle ufać.
Craig,

7

Jest jedna systemowa metoda ochrony siebie, która przychodzi mi na myśl, o której nie wspomniałem.

Hostuj instancje systemu Linux jako maszyny wirtualne na hiperwizorze wirtualizacji (VMware, Xenserver, Hyper-V itp.).

NIE udzielaj administratorowi zdalnego dostępu administracyjnego do hiperwizora. Zdalny administrator uzyskałby dostęp root tylko do samych maszyn wirtualnych.

Wdróż system tworzenia kopii zapasowych oparty na hiperwizorze (Unitrends, Veeam, vSphere Data Protection itp.)

Zrób co najmniej jedną migawkę na dzień dla każdej maszyny wirtualnej z systemem Linux, cofając się w czasie, który uważasz za konieczny.

NIE udzielaj zdalnemu administratorowi dostępu do zapisu do repozytoriów kopii zapasowych.

Jeśli to zrobisz, będziesz mieć zapasowe migawki każdej instancji Linuksa, nad którą zdalny administrator nie ma kontroli. Jeśli zdalny administrator zrobi coś podejrzanego, czy to celowo, czy przypadkowo, zawsze możesz zamontować kopię zapasową sprzed zdarzenia hinkness, aby ocenić, co się stało, i ewentualnie przywrócić do stanu czystego.

Nie będzie to dowód na atak bocznego kanału hiperwizora, który mógłby zostać zamontowany z poziomu maszyny wirtualnej, do której atakujący ma dostęp root.

Jeśli kopie zapasowe nie cofną się wystarczająco wcześnie, nie ochroni cię to.

Musisz dokładnie zaufać każdemu, kto kontroluje Twój hypervisor i infrastrukturę tworzenia kopii zapasowych.

Jeśli robisz to w chmurze (AWS, Azure itp.), Szczegóły implementacji będą się różnić, ale ogólna koncepcja będzie taka sama.

Zasadniczo podziel obowiązki między strony, które nie są partnerami biznesowymi, oprócz zatrudniania tylko osób, którym ufasz.


1
Zanim to wszystko zrobisz, jesteś już administratorem systemu i zatrudniasz zdalnego lokaja lub PFY.
Criggie

3
Nie całkiem. Administrujesz tylko hiperwizorem i kopiami zapasowymi. Co oczywiście nie jest niczym. Ale niekoniecznie musi to być ten sam zestaw umiejętności lub obciążenie administracyjne. Są szanse, że jeśli wykonujesz wirtualizację (my), masz inną osobę lub osoby odpowiedzialne za wszystko, co dzieje się na poszczególnych maszynach wirtualnych.
Craig

1
Mimo że ogólny pomysł jest dobry, pomaga tylko w przypadku niekompetencji / błędów (usunięto produkcyjną bazę danych itp.), A nie przed złośliwością (chyba że codziennie sprawdzasz każdą zmianę i porównujesz zawartość zmian, w zasadzie codzienny pełny audyt). Szkoda może być również niezwiązana z kwestiami technicznymi, na przykład nie można w ten sposób ograniczyć wyrzucanych danych klientów lub tajemnic handlowych, ponieważ są one reaktywne.
user121391,

@ user121391: Naprawdę nie mogę się nie zgodzić, szczególnie w przypadku problemu z eksfiltracją danych. Po zebraniu danych jest całkowicie poza twoją kontrolą.
Craig,

-1

Daj mu własne konto użytkownika. Następnie dowiedz się dokładnie, do czego potrzebuje dostępu, i zapewnij tylko ten dostęp, ale nic więcej. Na przykład, jeśli musi zmienić konfigurację serwera WWW Apache, skorzystaj z ACL, aby dać mu dostęp do zapisu do plików konfiguracyjnych Apache i skonfiguruj sudogo tak, aby mógł zrestartować usługę Apache, ale nie będzie wykonywać żadnych innych poleceń jako root. Jak zawsze przechowuj kopie zapasowe wszystkiego, do czego dajesz mu dostęp (w tym przypadku plików konfiguracyjnych Apache).


3
Uprawnienie do konfigurowania i restartowania Apache działającego jako root zasadniczo daje uprawnienia roota. Łatwo jest wykonać dowolny plik binarny wykonywany przez proces apache, np. Aby potokować logi do tego. Lepiej skonfiguruj Apache, aby mógł działać jako użytkownik inny niż root i nadal łączyć się z uprzywilejowanymi portami. Tak właśnie robiłem w tej sytuacji w przeszłości.
MvG
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.