Cổng VPN của bạn vẫn cần một cách để cài đặt bản cập nhật
Một cổng bị khóa vẫn phải tới được các kho của nó. Hãy tìm ra giai đoạn nào đã thất bại, rồi cho phép đúng đường đó thay vì mở lưu lượng ra.
Đường hầm hoạt động cho mọi người phía sau nó, cổng chuyển tiếp lưu lượng của họ, vậy mà bản thân máy không thể cài đặt một bản cập nhật bảo mật. Đây là dạng thường gặp của vấn đề: quyền chuyển tiếp đã được cấp cho các máy khách, còn các kết nối ra của chính cổng thì chưa bao giờ được đưa vào kế hoạch. Trình quản lý gói mở các socket của riêng nó, từ cổng, tới một kho mà bạn có lẽ chưa hề nêu tên ở bất kỳ đâu trong chính sách tường lửa.
Khóa cổng lại là đúng. Khóa chặt đến mức nó ngừng nhận bản vá là một quyết định khác, và thường là quyết định vô tình.
Lưu lượng ra cục bộ không phải chuyển tiếp máy khách
Các quy tắc chuyển tiếp điều chỉnh những gói đến từ nơi khác và rời đi qua cổng. Lưu lượng cập nhật của chính cổng không bao giờ khớp với chúng; nó được sinh ra tại chỗ và đi theo đường ra. Sự khác biệt đó giải thích một lỗi có vẻ bất khả thi trong khi truy cập của máy khách vẫn hoạt động hoàn hảo.
Nó cũng giải thích một lỗ hổng chính sách sống sót qua các bài kiểm tra, vì một lần kiểm tra nhanh từ máy tính xách tay phía sau đường hầm chứng minh chuỗi chuyển tiếp hoạt động và không nói gì về các kết nối của chính máy chủ. Hãy coi cổng là hai chủ thể: một bộ định tuyến với chuỗi chuyển tiếp và một máy chủ với chuỗi đầu ra. Cả hai đều cần một ý kiến, và thường chỉ một trong hai được ghi lại.
Gọi tên giai đoạn đã thất bại
Các lỗi cập nhật gọi tên những ranh giới khác nhau, và việc vồ lấy một quy tắc cổng trước khi đọc xem cái nào thất bại sẽ tốn cả một buổi chiều. Một tên kho không phân giải được là câu hỏi của trình phân giải, không phải câu hỏi về vận chuyển.
getent hosts deb.debian.org
curl -sSI https://deb.debian.org/debian/dists/stable/Release | head -n 1
apt-get -o Debug::Acquire::https=true update
Một lần hết thời gian sau khi phân giải thành công chuyển câu hỏi sang vận chuyển: địa chỉ nào, cổng nào và proxy nào đã cấu hình mà trình quản lý gói thực sự đã thử. Lỗi xác thực TLS là điều thứ ba, hoàn toàn khác, và nó có nghĩa là kết nối đã hoạt động đủ tốt để thương lượng. Khiếu nại về xác thực kho lưu trữ là giai đoạn thứ tư, và nó liên quan đến siêu dữ liệu đã ký chứ không phải khả năng tiếp cận. Bốn giai đoạn, bốn cách sửa khác nhau, và ping luôn chỉ mô tả một giao thức mà không trình quản lý gói nào dùng.
Đọc danh sách nguồn trước khi thêm quy tắc
Liệt kê các URI nguồn thực tế và cấu hình proxy hiệu lực, không phải những cái bạn nhớ. Một quy tắc viết cho HTTP thường là vô dụng khi nguồn là HTTPS, và một proxy mà shell biết có thể vô hình với một dịch vụ được khởi động lúc khởi động với môi trường khác.
Tài liệu vận chuyển HTTP trong APT bao gồm các thiết lập proxy theo môi trường và riêng cho APT, kể cả lựa chọn theo từng máy chủ, và phần vận chuyển HTTPS của nó có thiết lập xác thực riêng. Đường của trình duyệt và đường của trình quản lý gói là hai đường riêng biệt, ngay cả trên cùng một máy.
Hãy để ý các họ địa chỉ mà nguồn phân giải tới. Một quy tắc chỉ cho phép IPv4 sẽ tiếp tục thất bại trên máy chủ mà nguồn của nó ưu tiên bản ghi AAAA, và lỗi có vẻ chập chờn vì nó phụ thuộc vào việc câu trả lời nào đến trước.
Chọn một đường bảo trì và giữ lấy nó
Có ba lựa chọn có thể bảo vệ được: lưu lượng bảo trì qua đường hầm, qua một proxy cập nhật được quản lý, hoặc qua một ngoại lệ trực tiếp hẹp. Hãy chọn một cách có chủ đích và làm cho trình phân giải đồng ý với nó, vì một sự chia tách trong đó tên phân giải theo một hướng còn kết nối đi theo hướng khác tạo ra những lỗi không ai giải thích được.
Dù bạn chọn gì, nó cũng không được trở thành một lối dự phòng không giới hạn. Nếu lưu lượng ra trực tiếp bị cấm khi đường hầm ngừng hoạt động, thì một ngoại lệ bảo trì lặng lẽ cho phép mọi thứ là một thay đổi chính sách được ngụy trang thành bản sửa. Giữ điểm cuối của chính đường hầm và các nhu cầu bootstrap trong một hạng mục riêng so với truy cập kho, vì chúng trỏ tới những đích khác nhau và thất bại theo những cách khác nhau, nên một ngoại lệ không thể che cái kia.
Xác minh mà không làm yếu các kiểm tra
Áp dụng phạm vi qua chính tường lửa đã sở hữu chính sách, thay vì thêm một trình quản lý thứ hai chỉ vì một hướng dẫn đã dùng nó. Sau đó chạy một lần làm mới siêu dữ liệu và một giao dịch gói thực sự dưới chính sách được duy trì, và đọc đầu ra chứ không chỉ trạng thái thoát.
Vận chuyển thành công không phải là sự cho phép nới lỏng xác minh. Xác thực kho lưu trữ và danh tính máy chủ TLS là những bảo đảm riêng biệt, và tắt một trong hai để dập một lỗi sẽ thay đổi thứ bạn tin cậy, không phải thứ bạn có thể vươn tới.
Kết thúc bằng việc cố ý kiểm tra trường hợp không có đường hầm. Biết cổng hành xử thế nào khi không có đường hầm là một phần của thiết kế, phát hiện điều đó trong lúc sự cố thì không. Hạ đường hầm xuống, chạy làm mới siêu dữ liệu và xác nhận máy chủ thất bại theo cách bạn đã định chứ không lặng lẽ quay về một đường mở. Giữ thông tin đăng nhập của kho và proxy ngoài phần chẩn đoán dùng chung, và để lại một ghi chú nêu rõ ai sở hữu đường cập nhật.