Feiligensskaakelder blokkearret allinnich IPv4: wêrom IPv6 noch altyd fuortkomt
In set brânmuorre-regels foar IPv4 seit neat oer IPv6. Op in apparaat mei dûbele stapel kin de tunnel falle wylst in app in wurkjende paad deromhinne hâldt.
De tunnel falt, de feiligensskaakelder rapportearret dat er yngrepen hat, en in download bliuwt rinnen. Der is neat stikken yn ’e IPv4-regels. De applikaasje is gewoan ferhuze nei in paad dêr’t dy regels nea foar skreaun wiene.
Apparaten mei dûbele stapel hawwe twa ûnôfhinklike útgongen. In blokkade op ien fan harren is in heale blokkade.
Twa regeltsjes, twa standertwearden
Op Linux binne iptables en ip6tables aparte tabellen mei aparte belied. It setten fan ’e INPUT- en OUTPUT-ketens fan ’e IPv4-tabel op DROP feroaret neat yn ’e IPv6-tabel, dêr’t de standertwearde meastentiids ACCEPT is. Deselde splitsing bestiet yn nftables, dêr’t jo ien famylje ynsjogge kinne en fine dat mar ien fan harren jo regels draacht. Dy asymmetry is normaal, en it is it hiele probleem.
Dêrom kin in feiligensskaakelder sekuer lykje en foar in part hannelje. It skript dat de IPv4-regels skreau, rûn, de tellingen ferheegje, de logrigel ferskynt, en in IPv6-pakket ferlit de fysike ynterface folslein ûnoantaaste.
Lês wat jo klant echt ynstallearret yn stee fan wat de marketingpagina ûnthjit. Guon klanten stjoere IPv6 de tunnel yn, guon blokkearje it bewust, en guon litte it gewurde wylst in blokkade op platfoarmnivo in oare regel hanthavent. De dokumintaasje fan de leveransier is hjir de ienige boarne dy’t fertrouwe wurdich is.
Wat de ynterface-konfiguraasje jo fertelt
De hânliedingside fan wg-quick befettet IPv6-regels yn syn foarbyldkonfiguraasje, en de reden is krekt dit gat. It foarbyld is gjin fersiering. It bestiet om’t allinnich de IPv4-regels de twadde famylje iepen litte soene.
It kopiearjen fan ’e helte fan in foarbyld produsearret de helte fan in belied. Dat is de meast foarkommende oarsprong fan dizze lek. In blogpost koe it foarbyld yn foar lingte. De ferkoarte ferzje waard doe it sjabloan dat elkenien wer brûkte.
# what is actually installed, per family?
sudo iptables -S OUTPUT | head -20
sudo ip6tables -S OUTPUT | head -20
# nftables: inspect each family separately
sudo nft list ruleset inet | head -40
# does this host even have a usable IPv6 path?
ip -6 route show default
As it twadde kommando in tasteanbelied printsje wylst it earste DROP printsjet, hawwe jo it antwurd fûn sûnder de klant oan te reitsjen. Dy asymmetry is de bug.
Wêrom ien sykopdracht net it hiele ferhaal is
Ien namme kin sawol in A-record as in AAAA-record weromjaan, en applikaasjes kieze net allegear itselde. In browser kin IPv6 ferkieze as it netwurk it biedt en by mislearring weromfalle, wylst in eftergrûnsynchronisaasje of in updater syn eigen resolfer en syn eigen foarkar brûkt. Ien suksesfolle test oer IPv4 bewiist dêrom ien paad, net it belied.
Netwurkferoarings feroarje it antwurd ek. Jo by in oar Wi-Fi-netwurk jaan, wekker wurde út sliep of oerskeakelje nei mobyl kin it apparaat in nij IPv6-prefiks jaan, en it belied dat op ’e kantoar-LAN genôch like, kin it miskien net dekke.
Test de steat wêryn de tunnel del is
Testen wylst jo ferbûn binne fertelt jo dat de tunnel wurket. De nijsgjirrige test is de net-beskikbere steat, want dan heart de feiligensskaakelder te hâlden. Stop de tunnel mei opsetsin, en besykje dan de bestimmings dy’t der ta dogge fan ’e app dy’t jo beskermje.
# with the tunnel stopped, does anything still leave?
ip -6 route get 2606:4700:4700::1111
curl -6 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv6.example.net/
curl -4 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv4.example.net/
Beide famyljes soene sletten falle moatte. As it IPv4-fersyk ferrint en it IPv6-fersyk in statuskoade weromjout, is it belied ûnfolslein, en gjin hoemannichte wer-testen fan ’e tunnel sil dat feroarje.
Hâld de dokumintearre útsûnderings ek yn dy test. Lokale netwurkûntdekking, in DHCP-ferfanging of it bootstrap-paad nei it VPN-einpunt moatte miskien berikber bliuwe, en dy útsûnderings soene yn it belied neamd wurde moatte yn stee fan ûntdutsen te wurden by in steuring. In lektest dy’t mislearret om’t de tunnel net wer omheech kin, is gjin feilichheidsbefinning, it is in ferbiningsbefinning.