IPv6 보안: 위협, 완화 및 모범 사례
IPv6는 본질적으로 IPv4보다 더 안전하거나 덜 안전하지 않습니다. 실제 IPv6 보안 위협, 방화벽을 올바르게 구성하는 방법 및 네트워크를 보호하는 방법을 알아보세요.
조직이 IPv6를 고려할 때 지속적으로 나오는 우려: "NAT 없이 노출되지 않습니까?"
아니요. NAT는 결코 보안 기능이 아니었습니다. 내부 주소를 숨기는 일이 발생한 주소 부족에 대한 해결 방법이었습니다. 상태 저장 방화벽은 주소 변환의 단점 없이 동일한 보호(원치 않는 인바운드 연결 차단)를 제공합니다.
실제 문제는 다릅니다. 많은 네트워크에 IPv6가 활성화되어 있지만 IPv6 방화벽 규칙을 구성하는 것을 잊어버렸습니다. 이것은 심각한 문제이며 완전히 예방 가능합니다.
TL;DR - 빠른 요약
핵심 포인트:
- NAT는 보안이 아닙니다: 상태 저장 방화벽이 주소 변환 없이 동일한 보호를 제공합니다
- IPv6는 명시적인 방화벽 규칙이 필요합니다: 가장 큰 위험은 보안을 구성하지 않고 IPv6를 활성화하는 것입니다
- ICMPv6는 필수입니다: IPv4와 달리 ICMPv6를 차단하면 기본 네트워크 작업이 중단됩니다
- NDP 공격은 실제입니다: 스위치에 RA Guard 및 first-hop 보안을 배포하세요
- 동일한 보안 기본 사항이 적용됩니다: 액세스 제어, 모니터링 및 패치가 여전히 중요합니다
NAT 신화#
NAT는 결코 보안 기능이 아니었습니다. 내부 주소를 숨기는 일이 발생한 주소 부족에 대한 해결 방법이었습니다. 상태 저장 방화벽은 주소 변환의 단점 없이 동일한 보호(원치 않는 인바운드 연결 차단)를 제공합니다.
IPv6 보안에 대해 실제로 다른 점#
IPv6는 특정 방식으로 위협 환경을 변경합니다:
더 큰 주소 공간은 양날의 검입니다. /64 서브넷을 스캔하는 데 무차별 대입으로 수세기가 걸립니다. 그러나 공격자는 무차별 대입하지 않습니다. DNS 레코드, 인증서 투명성 로그 및 트래픽 분석을 사용하여 대상을 찾습니다. 주소 모호성에 의존하지 마세요.
모든 장치가 잠재적으로 연결 가능합니다. 모든 호스트에 전역 주소가 있으면 방화벽이 유일한 장벽입니다. 이로 인해 방화벽 구성이 선택 사항이 아니라 더 중요해집니다.
ICMPv6는 필수이며 선택 사항이 아닙니다. 아무것도 깨지 않고 모든 ICMP를 차단할 수 있는 IPv4와 달리 IPv6는 기본 작업에 ICMPv6가 필요합니다. 잘못된 메시지를 차단하면 네트워크가 작동을 멈춥니다.
새로운 프로토콜, 새로운 공격 표면. NDP(Neighbor Discovery Protocol)는 ARP를 대체하고 새로운 벡터를 도입합니다. 확장 헤더는 공격자가 악용할 수 있는 복잡성을 추가합니다.
IPv6별 공격 벡터#
NDP 스푸핑#
NDP는 주소 확인, 라우터 발견 및 중복 주소 감지를 처리합니다. IPv4의 ARP와 마찬가지로 기본적으로 신뢰합니다.
로컬 네트워크의 공격자는 다음을 수행할 수 있습니다:
- Neighbor Advertisement 스푸핑으로 트래픽 리디렉션(중간자)
- 가짜 Router Advertisement 전송으로 기본 게이트웨이가 됨
- 중복 주소 감지 공격 수행으로 정당한 호스트에 대한 주소 거부
이러한 공격에는 로컬 네트워크 액세스가 필요합니다. 인터넷 규모 위협이 아닙니다. 그러나 공유 네트워크(사무실, 데이터 센터, WiFi)에서는 실제 위험입니다.
완화: 스위치에 RA Guard 및 ND Inspection을 배포합니다. 호스트에서 SEND(Secure Neighbor Discovery)를 고려하지만 채택은 제한적입니다.
이러한 공격에 대한 방어에 대한 자세한 내용은 RA Guard 구성 및 배포 전략을 다루는 상세한 NDP 보안 가이드에서 확인하세요.
라우터 알림 공격#
불량 RA는 호스트가 다음을 수행하도록 설득할 수 있습니다:
- 공격자를 기본 게이트웨이로 사용
- 악의적인 DNS 서버 수락
- 특정 접두사 사용(트래픽 가로채기용)
대부분의 호스트가 기본적으로 RA를 수락하기 때문에 특히 위험합니다.
완화:
- 스위치 포트의 RA Guard(비라우터 포트의 RA 차단)
- Linux 호스트에서: 정적 구성이 있는 서버의 경우
net.ipv6.conf.all.accept_ra = 0 ramond또는 NDPMon과 같은 도구로 예상치 못한 RA 모니터링
확장 헤더 악용#
IPv6 확장 헤더는 기본 헤더와 페이로드 사이에 있습니다. 합법적인 용도에는 단편화, 라우팅 옵션 및 IPsec이 포함됩니다.
공격자는 다음을 사용할 수 있습니다:
- 방화벽 회피 전체 헤더 체인을 검사하지 않음
- 단편화 공격 검사 우회 또는 재조립 취약점
- 모호한 패킷 생성 다른 장치가 다르게 해석
완화: 확장 헤더 체인을 완전히 파싱하는 방화벽을 사용합니다. 비정상적이거나 더 이상 사용되지 않는 확장 헤더(RFC 5095에 의해 폐기된 Type 0 Routing Header 같은)가 있는 패킷을 삭제합니다.
정찰 기법#
공격자는 /64를 무작위로 스캔하지 않습니다. 다음을 통해 IPv6 대상을 찾습니다:
- DNS 영역 전송 또는 추측 (www, mail, ns1 등)
- 인증서 투명성 로그 (모든 HTTPS 인증서는 공개됨)
- 트래픽에서 수집 (수동 모니터링)
- 예측 가능한 주소 지정 (::1, ::100, MAC 기반 EUI-64)
완화: 클라이언트 주소에 개인 정보 보호 확장을 사용합니다. 예측 가능한 서버 주소를 피합니다. 필요하지 않은 경우 공개 DNS에 내부 인프라를 게시하지 마세요.
IPv6용 방화벽 구성#
허용해야 하는 필수 ICMPv6 유형#
이것을 차단하면 네트워크가 중단됩니다:
| 유형 | 이름 | 필요한 이유 |
|---|---|---|
| 1 | Destination Unreachable | 경로 MTU 발견, 오류 처리 |
| 2 | Packet Too Big | 경로 MTU 발견(중요) |
| 3 | Time Exceeded | Traceroute, 루프 감지 |
| 128/129 | Echo Request/Reply | Ping(선택 사항이지만 유용함) |
| 133 | Router Solicitation | 호스트가 라우터 찾기 |
| 134 | Router Advertisement | 라우터가 자신을 알림 |
| 135 | Neighbor Solicitation | 주소 확인 |
| 136 | Neighbor Advertisement | 주소 확인 응답 |
유형 133-136은 로컬 링크에서만 필요합니다. 라우터를 통해 전달하지 마세요.
상태 저장 방화벽 규칙#
호스트의 최소 규칙 세트:
# 설정된 연결 허용
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ICMPv6 허용(프로덕션에서 더 구체적으로)
-A INPUT -p ipv6-icmp -j ACCEPT
# NDP용 링크 로컬만 허용(더 안전함)
-A INPUT -s fe80::/10 -p ipv6-icmp --icmpv6-type 133:136 -j ACCEPT
# 특정 서비스 허용
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# 나머지 모두 삭제
-A INPUT -j DROP이 구성은 설정된 연결, 필수 ICMPv6 메시지 및 특정 서비스(이 예에서는 SSH 및 HTTPS)를 허용합니다.
nftables(iptables의 최신 대체)의 경우 동등한 구성:
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ip6 nexthdr icmpv6 accept
tcp dport { 22, 443 } accept
}
}송신 필터링을 잊지 마세요#
아웃바운드 규칙도 중요합니다. 다음을 수행할 수 있습니다:
- 예상치 못한 프로토콜을 통한 데이터 유출 방지
- 명령 및 제어 트래픽 차단
- 손상된 호스트의 피해 제한
최소한 예상치 못한 아웃바운드 연결을 로깅하세요.
IPsec in IPv6#
IPsec은 원래 IPv6 구현에 필수였습니다(RFC 2460). 보편적 배포가 결코 발생하지 않았기 때문에 나중에 완화되었습니다(RFC 6434).
그래도 IPv6는 IPsec을 더 깔끔하게 만듭니다:
- NAT 순회 복잡성 없음
- IPsec를 염두에 두고 설계된 확장 헤더
- ESP 및 AH는 의도한 대로 작동
특정 호스트 또는 사이트 간 암호화가 필요한 경우 IPv6의 IPsec은 간단합니다. NAT가 있는 IPv4보다 더 그렇습니다.
First Hop 보안 기능#
최신 스위치는 로컬 공격에 대한 보호 기능을 제공합니다:
RA Guard: 승인되지 않은 포트에서 Router Advertisement를 차단합니다. 모든 액세스 스위치에 필수입니다.
DHCPv6 Guard: DHCPv6 서버 응답을 승인된 포트로 제한합니다.
ND Inspection: MAC-to-IPv6 매핑의 바인딩 테이블을 구축하고 NDP 트래픽을 검증합니다.
Source Guard: 바인딩 테이블을 기반으로 스푸핑된 소스 주소가 있는 패킷을 삭제합니다.
이러한 기능은 Cisco, Juniper, Arista 등의 엔터프라이즈 스위치에서 사용할 수 있습니다. 기본적으로 비활성화되어 있으므로 구성하세요.
일반적인 실수#
방화벽을 구성하지 않고 IPv6를 활성화합니다. 방화벽 규칙이 IPv4만 다루는 경우 IPv6에서 완전히 열려 있습니다. 이것이 실제로 가장 큰 취약점입니다.
모든 ICMPv6를 차단합니다. 이렇게 하면 경로 MTU 발견이 중단되고 특히 대형 패킷 및 터널을 통해 신비로운 연결 실패가 발생합니다.
모든 ICMPv6를 차단하는 것은 가장 일반적인 IPv6 방화벽 실수입니다. IPv4와 달리 ICMPv6는 주소 확인, 라우터 발견 및 MTU 발견을 포함한 기본 네트워크 작업에 필수적입니다. 올바른 구성은 IPv6 방화벽 가이드를 참조하세요.
"IPv4 전용" 네트워크에서 IPv6를 무시합니다. 대부분의 운영 체제는 기본적으로 IPv6를 활성화합니다. 적절한 인프라가 없으면 링크 로컬을 사용하거나 무작위 엔드포인트로 터널링할 수 있습니다.
NAT64가 보안을 제공한다고 가정합니다. 변환 기술은 보안을 추가하지 않습니다. 단지 변환할 뿐입니다. 여전히 방화벽 규칙이 필요합니다.
IPv4 및 IPv6에 동일한 방화벽 규칙을 사용합니다. 일부 규칙은 직접 변환됩니다. 다른 규칙(ICMP 처리 등)은 특별한 주의가 필요합니다.
보안 체크리스트#
IPv6로 라이브하기 전에:
- 방화벽 규칙이 명시적으로 IPv6 트래픽을 다룸
- 필수 ICMPv6 유형이 허용됨
- 액세스 스위치에서 RA Guard 활성화됨
- DHCPv6 사용 시 DHCPv6 Guard 구성됨
- IPv6용 IDS/IPS 서명 업데이트됨
- 로깅이 IPv6 소스 주소 캡처
- DNS 레코드 검토됨(불필요한 AAAA 레코드 게시하지 않음)
- 클라이언트에서 개인 정보 보호 확장 활성화됨
- 불량 RA 모니터링 설정됨
요약#
IPv6 보안은 IPv4보다 어렵지 않습니다. 다릅니다. 기본 사항은 유지됩니다: 상태 저장 방화벽, 적절한 액세스 제어, 모니터링 및 시스템 패치 유지.
가장 큰 위험은 기술적 복잡성이 아닙니다. IPv6가 존재하지만 적절하게 관리되지 않는 전환 기간입니다. IPv6를 사후 고려가 아닌 보안 아키텍처의 일류 시민으로 취급하세요.
관련 기사#
- IPv6 방화벽 구성 - IPv6용 방화벽 구성에 대한 자세한 가이드
- IPv6 개인 정보 보호 확장 - 임시 주소로 사용자 개인 정보 보호
설정 테스트
IPv6 검증기를 사용하여 주소를 확인하고 진단 도구를 사용하여 연결을 확인하세요.