Đường hầm dựng lên, đăng nhập thành công và mọi máy chủ trong mạng đều trả lời. Đây không phải VPN hỏng; đây là VPN không có mô hình quyền. RouterOS xác thực tài khoản rồi định tuyến các gói của nó như của bất kỳ ai, nên tường lửa phải cung cấp giới hạn. Thêm giới hạn đó mà không phá vỡ đăng nhập chính là toàn bộ công việc.

Xác thực kết thúc ở nơi quyền bắt đầu

Khi phiên PPP đã lên, các gói của máy khách đi vào chuỗi forward như lưu lượng từ bất kỳ giao diện nào khác. Nếu chính sách forward của bộ định tuyến dễ dãi, chuyên gia tư vấn thừa hưởng sự dễ dãi đó khi đăng nhập. Tài khoản chưa bao giờ mang phạm vi, nên không có gì trên tài khoản để thay đổi. Bộ quy tắc được viết cho nhân viên và phiên mới chỉ đơn giản tham gia vào đó.

Kiểm tra yêu cầu liên quan đến đường nào trước khi viết bất cứ điều gì. Lưu lượng đến các máy chủ sau bộ định tuyến đi qua forward, trong khi lưu lượng đến chính bộ định tuyến, gồm winbox và SSH, đi qua input. Phạm vi chỉ bao phủ forward để thiết bị mở cho cùng máy khách đó.

Cả hai chuỗi đều cần một quyết định, kể cả khi quyết định là để input đóng. Lựa chọn đó thuộc về yêu cầu truy cập, không phải một ý nghĩ về sau.

Gắn phiên vào một danh sách có tên

Hồ sơ PPP có thể đưa địa chỉ mà nó cấp vào một danh sách địa chỉ có tên khi phiên bắt đầu. Điều đó biến một địa chỉ đường hầm tạm thời thành thứ tường lửa có thể đối chiếu theo tên, và mục đó biến mất khi phiên kết thúc. Tài khoản sau đó thừa hưởng phạm vi từ hồ sơ của nó thay vì từ một quy tắc mã hóa cứng địa chỉ.

Tạo hồ sơ trước, rồi gắn secret vào đó một cách rõ ràng. Một secret vẫn trỏ đến hồ sơ mặc định sẽ tái tạo vấn đề ban đầu.

Đặt tên hồ sơ và danh sách sao cho nhiệm vụ của chúng rõ ràng, và bình luận cả hai bằng tham chiếu của yêu cầu. Một hồ sơ có thể phục vụ nhiều người với cùng phạm vi, trong khi danh sách vẫn nhận diện từng phiên đang sống. Việc này rẻ hơn để xem xét so với một quy tắc cho mỗi người.

/ppp profile add name=scoped-consultant remote-address=consultant-pool address-list=vpn-scoped-clients
/ppp secret add name=consultant password=... service=ovpn profile=scoped-consultant

Ghi lại dịch vụ được phép trong một danh sách

Đặt máy chủ được phép vào danh sách địa chỉ riêng của nó thay vì nhúng địa chỉ vào một quy tắc lọc. Danh sách có thể được kiểm toán, mở rộng và bình luận, và quy tắc dùng nó không đổi khi máy chủ di chuyển. Một mục duy nhất có vẻ thừa cho đến khi máy chủ thứ hai đến, điều thường xảy ra.

Đối chiếu danh sách khi địa chỉ động hoặc cân bằng tải, và đối chiếu địa chỉ trực tiếp khi nó được đặt trước và ổn định. Cả hai lựa chọn đều đọc rõ ràng nếu bình luận nêu tên dịch vụ và chủ sở hữu.

Giới hạn giao thức và cổng cũng như máy chủ. Một accept cho máy chủ không giới hạn cổng sẽ mở mọi dịch vụ mà máy chủ đó chạy, rộng hơn mức mà hầu hết yêu cầu truy cập nhắm tới. Cổng là một phần của quyền, không phải chi tiết thêm vào sau.

/ip firewall address-list add list=vpn-targets address=10.0.0.10 comment="consultant RDP target"

Sắp xếp bước nhảy trước mọi accept rộng

Một quy tắc nhảy gửi lưu lượng được chuyển tiếp từ danh sách giới hạn vào một chuỗi riêng nơi toàn bộ chính sách vừa trong ba dòng. Quy tắc đầu tiên chấp nhận đích và cổng được phép, và quy tắc cuối cùng thả mọi thứ khác. Bước nhảy phải nằm trên mọi accept rộng trong forward, vì một accept sớm hơn nghĩa là bước nhảy không bao giờ chạy. Giữ accept cho established và related trước bước nhảy để lưu lượng hồi về vẫn chảy.

Kiểm tra rằng không quy tắc fasttrack nào có thể mang lưu lượng này vượt qua chuỗi giới hạn. Fasttrack bỏ qua phần còn lại của đường lọc, và một phiên giới hạn được fasttrack thì hoàn toàn không bị giới hạn.

Lặp lại quyết định cho chuỗi input nếu các dịch vụ của chính bộ định tuyến phải không thể truy cập. Một phạm vi chặn lưu lượng được chuyển tiếp và để winbox mở chỉ mới xong một nửa.

/ip firewall filter
add chain=forward action=jump jump-target=scoped-vpn src-address-list=vpn-scoped-clients
add chain=scoped-vpn action=accept protocol=tcp dst-address-list=vpn-targets dst-port=3389
add chain=scoped-vpn action=drop

Xác minh bằng bộ đếm và tư cách thành viên danh sách

Từ máy khách, hãy thử dịch vụ được phép và một dịch vụ phải thất bại, rồi đọc thống kê quy tắc trên bộ định tuyến. Bộ đếm accept và drop cho biết mỗi gói đi theo đường nào, điều máy khách không thể thấy. Cũng xác nhận rằng địa chỉ của phiên đang sống đã xuất hiện trong danh sách giới hạn.

Danh sách trống nghĩa là tài khoản đang ở hồ sơ khác hoặc hồ sơ đã mất thiết lập danh sách địa chỉ. Bộ đếm drop tăng lên trong khi dịch vụ được phép thất bại nghĩa là đích hoặc cổng không khớp với thứ máy khách gửi.

Thử cùng dịch vụ đó theo tên và theo địa chỉ trước khi kết luận bất cứ điều gì. Lỗi phân giải tên trông giống hệt một cổng bị chặn từ phía máy khách. Sau đó ghi lại hồ sơ, cả hai danh sách và dịch vụ được phép duy nhất vào yêu cầu truy cập để lần xem xét tiếp theo so sánh thay vì dựng lại.

/ip firewall filter print stats where chain=scoped-vpn
/ip firewall address-list print where list=vpn-scoped-clients

Bài viết liên quan