Bezpieczna kopia zapasowa poza siedzibą, nawet w przypadku dostępu root do hakera


24

Szukam sposobu na wdrożenie bezpieczniejszego sposobu wykonywania kopii zapasowej poza siedzibą, która również ochroniłaby moje dane przed sytuacją, w której złośliwy haker uzyskał dostęp do roota na moim serwerze. Chociaż szansa na takie zdarzenie jest mniejsza niż w przypadku innych rodzajów ryzyka, jeśli SSH i hasło są odpowiednio skonfigurowane, a system jest odpowiednio aktualny, ilość szkód, które można na stałe wyrządzić, jest naprawdę duża i dlatego ja chciałbym znaleźć rozwiązanie, aby to ograniczyć.

Próbowałem już dwóch sposobów tworzenia kopii zapasowych poza siedzibą:

  • prosty montowany do roota webdav (i skonfigurowany w fstab), na który kopiowane są dane. Problem : tak naprawdę nie jest to kopia zapasowa poza siedzibą, ponieważ połączenie - a ponadto dostęp - do lokalizacji poza siedzibą jest stale otwarte jako folder w systemie plików. Jest to wystarczająca ochrona przed wieloma rodzajami ataków, jeśli mount ma ograniczone uprawnienia dostępu (dostęp tylko do odczytu root), ale nie chroni przed złośliwą osobą z dostępem root.

  • Kopia zapasowa Borg przez SSH z uwierzytelnianiem klucza. Problem : połączenie z tym serwerem zewnętrznym może być wykonane za pomocą klucza przechowywanego na hoście, jeśli złośliwy użytkownik ma dostęp root do hosta.

Jako rozwiązanie myślę o tych potencjalnych sposobach, ale nie wiem jak iz czym:

  • Kopie zapasowe można zapisywać lub dołączać tylko do miejsca docelowego, ale nie można ich usuwać.
  • Korzystanie z oprogramowania do tworzenia kopii zapasowych, które obsługuje kopie zapasowe poza siedzibą i nie obsługuje masowego usuwania kopii zapasowych poza siedzibą od pierwszego hosta.

Rozwiązania, które nie są tak naprawdę interesujące w mojej sytuacji:

  • Dodatkowe zadanie tworzenia kopii zapasowej na hoście zewnętrznym, które przenosi je do lokalizacji niedostępnej dla pierwszego hosta (z powodu ograniczeń technicznych).

Czy ktoś może udzielić porady, jak wdrożyć właściwą kopię zapasową poza siedzibą dla mojej sprawy?


7
Najpierw wykonaj lokalną kopię zapasową na serwerze. Następnie z innego serwera pobierasz kopię zapasową do siebie (bez montowania katalogów).
TheDESTROS

2
30 lub 40 lat temu istniały serwery FTP z anonimowym katalogiem „przychodzącym”. Można przesyłać pliki, ale nie można ich nadpisywać ani wyświetlać na liście. Działa po prostu przez odpowiednie ustawienie uprawnień do katalogu. Więc ... lokalny root czy nie, bez różnicy.
Damon

@TheDESTROS Proszę odpowiedzieć w odpowiedziach, a nie w komentarzach.
wizzwizz4

Nie sądzę, aby anonimowy FTP był już używany.
Lucas Ramage

Odpowiedzi:


54

Wszystkie sugestie mają obecnie jedną wspólną cechę: źródło kopii zapasowej wykonuje kopię zapasową i ma dostęp do miejsca docelowego kopii zapasowej. Niezależnie od tego, czy montujesz lokalizację, czy używasz narzędzi takich jak SSH lub rsync, system źródłowy w jakiś sposób ma dostęp do kopii zapasowej. Dlatego kompromis na serwerze może również narazić na szwank kopie zapasowe.

