Mã hóa sao lưu ngoại vi bằng GPG với khóa riêng không bao giờ trên máy chủ sao lưu?


11

Tôi có một máy chủ dự phòng, tạo ra xzcác tarkho lưu trữ nén của các cây thư mục để sao lưu. Những tài liệu lưu trữ tar này có thể nhận được rất nhiều (nhiều TB), splitthành từng mảnh (2,5TB) và mỗi phần được ghi vào một băng LTO-6, và các băng từ bên ngoài.

Bây giờ tôi muốn thêm mã hóa. Tôi có thể mã hóa GPG kho lưu trữ tar trước khi tách, sử dụng mã hóa khóa riêng-công khai và với một hoặc nhiều người nhận (khóa công khai của quản trị viên).

Tuy nhiên, trong trường hợp khôi phục, ít nhất một quản trị viên cần đặt khóa riêng của mình vào máy chủ dự phòng, vì các tệp quá lớn để có thể giải nén ở bất kỳ nơi nào khác.

GPG sử dụng sơ đồ mã hóa lai dưới mui xe, với mật mã đối xứng như AES với khóa phiên và chỉ khóa phiên đó mới được mã hóa khóa riêng tư cho người nhận.

Có cách nào để quản trị viên cung cấp khóa phiên để giải mã tập tin mà không cần đặt khóa riêng lên máy chủ dự phòng không?


Tôi có thể phát minh lại bánh xe tất nhiên:

  • tạo khóa phiên ngẫu nhiên trên máy chủ sao lưu trên mỗi tệp để sao lưu
  • sử dụng mã hóa đối xứng GPG để mã hóa tệp
  • sử dụng mã hóa bất đối xứng GPG để mã hóa khóa phiên cho mỗi người nhận

Nhưng có một cách "tiêu chuẩn" hoặc dựng sẵn hoặc thực hành tốt nhất để đạt được ở trên?

Câu trả lời:


18

Điều này là chắc chắn có thể với --show-session-key--override-session-keycác tùy chọn.

Trước tiên, bạn cần bắt đầu tập tin được mã hóa của bạn. Đây là nơi lưu trữ khóa phiên mã hóa.

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

Sau đó sao chép nó vào máy trạm của bạn và lấy khóa phiên

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

Bây giờ bạn có thể giải mã tệp bằng khóa phiên của mình

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"

đó là một giải pháp thực sự tuyệt vời cho vấn đề
Lars

Cảm ơn!! Thủ thuật tốt đẹp headvà như vậy. Cách tiếp cận giải quyết ngứa ban đầu của tôi.
oberstet

4

Dường như hầu hết câu hỏi của bạn đã được trả lời, tuy nhiên, nếu nhóm quản trị viên của bạn cảnh giác với các khóa riêng tư kết thúc ngoài tầm kiểm soát cục bộ của họ, bạn có thể cân nhắc sshfsđể sao lưu từ xa qua phiên ssh.

Cài đặt qua apt trên hệ thống của mỗi quản trị viên từ xa

sudo apt-get install sshfs

Giả sử cấu hình ssh của quản trị viên trông giống như dưới đây

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

Sau đó, quản trị viên của bạn có thể sử dụng một cái gì đó như dưới đây để gắn kết

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

Để ngắt kết nối sau khi kiểm tra, quản trị viên từ xa có thể sử dụng như sau

fusermount -u /mnt/remote

Điểm thú vị của việc sử dụng sshfs là chỉ cần các khóa công khai cho GnuPG và ssh trên máy chủ từ xa, các khóa riêng có liên quan vẫn nằm trên các hệ thống sở hữu. Thứ hai tốt đẹp là cho đến khi đọc hoặc truy cập hầu hết các thông tin tệp vẫn nằm trên hệ thống tệp liên quan của nó.

Nếu bạn vẫn đang tìm kiếm các công cụ để tạo điều kiện tự động mã hóa nhật ký hoặc thư mục, bạn có thể muốn kiểm tra thông tin về công cụ khái niệm mà tôi đã chuyển sang GitHub (cụ thể là Kịch bản Bốn được viết để sshsfsử dụng) mà với một chút tùy chỉnh sẽ vui vẻ mã hóa hầu hết mọi thứ dữ liệu qua GnuPG. Nhưng được cảnh báo rằng đó là thử nghiệm và một số tính năng của nó có thể gây ra hỏng dữ liệu nếu sử dụng sai. Mã nguồn ít hơn ~ 1600 ~ dòng nên rất có thể kiểm toán trong ít hơn một ngày cuối tuần.

Có thể có bảo mật bổ sung bằng cách thiết lập cấu hình ssh của máy chủ từ xa để chroot người dùng chỉ cho phép truy cập vào thư mục được mã hóa và vô hiệu hóa vỏ tương tác cho các khóa quản trị viên được sử dụng theo kiểu này.


2

Nếu bạn muốn khóa bí mật tắt các đĩa cứng, bạn có thể tạo một đĩa ram (nhớ những cái đó không?) Và tải các khóa bí mật ở đó từ vị trí không có máy chủ an toàn của bạn khi cần. Sử dụng nó để giải mã và khi thực hiện ghi đè lên nó bằng / dev / ngẫu nhiên. Dù sao đi nữa, bí mật phải được đưa vào RAM để GPG sử dụng, vậy tại sao không hai lần?

Nếu bạn không thể để khóa bí mật trên máy chủ, ngay cả trong RAM, thì bạn không thể sử dụng được kỹ thuật. GPG phải có khóa bí mật ở đâu đó để giải mã mọi thứ.

Thông tin về Ramdisk: /unix/66329/creating-a-ram-disk-on-linux


2
GPG sử dụng bí mật đối xứng trên mỗi tin nhắn ("khóa phiên") khác nhau cho mỗi tin nhắn được mã hóa. Đây là khóa đối xứng mà về mặt kỹ thuật cần phải có trên máy để giải mã thông điệp tương ứng. Tôi muốn giữ khóa riêng GPG (không đối xứng) ngoại tuyến. Cái sau được GPG sử dụng để mã hóa khóa phiên đối xứng. Vì vậy, tôi đang theo một kế hoạch sử dụng các khía cạnh này ...
oberstet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.