Quy tắc được đưa vào, terminal bạn đang có vẫn tiếp tục trả lời, và lần đăng nhập tiếp theo bị từ chối. Khoảng trống đó chính là toàn bộ khó khăn của việc kiểm thử một thay đổi tường lửa qua chính kết nối bạn đang thay đổi. Theo dõi kết nối quyết định một lần rồi ngừng nhìn, nên một luồng đã thiết lập là phép thử duy nhất không thể thấy chính sách mới. Phần sau so sánh ba đường quay lại, rồi xác định thứ tự thay đổi và kiểm tra các quy tắc.

Vì sao phiên còn sống sót là bằng chứng yếu nhất

Tường lửa có trạng thái đánh giá gói đầu tiên của một luồng và giữ phán quyết đó chừng nào bản ghi còn sống. Các quy tắc thêm sau đó áp dụng cho những luồng bắt đầu muộn hơn, vì thế cửa sổ bạn đang gõ vẫn dùng được trong khi mọi người khác bị từ chối. Những gì bạn học được từ nó mô tả chính sách đã có hiệu lực vài phút trước. Ngay cả một bản ghi bắt trên luồng đó cũng chỉ cho thấy một quyết định mà máy đã đưa ra.

Hãy coi phiên đang hoạt động là lối thoát khẩn cấp chứ không phải phép đo. Mọi kiểm tra đáng chạy đều phải mở một luồng mới từ nguồn mà quy tắc mới sẽ đánh giá, và kiểm tra đầu tiên nên là kiểm tra mà nếu thất bại sẽ đau nhất. Khi phiên đó là lối vào duy nhất của bạn, thay đổi chưa sẵn sàng để thực hiện.

Ba đường quay lại, xếp theo cái mà mỗi đường phụ thuộc

Xếp hạng các lựa chọn theo mức độ phụ thuộc vào thiết bị đang kiểm thử, vì đó là thứ tự bạn chộp lấy khi quy tắc hóa ra sai. Một console không bao giờ đi qua tường lửa là độc lập, một lần khôi phục đã tập dượt thì gần như vậy, còn phiên đã mở thì không.

Way back inWhat it survivesWhere it fails
out-of-band or hypervisor consolea policy that blocks new loginsneeds separate access you have already tried
rollback rehearsed on that platforma rule that breaks remote accessfails when nobody ever ran it
the session that is already openthe change itselfcannot show whether new flows work

Trước khi thay đổi, hãy đăng nhập qua console và chứng minh nó hoạt động, vì một đường ngoài băng tần bạn chưa từng dùng là sơ đồ chứ không phải phương án dự phòng. Một lần khôi phục chỉ có chỗ đứng sau khi được tập dượt trên nền tảng đó, với bộ quy tắc đó, theo quy trình đã phê duyệt thay vì ứng biến trên máy đang chạy. Viết các bước ra và nhờ người khác đọc lại. Nếu trình tự cần trí nhớ của bạn để hoàn tất, đó không phải là kế hoạch.

Một thay đổi, rồi một kết nối phải được đánh giá

Lưu bộ quy tắc đang chạy và tệp sở hữu nó, rồi thực hiện một chỉnh sửa hẹp duy nhất. Một thay đổi mỗi lần kiểm thử giữ kết quả quy được về nguồn; hai thay đổi cùng lúc để lại một cỗ máy đang chạy và không chút ý niệm chỉnh sửa nào đã làm việc. Ở nơi nền tảng có thể phân tích cấu hình mà không nạp nó, hãy làm việc đó trước, để một lỗi gõ phím thất bại khi chưa có gì đặt cược.

nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf

Sau đó khởi động một phiên mới từ nguồn mà quy tắc đã thay đổi sẽ khớp, trong khi console vẫn còn gắn. Lặp lại một lần nếu thành công, vì lần thử đầu có thể rơi vào một mục mà bảng đã có sẵn. Nếu thất bại, bạn vẫn còn lối vào và một quyết định để hoàn tác, và đó là kết quả xấu rẻ nhất hiện có.

Bộ đếm, trạng thái và tệp trả lời những câu hỏi khác nhau

Mỗi quan sát trong ba quan sát đều có thể trông thuyết phục khi đứng riêng và đánh lừa bạn về hai quan sát còn lại. Bộ đếm cho biết luồng bạn vừa tạo có chạm tới quy tắc bạn đã sửa hay không. Bảng trạng thái cho biết máy tin những luồng nào đã được thiết lập, và nhờ thế một quy tắc hỏng vẫn có thể trông khỏe mạnh. Tệp đã lưu cho biết thiết bị sẽ làm gì sau lần nạp lại tiếp theo, và đó có thể không phải điều bộ quy tắc đang chạy làm lúc này.

ss -tn state established

Đọc bộ đếm như một delta chứ không phải tổng, vì con số duy nhất quan trọng là con số mà luồng kiểm thử của bạn đã làm nhích. Một quy tắc có bộ đếm không bao giờ tăng thì không khớp, dù trên giấy trông đúng đến đâu. Cũng xác nhận trường hợp từ chối: một chính sách chưa từng từ chối bất cứ thứ gì thì chưa từng chứng minh rằng nó từ chối điều bạn định chặn. Đi qua một giao diện trong mỗi họ giao thức mà triển khai thực sự mang theo, vì quy tắc v4 không nói gì về luồng v6.

Khôi phục từ bộ quy tắc đã lưu, rồi làm cho tệp khớp

Khi thay đổi thất bại, hãy nạp bộ quy tắc đã lưu thay vì thêm các quy tắc cho phép cho đến khi đăng nhập hoạt động trở lại. Mỗi lần cho phép thêm làm dịu triệu chứng và để lại một lỗ hổng sống lâu hơn sự cố và ký ức về nó. Khôi phục, kết nối lại, rồi giữ bản so sánh thất bại bên cạnh ghi chép về những gì bạn đã thử.

Sau một thay đổi thành công, hãy làm cho tệp trên đĩa mô tả bộ quy tắc đang chạy, và xác nhận rằng một lần nạp lại tái tạo nó. Một bộ quy tắc sống đã trôi khỏi tệp cấu hình của chính nó là một cái bẫy đặt cho lần khởi động lại tiếp theo.

Bài viết liên quan