Begränsa en VPN-lyssnare till de gränssnitt du menade
En jokertecken-lyssnare och en brandväggsregel är olika kontroller. Läs de faktiska socketarna med ss och kontrollera sedan adressfamiljen och brandväggen.
En VPN-tjänst är nåbar från där dess socket är bunden och brandväggen tillåter det. Det är två separata beslut, och folk fattar oftast bara ett av dem. Att läsa den faktiska lyssnaren tar tio sekunder och avgör en fråga som gissningar inte kan. Börja där och ändra sedan en kontroll i taget.
Allt nedan förutsätter att du kan köra kommandon på värden med root eller sudo.
Läs socketarna innan du ändrar något
På Linux listar ss -lunp UDP-lyssnare med deras lokala adress, port och process, och ss -ltnp gör samma sak för TCP. Hitta VPN:ens port och läs adresskolumnen noggrant. 0.0.0.0:51820 och [::]:51820 betyder alla gränssnitt, medan 10.0.0.5:51820 betyder en adress på ett gränssnitt. ss-handboken dokumenterar kolumnerna om utdata är obekant. Om processnamnet saknas, kör samma kommando med sudo, eftersom ägarkolumnen kräver behörighet.
Skriv ned adressen. Det är det faktum som resten av den här handboken hänger på.
Bind till en adress, inte till en önskan
OpenVPN binder lyssnaren till en specifik adress med sitt local-direktiv, och det är det stödda sättet att begränsa den på processnivå. Alla implementationer erbjuder inte en motsvarighet, och ett protokoll utan bindningsalternativ kan inte snävas in på det här sättet. Om din inte har någon är brandväggen din enda kontroll, och driftsättningsanteckningarna bör säga det tydligt. På en värd med flera adresser, bind till den som vetter mot tunneln; att binda till en adress som flyter är oftast ett misstag.
En tjänst som måste överleva en adressändring behöver en plan för den föråldrade bindningen, inte bara en konfigurationsrad.
Kontrollera adressfamiljen separat
IPv4 och IPv6 är separata socketar. En process bunden till 0.0.0.0 kan fortfarande acceptera IPv6 via en dual-stack-socket, eller kanske inte, beroende på socketalternativet och plattformens standard. Att bara läsa IPv4-raden har lurat fler än en driftsättningsgranskning. Lista båda familjerna innan du drar slutsatsen att lyssnaren är smal.
Om IPv6 inte ingår i designen är det renare att inaktivera det på socketnivå än att hoppas att brandväggen täcker det. Det är ett principbeslut, så registrera det tillsammans med de övriga gränssnittsvalen.
Lägg brandväggen ovanpå bindningen
En smal bindning ersätter inte en brandväggsregel, och en brandväggsregel snävar inte in en jokertecken-bindning. Använd båda: bind där implementationen stöder det, och tillåt sedan porten bara från de källor som ska nå den. Molnsäkerhetsgrupper står framför värdens brandvägg, så kontrollera båda när vägen korsar en VPC-gräns. Den effektiva regeln är snittet av de två, och varje lager kan bara ta bort nåbarhet.
Testa från en tillåten källa och från en medvetet utesluten. En anslutning från localhost bevisar ingenting om den offentliga gränsen.
Registrera vad du valde
Skriv ned den bundna adressen, gränssnittet som äger den, brandväggsregeln och dess syfte. Ett utbytes-NIC eller en omfördelad molnadress kan ändra exponeringen utan att någon redigerar profilen. Datera anteckningen, eftersom molnadresser flyttar sig mellan granskningar oftare än folk förväntar sig.
Det är anteckningen som gör nästa granskning till en jämförelse i stället för ett arkeologiprojekt.