Alapvetően magamnak írom ezt a posztot memo jelleggel de ha valaki hozzá tud szólni építőleg, az jó lehet, mert éppen el vagyok akadva a kendácsolással és a cél az lenne, hogy ne kelljen már egy XP-t vagy win7-et vagy valami szemetet raknom virtuális gépbe csak azért, hogy működjön a VPN kapcsolatom ha kell.
A történet valahol ott kezdődik, hogy van egy vpn.pityu.hu oldal (fikció, ha a valósággal egyezik, az tényleg csak a véletlen műve), amin keresztül authentikálni lehet a céges hálózat irányába. Adott egy USB-s Aladdin eToken Pro, valamint a hozzá tartozó PIN/jelszó. Bár a munkahelyemen windowst használok, otthon már évek óta nem láttam, szóval csak halvány emlékképeim vannak a windowsos működésről. Ha jól emlékszem úgy nézett ki a történet, hogy feltelepítettem egy drivert, egy AnyConnectet és a SafeNet programot, amivel a tokenen lehet megtekinteni a tanúsítvány érvényességét, valamint jelszót cserélni. Meg van adva a vpn szerver címe pl: vpn.pityuka.hu/etoken. Megnyomom a COnnect gombot anyconneten, kéri a token jelszavát és csatlakozik. Ha elavult a kliensem, akkor letölti a frissebbet.
Linux alatt régebben egy picit másként műkött. Van a cégnek egy nyilvános weboldala, ahol a linuxos és windowsos szoftverek elérhetők. Sajnos a linuxos nagyon elavult és ha jól emlékszem csak deb csomagok vannak (talán még rpm is). Csak nagyon régi 2010-2012 körüli ubuntuval működött a dolog, mert a deb csomagoknak olyan függőségei vannak, hogy downgrade-elni kellene egy csomó mindent hozzá. Valahogy nagy nehezen fél legálisan sok-sok idő alatt összekapartam a netről frissebb csomagokat és azzal úgy ahogy elmuzsikált a történet, viszont nem olyan egyszerűen mint Windows alatt.
A legutóbbi Mint esetén untam meg ezt. Nagyjából úgy működött a dolog, hogy.... nagylevegő:
Összeírtam egy kisebb listát, hogy mi kell a működéshez (pcsd és társai). Ha valakit konkrétabban érdekel, előszedem majd a listát. Az elmúlt években már nem igazán volt meg minden csomag a tárolókban, de getdeb.net-ről és innen-onnan összeszedhetők, valamint meg is vannak külön nekem a ritkább függőségek, amiknek szerencsére (eddig még) nincs olyan további függőségük, amik esetleg nem kielégíthetők. Szóval feltolunk egy marék deb fájlt a megfelelő sorrendben, lesz egy SafeNet szoftver, amiben ugyanúgy lehet kezelni a tokent mint Windows alatt. Vagy nem. Nem tudom mitől függ, de nem is érdekelt igazán, mert attól, hogy nem tudok épp jelszót változtatni, attól a kapcsolat még létrejön.
Miután az eszköz telepítve van és működik, utána sajnos nincs (vagy legalábbis nem találtam) egy létező és működő kliens szoftvert, mint az AnyConnect win alatt. Úgy működik a történet, hogy szépen bepötyögöm a böngészőbe a vpn.pityuka.hu/etoken címet és el akar indulni egy java alkalmazás, ami valahogy összehozza nekem a kapcsolatot. Sajnos a modern böngészőkben ez nem igazán fog menni, ezért kell egy NPAPI képes browser. Pale-Moon töltötte be ezt a szerepet már régóta nálam. Miután megvan a böngésző, le kell tölteni a javát is és eltenni a megfelelő helyre, valamint létrehozni a "mozilla extension" mappában a linket, ami rá mutat. Miután van egy működő javánk egy NPAPI képes böngészőben, végre el tud indulni a java app, ami egyébként azt csinálja, hogy ellenőrzi, hogy van-e a gépen AnyConnect. Ha van, akkor elindítja a megfelelő konfigurációval, ha nincs, akkor fel akarja telepíteni. Persze ez nem megy, így felajánlja, hogy töltsem le a vpnsetup.sh-t és futtassam gyalog. Miután elindítom, lepereg a mátrix, feltolja az anyconnectet az /opt/cisco/-ba, mellé pedig ha jól emlékszem a vpnagentd-t. Utána ha megnyomom a "retry" gombot, az értesítési sávra kerül az AnyConnect és létrejön a kapcsolat.
Miután bontottam a kapcsolatot, újra már nem fogok tudni csatlakozni csak ha wipe-olom az AnyConnectet és a vpn agentet, majd újra futtatom az install scriptet. Egyszer rájöttem mi volt a baja, hogy ne kelljen ezt csinálni, de már elfelejtettem. Szóval ha döcögve is, de működött a dolog Mint alatt. Viszont a fő disztróm a Manjaro, a Mintet is lényegében már csak azért tartottam, mert éppen hogy, de tudtam vele használni a VPN-t ha kellett.
Manjaro
KDE-ben és Gnome-ban is van lehetőség a hálózati kapcsolatoknál hozzáadni VPN kapcsolatot. Próbáltam sokféleképpen, de nem jártam sikerrel. Ekkor kezdtem el keresni, és sokat léptem előre.
Nagyjából annyi volt a történet, hogy telepítettem a szükséges szoftvereket:
sudo pacman -S opensc asekey opensc-openct sac-core
Ezek után engedélyeztem és elindítottam a pcscd szolgáltatást:
sudo systemctl enable pcscd.service
sudo systemctl start pcscd.service
Ha ez megvan, megnézzük, hogy látszik-e a token:
opensc-tool -l
Valami ilyesmi kimenetet kell kapnunk:
# Detected readers (pcsc)
Nr. Card Features Name
0 Yes AKS ifdh 00 00
Az is jó jel, ha világít a LED a tokenen.
Ezek után kézzel be kell tölteni a PKCS11 libet a böngészőbe biztonsági eszközként. Firefox alatt is működik a dolog, de a fent ismertetett java, npapi problémák miatt Pale-Moon böngészőben használtam jellemzően. Ott is hasonló az eljárás:
Mivel angolul használom a szoftvereket, így nem is próbálkoznék lefordítani a menüpontokat, mert valószínűleg mellé lőnék, így csak bemásolom az angol nyelvű leírást:
- Open the Firefox preferences dialog
- Choose “Privacy and Security” > “Certificates > “Security Devices”
- Choose “Load”
- Enter a name for the security module, such as “Local PKCS#11”
- Choose “Browse…” and load “/usr/lib/libeTPkcs11.so”
Miután ez megvan, a Security Devices alatt látszani fog az eszköz és be lehet rá jelentkezni vagy akár jelszót is változtatni. -> Nincs szükség a safenet szoftverre, viszont ez nem teljesen igaz, mert a korábban telepített sac-core annak a feladatát látja el.
Sajnos ez nem lesz elég az örömhöz. Megpróbáltam egy naprakész Firefox alól elindítani a VPN kapcsolatot. Odáig el is jutottam, hogy kérje a jelszót. Megadom, észreveszi az oldal, hogy nem tudja kofigurálni a rendszeremet, ezért felajánlja, hoy töltsem le a vpnsetup.sh-t. Látszólag rendben lefut a script, viszont rögtön jön is a hibaüzenet, hogy nincs futó vpnagent daemon. Ezt nem vizsgáltam mélyrehatóbban tovább de még úgy tekintek rá, hogy lehet ott egy lehetséges megoldás. Megnézem majd a scriptet és hogy mit akar csinálni, illetve ehhez képest mi is történik pontosan.
Inkább elindultam az openconnect vonalon.
A történet röviden annyi, hogy létrehoztam egy /etc/pkcs11/modules/opensc-module fájlt:
sudo mkdir /etc/pkcs11/modules/ && sudo touch /etc/pkcs11/modules/opensc-module
ez után ennek a tartalmát is létre kell hozni mondjuk nano-val. Mivel az előzőleg telepített lib a libeTPkcs11.so, így erre fog mutatni, ez lesz a fájl tartalma:
module:/usr/lib/libeTPkcs11.so
P11toollal kiolvashatjuk a token tanúsítványadatait. Nekem gyanús egyébként, hogy megfelelő adatokat látok-e, de úgy tűnik, hogy igen:
p11tool --list-all
warning: no token URL was provided for this operation; the available tokens are:
pkcs11:model=p11-kit-trust;manufacturer=PKCS%2311%20Kit;serial=1;token=System%20Trust
pkcs11:model=p11-kit-trust;manufacturer=PKCS%2311%20Kit;serial=1;token=Default%20Trust
pkcs11:model=eToken;manufacturer=SafeNet%2C%20Inc.;serial=nagyontitkos;token=pityuka-vpn
A fenti adatokból nekünk a legutolsó lesz az érdekes. Az eTokennel, illetve a SafeNettel tudjuk azonosítani, valamint esetleg a "pityuka-vpn"-el.
Győződjünk meg róla, hogy openconnect 4.05 vagy frissebb verzióval rendelkezünk, valamint a GNUtls-el OpenSSL helyett.
Ha lefuttatjuk az
openconnect --version
parancsot, akkor a PKCS#11-nek meg kell jelennie a feture listában.
Ha ez megvan, akkor jöhet(ne) a kapcsolódás. Ehhez az openconnectnek meg kell adni, hogy mely feature-t vesszük igénybe és azon belül pedig melyik eszközt.
A fentebb már említett p11tool --list-all paranccsal megkereshetjük a saját eszközünket. Mint látható, nekem csak 3db pkcs11 eszközöm van, ezek közül az első kettő valami default cucc, az utolsó a SafeNet eToken. Ezt úgy tudjuk azonosítani, hogy amikor kiadjuk az openconnect https://vpn.pityuka.hu/etoken parancsot, akkor közbeékeljük egy paramétert. A -c kapcsolóval adhatjuk meg, hogy mely eszközt szeretnénk használni. Elméletileg a fenti sort egészben is használhatjuk, de elégnek kellene lenni egy egyedi azonosításra alkalmas résznek is, pl. csak szimplán a 'pkcs11:serial=nagyontitkos'-nak. Ha entert ütünk, elindul a kapcsolódási folyamat:
openconnect -c 'serial=nagyontitkos' https://vpn.pityuka.hu/etokkken [1]
POST https://vpn.pityuka.hu/etokkken
Csatlakozva ide: 371.419.284.641:443
Nem sikerült a(z) serial=nagyontitkos kulcs/tanúsítvány fájl megnyitása: Nincs ilyen fájl vagy könyvtár
A tanúsítvány betöltése nem sikerült. Megszakítás.
Nem sikerült a HTTPS kapcsolat megnyitása ehhez: vpn.pityuka.hu
Nem sikerült megszerezni a WebVPN sütit
Ezek szerint nem sikerült azonosítani a tokent vagy a rajta lévő tanúsítványt. Kimaradt a megfelelő feature a 'serial=nagyontitkos' paraméterből. Figyeljünk oda, így helyes:
openconnect -c 'pkcs11:serial=nagyontitkos' https://vpn.pityuka.hu/etokkkenn [1]
POST https://vpn.pityuka.hu/etokkkenn
Csatlakozva ide: 371.419.284.641:443
PIN-kód szükséges ehhez: pityuka-vpn
Adja meg a PIN-kódot:
Hiba a tanúsítvány betöltésekor a PKCS#11 fájlból: The requested data were not available.
A tanúsítvány betöltése nem sikerült. Megszakítás.
Nem sikerült a HTTPS kapcsolat megnyitása ehhez: vpn.pityuka.hu
Nem sikerült megszerezni a WebVPN sütit
Tehát eljutottunk addig, hogy a token működik, a PIN-t bekéri, de sajnos a tanúsítványt nem találja. Megpróbáljuk megtalálni manuálisan:
p11tool --list-privkeys --login pkcs11:manufacturer=SafeNet%2C%20Inc. [1]
Token 'pityuka-vpn' with URL 'pkcs11:model=eToken;manufacturer=SafeNet%2C%20Inc.;serial=nagyontitkos;token=pityuka-vpn' requires user PIN
Enter PIN:
Object 0:
URL: pkcs11:model=eToken;manufacturer=SafeNet%2C%20Inc.;serial=nagyontitkos;token=pityuka-vpn;id=%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00;object=eTCAPI%20private%20key;type=private
Type: Private key (RSA-1024)
Label: eTCAPI private key
Flags: CKA_WRAP/UNWRAP; CKA_PRIVATE; CKA_SENSITIVE;
ID: 00:00:00:00:00:00:...:00
Az Object 0 lesz a mi barátunk, méghozzá pontosan az id= mező. Lerövidítettem, ennél jóval hosszabb hexadecimális számsort kell kapnunk. Lent ugyanez megismételve az ID: sorban csak százalékjelek nélkül. Az URL fog kelleni nekünk a csatlakozáshoz az object és a type mezők nélkül. Fontos, hogy root jogokkal futtassuk, mert az openconnect csak úgy képes átkonfigurálni a hálókártyánkat:
sudo openconnect -c 'pkcs11:model=eToken;manufacturer=SafeNet%2C%20Inc.;serial=0123456f;token=pityuka-vpn;id=%00%00%00%00%00%00' https://vpn.pityuka.hu/etokkenn
[sudo] adamyno jelszava:
POST https://vpn.pityuka.hu/etokkenn
Csatlakozva ide: 371.419.284.641:443
PIN-kód szükséges ehhez: pityuka-vpn
Adja meg a PIN-kódot:
A következő klienstanúsítvány használata: „pityuka-vpn”
SSL egyeztetés ezzel: vpn.pityuka.hu
Connected to HTTPS on vpn.pityuka.hu with ciphersuite (TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-256-GCM)
XML POST engedélyezve
SSL egyeztetés ezzel: vpn.pityuka.hu
Connected to HTTPS on vpn.pityuka.hu with ciphersuite (TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-256-GCM)
CONNECT válasz érkezett: HTTP/1.1 200 OK
CSTP kapcsolódva. DPD 30, Keepalive 20
Connected as 1.2.3.4, using SSL, with DTLS in progress
DTLS kapcsolat kiépítve (GnuTLS használatával). Titkosító alkalmazáscsomag: (DTLS0.9)-(DHE-CUSTOM)-(AES-256-CBC)-(SHA1).
Connect Banner:
| Pityuka VPN Kozpontja
| Az illegalis hozzaferest a torveny bunteti!
| Ide jön a többi bla-bla
|
| Disconnect immediately if you are not authorized user!
|
^CBYE csomag küldése: Aborted by caller
User cancelled (SIGINT/SIGTERM); exiting.
Mint ahogy az fent látható, létrejött a kapcsolat az 1.2.3.4 IP címmel. Teszteltem, működik végre és az egészben az a vicc, hogy amíg írtam a leírást, közben jöttem rá :D
Elméletileg van egy olyan opció, hogy valamilyen conf fájlt be lehet előre paraméterezni és akkor a NetworkManager GUI-ról is menni fog a kapcsolat. Ezügyben majd futok még egy kört, de ez az 1db parancs a terminálba megoldás is már fényévekkel jobb a korábbi java, npapi, és társai szépségektől.
- Adamyno blogja
- A hozzászóláshoz be kell jelentkezni
- 303 megtekintés
Hozzászólások
Szia!
Köszi a leírást sokat segített, de nekem még egy bizonyos VPN profilt is ki kellene választanom, de nem sikerül sehogy sem. Más VPN-eknél feljön a lista és betudom írni, hogy melyik profilt szeretném.
Ezeket próbáltam.
--authgroup=intranet_ext
VPN után indítottam egy anyconnect ott csatlakozom még 1x a gépre csak már a belső IP címére ott a lista feljön, de azon nem tudom a tokent használni ha az openconnetel próbálom akkor sem jön fel a lista.
Köszi
- A hozzászóláshoz be kell jelentkezni