Co jeśli rozwiązanie do tworzenia kopii zapasowych ma dostęp do serwera? System tworzenia kopii zapasowych może wykonywać swoje zadania z dostępem tylko do odczytu , więc wszelkie kompromisy w systemie tworzenia kopii zapasowych prawdopodobnie nie zagroziłyby serwerowi. Również system tworzenia kopii zapasowych może być dedykowany wyłącznie do tego celu, dzięki czemu zawartość kopii zapasowej będzie jedynym wektorem ataku. Byłoby to bardzo mało prawdopodobne i wymagałoby naprawdę wyrafinowanego ataku.

Aby uniknąć zastąpienia kopii zapasowych sfałszowaną lub uszkodzoną zawartością, wykonaj przyrostowe kopie zapasowe, które pozwalają przywrócić dowolny poprzedni stan w zdefiniowanym okresie przywracania.


Wszelkie porady na temat tego, gdzie szukać przewodnika, aby skonfigurować rozwiązanie dostępu tylko do odczytu?
EarthMind

5
W ten sposób wykonuję kopie zapasowe za pośrednictwem ssh: serwer kopii zapasowej prześle ssh do serwera, którego kopię zapasową chcesz wykonać.
Michael Hampton

4
rsync over ssh jest również dobrą opcją i pozwala na tworzenie przyrostowych kopii zapasowych. proste scp lepiej nadaje się do tworzenia pełnych kopii zapasowych
GoFundMonica - codidact.org

10
+1 - „pull” zamiast „push”
Criggie

1
W ten sposób działają również rozwiązania do tworzenia kopii zapasowych, takie jak BackupPC lub IBM Tivoli Storage Manager (inaczej Spectrum Protect) .
Dubu

9

Niezmienne przechowywanie

Jedną dobrą opcją jest uczynienie z kopii zapasowej niezmiennego lub przynajmniej zapewnienie niezawodnej wersji, która zapewnia efektywną niezmienność. Mówiąc jasno: niezmienny oznacza niemożność zmiany lub trwałości.

Istnieje wiele usług, które mogą to dla Ciebie zrobić. AWS S3, BackBlaze B2 i podejrzewam, że Azure i Google oferują podobną usługę. Prawdopodobnie możesz skonfigurować serwer, aby to zrobić, ale nie jestem pewien, jak to zrobić.

Gdy masz repozytorium niezmienne / kontrolowane wersją, możesz przywrócić kopię zapasową w dowolnym momencie, więc jeśli twój komputer jest zagrożony, możesz przywrócić ją w dowolnym momencie.

* AWS S3 **

Najbardziej znam AWS S3. S3 zapewnia wersjonowaną, szyfrowaną pamięć masową o wysokim poziomie trwałości.

S3 obsługuje wersjonowanie, co zapewnia efektywną niezmienność. Możesz użyć reguł cyklu życia, aby usunąć starą wersję plików po upływie określonego czasu. Możesz także archiwizować wersje do chłodni (archiwum lodowców), które kosztuje około 1 USD / TB / miesiąc.

Możesz użyć inteligentnej klasy warstw pamięci, aby obniżyć koszty. Wybieram użycie reguły cyklu życia, aby przenieść wszystkie dane statyczne do rzadkiej klasy dostępu, która jest trwała i umiarkowana (gorąca) wydajność, ale nie ma skalowalności ani wydajności standardu S3.

S3 używa IAM (zarządzanie dostępem do tożsamości, tj. Zarządzanie użytkownikami) użytkowników i zasad. Zapewnia to bardzo szczegółową kontrolę tego, co oprogramowanie do tworzenia kopii zapasowych może zrobić z pamięcią. Możesz udzielić użytkownikowi kopii zapasowej pozwolenia na przesyłanie, ale odmówić aktualizacji i usunięcia. Możesz także wymagać uwierzytelnienia wieloskładnikowego, aby usunąć pliki, a nawet zapewnić blokadę obiektu, aby uniemożliwić usunięcie plików .

Sugerowane oprogramowanie

Tworzę przyrostowe kopie zapasowe za pomocą Restic . Restic przesyła nowe pliki do lokalizacji przechowywania. Wierzę (ale mogę się mylić), że tworzy nowe pliki, ale ogólnie rzecz biorąc, nie aktualizuje ani nie usuwa żadnych plików.

