2016년의 한 연구에 따르면, 듀얼 스택 서버의 43%가 IPv4와 IPv6에서 서로 다르게 응답한 것으로 나타났다.
iptables가 IPv6를 무방비 상태로 남겨두는 이유와 1분 만에 서버를 점검하는 방법을 소개한다.

iptables 대 ip6tables
리눅스 커널은 각 IP 버전별로 독립된 규칙 세트를 관리한다.
iptables(8): "iptables와 ip6tables는 리눅스 커널에서 IPv4 및 IPv6 패킷 필터링 규칙 테이블을 설정, 유지 관리, 검사하는 데 사용된다."
iptables로 추가한 규칙은 오직 IPv4에만 적용된다.
기본적으로 커널 소스는 두 프로토콜 모두의 기본 체인을 ACCEPT 정책으로 초기화한다.
결과적으로 iptables로 구축한 방화벽은 IPv6를 완전히 개방된 상태로 방치할 수 있다.

필터링되지 않은 IPv6가 서버를 위험에 노출시키는 경우
다음 세 가지 조건이 충족되면 비어 있는 ip6tables INPUT 체인이 서비스를 위험에 노출시킨다.
- 호스트가 공인(Global) IPv6 주소를 가지고 있다.
- 서비스가
[::](모든 IPv6 인터페이스)에서 수신 대기(listen)한다. - 상류(Upstream) 방화벽이 IPv6 트래픽을 필터링하지 않는다.
상류 필터링은 오해하기 쉽다. AWS 보안 그룹은 명시적으로 ::/0 규칙을 추가할 때까지 IPv6를 차단하지만, 많은 듀얼 스택 VPS 및 온프레미스 시스템의 호스트 방화벽은 유일한 방어 계층이다.
운영자가 의도적으로 IPv6를 열어두는 경우는 드물다
NDSS 2016에서 Czyz, Luckie, Allman, Bailey가 발표한 연구에 따르면, 두 IP 스택을 모두 제공하는 서버의 43%가 스택별로 다르게 동작하는 것으로 나타났다.
이 연구는 520,000대의 듀얼 스택 서버와 25,000대의 라우터를 조사했다. 서버의 26%에서 IPv6 설정이 IPv4보다 더 관대했다. 라우터의 경우 SSH, Telnet, SNMP 같은 서비스가 IPv6를 통해 노출될 확률이 2배 더 높았다.
IPv6 방화벽 오설정은 시스템 관리자만의 실수가 아니다. 하드웨어 제조사도 이러한 실수를 저지른다! Pierre Kim은 FiberHome HG6245D 광단말기(2019년 펌웨어 실행)가 모든 ip6tables 체인의 기본 정책이 ACCEPT로 설정된 채 출하되었음을 보여주었다.
"기본적으로 IPv6 연결에 대한 방화벽 규칙이 없으므로 내부 관리 인터페이스가 인터넷에 노출된다."

1분 만에 서버 점검하기
호스트에서 다음 네 가지 명령을 실행하라.
ip -6 addr show scope global # 공인 IPv6 주소가 존재하는가?
ss -tlnp # 서비스가 IPv6([::]:22 또는 *:22)에서 수신 대기 중인가?
sudo ip6tables -L -n -v # 활성화된 IPv6 규칙은 무엇인가?
sudo nft list ruleset # 듀얼 스택 "table inet"이 존재하는가?
IPv6를 안전하게 보호하는 방법
- IPv6 비활성화: IPv6를 사용하지 않는다면 활성화해 두는 것은 좋지 않은 네트워크 관리 습관이다.
- 규칙 미러링: 모든
iptables규칙을ip6tables로 동일하게 복제하라. - ufw 사용: Uncomplicated Firewall은 기본적으로 IPv6를 활성화하며(
/etc/default/ufw파일의IPV6=yes), 이는 2012년 0.31 버전부터 지원된 표준 기능이다. - firewalld에서 패밀리 지정자 없이 리치 규칙(rich rules) 사용: firewalld 문서에 설명되어 있듯이
family및 주소 정의를 모두 생략하면 시스템이 IPv4와 IPv6 모두에 규칙을 적용한다. - nftables
inet테이블로 이전: nftables 위키에 명시된 바와 같이,inet패밀리를 사용하는 테이블은 IPv4 및 IPv6 패킷을 함께 처리한다.
IPv4에서는 닫혀 있다고 생각했던 포트가 IPv6를 통해 응답하는 것을 발견한 적이 있는가?
참고 문헌
- Linux man-pages — iptables(8)
- Jakub Czyz, Matthew Luckie, Mark Allman, Michael Bailey — Don't Forget to Lock the Back Door! A Characterization of IPv6 Network Security Policy, NDSS 2016
- Pierre Kim — Multiple vulnerabilities found in FiberHome HG6245D routers (2021년 1월 12일)
- ufw — ChangeLog, release 0.31 (2012년 3월 9일)
- nftables wiki — Nftables families
- Linux kernel — net/netfilter/xt_repldata.h
- firewalld — Rich language documentation
- AWS — Security group rules
