Kết nối một lần trước khi thay đổi quy tắc và ghi lại xem máy khách bị treo hay bị từ chối ngay lập tức. Chính khác biệt duy nhất đó cho bạn biết quyết định nào đã bỏ gói tin và tiết kiệm một giờ đọc các tệp chính sách. Phần còn lại của hành trình ngắn: gói tin đi qua một móc, khớp với một quy tắc và đến được bộ lắng nghe hoặc không. Danh sách cho phép chỉ là ghi chép sổ sách quanh ba sự thật đó.

Theo dõi một lần thử SSH đến móc đầu vào

Máy khách gửi SYN đến địa chỉ của máy chủ trên cổng 22, và nhân hệ điều hành quyết định gói tin đó có dành cho dịch vụ cục bộ hay không. Nếu có, đường vào chạy và bộ quy tắc chấp nhận gói tin hoặc bỏ nó đi. Im lặng nghĩa là SYN đã chết trước khi bộ lắng nghe nhìn thấy nó, còn từ chối nhanh nghĩa là có gì đó đã trả lời bằng một lần đặt lại. Đó là những phán quyết khác nhau từ những quy tắc khác nhau, và cả hai đều là kết quả hợp lệ.

Sau đó xác nhận bộ lắng nghe, vì không quy tắc nào cứu được một dịch vụ không tồn tại. Chạy ss -ltnp và kiểm tra xem có gì đó gắn với cổng và họ địa chỉ bạn mong đợi, rồi đọc ssh -v trên máy khách để xem nó dừng ở đâu.

Chuyển tiếp là một quyết định riêng

Trên máy chủ VPN, móc thú vị hơn là forward, vì lưu lượng của máy khách được định tuyến qua máy thay vì được giao cho máy. Một máy chủ chỉ chạy máy khách VPN của riêng nó cần bộ quy tắc nhỏ hơn nhiều so với máy chuyển tiếp gói tin của người khác. Trộn hai thiết kế trên một máy tạo ra những quy tắc trông đúng mà không cho gì đi qua.

Viết chính sách bên trong như một câu hỏi riêng: địa chỉ máy khách nào có thể đến đích nào qua đường hầm. Giữ đường quản trị, chẳng hạn SSH, trên đường vào với giới hạn nguồn riêng của nó. Một quy tắc forward dễ dãi thêm vào trong lúc thử nghiệm là khuyết điểm kinh điển sống lâu hơn cuộc thử nghiệm, nên sau một thay đổi hãy xem lại toàn bộ bộ quy tắc thay vì dòng bạn đã sửa. Mở bộ lắng nghe của đường hầm không phải là cho phép mọi máy khách đã kết nối quản trị máy chủ.

Bỏ và từ chối là hành động, không phải chính sách

Chính sách của chuỗi cơ sở chấp nhận hoặc bỏ và đó là toàn bộ danh sách lựa chọn, như tài liệu tham chiếu nftables nói. Từ chối tồn tại như một hành động của quy tắc với phản hồi được chọn, vì thế viết nó như chính sách thất bại trên cả nftables và iptables. Trên thực tế drop không cho máy khách bất kỳ thông tin nào, trong khi reject cho nó một lỗi mà nó có thể xử lý.

table inet admin {
    chain input {
        type filter hook input priority filter; policy drop;
        ct state established,related accept
        ip saddr 203.0.113.0/28 tcp dport 22 accept
        udp dport 51820 accept
        icmp type { destination-unreachable, time-exceeded } accept
    }
}

Hãy đọc bản phác đó như hình dạng của một quyết định chứ không phải tệp để dán, vì các dải địa chỉ chỉ là ví dụ. Một reject rõ ràng trên cổng SSH khiến máy khách không được phép thất bại trong một giây thay vì chờ hết thời gian, điều này rút ngắn việc gỡ lỗi của chính bạn. Im lặng ngăn quét tình cờ và không nói gì với người dùng được phép. Chọn theo từng dịch vụ và ghi lại lý do, nếu không người tiếp theo sẽ đổi lại.

Giữ lưu lượng điều khiển mà bạn thực sự cần

Chặn toàn bộ ICMP là một mặc định phổ biến làm hỏng việc khám phá MTU của đường đi, và triệu chứng là kết nối được thiết lập rồi kẹt ở các gói lớn hơn. Khám phá láng giềng trên IPv6 phụ thuộc vào các loại ICMPv6 của riêng nó, và bỏ chúng làm đứt liên kết trước khi bất kỳ quy tắc TCP nào được xem xét. Cả hai đều thuộc danh sách cho phép như những phụ thuộc có tên chứ không phải như các giấy phép bao trùm. Một chính sách âm thầm phá khám phá còn tệ hơn một chính sách cho qua một chút lưu lượng chẩn đoán.

Cho phép các trạng thái established và related đối với các kết nối bạn tự khởi tạo, và để động cơ theo dõi trạng thái xử lý các phản hồi. Sau đó xác nhận đường phản hồi không bị chặn xa hơn ra ngoài, vì một hạn chế chỉ áp cho lưu lượng đi ra ở phía trên tạo ra đúng thời gian chờ mà bạn định đổ lỗi cho máy chủ.

Chứng minh khả năng phục hồi trước khi bỏ đường cũ

Giữ một phiên bảng điều khiển mở, áp dụng thay đổi và mở một kết nối quản trị hoàn toàn mới từ một thiết bị đầu cuối khác. Một phiên đang có không chứng minh được gì, vì nó có thể sống sót qua quy tắc chặn mọi lần đăng nhập mới, điều này khiến nó thành dương tính giả thuyết phục nhất trong công việc tường lửa. Nếu một hệ thống giám sát kiểm tra máy chủ, hãy thêm địa chỉ nguồn của nó trước khi thay đổi chứ không phải sau cảnh báo đầu tiên. Sau đó thử một gói lớn và một gói nhỏ để chứng minh việc khám phá vẫn hoạt động.

Với một dịch vụ VPN, hãy lặp lại từ một máy khách chưa từng kết nối, vì một phiên được nối lại có thể dùng lại trạng thái mà phiên mới phải thương lượng. Ghi lại đúng bộ quy tắc đã qua, kèm checksum hoặc bản sao, để lần sửa sau được so sánh thay vì đoán. Phối hợp với người sở hữu thứ tự quy tắc, vì một quy tắc sớm hơn âm thầm thắng quy tắc bạn thêm vào.

Bài viết liên quan