Borg to kolejna opcja. Kiedyś korzystałem z Borga, ale odkryłem, że dzięki moim umiarkowanym rozmiarom kopii zapasowych wynoszącym setki MB skutecznie przesyłałem wszystkie moje dane każdego dnia z EC2 do S3. Dla mnie nie jest to przyrostowe, więc przestałem go używać. Znalazłem dokumentację na ten temat, ale nie mam linku.

Istnieją dziesiątki oprogramowania, które można przesłać do pamięci w chmurze.

Przechowywanie chronione

W przypadku niektórych programów do tworzenia kopii zapasowych możesz spróbować zezwolić użytkownikowi IAM na pisanie nowych plików, ale nie na aktualizację istniejących. To ograniczenie jest łatwe dzięki AWS IAM, ale zgodnie z komentarzem poniżej Restic nie będzie działał z tymi uprawnieniami. Możesz także wymagać uwierzytelniania wieloskładnikowego do usuwania plików z S3.

Możesz mieć innego użytkownika IAM, uruchomić z powiedzmy komputera, który okresowo czyści archiwum, odrzucając wersje zgodnie z ustawionymi zasadami.


1
Zobacz także S3 Object Lock . Można go skonfigurować tak, aby nikt, nawet użytkownik root, nie mógł usuwać ani nadpisywać obiektu na określony czas.
user71659

Podejrzewam, że blokada obiektu może być trochę za duża w przypadku kopii zapasowych, ponieważ czasami będziesz chciał usunąć pliki. Może wygasnąć, aby można było później usunąć pliki.
Tim

1
Restic lubi tworzyć i usuwać pliki w katalogu „locks”, aby kontrolować wyłączny dostęp, więc jeśli odbierzesz uprawnienia do usuwania plików z zaplecza, to się psuje. Jednym z proponowanych tutaj rozwiązań jest użycie dwóch segmentów (jeden segment do odczytu / zapisu do blokad i jeden segment tylko do dołączania do wszystkiego innego). Następnie używa lokalnej instancji tinyproxy do wysyłania danych przez jedną z dwóch instancji Rclone w zależności od ścieżki żądania, a każda Rclone wysyła polecenia do odpowiedniego segmentu.
Scott Dudley,

8

Borg Backup obsługuje zdalne repozytoria tylko z dołączaniem . Jakikolwiek kompromis podczas tworzenia kopii zapasowej serwera może skutkować jedynie tworzeniem nowych kopii zapasowych, a nie nadpisywaniem tylko starych.


2
Jedną z rzeczy, których nie lubię w Borg, jest to, że jeśli twoja przyrostowa kopia zapasowa jest poniżej określonego rozmiaru, po prostu przesyła ją wszystkie. Przeprowadziłem się do Restic, ponieważ był nieefektywny z przepustowością. Nie wiem, jaki jest próg, ale wystarczy, że było to lekko irytujące.
Tim

Kto więc usuwa stare kopie zapasowe w takim systemie? Próbowałem tylko dodawać i nigdy nie usuwać rzeczy na dyski twarde, okazuje się, że szybko brakuje im miejsca.
Mast

7

Rozwiązania, które nie są tak naprawdę interesujące w mojej sytuacji:

Dodatkowe zadanie kopii zapasowej na hoście zewnętrznym, które przenosi je do lokalizacji niedostępnej dla pierwszego hosta.

Podstawowym problemem jest to, że jeśli możesz zdalnie uzyskać dostęp do swoich kopii zapasowych, haker również może .

(Z powodu ograniczeń technicznych)

Należy pokonać ograniczenia techniczne.

Czy ktoś może udzielić porady, jak wdrożyć właściwą kopię zapasową poza siedzibą dla mojej sprawy?

Napędy taśmowe zapewniają bezpieczną, zewnętrzną ochronę przed wszelkiego rodzaju katastrofami - w tym hakerami - od prawie 70 lat.


