Oma VPN ja kiinteä IP-osoite: OpenVPN Access Server

Alunperin julkaistu: Oma VPN ja kiinteä IP-osoite: OpenVPN Access Server » EksisONE

VPN-palvelua tarvitaan aina, kun on syytä piilottaa oma liikenne tai alkuperä. Hyödyllinen perustelu on julkisten ja tuntemattomien wifi-verkkojen käyttö ja vähemmän hyödyllinen taasen Netflixin tai muiden palveluiden maaestojen kiertäminen.

Se, että kannattaako VPN:stä maksaa, on aika trivilaalia, koska aina joutuu maksamaan. Kyse on vain siitä, että kuinka paljon. Omalla VPN-palvelimella selviää edullisesti ja turvallisesti. Sekä saa kiinteän IP-osoitteen, jota ei operaattoreilta saa.

Kun puhutaan omasta VPN-palvelusta, niin se käytännössä useimmiten tarkoittaa pientä virtuaalipalvelinta, jossa työn tekee ohjelmisto OpenVPN. Open ei tarkoita kaikille avointa niin, että naapurilla tai jollain hakkeria leikkivällä script kiddiellä olisi vapaa pääsy sinun VPN-verkkoosi. Se tarkoittaa sitä, että OpneVPN on aivoin ohjelmisto.

Avoimen ohjelmiston vahvin perustelu on, että voi itse varmistua koodin toiminnasta ja että sinne ei ole piilotettu jotain. En tiedä sinusta, mutta minulla ei tiedot ja taidot moisen selvittämiseen riitä. Mutta muilla riittää, joten luotan siihen mitä yhteisö sanoo: OpenVPN on turvallinen ja vahva.

Itseasiassa OpenVPN on se tekijä, joka johtaa VPN-tarjontaa. Jos olet koskaan ostanut jonkun kaupallisen VPN-palvelun, niin se on erittäin suurella todennäköisyydellä rakennettu OpenVPN:llä.

Kiinteä IP

Minulla oli yksinkertainen tarve: kiinteä IP-osoite. Sellaistahan ei operaattoreilta enää saa, edes rahalla. Tai ei ainakaan Elisa/Saunalahdelta saa. Silloin on kaksi vaihtoehtoa. Joka ostaa kiinteän muuttumattoman IP osoitteen erillisenä palveluna tai rakentaa VPN:n – aidostihan palveluna kiinteä IP on nimenomaan VPN.

Kiinteä IP-osoite ei ole minulle elämän ja kuoleman kysymys, mutta kylläkin vahva mukavuuskysymys omissa töissä. Elisa vaihtaa IP-osoitteen noin kerran viikossa tai jos joutuu buuttamaan nettiboksin. Aina kun IP vaihtuu, niin se tietää minulle tylsää rutiinityötä noin 10 minuutiksi – sekä joskus hetken vaivaa, kun joku palveluni lakkaakin toimimasta minulle.

Serverin valvontaa tekevä Fail2ban sallii omalle IP-osoitteelle mitä tahansa toimintaa ilman, että on banniriskiä. Servereilläni SSH:lla ei pääse sisään kuin sallitusta osoitteesta – ei se suuremmin turvallisuutta lisää, mutta vähentää roskayritysten aiheuttamaa kuormaa. Varnishin välimuistin purkaminen PURGE komennolla onnistuu vain omalta IP-osoittelta. Samaten olen rajoittanut mm. curlin käytön omalle IP-osoitteelle – tässäkin sillä on merkitystä turhien kolkuttelijoiden karsimisessa, koska en minä maksa kuukausittaista hintaa siksi, että joku script kiddie haluaa pelleillä tai kiinalaisen wannabe-hakkeri haluaa kokeilla sanakirjamurtoa. Yksikään hallinnoimani WordPress-sivusto ei salli XMLRPC:n käyttöä kuin sallituilta IP-osoitteilta. Esimerkkejä on enemmänkin.

Melkoinen osa valvonnasta ja seurannasta perustuu IP-osoitteisiin, jotka eivät ole kiinteitä kuin enintään serverien osalta, eikä aina niilläkään. Joka kerta kun hallintaan liittyvä IP-osoite muuttuu, niin se täytyy erikseen mennä muuttamaan asetuksiin. Tylsää.

