Yêu cầu luôn đến với cùng một dạng: đóng IPsec ở biên vì nó mang những đường hầm mà không ai phê duyệt, và khiếu nại đầu tiên đến từ người có điện thoại ngừng gọi qua Wi-Fi. Cả hai sự thật đều đúng cùng lúc, và không cái nào biện minh cho việc bỏ kiểm soát. Điều tường lửa cần là một ngoại lệ dịch vụ với tính năng được đặt tên, nguồn giới hạn, đích đến được ghi lại và người chịu trách nhiệm. Năm bước biến nó thành một quy tắc mà người lạ có thể rà soát vào năm sau.

Đặt tên dịch vụ trước khi đặt tên giao thức

Một điện thoại bàn trên dịch vụ SIP và một thiết bị thực hiện Wi-Fi Calling của nhà mạng không chia sẻ cùng hồ sơ mạng, và VoIP như một thuật ngữ tường lửa không mô tả cái nào trong hai. Dữ liệu cổng và đích đến phải đến từ nhà cung cấp hoặc nhà mạng vận hành dịch vụ, không phải từ danh sách cổng được nhớ thuộc về một hệ thống điện thoại khác. Đó là khác biệt giữa một quy tắc bảo vệ tính năng và một quy tắc bảo vệ một từ.

Tài liệu cổng dịch vụ của Apple liệt kê UDP 500 và 4500 cho Wi-Fi Calling, đúng là cặp mà hầu hết các lệnh chặn IPsec toàn diện bỏ qua. Ghi tên tính năng vào bản ghi thay đổi bên cạnh các cổng đó. Thêm phiên bản hoặc ngày của tài liệu bạn đã dùng, vì bảng của nhà cung cấp bị chỉnh sửa. Một quy tắc nêu tên dịch vụ mà nó tồn tại vì nó có thể được rà soát; một quy tắc nêu tên một loại giao thức thì không.

Viết ngoại lệ như một hợp đồng, không phải một ân huệ

Ngoại lệ nêu rõ tính năng được phép, các lớp thiết bị sử dụng nó, phương thức vận chuyển cần thiết và các đích đến mà bên chịu trách nhiệm ghi lại. Nó cũng mang một người phụ trách và một ngày rà soát, vì điểm cuối của nhà mạng và mẫu thiết bị thay đổi mà không báo cho nhóm tường lửa. Giao việc rà soát cho một người thay vì tên nhóm sẽ tồn tại lâu hơn nhóm. Giữ cách diễn đạt đủ cụ thể để người lạ có thể tái tạo quy tắc chỉ từ bản ghi.

Đặt ngoại lệ vào cùng chu kỳ với phần còn lại của chính sách biên, để nhà mạng di chuyển một đích đến hay đội thiết bị đổi mẫu máy được nhận ra khi rà soát chứ không phải ở lần gián đoạn tiếp theo. Khép vòng với người đã báo những cuộc gọi hỏng, vì chỉ người đó mới xác nhận được bản sửa mà không mở lại đường hầm mà lệnh chặn phải đóng. Xác nhận đó cũng thuộc về bản ghi, kèm ngày tháng.

Một quyền cho phép vĩnh viễn được dán nhãn sửa điện thoại tạm thời là không thể biện minh sau hai năm. Một quyền cho phép gắn với dịch vụ được xác định có ngày hết hạn được gia hạn có chủ đích.

Giới hạn nguồn một cách trung thực

Giới hạn ngoại lệ trong một phân đoạn thiết bị được quản lý mạnh hơn đáng kể so với mở giao thức cho mọi máy tính xách tay trong tòa nhà. Nếu mạng không nhận diện được phân đoạn đó, hãy viết điều đó ra thay vì ngụ ý rằng quy tắc biết thiết bị. Kết quả tốt rẻ nhất là dùng lại một ranh giới đã tồn tại vì lý do khác, nhờ đó ngoại lệ thừa hưởng một kiểm soát thay vì tự phát minh ra nó. Lọc theo địa chỉ không phải là xác thực thiết bị, và bản ghi thay đổi không nên ngụ ý điều ngược lại.

Địa chỉ nguồn hay địa chỉ phần cứng không phải bằng chứng của một thiết bị vật lý. Việc một trong hai có ý nghĩa hay không phụ thuộc hoàn toàn vào các kiểm soát khác bên trong phân đoạn đó. Nếu lập luận cho quy tắc dựa trên địa chỉ MAC, hãy kiểm tra điều gì ngăn người dùng thay đổi nó trước khi quy tắc được ban hành.

Chấp nhận điều mà một quy tắc cổng không thể nói

Cổng xác định điểm cuối vận chuyển, không phải ý định kinh doanh. Khi một dịch vụ gọi đã được duyệt và một đường hầm chưa được duyệt cùng đi trên UDP 4500, không quy tắc nào dựa trên cổng tách được chúng. Một quy tắc tuyên bố làm được điều đó trông chính xác mà không phải, điều tệ hơn một quy tắc thừa nhận hình dạng của chính nó. Đó là giới hạn của cơ chế, không phải lỗi của người viết.

Nói điều đó bên cạnh quy tắc, và ghép ngoại lệ với bất kỳ biện pháp thực thi nào mạng có, như quản lý thiết bị hoặc danh sách đích đến được phép. Sau đó diễn đạt ngoại lệ hẹp nhất mà công cụ cho phép, ví dụ bằng các quy tắc nftables nêu tên phân đoạn và cặp cổng rồi đặt lệnh từ chối chung sau chúng:

nft add rule inet edge forward ip saddr 10.40.0.0/24 udp dport { 500, 4500 } counter accept
nft add rule inet edge forward udp dport { 500, 4500 } counter drop

nftables đánh giá theo thứ tự và dừng ở kết quả khớp đầu tiên, nên cho phép có giới hạn phải nằm trên lệnh từ chối chung. Đảo hai thứ đó và ngoại lệ sẽ lặng lẽ không làm gì.

Kiểm chứng tính năng và lệnh từ chối

Chạy kiểm chứng đã được duyệt trên một cuộc gọi Wi-Fi thông thường, từ đúng lớp thiết bị mà ngoại lệ tồn tại, và xác nhận rằng một máy khách bị loại vẫn thất bại. Không bao giờ và trong bất kỳ hoàn cảnh nào dùng cuộc gọi khẩn cấp làm ca thử. Sau đó kiểm tra quy tắc đã ban hành, vì một bộ đếm kẹt ở số không là bằng chứng nhanh nhất rằng ngoại lệ chưa bao giờ khớp:

nft -a list chain inet edge forward

Đưa vào bài thử một lần kết nối lại hoặc một lần đổi mạng, và lặp lại từ khởi động lạnh khi điện thoại gia nhập mạng thay vì đã kết nối sẵn. Nếu bộ đếm nhích lên trong khi cuộc gọi vẫn hỏng, vấn đề đã rời khỏi tường lửa và thuộc danh sách đích đến của nhà mạng.

Bài viết liên quan