Ảnh khởi động, dịch vụ chạy và các máy khách kết nối. Đó là lúc phải dừng lại và hỏi thao tác nào trong hai thao tác rất khác nhau vừa xảy ra. Hoặc bản sao đang khôi phục một cổng kết nối logic đã tồn tại trước đó, hoặc nó đang thêm một cổng thứ hai vào đội hình. Cả hai đều chính đáng, và chúng có hậu quả khác nhau đối với danh tính và quyền truy cập. Một cỗ máy khởi động sạch sẽ không chứng minh điều nào trong hai điều đó.

Ba điều kiện quyết định câu trả lời, và đó là ba nhóm vật liệu mà một ảnh có thể mang theo. Hãy phân loại chúng trước khi ảnh được dựng, không phải sau khi nó đã được triển khai hai lần.

Trước tiên hãy quyết định bạn đang làm thao tác nào trong hai thao tác

Khôi phục giữ lại một danh tính dịch vụ. Phiên bản cũ đã biến mất, tên và chứng chỉ vẫn còn, và máy khách tiếp tục tin tưởng cùng một điểm cuối. Việc thêm tạo ra một danh tính thứ hai mà máy khách, nhật ký và việc thu hồi đều phải phân biệt.

Sự khác biệt này không phải bề ngoài. Nếu hai máy chủ đang sống cùng trình bày một chứng chỉ cổng kết nối, máy khách không thể phân biệt chúng, dấu vết kiểm toán cũng không, và việc thu hồi chứng chỉ đó loại bỏ cả hai cùng lúc. Đó có thể chính là điều một thiết kế sẵn sàng cao có chủ đích muốn, và hiếm khi là điều một bản sao ảnh vội vàng nhắm tới.

Vì vậy quyết định đầu tiên là một câu, được viết ra trước khi ảnh rời máy chủ dựng: bản sao này khôi phục cổng A, hoặc bản sao này trở thành cổng B. Mọi thứ sau đó là việc ghi sổ so với câu đó. Nếu không ai viết được nó, bản sao chưa sẵn sàng để dựng.

Đầu vào dùng lại được, danh tính và thẩm quyền, trạng thái triển khai

Nhóm dùng lại được là nhóm dễ: gói phần mềm, cấu hình đã soát không chứa bí mật, mẫu dịch vụ, thiết lập gia cố. Đây là thứ một ảnh thực sự giỏi, và có thể tái tạo không giới hạn.

Nhóm danh tính và thẩm quyền là nơi các bản sao mắc lỗi. Khóa riêng và chứng chỉ của một cổng kết nối nhận diện cổng đó với mọi máy khách. Khóa ký của cơ quan chứng thực là một đối tượng khác với quyền lực khác: nó phát hành danh tính. Tin tưởng một nhà phát hành không có nghĩa mọi cổng mới đều cần khả năng phát hành, và việc gửi khóa ký bên trong một ảnh trao khả năng đó cho bất cứ thứ gì đọc được ảnh.

Nhóm trạng thái triển khai là nhóm người ta quên vì nó trông giống cấu hình. Địa chỉ lắng nghe, nhóm địa chỉ, tuyến đường được đẩy, thiết lập bộ phân giải và tích hợp cục bộ đều mã hóa các giả định về máy chủ đầu tiên. Một nút thứ hai sao chép chúng có thể cấp phát từ một nhóm mà một cổng khác đã sở hữu, hoặc hướng máy khách tới một tài nguyên chỉ tồn tại bên cạnh bản gốc.

Nút mới phải được cấp gì, và bởi ai

Một nút được quản lý độc lập nên nhận thông tin xác thực của riêng nó thông qua quy trình đăng ký đã được phê duyệt, với thao tác ký diễn ra nơi khóa ký sống chứ không phải trên máy chủ mới. Ghi lại danh tính nào có thể bị thu hồi mà không ảnh hưởng các nút khác; nếu câu trả lời là "tất cả", thiết kế đó có một danh tính đang giả làm hai.

Các giá trị mạng cũng xứng đáng được đối xử như vậy. Chọn một nhóm, một địa chỉ lắng nghe và một tập tuyến đường được đẩy không trùng với cổng hiện có, và ghi chúng vào đầu vào cấp phát thay vì vào ảnh. Đầu vào có thể soát được; ảnh thì không.

Có một trường hợp trung gian chính đáng. Một thiết kế khôi phục hoặc nhân bản được hỗ trợ có thể cố ý giữ một danh tính dịch vụ logic xuyên máy chủ, với quyền truy cập có kiểm soát vào bản sao cũ và một kế hoạch luân chuyển. Đó là quyết định có chủ sở hữu, không phải mặc định xảy ra vì ảnh tiện lợi.

openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20

Lệnh đầu tiên cho biết nút thực sự trình bày danh tính nào và ai đã ký nó. Lệnh thứ hai là bản kiểm kê ban đầu, không phải bằng chứng: vật liệu riêng có thể sống ngoài thư mục đó, trong cơ sở dữ liệu của ứng dụng, hoặc trong một lớp ảnh chụp mà hệ thống tệp đang chạy không còn hiển thị.

Một bản sao của ảnh âm thầm mang theo gì

Xóa một tệp khỏi bản sửa đổi mới nhất của một ảnh không loại bỏ nó khỏi các bản sửa đổi cũ, bộ nhớ đệm lớp hay các ảnh chụp được tạo khi nó còn tồn tại. Vì thế các ảnh mang thông tin xác thực phải được đối xử như đối tượng nhạy cảm trong suốt vòng đời, không chỉ ở thời điểm chúng được dựng.

Kiểm tra nội dung ảnh và đầu vào cấp phát như hai câu hỏi riêng biệt. Ảnh trả lời "có gì bên trong hiện vật này", còn đầu vào trả lời "phiên bản này sẽ trở thành gì ở lần khởi động đầu tiên". Một ảnh sạch với tập lệnh khởi động lấy khóa chia sẻ trả lời tốt câu hỏi thứ nhất và kém câu hỏi thứ hai.

Giữ các ảnh khôi phục có chứa bí mật một cách chính đáng chỉ dành cho những người cần chúng, và ghi lại nơi chúng được lưu. Giải pháp thay thế, một ảnh tiện lợi vì hoạt động mà không cần cấp phát gì, chính là ảnh trao danh tính của cổng cho bất kỳ ai tìm thấy nó. Chỉ một trong hai nhiệm vụ đó xuất hiện trong nhật ký dựng.

Kiểm tra chấp nhận trước khi đưa vào sản xuất

Trước khi nút nhận lưu lượng, hãy xác nhận bốn điều: danh tính nó trình bày, các máy khách nó sẽ chấp nhận, các tài nguyên nó được phép tiếp cận và đường trở về cho các địa chỉ nó phân phát.

systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'

Sau đó kiểm tra trường hợp phủ định, tức là trường hợp bắt được tai nạn: nút mới có quyền quản trị hoặc quyền máy khách vốn dành cho bản gốc không? Một cấu hình bị sao chép có thể mang theo một mục máy khách thừa, một tuyến quản lý thừa hưởng hoặc một chỉ thị push từng có nghĩa trên máy chủ đầu tiên.

Nếu một ảnh chứa bí mật đang sống đã vượt ra ngoài ranh giới được phê duyệt, hãy thay thế thông tin xác thực và giới hạn các bản sao. Việc xóa tệp khỏi bản dựng mới nhất không giống với việc cho nghỉ hưu thông tin xác thực mà các bản sao cũ vẫn còn giữ, và khoảng cách giữa hai sự thật đó chính là cửa sổ mà kẻ tấn công cần.

Bài viết liên quan