Minulla ei ole tarvetta vedättää Netflixiä, joten siltä osin minulle on aivan yksi hailee haistavatko palvelut VPN-serverin. Warettaminen ei ole suuremmin kuulunut elämääni sitten C64-aikojen, mutta toki joskus olisi mukavaa, että merirosvolahti toimisi.

Noilla kriteereillä valinta alkoi olla kohtuullisen selvä. Minun ei kannata maksaa ulkoiselle palvelulle ja vuotaa heille nettikäyttäytymistäni. Koska minulle on jo muutenkin DigitalOceanin droplet käytössä, niin oma VPN tuntui parhaimmalta ratkaisulta. Siihen tarvitaan erillinen virtuaaliserveri ja OpenVPN. Muuta ei tarvita kuin muutama minuutti asennusaikaa. No, ehkä puoli tuntia on kuitenkin lähempänä totuutta.

5 euroa kuukaudessa. Tai enemmän.

Maailmassa mikään ei ole ilmaista. Kaikesta joutuu maksamaan. Nyt se, että saan toimivan VPN:n ilman jonkun muun tekemää urkkimista, maksoa minulle vajaa 5 euroa kuukaudessa eli 60 euroa vuodessa. Se femma on se, mitä säästän omaa aikaani, kun Elisan muuttama dynaaminen IP ei enää vaikuta elämääni. Ei se ihan ilmaista ole, mutta lähellä kuitenkin.

Oikeasti se maksaa alle vitosen kuussa, koska veloitus on 5 USD ja kurssista riippuen eurohinta painuu tuon alle. Mutta koska minä hoidan tilauksen yrityksen kanssa, niin hinta tulee tuollaisenaan. Henkilöasiakkaalle siihen tulee veroja päälle, niin lopullinen on sitten aika tarkkaan 5 euroa.

Ja aivan oikeasti se saattaa maksaa enemmänkin. Jos asennat Access Serverin eikä kaksi tunnusta ja kolme laitetta riitä, niin sitten maksat 18 taalaa vuodessa per laite. Aidosti, ei sekään paha ole, mutta aika tarpeetonta, jos et ole rakentamassa vaikka yrityksellesi jotain tunneliratkaisua.

DigitalOceanin pienin virtuaaliserveri riittää useimmille, mutta siinä on eräs huomioitava koukku. Käytännössä jokainen palvelu rajoittaa tavalla tai toisella kaistan käyttöä. Kun siirrettävä määrä tulee täyteen, niin joko linjat katkeavat tai lisälaskutus alkaa. Viiden euron droplet sallii ulosmenevää liikettä 1000 GB eli teran kuukaudessa. Vilkaisin kotona olevan nettiboksin laskuria ja meillä tera riittäisi hienosti kuukaudeksi koko kolmihenkiselle perheelle, joten se ei kurista käyttöä. Toki asiaa kannattaa hiukan seurata omassa laskutuksessa, ettei tule yllätyksiä.

Asiassa on toinenkin pointti. Kaistaa ei lasketa per virtuaaliserveri, vaan kaikkien ostettujen palvelinten kaistan yhteismäärää vastaan. Joten jos vaikka sivustot pyörivät isommalla serverisiivulla, jossa on esimerkiksi viisi teraa kaistaa sallittuna, niin silloin molempien uloslähtevä liikenne laskettaisiinkin kuutta teraa vastaan – mutta toki silloin kaistaa syö normaali liikennekin. Pyöritän kuitenkin suomalaisittain kohtuullisen ahkeria sivustoja, eivätkä ne ole päässeet lähellekään viiden teran rajaansa. Joten ei minua kulutus huolestuta.

Serverin sijanti

Sivustojeni käyttämä virtuaalipalvelin sijaitsee Frankfurtin palvelimella. Halusin toisen virtuaalipalvelimen muualle ja koska myös tiedän, että pahamaineinen PirateBay toimii hollantilaisilla IP-osoitteilla (toimii saksalaisillakin, ei sen puoleen), niin avasin VPN:ää varten palvelimen Alankomaiden Amsterdamiin. Itse hostatun VPN:n (kiinteä) IP-osoite kun tulee olemaan sama kuin dropletin IP.

Se, että virtuaaliserverin IP ja siten myös väitetty maa, on sama kuin se IP, joka näkyy liikkuessasi VPN:n kautta, tuo mukanaan pari ajateltavaa asiaa sen suhteen minkä datakeskuksen valitset ja miksi.

  • Jos haluat väittää olevasi Yhdysvalloissa, niin ota serverisi sieltä
  • Jos haluat salata olemassaolosi, niin älä asenna VPN:ää siille serverille, jossa sivustot ovat

Minulla on VPN-palvelin nyt kahdessa paikassa. Normaalisti käytän samaa kuin missä sivustotkin ovat. Silloin ei tule ongelmia IP-osoitteiden oman valvonnan kanssa. Mutta silloin liikenteen lähde ja olettava henkilö on helpostikin selvitettävissä, koska serverin sivustot löytyvät IP:llä. Tuolla ei ole minulle mitään merkitystä – paitsi jos jostain todella oudosta ja harvinaisesta syystä teenkin vaikka tekijönoikeudellisesti harmaalla alueella olevia asioita.

Silloin siirryn hollantilaiselle IP-osoitteelle, johon ei ole kytketty yksilöivää tietoa, kuten sivustoja. Toki DigitalOcean tietää kuka olen, joten ei tuokaan ole mikään vapaudu vankilasta kortti – kynnys sille, että yhdysvaltalainen yritys luovuttaisi tietoja helposti tai koskaan yksityisille, on kuitenkin erittäin korkea. Ei, en yllytä mihinkään, mutta sanon ääneen faktat, jotka suurin osa tietää.

Jos sinulla on tarve vaihtaa maata ja IP-osoitetta, niin OpenVPN ei ole sinulle. Käytä silloin maksullisia. Itse käytin jossain vaiheessa NordVPN:ää ja se toimi moitteetta – omaan tarpeeseen se oli kuitenkin hieman turhan hinnakas, koska ei tehnyt sitä mitä varsinaisesti tarvitsin: kiinteän ja muuttumattoman IP-osoitteen.

OpenVPN Access Server

OpenVPN tulee kahdella versiolla.

  • community-versio, joka on ilmainen ja komentorivipohjainen, eikä ole täysin NSA-kestävä
  • Access Server, joka on maksullinen yli kahdella käyttäjällä ja saa aika hyvin jenkkien NSA:n ja Kiinan hallituksen polvilleen

Henkilökohtaisessa käytössä, kun tarve on akselilla suojautuminen wifi-verkoissa ja maakiertojen estäminen, pidän Access Serveriä hieman turhan hankalana. Tai ei se hankalampi oikeastaan ole, kumpikin ovat suunnilleen samaa tasoa asentaa ja käyttää, eli syvempää tietoteknistä osaamista ei tarvita, mutta silti.

Voit vilkaista community-serverin asennusohjeet täältä. Mutta ehkä kannattaa asentaa molemmat erillisille servereille ja päättää sitten kumpi on oman maun mukaan. Tarvitset kummallekin 5 taalaa kuukaudessa maksavan serverin, joten jos kokeilet viikon ja sitten tuhoat tarpeettoman, niin puhutaan alle euron kokeilusta.

Virtuaalipalvelimen hankinta

Asennus lähtee siitä, että avaat itsellesi DigitalOceanista virtuaaliserverin. Täältä löydät ohjeet miten lähteä liikkeelle. Voit käyttää tätä referral-linkkiä DigitalOceanin suuntaan, niin saadaan kumpikin hieman hyötyä kun luot serverisi.

Hyödynnetään DigitalOceanin one-click asennusta. Se asentaa (suurimman osan) tarvittavat kilkkeet ja opastaa heti alkuun asetusten laittamiseen paikallaan. Jos tyytyy vähimpään mahdollisen asettamiseen, niin periaatteessa siitä, kun on avannut DigitalOceanin tilin, niin sinulla on muutamassa minuutissa toimiva VPN-yhteys.

Kirjaudu DigitalOceanin tilille ja avaa Marketplace. Kirjoita hakuun OpenVPN ja valitse listalta OpenVPN Access Server.

Sitten klikkaat oikealta ylhäältä sinustä nappulaa, jossa lukee Create OpenVPN Access Server Droplet.

Pääset luomaan uutta virtuaaliserveriäsi.

  • Ota halvin 5 USD/kk maksava
  • Valitse haluamasi datakeskus (se näkyy omana sijaintinasi)
  • Select additional option ja valitse vain monitoring
  • Authentication ja aseta salasana (salasanaa ei varmisteta, joten klikkaa silmänkuvaa, että näet mitä kirjoitat)
  • Choose a hostname ja laita joku lyhyempi ja helpommin tunnistettava; jos aiot käyttää VPN:n hallintaa urlilla malliin vpn.example .com (sinulla täytyy olla se domain), jolloin ei tarvitse kirjautua IP-osoitteella, niin laita se.
  • Jätä kaikki muut koskematta ja klikkaa alhaalta vihreää nappulaa Create Droplet

