Portál AbcLinuxu, 30. dubna 2025 20:57
sshuttle
Add-VpnConnectionRoute -ConnectionName "Company VPN" -DestinationPrefix "192.168.0.0/24"Deploy na Win stanice dle toho návodu není dotažen. Osobně řeším pomocí next next exáče, který jednoduše přednastaví celý tunel a uživatel si jen při prvním přihlášení zadá login a pw. Úroveň omylu při nastavování se blíží nule.
...Chybějící accounting, tam nevím, co dodat. Tak, jak to máš, tak nemáš přehledné výstupy (kdo kdy se přihlásil, kolik dat přenesl atd. Nějaké info lze zjistit parsováním auth logů, ale je to zbytečná drbačka). Chybějící accounting + lepší vedení účtů řeší Radius server (a strongswan mu umí posílat accounting info)...Ten acounting mě zmátnul. Když jsi to popsal, pochopil jsem - já mám "tucet" uživatelů, v tvém případě to bude asi řádově více. Z toho vyplývá i deploying. Dělat next next exáč pro jakousi obskurní Windows platformu by vyšlo dráž, než to těm pěti lidem naklikat. Navíc to neklikám já
Ale ono to rozlišení protokolu je podstatné. Když zprovozňuji IPSec spojení mezi dvěma IPv6 stroji, postupuji takto:
Cituji z jinde v této diskusi uvedeného odkazu:
Packets that are routed through such an interface are guaranteed to be IPsec transformed or dropped.
Použití takového interface by mě nutilo k postupu na hlavu postavenému:
Ať nad tím uvažuju jak chci, virtuální síťové rozhraní u IPv6 přináší jenom zmatek a bordel. U IPv4 může být situace jiná, tam může virtuální síťové rozhraní situaci trochu zpřehlednit. Ale nemyslím si, že by jakékoliv virtuální síťové rozhraní mělo tu moc nějak zvládnout ten zmatek a bordel, který už v IPv4 sítích obecně vládne.
...provoz v navázaném tunelu...V jakém tunelu? IPSec mi nedělá žádný "tunel" (pomíjím tunel mod fungování). IPSec jenom říká, že provoz mezi adresou A a adresou B se šifruje!
spdadd -6n 2001:db8:1::/64 2001:db8:2::/64 any -P out ipsec esp/tunnel/2001:db8:1::1-2001:db8:2::1/require;Zde se říká, že paket putující ze sítě 2001:db8:1::/64 přes router 2001:db8:1::1 se má na tomto routeru zašifrovat (parametry domlouvá racoon), na routeru 2001:db8:2::1 se paket rozšifruje a pošle dál do sítě 2001:db8:2::/64 (druhý směr se musí nakonfigurovat zvlášť). Naprosto stejné nastavení by bylo pro transport mode, změnily by se pouze adresy sítě a mod tunnel na transport. Když je politika zapnutá, šifruje se. Když je politika vypnutá, nešifruje se. Pro síťový provoz, firewall, routování atd. je IPSec transparentní. Ať tam IPSec je nebo ne, síťový provoz probíhá stále stejně. Nevnímám zašifrované pakety jako "tunelované" - jen transformované do jiné, nečitelné podoby. Tato část nastavení je v ipsectools velmi přímočará. StrongSwan tuhle část trochu skrývá, ale kdesi vespod funguje stejně.
Není normální provozovat [...] IPSec s jedním rozhraním.
Trochu jsem se v tom šťoural, přemýšlel a studoval manuály a z hlediska bezpečnosti se mi jeví použití vyhraženého interface jako klasický příklad "security by obscurity". Unixová filozofie říká, že program má dělat jednu věc a má ji dělat pořádně:
První bod - síťový protokol - je naprostý základ. Pokud nefunguje, je šílené zkoušet rozchodit další dva body. IPSec skrz striktně šifrovaný interface ten první bod rozbíjí a fušuje do řemesla bodu třetímu.
Když jste zvyklý používat IPSec místo firewallu, tak jakmile vám z nějakého důvodu zmizí interface (jak se to stalo v Linuxu před lety), zákonitě musí nastoupit pocit, že bez interface je zabezpečení špatně. Ve skutečnosti je IPSec správně, špatně (nebo vůbec) je nastavený firewall.
Znovu upozorňuji: používám IPv6 a jen vyjímečně vytvářím tunely popsané v tomto článku. IPSec je o cosi obecnější nástroj, než by se z tohoto článku mohlo zdát.
To nemá nic společného s neomylností. Jen jsem se seznámil s tím, jak ta implementace funguje, a snažil jsem se ji pochopit místo toho, abych se "zašprajcoval" na stanovisku, že když je to jinak, než jsem byl zvyklý, je to nutně špatně navržené. Sice jsem taky začínal na FreeS/WAN, ale když jsem pak objevil ipsec-tools, měl jsem radost z toho, že konfigurace najednou docela dobře odpovídá tomu, jak ta implementace opravdu funguje.
Co se týká té (ne)omylnosti, měl bych námět k zamyšlení: je opravdu tak principiální rozdíl mezi chybou v konfiguraci security policies a chybou v konfiguraci pravidel netfilteru? Je opravdu jedno na denním pořádku a druhé prakticky vyloučené? Já bych řekl že ne.
Není to slovíčkaření.
V transportním režimu se vezme nešifrovaný packet, mezi IP hlavičku a payload se vloží AH hlavička (případně ESP, je-li třeba šifrování) a packet se pustí do světa, jako kdyby šifrovaný nebyl. O dešifrování se postará příjemce.
V tunelovacím režimu se vezme nešifrovaný packet, celý se zabalí do AH (či ESP) a předřadí se mu úplně nová IP hlavička. Nová IP hlavička potřebuje nějakou zdrojovou a cílovou adresu. A těmi jsou adresy konců tunelu. Šifrovaný packet tudíž neputuje k původnímu příjemci, ale k druhému konci tunelu, kde se dešifruje a vybalený packet se odsměruje dál původnímu příjemci.
Z toho vyplývají jiné způsoby použití. Transportní se používá při end-to-end šifrování, kdežto tunelovací při propojování sítí. Ono by se daly oba režimy znásilnit pro opačný způsob použití, ale nebylo by moc praktické. Určitou analogii lze najít s WDS v protokolu 802.11.
Ono by se daly oba režimy znásilnit pro opačný způsob použití, ale nebylo by moc praktické.
Tunnel mode se pro host to host IPsec používá celkem běžně. Dokonce jsem zaslechl, že existují i implementace, které transport mode ani nakonfigurovat neumožňují.
Obráceně by to ale asi bylo opravdu trochu násilné. Nejjednodušší by v takovém případě asi bylo kombinovat transport mode s něčím jako ipip nebo GRE.
Encapsulating Security Payloads (ESP) provides confidentiality, connectionless data integrity, data-origin authentication, an anti-replay service (a form of partial sequence integrity), and limited traffic-flow confidentiality.https://en.wikipedia.org/wiki/IP_tunnel
IP tunnels are often used for connecting two disjoint IP networks that don't have a native routing path to each other, via an underlying routable protocol across an intermediate transport network. In conjunction with the IPsec protocol they may be used to create a virtual private network between two or more private networks across a public network such as the Internet. Another prominent use is to connect islands of IPv6 installations across the IPv4 Internet.
To je správná připomínka. Je to tak. Pokud na sebe počítače přímo vidí, funguje spojení i bez šifrování. To je na IPv6 normální stav.
Řešení mě napadají hned čtyři:
označit ve StrongSwan šifrované pakety a ve firewallu neoznačené pakety zahodit (jde to?)Pokud se nepletu, jde to, ale podle mě je jednodušší použít na netfilteru rovnou extension policy a zahazovat to, co jde nešifrovaně.
Především: xfrm není síťové rozhraní, xfrm je část linuxového síťového stacku, která zajišťuje transformaci paketů, nejčastějí šifrování nebo dešifrování pomocí ESP a autentizaci pomocí ESP nebo AH, tj. to, co známe jako IPsec.
To je věc, která fungovala už od počátku řady 2.6, ale protože implementace nevytvářela pro bezpečnou komunikaci virtuální "tunelové" rozhraní, jak byli lidé zvyklí z (nejen) FreeS/WAN, prakticky od té doby se po všech fórech šířilo nepřetržité brblání, že je to celé úplně blbě, nedá se to pochopit, nedá se to používat atd. Spousta lidí má totiž myšlenkový blok, že když vidí "holé" i "zabezpečené" pakety na stejném interface, tak to přece nemůže být bezpečné, a nějakým security policies, které jsou v jádře teprve 16 let, přece věřit nebudou.
Nakonec vývojáři tu možnost, aby se použil jakýsi virtuální interface pro xfrm, v jádře 4.19 implementovali. Ale naštěstí je to jen možnost, pokud si to tak nenastavíte, funguje všechno jako předtím.
Já provozuji IPSEC bez xfrm
To je na jakékoli současné linuxové distribuci velmi nepravděpodobné.
Před xfrm byla možnost používat VTI (od kernelu 3.6).
To není "před xfrm", xfrm je součástí linuxového jádra už od počátku řady 2.6 (technicky už od nějaké verze z řady 2.5). Jak už jsem se pokusil naznačit jednou, zaměňujete "xfrm" a "virtuální xfrm interface".
U jednoduchého vpn není problém, ale jakmile se komplexita zvětšuje, je to velký přínos.
Máme zákazníka, pro kterého jsem opravoval chybu, která se projevila, když v jednom netns vytvořili asi 17000 SA a pak ten netns zrušili. Měli se svými nasazeními všelijaké problémy, ale nevzpomínám si, že by si někdy stěžovali na absenci virtuálních xfrm rozhraní.
V tom případě nevím, proč jsi s tím začal, když se celou dobu bavíme o xfrm virtuálním iface
Protože opakovaně používáte určitý termín, ale myslíte tím něco úplně jiného, než co znamená. Termíny slouží k tomu, aby se lidé domluvili. Když si bude každý vymýšlet vlastní terminologii, bude to s tou domluvou docela problém.
V tomto případě je to o to horší, že to děláte v textu, který je něco jako tutorial, takže je naprosto žádoucí chybnou terminologii opravit, aby se ji neučili další.
Že se tobě o tom nějaká firma nezmínila(nebo nemá nasazeno) má celkem nulový informační přínos.
Informační přínos je v tom, že je to příklad, že ani při dost značné komplexitě to bez těch virtuálních rozhraní není problém, stačí nepodléhat zažitým stereotypům.
Navíc kdo googlí xfrm, narazí v 99% na virtuální iface a né část stacku v kernelu.
Nedalo mi to a zkusil jsem to:
Abych byl férový, na 11. místě konečně XFRM Interface Development Notes - Libreswan.
Je sice známé, že Google personalizuje výsledky vyhledávání, ale že by až tak moc?
Není problém s kolizními segmenty (klient může být ve své lokální síti 192.168.1.0/24 a zároveň se pomocí VPN připojit do vzdálené 192.168.1.0/24 a není problém)Jak to funguje?
Hrubá propustnost je jen jedna část problému; openvpn totiž veškerý provoz zpracovává v jedné frontě jedním threadem, takže pokud přes openvpn běží větší datové přenosy, interaktivní provoz tím dost trpí. Dnes už sice tun/tap umí multiqueue, takže by multithreadové zpracování bylo možné, ale zatím openvpn nikdo nepřepsal.
Dřív to bylo ještě horší, to se v tom jednom threadu dělalo úplně všechno a synchronně, takže se třeba stávalo, že když byla pomalejší odezva od LDAP serveru, každé přihlášení uživatele na pár sekund zablokovalo veškerý provoz.
přes 120 klientů na jednom OpenVPN serveru (outsourcovaného) a nevím nevím, zda to bylo pomalý kvůli tomu serveru jako takovému (kromě OVPN tam jsou i další věci) nebo zda za to mohlo i OpenVPN jako takové
Při 120 klientech a pravděpodobně i nezanedbatelném procentu skutečně aktivních je skoro jisté, že je to ten problém, který jsem popisoval (všechno v jedné frontě a jednom threadu).
TCP nepoužitelné
Tunelování v TCP je problém skoro vždy, to by mělo být brané jen jako nouzová alternativa pro situace, kdy UDP z nějakého důvodu nejde použít - třeba proto, že je jedna strana za nějakým nesmyslně nakonfigurovaným firewallem. Zejména TCP v TCP funguje rozumně jen za ideálních podmínek, jakmile se začnou ztrácet pakety, dělá to psí kusy.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.