Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 166 (pdf).
Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,
… více »Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 2.55.0 distribuovaného systému správy verzí Git. Přispělo 100 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Craig Loewen na blogu Microsoftu oznámil veřejnou preview verzi WSL kontejnerů, tj. linuxových kontejnerů ve Windows Subsystem for Linux (WSL). Spouští se příkazem wslc.exe.
Byla vydána (𝕏, Bluesky) nová verze 2026.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 9 nových nástrojů v oficiálním oznámení na blogu.
Grafická aplikace Krokiet/Czkawka pro vyhledávání a odstraňovaní nepotřebných souborů (duplicitní soubory, prázdné složky, podobné obrázky, podobná videa, poškozené soubory a další) byla vydána ve verzi 12.0.0. Podrobný přehled novinek v příspěvku na Medium. Jedná se o poslední verzi frontendu Czkawka GTK nad Czkawka Core. Uživatelům se doporučuje migrovat na frontend Krokiet postavený nad frameworkem Slint. Představena byla aplikace Cedinia pro Android využívající Czkawka Core. Dostupná je jako APK pro ruční instalaci.
Po téměř třech letech od vydání verze 9 byla vydána nová verze 10 linuxové distribuce Mageia (Wikipedie). Přehled novinek v poznámkách k vydání.
Nourish (GitHub) je nový správce oken pro Linux. Tradiční plochy nahrazuje nekonečným plátnem a posouváním a přibližováním. Využívá vlastní kompozitor pro Wayland s názvem y5. Videoukázka.
Po 20 letech a 17 otevřených (open source) krátkých filmech Blender Studio oznámilo plán na svůj první celovečerní film. Cílem samozřejmě není jenom nový otevřený film, ale především vývoj a vylepšení otevřených nástrojů pro spolupráci napříč celým procesem a vytvoření otevřené příručky (playbook) pro filmovou produkci ve velkém měřítku s informacemi, které jsou obvykle dostupné pouze uvnitř komerčních studií, a pomoci tak nezávislým tvůrcům překonat technické a organizační bariéry.
Dnes si ukážeme konfiguraci pro road warrior scénář. Autentizace bude probíhat sdíleným klíčem a výměna klíču bude realizována pomocí IKE démona racoon. Vzhledem k tomu, že bohužel zatím nejčastějším případem, kdy je někomu umožněn přístup do interní sítě zvenčí, je nějaký pán z vedení, ukážeme si, jak využít integrovaného L2TP/IPSec klienta, který je standardně ve Windows 2000/XP. A když už ten přístup bude hotový, ukážeme si, jak se tam dostane sysadmin z Linuxu.
Přehledné porovnání kladů a záporů L2TP/IPSec lze nalézt na http://www.jacco2.dds.nl/networking/freeswan-l2tp.html#ProsCons.
K realizaci našeho scénáře potřebujeme nějakou implementaci protokolu L2TP.
Protokol L2TP (Layer Two Tunneling Protocol) je popsán v RFC 2661. L2TP je v podstatě rozšířením protokolu PPP, který umožňuje spojení pouze mezi přístupovým zařízením (NAS) a klientem. L2TP tento problém odbourává a umožňuje, aby koncová zařízení byla kdekoliv v IP síti. V Linuxu je prakticky L2TP používáno tak, že L2TP vrstva se domluví na specifických parametrech protokolu a vlastní spojení už opět realizuje pppd démon.
Implementace použitá pro naše testování se nachází na http://www.l2tpd.org. Tamtéž lze nalézt odkazy na další implementace. Implementace l2tpd je kompletně v user-space. Několik pokusů o implementaci v kernelu zůstává na mrtvém bodě. Projekt jako takový také není zrovna příliš ve středu zájmu. Poslední verze 0.69 vyšla někdy v roce 2002. Od té doby se nashromáždilo několik patchů, které jsou třeba pro správnou funkčnost.
Patchovaný balíček udržuje Jacco de Leeuw na adrese: http://www.jacco2.dds.nl/networking/freeswan-l2tp.html#L2TPoverview
Pro Debian se udržuje balíček na této stránce: http://packages.qa.debian.org/l/l2tpd.html. Tamtéž by měl být zapracovaný patch na poslední bezpečnostní problém ( http://www.securityfocus.com/archive/1/365211).
Při použití s kernelem 2.6 je třeba mít povolené
CONFIG_LEGACY_PTYS=y.
Alternativní implementace: http://www.mail-archive.com/l2tpd-devel@l2tpd.org/msg00153.html.
Mimochodem, taková poznámka k patentům: http://www.jacco2.dds.nl/networking/freeswan-l2tp.html#Patent
Racoon je implementace IKEv1 protokolu sloužícího pro automatickou výměnu klíčů. Podporuje autentizaci pomocí certifikátů, sdíleného klíče, kerberosu a rozpracována je podpora plain RSA klíčů. Ta je důležitá pro interoperabilitu se *Swan implementacemi. V některém z dalších dílů třeba také na nějakou ukázku dojde ;).
Při testování byla použita distribuce Fedora Core 2, ale stejné chování lze očekávat i u SuSE apod. Balíček, ve kterém se racoon nachází, se jmenuje ipsec-tools.
Podpora pro IPSec je již i v balíku initscripts, takže lze standardně
používat konfigurační soubory typu ifcfg-ipsec0,
keys-ipsec0. Parametry lze najít v
/etc/sysconfig/network-scripts/ifup-ipsec nebo v dokumentaci k
distribuci. Průvodce nastavením IPSecu můžeme spustit příkazem
system-config-network. Konfigurace se nevztahuje na L2TP.
V našem případě ovšem zůstaneme u ruční konfigurace.
Konfigurační soubor pro racoon je /etc/racoon/racoon.conf a obsahuje:
Dále si uvedeme parametry, které jsou podstatné pro náš příklad. Ostatní
parametry lze nalézt v manuálových stránkách - man
racoon.conf. Konfiguraci bereme z pohledu, že racoon je příjemce
spojení. Parametry tedy znamenají, jaké hodnoty jsou akceptovatelné. Pokud
bude racoon iniciátor (klient), budou hodnoty znamenat, jaké parametry
požaduje od druhé strany. Mezi komunikujícími musí nastat vzájemná shoda v
požadovaných a akceptovatelných parametrech.
log <level>; #level - notify, debug, debug2path pre_shared_key "/etc/racoon/psk.txt";listen, padding, timerObsahují direktivy, které umožňují přesněji specifikovat, na jakém portu má racoon poslouchat. Dále obsahují nastavení kolem časovačů a nastavení formátu vyplňování paketů - padding.
remoteremote anonymous { exchange_mode main; generate_policy on; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key; dh_group modp1024; }}sainfosainfo anonymous { encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate;}Konfigurační soubor tedy bude ve finále vypadat takto:
path pre_shared_key "/etc/racoon/psk.txt";
|
Jak už někoho určitě napadlo (minimálně ty, co se tím živí), abychom klienta mohli ověřit, musíme ho nějak identifikovat. V případě, že identifikaci nijak zvlášť nespecifikujeme, bere racoon jako bernou minci IP adresu klienta. To ovšem znamená, že tuto adresu potřebujeme vždy vědět předem.
Soubor se sdílenými hesly by potom vypadal nějak takto.
# psk.txt
|
Toto řešení se nám ovšem nelíbí, protože je velmi pravděpodobné, že někdo bude mít adresu dynamickou. Dle kapitoly 4.6.2.1 v RFC 2407 máme tyto možnosti identifikace klienta:
| ID Type Value |
|---|
RESERVED 0 |
ID_IPV4_ADDR 1 |
ID_FQDN 2 |
ID_USER_FQDN 3 |
ID_IPV4_ADDR_SUBNET 4 |
ID_IPV6_ADDR 5 |
ID_IPV6_ADDR_SUBNET 6 |
ID_IPV4_ADDR_RANGE 7 |
ID_IPV6_ADDR_RANGE 8 |
ID_DER_ASN1_DN 9 |
ID_DER_ASN1_GN 10 |
ID_KEY_ID 11 |
V situaci, kdy nám stačí jedno sdílené heslo pro všechny klienty (např.
máme 5 manažerů) a používáme autentifikaci pomocí L2TP, bychom potřebovali
ID_IPV4_ADDR_SUBNET 4. Tato možnost bohužel zatím není v
racoonu implementována (hledá se nový majitel tohoto kousku kódu ;)).
Soubor se sdílenými hesly by potom mohl vypadat nějak takto.
# psk.txt
|
Vyhnout se tomuto problému je možné při použití jiné metody
identifikace. Například lze použít ID_FQDN 2. V konfiguraci
racoona (klient) potom použijeme v sekci remote direktivu
peers_identifier fqdn "fakt.jsem.to.ja.ver.mne.cz";.
V konfiguraci racoona (server) použijeme v sekci remote
direktivu peers_identifier fqdn;. Soubor se sdílenými hesly by
potom vypadal takto.
# psk.txt
|
Po tom, co se přátelsky poplácáme po rameni, zase raději vychladneme, protože nastavit způsob identifikace ve windows pravděpodobně nepůjde.
Další věc je, že takto peers_identifier fqdn
"fakt.jsem.to.ja.ver.mne.cz"; si identifikaci může nastavit
kdokoliv.
V okamžiku, kdy máme hotovou konfiguraci racoona, musíme zajistit
pravidla, podle kterých se spojení bude šifrovat. Níže uvedený skript
zařídí, že paket jdoucí na port 1701 (l2tp) musí být šifrovaný. V okamžiku,
kdy se klient pokusí spojit pomocí L2TP/IPSec, se spustí proces, ve kterém se
ustanoví IPSec tunel. Na straně serveru racoon se díky direktivě
generate_policy on; vygenerují pravidla pro komunikaci s
klientem. Tímto šifrovaným tunelem již potom dále probíhá L2TP
komunikace.
#!/bin/sh
|
Politika se nastavuje pomocí nástroje setkey - více man
setkey. Pro testování doporučuju pouštět racoon na popředí a mít v
konfiguraci zapnutý debug: bash# racoon -F.
Hlavní konfigurační soubor pro l2tpd je
/etc/l2tpd/l2tpd.conf a obsahuje:
lnsLNS je zkratka pro L2TP Network Server. Konfigurace v této sekci se tedy vztahují k nastavení serveru.
[lns default] ip range = 10.10.10.10-10.10.10.100local ip = 10.10.10.1require chap = yesrefuse pap = yesrequire authentication = yesname = LinuxVPNserverppp debug = yespppoptfile = /etc/ppp/options.l2tpdlac
LAC je zkratka pro L2TP Access Concentrator. Konfigurace v této sekci se tedy vztahují k nastavení klienta. Jelikož konfigurujeme server, zůstane tato sekce prázdná. Konfigurační soubor tedy bude ve finále vypadat takto:
# l2tpd.conf
|
V souboru /etc/ppp/options.l2tpd jsou již klasické parametry pro PPP
démona.
ipcp-accept-local
|
V souboru /etc/ppp/chap-secrets uvedeme jména a hesla
uživatelů, kterým chceme umožnit připojení.
# Secrets for authentication using CHAP
|
Pro testování doporučuju pouštět l2tpd na popředí: bash# l2tpd
-D.
Možností jak nastavit OS Windows bude zřejmě více, já uvedu ten, který znám.
Start - Nastavení - Ovládací panely - Síťová připojení. Vlevo nahoře je odkaz na Vytvořit nové připojení. Dále postupujeme takto: Připojit k firemní síti - Připojení k VPN - zadáme libovolný název připojení - zadáme ip/fqdn adresu našeho VPN serveru - dokončíme.
Dále je potřeba nastavit sdílené heslo (PSK - Pre Shared Key). V konfiguraci serveru jsme si zvolili PSK "hladjemujnepritel". Spustíme vlastnosti připojení a heslo zadáme do nastavení protokolu IPSec - viz obrázek.
Uložíme vlastnosti a zkusíme vytočit připojení. Tam ještě zadáme uživatelské jméno a heslo, které musí odpovídat chap-secrets na VPN serveru.
Konfigurace klienta je v podstatě stejná jako konfigurace serveru. V
sekci remote uvedeme místo "anonymous" IP adresu našeho VPN
serveru. Konfigurační soubor bude vypadat takto:
# racoon.conf
|
Pravidla, podle kterých se kernel rozhoduje, zda pakety šifrovat, či ne, opět zavedeme pomocí nástroje setkey.
#!/bin/sh
|
V konfiguračním souboru /etc/l2tpd/l2tpd.conf nyní
potřebujeme sekci lac. Parametrem lns říkáme, na
jaké adrese sedí náš přístupový VPN server.
[global]
|
V souboru /etc/ppp/options.l2tpd je změn více. Důležité je
uvést name, protože tímto říkáme lns, jakým uživatelským
jménem se budeme autentizovat.
noauth
|
Záznam pro toto jméno musíme tedy mít v chap-secrets.
# chap-secrets
|
Pokud máme konfigurace připraveny, můžeme připojení spustit.
bash# echo "c vpn" > /var/run/l2tp-control
|
Parametr "c vpn" znamená, že l2tpd má iniciovat spojení (c
jako connect) podle sekce lac s názvem "vpn".
L2tpd se pokusí připojit na port 1701 na přístupovém VPN serveru. Protože VPN server má v politice nastaveno, že vše, co jde na port 1701, musí být šifrované, spustí se proces ustanovení šifrovaného IPSec tunelu. Jakmile se podaří tunel sestavit, proběhne již zabezpečeným kanálem autentizace na úrovni l2tp. Klient je připojen, je mu přidělena ip adresa a může vesele firemní poštou posílat hanbaté obrázky a provádět jiné podobné běžné pracovní úkony.
Jedním z velkých problémů, který ještě není uspokojivě vyřešen, je průchod NATem. Podpora NAT traversal pro transport mód v racoonu zatím není implementována.
Dnes ukázaný scénář je vhodný spíše pro malé sítě a firmy, kde změna sdíleného hesla není problémem. Lepší správu v případě velkého množství klientů nám zabezpečí použití certifikátů. Jakým způsobem nahradit sdílený klíč pomocí certifikátů si ukážeme příště.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: