[server] 해커 루트 액세스의 경우에도 안전한 오프 사이트 백업

악의적 인 해커가 서버에 대한 루트 액세스 권한을 얻은 상황으로부터 데이터를 보호하는 오프 사이트 백업을 수행하는보다 안전한 방법을 구현하는 방법을 찾고 있습니다. SSH 및 암호 보안이 올바르게 설정되어 있고 시스템이 최신 상태로 유지되면 그러한 위험이 발생할 가능성이 다른 종류의 위험보다 적더라도 영구적으로 수행 할 수있는 피해량은 실제로 높기 때문에 그것을 제한하는 해결책을 찾고 싶습니다.

이미 두 가지 오프 사이트 백업 방법을 시도했습니다.

  • 백업 된 데이터가 복사되는 간단한 루트 쓰기 가능 webdav 마운트 (및 fstab에서 구성). 문제 : 외부 사이트에 대한 연결 및 액세스가 파일 시스템의 폴더로 계속 열려 있기 때문에 실제로 외부 사이트 백업이 아닙니다. 마운트에 제한된 액세스 권한 (루트 전용 액세스)이 있지만 루트 액세스 권한이있는 악의적 인 사람으로부터 보호하지 않는 경우 여러 종류의 공격에 대해 충분한 보호입니다.

  • 키 인증을 통한 SSH를 통한 Borg 백업. 문제 : 악의적 인 사용자가 호스트에 대한 루트 액세스 권한을 가진 경우 호스트에 저장된 키를 사용하여 해당 오프 사이트 서버에 연결할 수 있습니다.

해결책으로 이러한 잠재적 인 방법에 대해 생각하고 있지만 방법과 방법을 모르겠습니다.

  • 백업은 대상에 쓰거나 추가 할 수 있지만 삭제할 수는 없습니다.
  • 오프 사이트 백업을 처리하고 첫 번째 호스트에서 오프 사이트 백업의 대량 삭제를 지원하지 않는 백업 소프트웨어 사용.

내 상황에서 실제로 흥미롭지 않은 솔루션 :

  • 오프 사이트 호스트의 추가 백업 작업으로, 기술적 제한으로 인해 첫 번째 호스트가 액세스 할 수없는 위치로 전송합니다.

누구든지 내 사건에 적절한 오프 사이트 백업을 구현하는 방법에 대한 조언을 줄 수 있습니까?



답변

모든 제안은 현재 공통점이 하나 있습니다. 백업 소스는 백업을 수행하고 백업 대상에 액세스 할 수 있습니다. 위치를 마운트하든 SSH 또는 rsync와 같은 도구를 사용하든 소스 시스템은 백업에 액세스 할 수 있습니다. 따라서 서버가 손상되면 백업도 손상 될 수 있습니다.

백업 솔루션이 서버에 액세스 할 수 있다면 어떨까요? 백업 시스템은 읽기 전용 액세스로 작업을 수행 할 수 있으므로 백업 시스템의 손상은 서버를 손상시키지 않을 것입니다. 또한 백업 시스템은 이러한 목적으로 만 사용될 수 있으므로 백업 내용이 유일한 공격 경로가됩니다. 그럴 가능성은 거의 없으며 매우 정교한 공격이 필요합니다.

내용이 변조되거나 손상된 백업을 덮어 쓰지 않으려면 정의 된 복원 기간 내에 이전 상태를 복원 할 수 있는 증분 백업을 수행 하십시오.


답변

불변 저장

한 가지 좋은 옵션은 백업 스토리지를 변경 불가능하게 만들거나 최소한 신뢰할 수있는 버전 관리를 제공하여 효과적으로 불변성을 제공하는 것입니다. 명확하게 : 불변은 변경 불가능하거나 영구적 인 것을 의미합니다.

이를 위해 여러 서비스가 있습니다. AWS S3, BackBlaze B2 및 Azure와 Google 모두 비슷한 서비스를 제공한다고 생각합니다. 이 작업을 수행하기 위해 서버를 설정할 수는 있지만 확실하지 않습니다.

변경 불가능한 버전 관리 리포지토리가있는 경우 백업을 어느 시점 으로든 복원 할 수 있으므로 호스트가 손상된 경우에도 언제든지 복원 할 수 있습니다.

* AWS S3 **

AWS S3에 가장 익숙합니다. S3는 내구성이 높은 버전의 암호화 된 저장소를 제공합니다.

S3는 버전 관리를 지원하여 효과적인 불변성을 제공합니다. 수명주기 규칙을 사용하여 구성 할 수있는 기간이 지난 후 이전 버전의 파일을 삭제하도록 선택할 수 있습니다. 또한 TB 당 월 $ 1의 비용으로 콜드 스토리지 (glacier 콜드 아카이브)에 버전을 아카이브 할 수도 있습니다.

지능형 스토리지 계층화 클래스 를 사용하여 비용을 줄일 수 있습니다. 수명주기 규칙을 사용하여 모든 정적 데이터를 드문 액세스 클래스로 이동하기로 결정했습니다.이 클래스는 내구성이 높고 중간 정도 (핫) 성능이지만 S3 표준의 확장 성 또는 성능이 없습니다.

S3는 IAM (ID 액세스 관리, 즉 사용자 관리) 사용자 및 정책을 사용합니다. 이를 통해 백업 소프트웨어가 스토리지로 수행 할 수있는 작업을 매우 세밀하게 제어 할 수 있습니다. 백업 사용자에게 업로드 권한을 부여하지만 업데이트 및 삭제는 거부 할 수 있습니다. 파일을 삭제하기 위해 다단계 인증이 필요하거나 파일을 삭제할 수 없도록 개체 잠금을 제공 할 수도 있습니다.

추천 소프트웨어

Restic을 사용하여 증분 백업을 만듭니다 . Restic은 새 파일을 저장 위치에 업로드합니다. 나는 그것이 새로운 파일을 생성한다고 생각하지만 (잘못 될 수는 있지만) 일반적으로 작동하면 파일을 업데이트하거나 삭제하지 않습니다.

Borg는 또 다른 옵션입니다. 나는 Borg를 사용했지만, 수백 MB의 적당한 크기의 백업으로 매일 모든 데이터를 EC2에서 S3로 효과적으로 업로드한다는 것을 알았습니다. 나에게 이것은 증분되지 않으므로 사용을 중단했습니다. 이것에 관한 문서를 찾았지만 링크가 없습니다.

클라우드 스토리지에 업로드 할 수있는 수십 가지 소프트웨어가 있습니다.

보호 된 스토리지

일부 백업 소프트웨어를 사용하면 IAM 사용자에게 새 파일을 쓸 수는 있지만 기존 파일은 업데이트하지 못하도록 권한을 부여 할 수 있습니다. AWS IAM에서는 이러한 제한을 쉽게 적용 할 수 있지만 아래 설명에 따라 Restic은 해당 권한으로 작동하지 않습니다. S3에서 파일을 삭제하는 데 필요한 다단계 인증이있을 수도 있습니다.

PC에서 실행하는 다른 IAM 사용자가 주기적으로 아카이브를 정리하고 설정 한 정책에 따라 버전을 버릴 수 있습니다.


답변

Borg Backup은 추가 전용 원격 저장소를 지원 합니다 . 백업중인 서버가 손상되면 기존 백업 만 덮어 쓰지 않고 새 백업 만 만들 수 있습니다.


답변

내 상황에서 실제로 흥미롭지 않은 솔루션 :

오프 사이트 호스트의 추가 백업 작업으로 첫 호스트가 액세스 할 수없는 위치로 전송합니다.

근본적인 문제는 원격으로 백업에 액세스 할 수 있으면 해커도 액세스 할 수 있다는 것 입니다.

(기술적 인 한계로 인해)

기술적 인 한계가 극복되었습니다.

누구든지 내 사건에 적절한 오프 사이트 백업을 구현하는 방법에 대한 조언을 줄 수 있습니까?

테이프 드라이브 는 거의 70 년 동안 해커를 포함한 모든 종류의 재난에 대해 안전한 오프 사이트 보호를 제공해 왔습니다.


답변

루트 계정 PUT 권한은 버킷에 부여 할 수 있지만 DELETE 권한은 부여 할 수없는 AWS S3 (또는 Google 또는 Azure와 동등한 기능)와 같은 스토리지 서비스를 사용할 수 있습니다. 이렇게하면 푸시 모델을 사용할 수 있으며 공격자는 백업을 삭제할 수 없습니다.

MFA가 버킷에서 DELETE를 수행하도록 요구하지만 MFA없이 PUT 및 GET을 허용하는 등 AWS에서 취할 수있는 추가 보안 조치가 있습니다. 이렇게하면 MFA 장치를 사용하지 않고도 데이터를 백업하고 데이터를 검색하여 서비스를 복원 할 수 있습니다. 이는 MFA 장치에 액세스하면 데이터를 손상시킬 수있는 극단적 인 경우 (아마도 모호한 경우도 있음)에 유용 할 수 있습니다.

또한, 범위 밖에서 흥미 롭거나 유용하다고 생각할 수 있지만 주 데이터 소스가 오프라인 인 경우 자동 장애 조치를 위해 S3 및 유사한 서비스를 구성하는 방법에는 여러 가지가 있습니다.


답변

키 인증을 통한 SSH를 통한 Borg 백업. 문제 : 악의적 인 사용자가 호스트에 대한 루트 액세스 권한이있는 경우 호스트에 저장된 키를 사용하여 해당 오프 사이트 서버에 연결할 수 있습니다.

authorized_keys에서 옵션 명령을 사용할 수 있습니다. 원격에서 허용 된 명령을 수정하십시오.

ssh certified_keys에 명령을 추가하는 방법

공격자가 로그인 루트를 복구하더라도 정의 된 명령 이외의 작업을 수행 할 수 없습니다.


답변

설정할 수있는 기술은 서버와 원격 백업 서버 사이의 동기화를 사용하고 원격 백업 서버가 스냅 샷 또는 그 밖의 모든 작업을 수행하여 서버 측을 지워도 오프 사이트가 삭제되지 않도록하는 것입니다.