ICMPv6 là gì?
ICMPv6 (Internet Control Message Protocol version 6) là giao thức điều khiển thông báo cho IPv6, thực hiện các chức năng tương tự ICMPv4 nhưng được tích hợp sâu hơn vào IPv6: Neighbor Discovery (ND), Path MTU Discovery, Multicast Listener Discovery (MLD), Router Discovery, Redirect...
Tại sao ICMPv6 có rủi ro bảo mật?
Khác với IPv4 (ICMP thường bị chặn toàn bộ), IPv6 **bắt buộc** cần ICMPv6 để hoạt động chính xác. Việc chặn bừa bãi ICMPv6 gây lỗi kết nối, MTU, Neighbor Discovery. Tuy nhiên, kẻ tấn công có thể lợi dụng:
1. Neighbor Discovery Spoofing (ND Spoofing / NDP Poisoning)
- Tấn công tương tự ARP Spoofing trong IPv4
- Kẻ tấn công gửi gói Neighbor Advertisement giả mạo → liên kết địa chỉ IPv6 của nạn nhân với MAC của kẻ tấn công
- Hậu quả: Man-in-the-Middle, DoS, đánh cắp dữ liệu
2. Router Advertisement (RA) Flood / Rogue RA
- Gửi hàng nghìn gói Router Advertisement giả → nạn nhân xử lý quá tải (DoS)
- Hoặc gửi RA với prefix giả → thiết bị tự cấu hình địa chỉ sai, rò rỉ traffic
3. ICMPv6 Redirect Attack
- Gửi gói Redirect giả → buộc nạn nhân gửi traffic qua máy tấn công
4. Smurf/Fragmentation Attack qua ICMPv6
- Gửi gói ICMPv6 Echo Request đến địa chỉ multicast (ff02::1) với source IP giả mạo → tất cả thiết bị phản hồi → DDoS reflection
- Gói ICMPv6 fragment chồng chéo → bypass firewall/IDS
5. Reconnaissance (Thu thập thông tin)
- Ping Sweep (ICMPv6 Echo Request) quét mạng IPv6 phát hiện host sống
- Neighbor Solicitation quét dải địa chỉ link-local
Tính năng bảo mật tích hợp của ICMPv6
- Hop Limit = 255: Các gói ICMPv6 quan trọng (ND, RA, RS, Redirect) bắt buộc có Hop Limit = 255. Router/gateway sẽ loại bỏ gói có Hop Limit < 255 → ngăn chặn tấn công từ bên ngoài subnet (off-link)
- CGA (Cryptographically Generated Addresses): Địa chỉ IPv6 được tạo từ khóa công khai → xác thực chủ sở hữu địa chỉ
- SEND (Secure Neighbor Discovery - RFC 3971): Mở rộng ND với chữ ký số, chứng chỉ, CGA → chống spoofing ND
IPv6 và IPsec: Bảo mật lớp mạng
- IPv6 **hỗ trợ bắt buộc IPsec** (AH và ESP) – khác IPv4 (tùy chọn)
- Tuy nhiên: **Không bắt buộc phải bật IPsec** mặc định. Triển khai IPsec phức tạp, ít dùng thực tế
- Bảo mật thực tế vẫn phụ thuộc vào: tường lửa, RA Guard, DHCPv6 Guard, SEND, quản trị tốt
Biện pháp giảm thiểu (Mitigation)
| Tấn công | Biện pháp phòng chống |
|---|---|
| ND Spoofing | Bật RA Guard, DHCPv6 Guard, ND Inspection trên switch (Cisco: ipv6 nd inspection, ipv6 dhcp guard). Triển khai SEND nếu hỗ trợ |
| Rogue RA / RA Flood | RA Guard trên port access (chỉ cho phép RA từ port uplink/router hợp pháp). Giới hạn rate ICMPv6 RA |
| Redirect Attack | Tắt xử lý Redirect trên host (net.ipv6.conf.all.accept_redirects=0). RA Guard cũng chặn Redirect giả |
| Ping Sweep / Recon | Chặn ICMPv6 Echo Request từ ngoài (WAN) tại firewall. Cho phép Echo Reply, Packet Too Big, Parameter Problem, ND nội bộ |
| Fragmentation Attack | Firewall/IDS hỗ trợ reassembly IPv6 trước khi kiểm tra. Chặn fragment đầu tiên không chứa header upper-layer |
| DoS qua ICMPv6 | Rate-limiting ICMPv6 trên router/firewall. QoS ưu tiên traffic quan trọng |
Cấu hình tường lửa IPv6 khuyến nghị (Linux nftables ví dụ)
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Cho phép traffic đã thiết lập
ct state established,related accept
# Loopback
iifname "lo" accept
# ICMPv6 cần thiết cho IPv6 hoạt động
ipv6 nexthdr icmpv6 icmpv6 type {
destination-unreachable,
packet-too-big,
time-exceeded,
parameter-problem,
nd-router-advert,
nd-neighbor-solicit,
nd-neighbor-advert,
nd-redirect
} accept
# Cho phép Echo Request từ LAN nội bộ (tùy chọn)
ipv6 nexthdr icmpv6 icmpv6 type echo-request iifname "br-lan" accept
# SSH, HTTP, HTTPS từ LAN
tcp dport {22,80,443} iifname "br-lan" accept
}
chain forward {
type filter hook forward priority 0; policy drop;
ct state established,related accept
# ICMPv6 cần thiết cho forwarding
ipv6 nexthdr icmpv6 icmpv6 type {
destination-unreachable,
packet-too-big,
time-exceeded,
parameter-problem
} accept
}
}
Khuyến nghị thực hành tốt (Best Practices)
- KHÔNG chặn toàn bộ ICMPv6 – IPv6 sẽ hỏng (Path MTU Discovery, ND)
- Chỉ cho phép các loại ICMPv6 **bắt buộc** (Destination Unreachable, Packet Too Big, Time Exceeded, Parameter Problem, ND messages)
- Chặn ICMPv6 Echo Request từ Internet (WAN) – cho phép từ LAN nếu cần chẩn đoán
- Triển khai RA Guard, DHCPv6 Guard, ND Inspection trên switch truy cập
- Cân nhắc SEND (Secure Neighbor Discovery) cho môi trường bảo mật cao
- Giám sát log ICMPv6 bất thường (RA flood, Redirect lạ, ND spoofing)
- Cập nhật firmware router/switch/firewall thường xuyên
Tóm tắt
ICMPv6 là **bắt buộc** cho IPv6 nhưng mang lại rủi ro: ND spoofing, Rogue RA, Redirect, Recon, DoS. Bảo vệ bằng: RA Guard, DHCPv6 Guard, ND Inspection, lọc ICMPv6 có chọn lọc (không chặn tất cả), rate-limiting, giám sát. IPv6 có IPsec bắt buộc nhưng triển khai phức tạp – không tự động an toàn hơn IPv4.