Kun luomallesi dropletille tulee IP-osoite, niin se on valmis.

OpenVPN asettaminen

Kirjaudu virtuaaliserverillesi SSH:lla. Jos sinulla on PuTTY, niin käytä sitä. Windowsin komentokehoitekin toimii. Muut osannevat oman järkestelmänsä. Jos kirjaudut komentoriviltä, niin käsket:

ssh root@dropletin.ip.osoite

Kirjautumisen käyttäjätunnus on root ja salasana se minkä aiemmin loit.

Kun olet sisällä, niin OpenVPN-asennusohjelma käynnistyy itsestään.

  • Ensin täytyy hyväksyä ehdot, joten vastataan yes
  • Koska tehdään omaa VPN-serveriä, niin tämä on ensisijainen Access Server (primary Access Server node), joten vastataan yes enterillä
  • Sallitaan ylläpidon liittymään pääsy kaikkialta, joten annetaan vastaukseksi Admin Web UI:hin all interfaces: 0.0.0.0 eli vastataan 1 enteriä painamalla
  • Hyväksytään admin-liittymän käyttämäksi portiksi 943 painamalla enteriä
  • TCP-portiksi sallitaan 443, ja taas enter riittää
  • Asiakkaan liikenne kierrätetään oletusarvoisesti VPN:n kautta, joten kyllä enterillä
  • Sama asiakkaan DNS-kyselyjen kanssa, eli oletuksena on VPN ja hyväksytään enterillä
  • Paikallinen autentikointi tehdään sisäisellä tietokannalla, joten enter hyväksymiseen
  • Annetaan asiakkaalle oletusarvoisesti pääsy yksityiseen aliverkkon klikkaamalla enteriä
  • Adminin hallinnan tunnukseksi ehdotetaan openvpn – kaipa tuon vaihtaakin voisi, mutta kun sitä joka paikassa käytetään ja oletusta tarjotaan, niin hyväksytään se enterillä
  • Aktivointikoodia tarvitaan vain maksullisissa versiossa, joten ohitetaan enterillä

Asennus raksuttaa hetken ja kertoo sinulle sitten muutaman perusasian:

  • Hallinnan liittymä löytyy osoitteesta https://ip.numero:943/admin
  • Hallinnan käyttäjätunnus on openvpn
  • Käyttäjien liittymä on osoitteessa https://ip.numero:943

Älä yritä vielä kirjautua hallintaan, koska salasanaa ei ole vielä asetettu tunnukselle openvpn. Annetaan sellainen ja nyt kannattanee valita vahva, koska käyttäjätunnus tiedetään:

passwd openvpn

Älä kirjaudu vieläkään OpenVPN:n hallintaan. Tehdään uuden serverin pakolliset toimet.

  • Asetetaan aikavyöhyke
timedatectl set-timezone Europe/Helsinki
  • Tehdään rootille SSH-kansio, avaimille tiedosto ja laitetaan oikeudet sekä omistajuus kohdalleen
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod -R go= ~/.ssh
chown -R $USER:$USER ~/.ssh
  • Päivitetään järjestelmä ja käynnistetään uudelleen
apt update && apt dist-upgrade -y
reboot
  • Avataan SSH:n portti ja käynnistetään palomuuri
ufw allow OpenSSH
ufw enable

Nyt olen valmis kirjautumaan hallinnan puolelle. Koska osoite on https eikä varsinaista sertifikaattia ole, niin sinua uhkaillaan huijauksilla ja ikuisella turmiolla. Älä piittaa, vaan etene sivustolle.

Asetusten hiominen

Ihan ensimmäiseksi sinun on (taas) hyväksyttävä käyttöehdot. Sen jälkeen pääset hallinnan etusivulle.

  • Avaa ensimmäiseksi CONFIGURATION > Network Settings. Sinua kiinnostaa kohta Hostname or IP Address. Nyt siinä on virtuaaliserverisi IP-osoite, mutta voit vaihtaa siihen osoitteen, jos/kun sinulla on domain hallussa. Se mahdollistaa silloin helpommin muistettavan urlin käyttämisen IP-osoitteen sijaan. Joten jos annoit dropletin luomisessa jonkun urlin malliin vpn.example.tld niin anna se tähän. Muista käydä laittamassa domainin DNS-asetuksista A-tietue samaan alidomainiin.

