Sao chép một tệp cấu hình không phải là sao lưu, và bản sao lưu mà không ai khôi phục được không phải là kế hoạch. Kho lưu phải chứa danh tính của dịch vụ, chính sách xung quanh nó và trạng thái cho biết thiết bị nào vẫn được phép. Nó cũng phải được bảo vệ, vì trong hầu hết các triển khai, kho lưu cấp đúng những gì VPN cấp. Việc quyết định điều gì phải khôi phục được đến trước; danh sách tệp tuân theo quyết định đó.

Bắt đầu từ mục tiêu dựng lại

Viết ra những gì một máy chủ được dựng lại phải làm trước khi liệt kê dù chỉ một tệp: kết thúc các đường hầm như cũ, trình bày danh tính như cũ và từ chối những thiết bị hiện đã bị thu hồi. Câu đó loại bỏ phần lớn các bản sao ngây thơ, vì thư mục cấu hình hiếm khi chứa danh sách thu hồi hoặc phụ thuộc danh tính bên ngoài. Nó cũng phơi ra những phần sống ngoài máy chủ, như bản ghi DNS, quy tắc tường lửa trên đám mây và thư mục mà cổng xác thực. Một kế hoạch bỏ qua chúng tạo ra máy chủ được khôi phục trông khỏe mạnh mà không cho ai vào.

Nhóm tài liệu thành ba giỏ: danh tính, cấu hình và trạng thái. Danh tính là các khóa, chứng chỉ và cơ quan ký chúng. Cấu hình là thiết lập của daemon, các nhóm, tuyến đường và chính sách tường lửa, còn trạng thái là tập hợp các peer, tài khoản và thu hồi thay đổi mỗi ngày.

Danh tính là phần bạn không thể tạo lại

Khóa riêng không thể tái tạo từ trí nhớ, và các chứng chỉ phụ thuộc vào chúng hết hạn theo lịch bạn thừa hưởng chứ không phải chọn. Sao lưu khóa máy chủ, tài liệu cấp phát cho máy khách và cơ quan chứng thực, rồi ghi lại cái nào trong số đó phải ở ngoại tuyến. Một khóa cơ quan chỉ sống trên cổng đang chạy chỉ cách một lần bị xâm phạm khỏi việc đặt lại toàn bộ danh tính cho mọi máy khách. Ghi lại những gì được cố ý lưu ở nơi khác để không ai sao chép nó vào kho lưu có mức bảo vệ thấp hơn.

Việc thu hồi xứng đáng có dòng riêng trong kế hoạch. Khôi phục cấu hình của hôm qua có thể đưa trở lại danh tính bạn đã gỡ hôm nay, điều này biến việc phục hồi thành một sự cố bảo mật. Giữ trạng thái thu hồi hiện tại ở nơi độc lập với ảnh chụp bạn sẽ quay về, và kiểm tra nó sau mọi lần khôi phục.

Chụp trạng thái tại một thời điểm

Một bản sao được chụp trong khi dịch vụ đang ghi tạo ra bản kiểm kê không nhất quán, và dữ liệu danh tính không nhất quán còn tệ hơn một bản sao sạch cũ hơn. Dùng đường xuất được hỗ trợ cho từng kho, rồi ghi lại thời điểm của ảnh chụp, vì mọi câu hỏi về sau về việc khôi phục đều phụ thuộc vào nó.

wg showconf wg0 > /srv/backup/wg0.runtime.conf
sqlite3 /var/lib/vpn/admin.db ".backup '/srv/backup/admin.db'"
cp -a /etc/wireguard /srv/backup/etc-wireguard
sha256sum /srv/backup/*.conf > /srv/backup/MANIFEST

Lệnh đầu tiên in giao diện đang chạy trở lại dưới dạng cấu hình, đây là cách nhanh nhất để bắt các peer được thêm bằng tay thay vì bằng công cụ quản lý; điều này được hướng dẫn wg(8) ghi lại. Dòng sqlite là mẫu cho một cơ sở dữ liệu quản lý: lệnh sao lưu tạo ra bản sao nhất quán trong khi trình ghi vẫn chạy. Bản sao thư mục giữ nguyên quyền, điều này quan trọng vì những tệp khóa đó chỉ root mới đọc được. Bản kê là thứ cho phép bạn phân biệt kho lưu đầy đủ với kho lưu bị cắt cụt.

Làm cho việc khôi phục khả thi, rồi thử nó

Mã hóa kho lưu và giữ khóa khôi phục ở nơi khác ngoài máy đã sinh ra nó. Một bản sao lưu mà cụm mật khẩu chỉ tồn tại trên máy chủ đã hỏng là bản sao lưu không ai mở. Giới hạn việc lấy bản sao cho những người đã có thể quản trị cổng, và ghi nhật ký mỗi lần lấy. Thử khôi phục trên một mạng cách ly, vì một danh tính nhân bản được dựng bên cạnh môi trường thật tạo ra hai máy chủ cùng trả lời cho một khóa peer.

Ghi lại các loại trừ cẩn thận như nội dung. Quy tắc tường lửa trên đám mây, bản ghi DNS và thư mục bên ngoài có thể mỗi thứ cần bước phục hồi riêng. Một bản sao tệp thành công không phải bằng chứng dịch vụ trở lại; bằng chứng duy nhất được tính là một điểm cuối được dựng lại vượt qua cùng bài kiểm tra chấp nhận như bản gốc.

Bài viết liên quan