1
Nie rozumiem, dlaczego ta odpowiedź nie jest wyżej. Najlepszym sposobem uniknięcia ataku online jest przejście do trybu offline. Taśma jest prosta i sprawdzona.
Greg

@Greg Nie jest to rozwiązanie dla każdego, tak jak w moim przypadku ze względu na ograniczenia usługi, z której korzystam, która zezwala tylko na połączenia webdav, Borg, SMB i NFS. Ponadto jest to bardzo drogie (w porównaniu z przyzwoitymi alternatywami) rozwiązanie i nie jest interesujące w każdym przypadku. Nie widzę, jak wykonuję kopię zapasową mojego VPS 10 € / m za pomocą drogiego rozwiązania do tworzenia kopii zapasowych offline. Gdyby dane zniknęły, dla mnie to nie koniec świata. Warto tu zobaczyć rekomendacje z różnych przedziałów cenowych, ale to rozwiązanie jest najmniej interesujące dla mojego przypadku użycia.
EarthMind

To. Twórz kopie zapasowe na nośnikach fizycznych i obracaj je na bezpiecznych lokalizacjach poza witryną, najlepiej o innym profilu ryzyka w przypadku klęsk żywiołowych.
arp

@asp dwóch moich sysadminów (jestem DBA) trzymało taśmy w bagażnikach samochodów ... Jeden z nich spóźniał się do pracy w WTC 9/11 (te systemy były na różnych DC), więc 9 / 12 lub 9/13 (nie pamiętam, który) pojechał do rezerwowego DC ze swoimi tygodniowymi taśmami.
RonJohn

3

Możesz korzystać z usług pamięci masowej, takich jak AWS S3 (lub prawdopodobnie odpowiednik Google lub Azure), w których możesz nadać swojemu rootowi uprawnienia PUT do swojego segmentu, ale nie uprawnienia DELETE. W ten sposób możesz użyć modelu wypychania, a atakujący nie będzie mógł usunąć kopii zapasowej.

Istnieją dodatkowe środki bezpieczeństwa, które można podjąć przy użyciu AWS, takie jak wymaganie od MFA wykonania USUŃ w wiadrze, ale zezwalają na PUT i GET bez MFA. W ten sposób możesz zarówno wykonać kopię zapasową danych, jak i odzyskać je, aby przywrócić swoje usługi bez korzystania z urządzenia MFA, co może być przydatne w skrajnym (i prawdopodobnie zbyt niejasnym, by nawet wspomnieć) przypadku, w którym dostęp do urządzenia MFA może to zagrozić.

Poza tym komentarz poza zakresem może okazać się interesujący / przydatny, istnieje kilka sposobów skonfigurowania S3 i podobnych usług do automatycznego przełączania awaryjnego w przypadku, gdy główne źródło danych jest offline.


1
Polecam utworzenie dedykowanego klienta „push” z dostępem do zapisu i bez możliwości usuwania w IAM. Włącz także wersjonowanie w segmencie, aby wcześniejsze wersje były nadal dostępne. Aby obniżyć koszty, „wycofaj” stare wersje do Glacier.
Criggie

3

Kopia zapasowa Borg przez SSH z uwierzytelnianiem klucza. Problem: połączenie z tym serwerem zewnętrznym może być wykonane za pomocą klucza przechowywanego na hoście, jeśli złośliwy użytkownik ma dostęp root do hosta.

Możesz użyć polecenia Option w uprawnionych kluczach. Naprawiono polecenie dozwolone zdalnie.

jak dodawać polecenia w ssh klucze_autoryzowane

Nawet jeśli atakujący odzyska katalog główny logowania, nie będzie w stanie zrobić nic innego niż zdefiniowane polecenie.


1

Techniką, którą można skonfigurować, jest użycie synchronizacji między serwerem a zdalnym serwerem kopii zapasowych oraz umożliwienie zdalnemu serwerowi kopii zapasowych robienia migawek lub czegokolwiek na jego końcu, aby po stronie serwera kasowania nie nastąpiło skasowanie poza siedzibą.

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.