Tallenna muutos. Sinua pyydetään siirtämään muutos serverille ja se kannattanee tehdä heti. Muutoin se kuitenkin unohtuu.

Webliittymän sertifikaatti

Webliittymän SSL-sertifikaatti on tehty sille nimelle, jonka annoit dropletille sitä luodessa. Jos se on sama kuin se url, jolla webliittymää (ja periaatteessa VPN:ää) käytetään, niin kaikki on niin hyvin kuin voi olla.

Jos sen sijaan laitoit dropletin hostiksi jonkun muun ja nyt laitat käytettävän urlin, niin SSL-sertifikaatti meni taatusti rikki. Sellainen täytyy siis luoda ja nyt ei tarvitse vaivata Let’s Encryptiä, vaan voidaan tehdä itse allekirjoitettu. Näin siksi, että nyt ei ole tarvetta vakuuttaa muuta maailmaa serverin aitoudesta, vaan ainoastaan VPN-asiakas ja VPN-serveri toisistaan, että yhteys menee oikeaan paikkaan.

Voit tehdä itse allekirjoitetun sertifikaatin esimerkiksi tällä komennolla:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt

Sen jälkeen kerrot molempien tiedostojen, .key ja .crt sijainnin ja homman pitäisi toimia. Ongelma on vain siinä, että homma toimii vajaasti. Sertifikaattien suhteen ei ole erillistä hyväksyjää, joka niin serverin kuin asiakkaankin näkökulmasta varmistaisi molemmille kummankin sertifikaantin aitouden.

Toki moisen varmistajan (kutsutaan CA:ksi) voi itsekin rakentaa. Täällä on ohjeet.

En tiedä kuinka isosta asiasta on kyse. Ei siitä community-versiossa murehdita, vaan mennään ihan vaan itseallekirjoitetulla.

Kiinteä IP

Kiinteää IP:tä ei tarvitse erikseen asettaa, vaikka sellainenkin kohta asetuksista löytyy. Se ei voi olla muuta kuin dropletin IP ja asetusta tarvitaankin muissa ympäristöissä.

Käyttäjän luominen

Jotta voisi käyttää VPN:ää, niin on luotava käyttäjäprofiili. Niitä pystyy ilmaisella lisenssillä luomaan kaksi, joten jos se tuntuu liian vähältä, niin joko maksaa vuodessa 18 taalaa per kytketty laite tai asentaa komentorivipohjaisen community-version.

Käyttäjä asetetaan kohdassa USER MANAGEMENT > User Permissions. Oikeastaan oleellisin asia miettiä on, että sallitaanko auto-login, jolloin ei koskaan kysytä salasanaa, vai asetetaanko salasana ja saako käyttäjä itse vaihtaa sen. Salasanan asettamiseen ja muihin säätöihin pääsee klikkaamalla ikonia sarakkeessa More Settings.

Jos asentaa auto loginin, niin silloin samalla tunnuksella voi olla vain yksi yhteys auki kerrallaan.

Salasana on asennettava, jos haluaa sallia webliittymään kirjautumisen. Auto-login koskee vain VPN-yhteyden muodostamista sitten joskus.

Käyttö

Käyttäjä kirjautuu saamallaan tunnuksella ja salasanalla. Liittymässä ei paljoa voi tehdä, mutta sitä kautta saa ladattua itselleen ohjelmat, joita tarvitaan VPN:n käyttämiseen. Oleellisinta on kuitenkin kaksi latauslinkkiä, josta saa tarvittavat .ovpn tiedostot. Ärsyttävä nyanssi on, että tiedosto on aina nimeltään client.ovpn, ei tehdyn profiilin mukainen.

Käy vilkaisemassa community-version ohjeista miten asiakasohjelmia käytetään. Se toimii samalla tavalla molemmissa.

Miten sitten kävikään

Asensin testimielessä OpenVPN Access Serverin. Mutta kahden käyttäjän rajoitus tuli liian äkkiä vastaan enkä muutenkaan innostunut siitä jollain määrittelemättömällä tasolla. Se sai siis lähteä ja nyt mennään ilmaisella versiolla – minulle ei kuitenkaan ole tarvetta maskeerata yhteyksiäni piiloon USA:n, Kiinan tai Intian hallituksilta ja tiedusteluelimiltä.