- Lập luận cho rằng IPv4 an toàn hơn vì mặc định sử dụng NAT xuất phát từ sự nhầm lẫn giữa bảo mật và chuyển đổi địa chỉ
- NAT (Network Address Translation) không phải là tính năng bảo mật mà là cơ chế tiết kiệm địa chỉ nhằm giải quyết tình trạng thiếu hụt địa chỉ IPv4
- Cách NAT hoạt động về bản chất chỉ là cho phép nhiều thiết bị cùng chia sẻ một địa chỉ IP công cộng dựa trên ánh xạ cổng
- Trên thực tế, thành phần chặn lưu lượng từ bên ngoài không phải NAT mà là tường lửa trạng thái (stateful firewall)
- Ngay cả trong môi trường IPv6, tường lửa mặc định cũng chặn lưu lượng không được phép nên việc không có NAT không đồng nghĩa với bảo mật suy yếu
Nhầm lẫn giữa NAT và bảo mật
- Quan điểm cho rằng IPv4 an toàn hơn vì dùng NAT là một nhận thức sai lầm
- NAT không phải tính năng bảo mật mà là công nghệ phục vụ bảo toàn địa chỉ (address conservation)
- IPv6 cũng có thể dùng NAT, nhưng điều đó không làm tăng bảo mật
- NAT cho phép nhiều thiết bị trong mạng nội bộ cùng chia sẻ một địa chỉ IP công cộng
- Việc định tuyến được thực hiện bằng cách ghi lại địa chỉ IP đích (rewrite) dựa trên cổng đích của gói tin
- Nó hoạt động theo các quy tắc ánh xạ cổng (port mapping) hoặc chuyển tiếp cổng (port forwarding) do quản trị viên mạng cấu hình
Cách NAT thực sự hoạt động
- Trong môi trường NAT, lưu lượng đi vào từ bên ngoài sẽ không được chuyển tới thiết bị nội bộ nếu có cổng đích không được dự kiến
- Loại lưu lượng này sẽ dừng lại ở thiết bị có IP công cộng và không được định tuyến vào mạng nội bộ
- Vì vậy NAT có vẻ như đang chặn truy cập từ bên ngoài, nhưng đó chỉ là kết quả phụ chứ không phải mục tiêu thiết kế về bảo mật
Vai trò của tường lửa
- Hiệu ứng bảo mật thường bị hiểu nhầm là do NAT mang lại thực chất xuất phát từ tường lửa trạng thái (stateful firewall)
- Phần lớn router hiện đại đều bao gồm chính sách tường lửa chặn lưu lượng đi vào theo mặc định, bất kể có dùng NAT hay không
- Tường lửa sẽ loại bỏ (drop) lưu lượng đích không được dự kiến trước khi ghi lại gói tin hoặc định tuyến
- Ví dụ, các quy tắc tường lửa IPv6 mặc định của router UniFi như sau
- Cho phép lưu lượng Established/Related (lưu lượng phản hồi outbound)
- Chặn lưu lượng Invalid
- Chặn mọi lưu lượng khác
Bảo mật trong môi trường IPv6
- Ngay cả trong mạng IPv6, các quy tắc tường lửa mặc định vẫn chặn lưu lượng inbound không được phép
- Mức bảo vệ tương đương vẫn được áp dụng ngay cả khi không dùng NAT
- Muốn cho phép lưu lượng không được yêu cầu từ bên ngoài tới thiết bị IPv6, phải thêm quy tắc tường lửa một cách tường minh
- Điều này được áp dụng như nhau bất kể có sử dụng NAT hay không
Kết luận
- Không có căn cứ cho nhận định rằng IPv6 kém an toàn hơn chỉ vì không sử dụng NAT
- Bảo mật thực tế được quyết định bởi chính sách tường lửa và các quy tắc kiểm soát lưu lượng, không phải NAT
- Ngay cả trong môi trường IPv6, vẫn có thể duy trì chiến lược bảo mật mặc định từ chối (default-deny) thông qua cấu hình tường lửa phù hợp
1 bình luận
Ý kiến trên Hacker News
Khuyên nên xem mục 5 của RFC 4787 trước khi tham gia thảo luận
NAT không phải là tường lửa nhưng vẫn lọc lưu lượng, và vì vậy cung cấp một mức độ chức năng bảo mật nhất định
Trong thực tế, NAT đã phát triển vượt ra ngoài việc chỉ chuyển đổi địa chỉ, và ngay cả khi IPv6 không dùng NAT thì vẫn có thể triển khai cùng kiểu lọc bằng tường lửa
Linux netfilter triển khai cả NAT lẫn tường lửa; các quy tắc DNAT/SNAT trong bảng
natlà NAT, còn các quy tắc REJECT/DROP trong bảngfilterđóng vai trò tường lửaNếu chỉ áp dụng quy tắc NAT, thì cả lưu lượng không thuộc kết nối hiện có cũng vẫn đi qua như thường
Nó đề cập đến quá trình NAT tạo bảng trạng thái khi thiết lập kết nối đi ra ngoài, rồi cho phép các gói inbound tương ứng đi vào
Tức là “filtering” trong tài liệu này không có nghĩa là chặn các kết nối inbound không được yêu cầu
IPv6 có thể an toàn ngang IPv4, nhưng điều đó còn tùy cấu hình
Việc kỹ sư hệ thống và ứng dụng không hiểu vấn đề một cách toàn diện rồi dựa dẫm vào NAT và tường lửa biên là một thói quen bảo mật tệ
Đặc biệt khi càng xa rời triển khai thực tế thì độ đáng tin của RFC càng giảm
Trong các mạng di động ở Mỹ, IPv6 được dùng mà không cần NAT
Ví dụ, T-Mobile dùng 464XLAT để tunnel IPv4 qua IPv6
Điều này cho thấy tường lửa trạng thái có thể vận hành ở quy mô lớn ngay cả khi không có NAT
Đã thử bằng Termux và netcat; IPv4 nằm sau CGNAT, nhưng IPv6 có thể kết nối trực tiếp
Nếu dung lượng mạng không đủ thì cần giải quyết điều đó
Khi IPv6 trở nên phổ biến, mọi người sẽ coi việc giao tiếp trực tiếp là điều hiển nhiên
Điều đầu tiên tôi học khi làm kỹ sư mạng là mối quan hệ giữa NAT và bảo mật
Địa chỉ private của IPv4 (192.168.0.1) khó bị truy cập từ bên ngoài, nhưng địa chỉ global của IPv6 có thể làm lộ thông tin về thiết bị
IPv6 có các lựa chọn thay thế như Prefix Translation, cho phép giữ lại một phần ưu điểm của NAT trong khi vẫn có truy cập minh bạch
Cần đặt cả hai vào cùng bối cảnh địa chỉ nội bộ hoặc địa chỉ bên ngoài thì mới so sánh công bằng được
Trong môi trường CGNAT thì không thể có kết nối inbound, nên trên IPv6 cũng có thể hạn chế theo cách tương tự
Có thể dùng NAT66 để che prefix, nhưng lợi ích bảo mật thực tế không lớn
Nhiều hacker nhầm lẫn giữa NAT và tường lửa
NAT không được tạo ra vì mục đích bảo mật, và bảo mật là do tường lửa cung cấp
NAT là namespacing, còn tường lửa là bảo mật dựa trên chính sách
Bản thân namespacing cũng là một thuộc tính bảo mật mạnh vì khiến kẻ tấn công “thậm chí không biết tên” của tài nguyên
Tường lửa IPv6 có thể vô tình phơi ra toàn thế giới chỉ với một dòng quy tắc sai
Ngay cả không có tường lửa, chỉ riêng NAT cũng có thể bảo vệ tài nguyên nội bộ
NAT giúp giảm bề mặt tấn công của mạng gia đình xuống còn một router
Trong khi đó, cấu hình mặc định của tường lửa có thể khác nhau, nên IPv6 đôi khi bị người dùng phổ thông cảm nhận như một bước lùi về bảo mật
Nói UPnP phá vỡ bảo mật của NAT cũng giống như nói PCP phá vỡ bảo mật của tường lửa
Về lập luận rằng tính chất chặn mặc định của NAT là ưu thế bảo mật của IPv4
Quy tắc chặn mặc định của IPv6 cung cấp cùng mức độ bảo mật, nên không có khác biệt bảo mật mang tính cấu trúc
NAT của IPv4 và quy tắc chặn mặc định của IPv6 duy trì cùng một điều kiện bất biến
Cả hai đều có thể trở nên dễ tổn thương như nhau nếu cấu hình sai
Tôi từng chủ quan vì có NAT rồi, và SBC đã bị hack do chưa cấu hình tường lửa IPv6
Nguyên nhân là lỗi cấu hình IPv6 chứ không phải NAT
NAT cũng gây ra các vấn đề bảo mật
Có thể xuất hiện tấn công reflection hoặc khó truy vết do sự tách rời giữa địa chỉ và endpoint
Trước đây AOL từng có trường hợp nhiều người dùng dùng chung một số ít địa chỉ egress, khiến việc chặn một số người dùng trở nên khó khăn
Nhưng theo thời gian, NAT lại bị xem như một dạng niềm tin bảo mật cargo cult
Tác dụng của NAT khác nhau tùy cấu hình ISP và router
NAT không phải là tính năng bảo mật được thiết kế có chủ đích, nhưng vẫn tạo ra hiệu ứng bảo mật phụ
Trong IPv6, nếu mỗi thiết bị nhận địa chỉ trực tiếp thì cần có tường lửa chặn mặc định
Liên kết đặc tả UPnP
Trước câu nói rằng ai cho NAT là nền tảng bảo mật thì là người không hiểu mạng
Họ chia sẻ một trường hợp máy chủ SIP bị lỗi do vấn đề tích lũy địa chỉ riêng tư hồi đó
Cuộc thảo luận liên quan vẫn còn giá trị trong chuỗi VOIP trên Reddit
Về lập luận rằng NAT không drop lưu lượng inbound
NAT chỉ đơn giản thực hiện chuyển đổi địa chỉ và không drop gói tin
Tác giả nói đã sửa bài để phản ánh góp ý này