Chạy OpenVPN trên Windows mà không biến người dùng thành quản trị viên
OpenVPN cần đặc quyền cho bộ điều hợp và các tuyến của nó, không phải cho mọi thứ. Dùng dịch vụ và ủy quyền quyền mạng, rồi xác minh từ tài khoản người dùng.
Một người dùng nhấp đúp vào GUI OpenVPN, chấp thuận lời nhắc UAC và lặp lại nghi thức đó ở lần kết nối lại tiếp theo. Lời nhắc không phải lỗi đóng gói: ứng dụng tạo một bộ điều hợp ảo và chỉnh sửa bảng định tuyến, cả hai đều là thay đổi đặc quyền. Câu hỏi hữu ích là người dùng thực sự cần quyền nào trong số đó. Một dịch vụ cùng với việc ủy quyền hẹp bao phủ kết nối mà không phân phát tư cách thành viên quản trị.
Những thao tác nào thực sự cần nâng quyền
Đường hầm kết thúc tại một giao diện mạng ảo, và việc cài đặt giao diện đó là thao tác trình điều khiển cần quyền quản trị một lần. Sau khi bộ điều hợp tồn tại, mỗi kết nối vẫn ghi các tuyến và tùy theo hồ sơ mà thay đổi cấu hình DNS. Chính hai bước này kích hoạt việc nâng quyền trên một tài khoản thông thường. Không có gì trong xác thực hay mã hóa cần quyền quản trị, và đó chính là lý do có thể tách đặc quyền ra.
Tách thời điểm cài đặt khỏi thời điểm kết nối trước khi chọn một ủy quyền. Chúng có chủ sở hữu và vòng đời khác nhau.
Dùng dịch vụ làm thành phần đặc quyền
Cách bố trí được hỗ trợ chạy một dịch vụ Windows nắm giữ các quyền cần thiết, còn GUI yêu cầu dịch vụ kết nối. Nhờ vậy mã đặc quyền không bao giờ chạy bên trong phiên của người dùng.
sc query OpenVPNService
sc qc OpenVPNServiceMột dịch vụ đang chạy có đường dẫn nhị phân trỏ tới ứng dụng đã cài là sự thật đầu tiên cần xác nhận trước khi ủy quyền bất cứ điều gì. Dịch vụ sở hữu bộ điều hợp và các tuyến, nên người dùng chỉ khởi động và dừng một kết nối. Đây là hình thức nên dùng trên máy dùng chung, vì tài khoản nhấp vào kết nối không giữ đặc quyền thường trực nào. Đọc bộ mô tả bằng sc sdshow trước khi chỉnh sửa nó, và giữ một bản sao đầu ra đã biết là tốt.
Ủy quyền thay đổi tuyến cho một nhóm tích hợp sẵn
Với ứng dụng phải chạy tương tác, nhóm tích hợp sẵn được ủy quyền là Network Configuration Operators. Nhóm này bao phủ cài đặt mạng và thay đổi tuyến nhưng loại trừ cài đặt phần mềm và công việc quản trị chung.
net localgroup "Network Configuration Operators" alice /add
sc sdshow OpenVPNServiceViệc thêm tài khoản không hề im lặng: chính sách mặc định vẫn nêu một lời nhắc mỗi phiên, nên ủy quyền làm giảm những gì việc nâng quyền có thể làm thay vì loại bỏ nó. Ghi lại tư cách thành viên, vì nó âm thầm tích tụ và gần như không bao giờ được xem xét. Trên đường dịch vụ, việc chỉnh sửa bộ mô tả bằng sc sdset có thể ủy quyền khởi động và dừng cho một nhóm, dù một lỗi đánh máy trong bộ mô tả có thể từ chối quyền khởi động của mọi tài khoản, và việc hoàn tác cần quản trị viên. Hãy thử mọi thay đổi bộ mô tả trên máy thử nghiệm trước khi nó tới máy chủ sản xuất.
Xác minh từ tài khoản người dùng
Cấu hình thực hiện trong phiên quản trị không chứng minh được gì về tài khoản sẽ dùng nó. Đăng nhập với tư cách người dùng đó, kết nối và so sánh trạng thái máy trước và sau.
route print -4
Get-DnsClientServerAddressBảng định tuyến sẽ nhận thêm các tuyến của đường hầm, và trình phân giải sẽ trỏ tới các máy chủ mà VPN cung cấp khi đang kết nối. Sau khi ngắt kết nối, cả hai đầu ra sẽ khớp với bản sao bạn đã chụp trước đó, và đó là lý do việc chụp trước quan trọng. Cập nhật trình điều khiển có thể đưa yêu cầu quản trị trở lại, nên ghi phiên bản ứng dụng bên cạnh kết quả. Giữ tệp hồ sơ và khóa chỉ cho tài khoản sử dụng chúng đọc được, thay vì nới lỏng quyền cho một bản cài dùng chung.
Ghi lại ai có thể khởi động đường hầm, nhóm nào cấp quyền đó và điều gì vẫn cần quản trị viên. Ghi chú đó biến lần cập nhật ứng dụng tiếp theo thành công việc có kế hoạch thay vì một buổi chiều đoán mò.