Stunnel
Sisukord
- 1 Eesmärk
- 2 Ettevalmistused
- 3 Krüptitud teenuse kasutamine krüptimise mitte toetava kliendiga
- 4 Krüptitud teenuse pakkumine
- 5 Kliendisertifikaadiga autentimine
- 6 Kliendisertifikaadi kontrolliga krüptitud teenuse tekitamine
- 7 Logi
- 8 Stunneli kasutamine MS Windows operatsioonisüsteemiga
- 9 Krüptitud liikluse debugimine
- 10 Veaolukorrad
Eesmärk
Stunnel tarkvara võimaldab programmidel, mis iseenesest ei sisalda krüptimise tuge pidada üle võrgu krüptitud andmevahetust.
Ettevalmistused
Stunneli kasutamisel üldiselt läheb tarvis lisaks stunneli programmile endale võimalust tekitada sertifikaate ning kasutada neid kliendi või serveri sertifikaatidena. Stunnel programmist on tänapäeval levinud versioonid 3 ja 4, kui valikut ei määra muud asjaolud, võiks kasutada uuemat versiooni. Tõenäoliselt kõige otsekohesem on kasutada isesigneeritud (ingl. k. self-signed) sertifikaate, mille valmistamine toimub tarkvara OpenSSL abil näiteks selliselt
bash$ openssl req -nodes -new -newkey rsa:1024 -keyout sertifikaat.key -out sertifikaat.csr bash$ openssl x509 -in sertifikaat.csr -out sertifikaat.crt -req -signkey sertifikaat.key -days 3650
Tulemusena on tekkinud kolm faili
- sertifikaat.csr - nn sertifikaadi gereneerimise taotlus ehk avalik võti
- sertifikaat.key - vastav salajane võti
- sertifikaat.crt - isesigneeritud sertifikaat, mis tähendab praktiliselt seda, et sertifikaadi Issuer ja Subjekt langevad kokku
$ openssl x509 -in sertifikaat.crt -text -noout
Lisaks on OpenSSL programmiga hea pöörduda krüptitud teenuse poole selliselt
$ openssl s_client -connect ssl.loomaaed.tartu.ee:993
millele vastuseks näidatakse krüptitud ühenduse moodustamisel kasutatud parameetreid ning jääb ootama konsoolilt sisendit. Praktiliselt saab siit edasi tegutseda nagu krüptimata serveri poole telnet programmiga pöördumisel.
Krüptitud teenuse kasutamine krüptimise mitte toetava kliendiga
Eeldame, et krüptitud teenus asub aadressil ssl.loomaaed.tartu.ee:993 ning eesmärgiks on korraldada, et krüptimata andmevahetuseks saab pöörduda kohaliku arvuti localhost:143 pordi poole.
bash$ stunnel -f -c -d localhost:143 -r imap.loomaaed.tartu.ee:993
Võti -f tähendab, et stunnel jääb ees tööle, ilma -f kasutamiseta käivitatakse ta deemonina. Lisaks on -f kasutamisel hea näha stunneli logi. Muude kasutatud võtmete tähendus on ilmne
-c - stunnel töötab kliendina ja teine pool on krüptitud -r - kauge arvuti soket -d - stunnel töötab deemon rezhiimis kuulates näidatud soketil
Veendumaks, et ühendus toimib maksab pöörduda telneti või imap'i kliendiga localhost:143 poole.
Krüptitud teenuse pakkumine
Kui on tarvis korraldada krüptitud andmevahetust iseenesest krüptimist mitte toetava tarkvara abil, siis sobib kasutada stunnelit selliselt
bash$ stunnel -f -d imap.loomaaed.tartu.ee:993 -p sertifikaat.pem -r localhost:143
Antud juhul asuvad küll tunneli mõlemad otsad samas arvutis, kuid see ei pruugi olla tingimata nii. Failis sertifikaat.pem on alguses salajane võti ja seejärel sertfikaat, näiteks sobival kujul sertifikaat.pem faili saab moodustada selliselt
bash$ cat sertifikaat.key sertifikaat.crt > sertifikaat.pem
Kliendisertifikaadiga autentimine
Lisaks niisama krüptimist mitte võimaldavale programmile krüptitud teenuse kättesaadavaks teegemisele on võimalik stunneli abil esitada ka kliendisertifikaat, näiteks juhul kui teenus on seadistatud käima selliselt, et kliendi autentimine toimub kliendisertifikaadi alusel.
bash$ stunnel -f -c -p client.pem -d localhost:143 -r imap.loomaaed.tartu.ee:993
client.pem fail sisaldab sarnaselt eeltoodule kokku ühendatud salajast võtit ning sertifikaati.
Kliendisertifikaadi kontrolliga krüptitud teenuse tekitamine
Selleks tuleb serveri poolel paigutada kliendi sertifikaat kataloogi ning öelda seal kataloogis c_rehash, näiteks selliselt
bash$ cd ~/kliedisertifikaat bash$ c_rehash . Doing . klient.crt => 657b7019.0
Ning käivitada seejärel stunnel
bash$ stunnel -f -d imap.loomaaed.tartu.ee:993 -p sertifikaat.pem -r localhost:143 -v 3 -a ~/kliendisertifikaat
Võtme -v järel olev arv näitab kui tõsiselt stunneli abil moodustatud server suhtub kliendi sertifikaadi esitamata jätmisse.
Logi
Selle arvuti syslog logisse, kus stunnel töötab deemonina tekitavad eduka kliendi ühenduse tekitamisel sarnased sissekanded (antud juhul on tegu kliendi serdi abil autentimise juhuga)
Mar 25 14:18:47 imap stunnel[17333]: 192.168.1.251.993 connected from 192.168.1.3:59617 Mar 25 14:18:47 imap stunnel[17333]: VERIFY OK: depth=0, /C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
Stunneli kasutamine MS Windows operatsioonisüsteemiga
Selleks tuleb kopeerida Windows operatsioonisüsteemi jaoks ettevalmistatud .exe fail www.stunnel.org veebikohast. Käivitamisel küsitakse kuhu kataloogi tarkvara paigaldada ning tulemusena tekib Start-Programs menüüsse juurde vastav sektsioon. Sealt saab stunneli võtta kasutusele teenusena (service). Stunneli tööd juhib seadistusfail stunnel.conf, mis paigaldatakse vaikimisi samasse kataloogi kuhu tarkvara. Näiteks sellise sellise sisuga seadistusfail korraldab krüptimist mitte toetava kliendi suhtlemise krüptitud teenusega kasutades kliendisertifikaati
cert = e:\install\stunnel-sertifikaadid\client.crt key = e:\install\stunnel-sertifikaadid\client.key socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 client = yes [imap] accept = 143 connect = imap.loomaaed.tartu.ee:993
Krüptitud liikluse debugimine
Mõnel juhul õnnestub krüptimist kasutava kliendi ja serveri vahel toimuvat liiklus debugida sel viisil, et nende vahele paigutada kaks stunnelit, nt selliselt
https klient <--- stunnel ---> ühenduspunkt <--- stunnel ---> https server
ning tulemusena saab ühenduspunktis avatekstilist võrguliiklust jälgida. Selleks sobib genereerida sertifikaat ning öelda ühenduspunktis
$ stunnel -f -c -d localhost:4430 -r loomaaed:443 -P /tmp/stunnel-klient.pid $ stunnel -f -d localhost:443 -p sertifikaat.pem -r localhost:4430 -P /tmp/stunnel-server.pid
Esimene stunnel toimib teenuse kliendina (joonisel parempoolne) ning teine stunnel töötab https kliendi jaoks serverina, soketil localhost:443. Seejuures peab arvestama, et https kliendile esitatakse isegenereeritud sertifikaati.
Veaolukorrad
- Põhjuseks, miks stunnel ei käivitu võib olla, et kasutatav .pem fail on ebasobivate loabittidega, sobivaks on 0600.
- Põhjuseks, miks stunnel ei käivitu võib olla, et stunnel ei saa moodustada pid faili, siis sobib kasutada -P pidfilename.pid võtit.
- Sõltuvalt c_rehash versioonist ei moodustata linke kõigile kataloogis paiknevatele failidele, vaid ainult teatud laienditega failidele, nt .pem.