Hỏi giao diện quản trị một lần về trạng thái và nó bắt đầu trông giống một cổng trạng thái. Nhưng không phải vậy. Khi một máy khách được chấp nhận, nó có thể phát ra các lệnh điều khiển của giao thức, và tài khoản chạy máy khách đó thừa hưởng mọi thứ mà những lệnh ấy có thể làm với daemon. Coi nó như một luồng chỉ đọc là sai lầm biến một tích hợp giám sát thành bảng điều khiển không có xác thực.

Niềm tin đó, và cái giá

Niềm tin là trình lắng nghe quản trị tương đương với một điểm cuối số liệu: gắn một bộ thu thập, đọc các bộ đếm, rồi đi tiếp. Thực tế, bộ thu thập mở một phiên có khả năng điều khiển, và mọi giả định khác bạn đã đặt ra về việc triển khai giờ đây phụ thuộc vào việc bộ thu thập đó cư xử tốt.

Không có gì trong giao diện quảng bá chế độ chỉ đọc. Không có vai trò quan sát viên nào để chọn, và một tên người dùng trong cấu hình không tạo ra một vai trò như vậy.

Điều máy khách được chấp nhận thực sự giữ

Daemon cộng đồng chấp nhận chỉ một máy khách quản trị đang hoạt động tại một thời điểm. Một khe duy nhất đó nghĩa là GUI, script và một tác nhân giám sát không thể kết nối cùng lúc; cái thứ hai chờ hoặc thất bại trong khi cái thứ nhất giữ phiên. Nếu thiết kế của bạn giả định nhiều người đọc đồng thời, nó đã sai ngay từ đầu.

Ở đâu ảnh chụp định kỳ là đủ, đầu ra của tệp trạng thái cho bạn cùng những con số mà không cần phiên trực tiếp. Ghi tệp đó theo khoảng thời gian và đọc nó bằng quyền tệp thông thường giữ bộ thu thập hoàn toàn bên ngoài mặt phẳng điều khiển, và đó là cách bố trí mà hầu hết hệ thống giám sát thực sự cần.

Một socket thuộc sở hữu, không phải một socket mở

Một socket miền Unix giữ đường điều khiển ra ngoài mạng, điều này loại bỏ địa chỉ đường hầm thay đổi khỏi bài toán. Nó không loại bỏ câu hỏi về quyền. Thư mục mẹ phải ghi được bởi tài khoản dịch vụ và tiếp cận được bởi tài khoản của bộ điều khiển, và đó là hai quyền riêng biệt:

management /run/openvpn/office-management.sock unix /etc/openvpn/management.password
management-client-user vpn-observer
management-client-group vpn-observer

Tệp mật khẩu mang bí mật quản trị ở dòng đầu tiên. Bảo vệ tệp đó như mọi thông tin xác thực khác, và giữ nội dung của nó xa khỏi nhật ký và phiếu hỗ trợ. Các giới hạn người dùng và nhóm là kiểm tra ngang hàng trên socket Unix, không phải quyền của hệ thống tệp, vì vậy tiến trình dự định cần cả quyền truy cập tệp lẫn danh tính khớp.

Làm cho socket truy cập được từ toàn thế giới để xóa một lỗi quyền là cách sửa duy nhất cần tránh. Nó biến một kênh điều khiển cục bộ thành thứ mà bất kỳ tiến trình nào trên máy chủ có thể điều khiển.

Xuất bản nó qua TCP không phải cùng một thiết kế

Chuyển trình lắng nghe sang một cổng TCP không làm nó an toàn hơn hay tiện hơn. Mật khẩu quản trị được gửi dưới dạng văn bản rõ, vì vậy một trình lắng nghe TCP phơi bày cả thông tin xác thực lẫn phiên cho bất kỳ ai có thể quan sát đường đi. Tiếp cận nó từ một máy chủ khác đòi hỏi một kênh quản trị được ủy quyền, hoặc một tác nhân cục bộ nhỏ chỉ phơi bày những quan sát bạn cần.

Một mật khẩu trên phương tiện truyền văn bản rõ là xác thực mà không có bảo mật, và sự kết hợp đó tệ hơn vẻ ngoài vì nó có cảm giác được bảo vệ.

Phụ thuộc khởi động mà bạn không yêu cầu

Một số tùy chọn quản trị thay đổi vòng đời của daemon. Giữ việc khởi động cho đến khi một bộ điều khiển kết nối, hoặc chấm dứt khi bộ điều khiển biến mất, biến một quan sát viên tùy chọn thành một phụ thuộc cứng. Khi đó một tác nhân giám sát bị sập sẽ kéo cả đường hầm xuống theo.

Xem lại các tùy chọn đó trước khi bật bất cứ thứ gì ngoài chính socket. Quan sát tùy chọn nên vẫn là tùy chọn, và chính sách khởi động lại không nên bị gắn với một bộ thu thập được thêm vào cho đồ thị.

Một tệp socket còn lại sau một tiến trình thất bại không phải bằng chứng rằng có một trình lắng nghe tồn tại. Xác định phiên bản nào sở hữu đường đi trước khi xóa nó, và dùng quy trình phục hồi của chính dịch vụ thay vì xóa tệp dưới một daemon đang chạy.

Việc chấp nhận trông như thế nào

Bốn kiểm tra bao trùm thiết kế: danh tính bộ điều khiển dự định kết nối, một tiến trình không có danh tính đó bị từ chối, daemon sống sót qua một bộ điều khiển ngắt kết nối mà không cảnh báo, và đường hầm vẫn mang lưu lượng qua một lần khởi động lại có kiểm soát. Một kết nối quản trị thành công chỉ chứng minh mặt phẳng điều khiển. Nó không nói gì về việc lưu lượng của ứng dụng riêng có hoạt động hay không, nên hãy kiểm tra riêng. Ghi bốn kết quả ở nơi người vận hành tiếp theo có thể tìm thấy.

Tài liệu giao diện quản trị mô tả mô hình một máy khách và bản chất đặc quyền của giao thức, và đó là phần đáng đọc trước khi bạn hướng một bảng điều khiển vào nó.

Bài viết liên quan