Kiinteä IP (lähes) ilmaiseksi omalla VPN:llä

Alunperin julkaistu: Kiinteä IP (lähes) ilmaiseksi omalla VPN:llä » EksisONE

Käytännössä jokainen nettiyhteyksiin millä tahansa tavalla liittyvä taho myy VPN-yhteyksiä. Virtual Private Network on tapa, jolla oman liikenteen alkuperä salataan ja piilotetaan. Yksi suora seuraus siitä on se, että oma IP-osoite näkyy jonain muuna kuin mitä se aidosti on.

VPN:lle on useita eri tilauksia. Virallisesti sen avulla kyetään taistelemaan sortohallituksia vastaan minimoimalla kiinnijääminen tai saa suojattua oman liikenteen tuntemattomissa verkoissa. Epävirallisesti VPN:n avulla kierretään maarajoituksia ja yritetään päästä Netflixin jenkkitarjontaan käsiksi tai ohittaa PirateBaylle asetetut estot. Osa toimii paremmin, osa huonommin.

Jos (tai: kun) on tarve suojata omaa liikennettä julkisessa wifissä, vaikka kahviloissa tai lentokentillä, niin VPN on todella järkevä sijoitus. Se, että paljonko moisesta kannattaa maksaa, on oma juttunsa.

On toinenkin kysymysmerkki ja se liittyy nimenomaan turvallisuuteen sekä omien tekemisiesi valvomiseen. VPN salaa yhteyden sinulta VPN-serverille ja uudestaan sieltä siihen osoitteeseen tai palveluun, johon olet ottamassa yhteyttä. Se mitä tapahtuu VPN-serverillä, onkin oma juttunsa.

Vaikka oletettaisiin, että salaus ei häviä serverillä, niin VPN-palvelun tarjoaja tietää kuka olet. Sinä olet joutunut luomaan tunnuksen ja he tietävät mistä IP-osoitteesta saavut sekä minne olet matkalla. Kyse on siis siitä arvokkaasta datasta, jota nykyään haalitaan joka puolelta ja joka on todella kuumaa kauppatavaraa.

Joudut siis miettimään, että pelkäätkö vain jotain man-in-the-middle hyökkäystä tai Netflixin valvontaa, vai oletko valmis sallimaan seurannan ja antamasi datan siirtymiseen kauppatavaraksi.

Jos toisaalla kiukuttelet mainoksista ja miten Facebook ja Google tietävät kaiken sinusta, niin älä vesitä asiaa käyttämällä jotain puolivillaista ja ilmaista VPN-palvelua. Ei ole olemassa ilmaisia lounaita ja aina maksat, tavalla tai toisella.

Joudut päättämään mitä haluat VPN-yhteydeltä:

  • riittääkö pelkkä yhteyden salaus
  • haluatko määrätä maan, josta valehtelet olevasi, vai riittääkö ylipäätään joku IP-osoite
  • yritätkö ohittaa rajoituksia ja määräyksiä, malliin Netflix ja PirateBay
  • jotain muuta

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 (voi sen rakentaa sellaisellekin, jossa on jo toimintaa, mutta erillinen tuntuu tukevammalta ajatukselta). VPN:n tekniikkaan löytyy ilmainen avoin ratkaisu, OpenVPN. Muuta ei tarvita kuin muutama minuutti asennusaikaa.

5 euroa kuukaudessa

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.

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.

Tekninen osaaminen

Sellaista asiaa ei olekaan, jossa ei tarvitsisi osata mitään. Mutta oman VPN-palvelimen luonti ja käyttö ei todellakaan vaadi mitään ihmeellistä teknistä ymmärrystä linux-maailmasta. Jos osaa kopypeistata ja raahata omalla tietokoneellaan tiedostoja paikasta toiseen, niin osaa aika pitkälle kaiken vaadittavan. WordPressin asentaminen ja ylläpito on pariakin kertaluokkaa vaativampi urakka.

Vaativin osuus on SSH-avainten asettaminen, eikä sekään ole pakollista. Käyttäjätunnuksella ja salasanalla pärjää mainiosti.

Kun on asentanut ja ottanut käyttöön VPN-palvelimen, niin ainoa muistettava asia on kirjautua serverille kerran kuukaudessa, vaikka aina ensimmäinen päivä – kunhan se on päivä, jonka muuttaa (tai laittaa kalenteriin toistuvan hälytyksen). Silloin tehdään päivitykset.

Avaat (Windowsin) komentokehotteen ja kirjaudut serverille:

ssh root@serverin.ip.osoite

Käyttäjätunnus on root ja salasanan teet kun luot serverin.

Ensin haetaan ja asennetaan päivitykset:

apt update && apt dist-upgrade -y

Ja käynnistetään serveri uudestaan:

reboot

Se oli siinä. Ja kuukauden kuluttua uudestaan.

Virtuaalipalvelin

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.

Serverin koko on helppo valinta. Ota pienin. Jos jossain vaiheessa toteat, että oletkin huomattavan ahkera netin käyttäjä, niin sopimuksen suurentaminen on yhden klikkaisun päässä.

Käyttöjärjestelmä on makuasia. Ota silti Ubuntu 20.04 LTS. Tuorein pitkän tuen versio isosta jakelusta, johon löytyy taatusti ohjeita.

Työn tekevän OpenVPN:n asentamisen suhteen sinulla on kaksi valintaa. Voit ottaa DigitalOceanin marketplacesta ns. one-click asennuksen, jonka laittaa dropletin Ubuntu 18.04:lle ja asentaa viittä vaille valmiiksi OpenVPN:n webliittymää myöten. Tuossa on – taas – koukku. Asennus tukee OpenVPN:n omaa liiketoimintaa ja webliittymä sallii vain kaksi käyttäjää ja kolme laitetta ilmaisena.

Jos olet ainoa VPN:n käyttäjä, niin ei tuolla ole merkitystä ja ainahan useampi voi käyttää yhden käyttäjän asetuksia – ei siinä kummemmasta ole kyse. Mutta webliittymä ei anna mitään lisäarvoa, onpahan vaan nätti. Nätteydelläkään ei ole mitään merkitystä, koska sitä ei asennuksen jälkeen varsinaisesti enää tarvita.

Aidosti kyse on toki hieman isommasta asiasta kuin vain webliittymän kauneudesta. Kyseessä on kaksi eri versiota. Tämä ohje asentaa OpenVPN:n ilmaisen community-version, jossa on hieman heikompi salaus ja hieman heikompi tarkoittaa sitä, että NSA:lla kestää aikaa purkaa liikenteen piilottava salaus. Jos asennat OpenVPN:n one-clickillä, niin silloin asennetaan ns. OpenVPN Access Server, jossa on kovempi salaus, jota tiettävästi NSA ei pura. Kaupan päälle tulee sitten einen näppärämpi asetusten hallinta kuin komentorivipohjaisessa communityssä.

Silti minusta kannattaa henkilökohtaiseen tarpeeseen ottaa käyttöön ”blankko” Ubuntu-asennus ja laitetaan erikseen OpenVPN toimimaan ilmaisena community versiona ilman käyttäjärajoituksia ja aivan yhtä helpolla asennuksella.

Virtuaalserverin käyttöönotto

Jos pyörität pelkkää VPN-palvelua, niin käyttöönotto on nopeaa. PHP-asennuksia sun muita ei tarvita. Periaatteessa voit asentaa OpenVPN:n pakastakin vedettyyn, mutta tehdään pari pakollista asiaa. Joten kirjaudu shelliin. Jos sinulla ei ole PuTTYä käytössä, niin komentokehoitteessa riittää käsky

ssh root@ip-osoite

Asennetaan ensin päivitykset:

apt update && apt dist-upgrade -y

Tuon jälkeen serveri on käynnistettävä uudestaan:

reboot

Kun pääset takaisin, niin laitetaan aikavyöhyke kuntoon.

timedatectl set-timezone Europe/Helsinki

Minä en käytä tavallista käyttäjätunnusta, jolla on sudo-oikeudet, vaan kirjaudun aina root-tunnuksella. Tuo käytäntö ei kuitenkaan nauti laajaa suosiota, joten tee itsellesi erillinen käyttäjätunnus:

adduser tunnus

Annetaan sille sudo-oikeudet:

usermod -aG sudo tunnus

Kirjaudu ulos ja takaisin sisään uudella tunnuksellasi. Nyt tarvitset kaikkiin järjestelmään liittyviin asioihin aina sudon ensimmäiseksi. En merkitse sitä koskaan ohjeisiin, mutta opit aika nopeasti tietämään koska sudo on oltava – jos et muusta, niin virheilmoituksesta.

Jos siltä tuntuu, niin nyt voi ottaa myös SSH-avaimet käyttöön, niin ei tarvitse antaa salasanaa kirjautuessa. Jos käytät PuTTYä, niin tee siellä ja jos taasen suosit Windows 10 komentokehoitetta, niin asia hoituu sielläkin. Mac-käyttäjät ymmärtääkseni tekevät asiat samalla tavalla kuin linuxeissakin (muuten, Windowsin Ubuntu-appi ei ole ollenkaan huono vaihtoehto, monellakin tavalla).

SSH tarvitsee portin itselleen, joten avataan moinen:

ufw allow OpenSSH

Laitetaan palomuuri käyntiin:

ufw enable

OpenVPN asennus

OpenVPN asennus onnistuu tyyppilliseen tapaan komennolla apt install openvpn mutta sen asettaminen on hankalaa ja työlästä. Jos haluat kokeilla, niin tässä on DigitalOceanin tarjoamat ohjeet.

Minä valitsen helpomman tien ja käytän skriptiä, jonka joku ystävällinen sielu on rakentanut. Toki pitäisi aina varmistua, että moinen ei sisältäisi mitään epämiellyttäviä yllätyksiä, mutta luotan Githubin yhteisön tarkkasilmäisyyteen. Asennuksen ja suurimman osan asetuksista paikalleen laittava koodi löytyy täältä.

Anna tämä komento ja vastaa muutamaan kysymykseen, jolloin homma alkaa olla viittä vaille valmis:

wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

Ensimmäiseksi kysytään sitä IP-osoitetta, joka näkyy käytettävänä. Valitse ensimmäinen, joka on sama kuin virtuaaliserverisi IP-osoite.

Seuraavaksi valitaan käytettävä protokolla. Tarjottu UDP toimii hyvin, joten valitaan se.

  • Tätä kannattaa pysähtyä miettimään hetkeksi. Kun VPN:n liikenne on portista 1194/udp niin jokainen kurkkija tietää, että kyse on VPN-palvelusta. Samaten tiedetään, että liikenne tulee VPN:stä. Jos laitat tähän TCP ja seuraavassa kohdassa asetat portiksi 443, niin liikkumisesi ei sinällään ero mitenkään normaalista webliikenteestä. Se, että onko tällä merkitystä muualla kuin vaikka Kiinassa, on sitten oma juttunsa. Kannattaa huomioida, että silloin ei tietenkään voi olla mitään muuta palvelua kuuntelemassa porttia 443, kuten webpalvelinta.

Liikenne tarvitsee portin ja usein käytetään tarjottua 1194. Periaatteessa voi käyttää mitä tahansa vapaana olevaa.

IP-osoitteet tarvitsevat DNS-palvelun. Useimmiten suositellaan Googlea tai IP-osoitetta 1.1.1.1 – jälkimmäinen on APNIC:n ja Cloudflaren projekti. APNIC vastaa Aasian ja Tyynenmeren alueen IP-avaruudesta ja Cloudflare lienee suurin tai ainakin suurimpiin kuuluna välimuisti- ja CDN-palvelu, niin se pitäisi olla saatavilla ja nopea. Koska Googlella on riittävästi toimintaa muutenkin, niin luotan DNS-tiedoissa 1.1.1.1 osoitteeseen.

Ensimmäiselle asiakkaalle/käyttäjälle (client) täytyy keksiä nimi. Se voi olla mitä vaan, kunhan se on yksi sana ilman erikoismerkkejä. Keksi jotain. Aidosti kyse on asetustiedoston nimestä, jota tarvitaan asiakaslaitteessa – kuten vaikka kotiläppärillä – yhteyden tekemiseen. Joten vaikka se voi olla aidosti ihmiskäyttäjäkohtainen, niin se on silti vain yksi asetuskokonaisuus. Pärjäät samalla niin läppärin kuin tabletinkin kanssa, joten et joudu tekemään edes laitekohtaisia.

Ja asennus pääsee vauhtiin… ja valmistuukin melkoisen nopeasti.

Kun asennus on valmis, niin toiseksi viimeinen rivi kiinnostaa sinua. Siinä on tiedosto, jota käytetään omassa koneessasi VPN-yhteyden muodostamiseen. Se löytyy aina käyttäjäsi kotihakemistosta (joka minulla siis on /root, mutta sinulla ehkä mallin /home/tunnus ja pääset sinne myös komennolla cd ~/ ) ja on .ovpn päätteinen.

Minun pitäisi siis saada tavalla tai toisella talteen eksis.ovpn tiedosto. FTP on usein helpoin työkalu.

Loppusäätö

Skripti jättää pari asia tekemättä, eikä kerro siitä – pieni tyylirikko siis.

Portti on edelleen aukaisematta, mutta se on yhden komennon päässä:

ufw allow 1194/udp

Logien sijainti on myös asettamatta. Joten avaa asetustiedosto:

nano /etc/openvpn/server/server.conf

Lisää nämä kaksi riviä loppuun:

log-append /var/log/openvpn/openvpn.log
status /etc/openvpn/server/openvpn-status.log

Saatat haluta myös logikierron käyntiin, koska logrotate on oletuksena asettamatta, mutta tuo toki riippuu omista tarpeistasi.

Toinen mietittävä asia on aikaleima logitiedoissa. Oletuksena logiin ei merkitä päiväystä eikä kellonaikaa. Itse molemmat kuitenkin haluan, jo pelkästään siksi, että tietää mitä ja milloin, mutta koska käytän Fail2bania hieman valvomaan liikennettä, niin timestamp on pakollinen. Joten otetaan se käyttöön.

Avaa demonin asetukset:

nano /etc/systemd/system/multi-user.target.wants/openvpn-server@server.service

Poista ExecStart riviltä kohta --suppress-timestamps.

Käynnistä demoni uudelleen ja sen jälkeen OpenVPN:

systemctl daemon-reload

systemctl restart openvpn-server@server

Käynnistys ja sammutus

OpenVPN on nyt saatavilla, mutta ei käynnissä. Se hoituu tutulla systemctl komennolla, kunhan muistaa, että palvelun nimi on openvpn@server tai pidemmässä muodossa openvpn@server.service. Joten sallitaan se ja samalla varmistetaan, että VPN herää myös rebootissa:

systemctl -f enable openvpn-server@server.service

Käynnistetään OpenVPN:

systemctl start openvpn-server@server

Varmistetaan, että se on täysissä sielunvoimissaan:

systemctl status openvpn-server@server

Saatat nähdä mukana jotain tällaista:

Jul 12 06:16:38 eksis openvpn[1536007]: tls-crypt unwrap error: packet too short
Jul 12 06:16:38 eksis openvpn[1536007]: TLS Error: tls-crypt unwrapping failed from [AF_INET]146.88.240.4:46057

Ne ovat enemmänkin logityyppisiä rivejä ja kertovat, että yrittänyt IP-osoite ei onnistunut samaan salausta päälle, jonka takia yhteys epäonnistui. Joka on tietysti vain hyvä asia.

Saat siivottua tuon uudelleenkäynnistyksellä. Oleellisempaa on kuitenkin muistaa, että uudelleenkäynnistys joudutaan aina tekemään, jos asetuksia muutetaan jossain välissä.

systemctl restart openvpn-server@server

Joskus joudutaan myös sammuttamaan VPN ja se hoituu samalla kaavalla:

systemctl stop openvpn@server

VPN ja käyttö

Nyt on serveri, joka osaa salata ja piilottaa liikenteesi sekä tarjoaa yhden kiinteä IP-osoitteen. Siihen täytyy päästä kirjautumaan. Tässä kohtaa ei järjestelmän omat VPN-asetukset auta, vaan täytyy asentaa erillinen ohjelma sille laitteelle, josta pitäisi päästä ulos.

Tarvitset myös edellä luodun .ovpn tiedoston.

Windows

Tarvittavan asennustiedoston saa ladattua OpenVPN:n sivuilta. Tuoreimman Windows 10/Server 2016/Server 2019 asennusohjelman saat myös suoraan tästä.

Lataa ja asenna, niin se tekee sinulle Windowsiin tarvittavan käyttöliittymän.

Sinun täytyy siirtää omasta kotihakemistostasi tekemäsi .ovpn tiedosto Windowsissa hakemistoon C:\Program Files\OpenVPN\config ja OpenVPN osaa ottaa sen käyttöön sellaisenaan. Siirrä tiedosto haluamallasi tavalla, joka Windowseissa tarkoittaa yleensä FTP:tä. Jos yrität SSH:ta serveriltä omaan Windowskoneeseen, niin tarvitset siihen virityksen, jota kutsutaan nimellä reverse SSH tunneling ja sen tekemiseen menee enemmän aikaa kuin mitä pienen tekstitiedoston siirtäminen FTP:llä vie.

Windowsin komentorivi ei ymmärrä rsync komentoa, mutta scp toimii. Ongelmaksi tulee se, että tuohon Windowsin hakemistoon kopiointiin tarvitaan administrator oikeuksia ja sitä scp ei osaa hoitaa. Tai ainakaan minä en ole koskaan onnistunut.

Joten siirrä FTP:llä omaan koneeseen ja siitä sitten normaalisti Resurssinhallinnasta raahaamalla kohdekansioon.

OpenVPN löytyy järjestelmäkuvakkeista (system tray) ja pääset valikoihin oikealla hiiren korvalla.

iOS

Applen mobiilit, iPhonet ja iPadit, asentuvat hieman samalla tavalla, mutta tietenkään mitään ei ladata muualta kuin iTunesista. Hae app nimeltään OpenVPN Connect ja asenna se.

Käyttöehtojen hyväksymisen jälkeen täytyy siirtää profiilitiedot (import profile) eli juurikin taas sama .ovpn tiedosto. Valitse siirtoa varten FILE eli tiedosto – toki, jos sinulla on samassa boksissa webpalvelin, niin voit siirtää sen sitäkin kautta, mutta eihän moinen järkevää ole, koska kuka tahansa jolla ovpn-tiedosto on, pystyy käyttämään VPN:si.

Voit lähettää sen mailin liitteenä ja avata OpenVPN appilla. Tai sitten kytket laitteesi tietokoneesi iTunesiin ja valitset asetukset puolelta tiedostonsiirron, listasta OpenVPN ja raahaat .ovpn tiedoston ikkunaan.

Samalla hetkellä laitteesi loihee lausumaan. että lisätäänkö tämä (Add), pariin kertaankin itseasiassa, ja yhteys on luotu. Sitten vaan aina tarvittaessa klikkaat OpenVPN appin auki, kytket yhteyden päälle ja homma on hoidossa.

Omissa kokeiluissa Amazonin Prime oli ainoa, joka kieltäytyi yhteistyöstä VPN-yhteyden takia.

Android

Minulla ei ole android-laitteita, joten en ole voinut testata. Vastaava app kuin mitä iOS käyttää pitäisi olla nimeltään Android OpenVPN Connect ja .ovpn siirrettäisiin joko USB:llä tai muistikortilla.

MacOS

Mac-koneet ovat minulle tuttuja tv:n ja elokuvien kautta, kun maksetussa tuotesijoittelussa näkyy nykyään omenalogo läppärien kannessa. Eli minulla ei ole hajuakaan mitä sinun pitäisi tehdä, mutta jos asennat ohjelman Tunnelblick ja kysyttäessä konfiguraatiotiedostoa tarjoat .ovpn tiedoston, niin homma etenee.

Linuxit

Jos sinulla on linux-kone henkilökohtaisessa käytössä, niin tietänet mitä teet ja kun et tiedä, niin osaat etsiä apua. Mutta lyhykäisyydessään asennetaan omallekin koneelle OpenVPN komennolla apt install openvpn ja käytetäänkin sitä clientinä, ei serverinä. Mutta koska kyseessä on linux, niin joudut/saat asettaa aika paljon käsin. Se ei nimittäin toimi pakasta vedettynä edes asiakkaana.

Vilkaise tämä ohje , niin saanet asennukset tehtyä kunnialla.

Rajoitukset

Tämä ohje loi avainparin vain yhdelle käyttäjälle yhdelle samanaikaiselle yhteydelle. Jos avaat serverin asetukset /etc/openvpn/server/server.conf ja lisäät sinne rivin duplicate-cn niin saat yhteiskäytön aikaiseksi.

OpenVPN voi käyttää komentoriviltäkin. Tai niin ainakin väitetään, sillä en ole koittanut. Mutta sama pitäisi onnistua myös komennolla

openvpn --duplicate-cn

  • Jos OpenVPN:n käyttö komentoriviltä kiinnostaa, niin openvpn --help on hyvä paikka aloittaa ja googlella loput.

Sitä, että useampi käyttää samaa client-asetusta, kannattaa kuitenkin hyödyntää enintään omiin tarpeisiin useammalle laitteelle ja muutoin luo omat profiilit jokaiselle ihmiskäyttäjälle erikseen. Asennusskripti nimittäin hoitaa asian malliikkaasti. Komennat siinä hakemistossa, jossa skripti oleilee (yleensä kotihakemisto):

bash openvpn-install.sh

ja pääset luomaan uusia käyttäjiä. Tai tarpeen mukaan poistamaan. Syöte on hyvin yksinkertainen. Tämä odottaa uutta tunnusta:

OpenVPN is already installed.

Select an option:

  1. Add a new client
  2. Revoke an existing client
  3. Remove OpenVPN
  4. Exit
    Option: 1

Provide a name for the client:
Name:

  • Voit kopioida skriptin mihin tahansa hakemistoon, joka löytyy polusta. Silloin se on ajettavissa mistä tahansa.

Se mikä ei helposti onnistu, on tunnus/salasana-parin luominen. Jos sille on tarvetta, niin asenna OpenVPN Access Server.

Jatkoasennukset

Pelkästään VPN:n asentamisella pääsee pitkälle ja usein ihan perille asti. Muut tarpeet tulevat enemmänkin valvonnan ja monitoroinnin puolelta. Kun serverillä ei ole muuta kuin OpenVPN, niin pääsee helpommalla. Toki voit asentaa sinne muitakin palveluita, kuten webserverin, mutta silloin alkaa ehkä tehot kuristumaan.

OpenSSH

Jos sinulla ei ole koskaan tarvetta saada SSH-yhteyttä muualta kuin omalta tietokoneeltasi, niin voit jopa sulkea palomuurista portin 22. Silloin loppuu turhat kolkuttelut. Mutta samalla loppuu ensimerkiksi rsync komennon käyttäminen omalta tietokoneelta. Toisaalta, FTP toimii myös.

Se onnistuu ottamalla ensin listauksen rivinumeroineen:

ufw status numbered

Syöte on jotain tämänkaltaista:

root@jgstr:/# ufw status numbered
Status: active
 To                         Action      From
 --                         ------      ----

[ 1] 1194/udp ALLOW IN Anywhere
[ 2] OpenSSH ALLOW IN Anywhere
[ 3] 1194/udp (v6) ALLOW IN Anywhere (v6)
[ 4] OpenSSH (v6) ALLOW IN Anywhere (v6)

Silloin saat komennolla ufw delete <rivinumero> poistettua säännön – tuossa esimerkissä ne olisivat rivit 4 ja 2 eli näin:

ufw delete 4
ufw delete 2

Fail2ban

Yrityksiä porttiin 1194 ei sinällään tarvitse valvoa, koska sertfikaatti suojaa vahvasti. Mutta jokainen yritys syö hieman resursseja ja jos niitä alkaa tulla paljon, niin se alkaa jo vaikuttamaankin. Omien kokemusten mukaan OpenVPN:n käyttämä portti saa olla melkoisen rauhassa. Ilmeisesti tiedetään, että sen murtoyritys on aika turhaa ja oikeastaan ainoa, joka onnistuu, olisi palvelunestoyritys pommittamalla porttia suurella määrällä yrityksiä.

Fail2ban on helpoin ja ehkä eniten käytetty työkalu palomuurin apuna. Se blokkaa IP-osoitteet sitä mukaa kun ne yrittävät jotain luvatonta ja auttaa sitä kautta. Ei sillä mitään suunniteltua kiljuunan eri IP-osoitteen bottiarmeijaa pysäytetä, mutta siinä tilanteessa tarvittaisiin muutenkin jo ihan erilaisia työkaluja.

Vilkaise ohjeet miten Fail2ban asennetaan. Sen jälkeen tarvitset säännön, jailin, miten estetään ja toisen säännön, filterin, jolla logitiedostoista suodatetaan haluttu sulkuperuste. Nyt sitten logeissa on pakko olla päiväys ja kellonaika, joten aseta timestamp, jos et sitä vielä tehnyt.

Jail: openvpn.conf

nano /etc/fail2ban/jail.d/openvpn.conf

# OpenVPN

[openvpn]
enabled = true
port = 1194
protocol = udp
filter = openvpn
logpath = /var/log/openvpn/openvpn.log
findtime = 24h
bantime = 30d
maxretry = 1
#action = %(action_mwl)s

Filter: openvpn.conf

nano /etc/fail2ban/filter.d/openvpn.conf

# Fail2Ban filter for selected OpenVPN rejections

[Definition]

Example message:

Tue Jul 14 12:49:09 2020 TLS Error: tls-crypt unwrapping failed from [AF_INET]185.200.118.72:54764

failregex = ^ TLS Error: tls-crypt unwrapping failed from [AF_INET]<HOST>:\d+$

ignoreregex =

Sähköposti

VPN-serveri ei itseasiassa tee yhtään mitään kyvyllä lähettää sähköposteja. Fail2ban saattaisi haluta lähettää ilmoituksia bannaamistaan IP-osoitteista, mutta ne näkee komentoriviltäkin. Harkitse kahteen kertaa asiaa, koska se on vain yksi kohta lisää, joka voi mennä rikki.

Jos ajattelit, että pyörittäisit ohessa täysiveristä sähköpostipalvelinta, joka hakee ja lähettää mailit sekä tarjoaa jopa webmailin, niin unohda. Mailiserverin pyörittäminen virtuaaliservereillä on mahdotonta. Virtuaaliserveri voi vain lähettää sähköposteja.

  • Jos sinulla on aito tarve toimivaan sähköpostin välitykseen (sivusto, verkkokauppa jne.), niin harkitse vakavasti Amazon SES palvelua ja muutoin vastaanottoon, webmailiin jne. Amazonin WorkMail palvelun koplaamista samaan. Amazonin AWS:ssä ei kannata pyörittää virtuaaliserveriä, mutta suurin piirtein kaikki muu on tehokkaan kilpailukykyistä.

Jos kuitenkin haluat sähköpostin liikkuvan serveriltä ulos, ja haluat sen halvimmalla mahdollisella tavalla – eli ilmaiseksi – niin lue ohjeet miten Postfix ja Gmail laitetaan toimimaan yhdessä. Saatat haluta luoda VPN-serverille ihan oman gmail-osoitteen, ettei sen lähetykset syö oman osoitteesi limiittiä – Google ei nimittäin salli määrättömästi sähköposteja päivässä.

Mitä sitten?

Sen jälkeen käytät VPN-yhteyttäsi halusi mukaan. Itselläni se on läppärissä koko ajan käynnissä, koska teen läppärillä työt. Sen sijaan iPadissä en kotioloissa VPN:ää suuremmin käytä, koska se on viihdelaite ja VPN hidastaa mutkansa takia hieman nopeutta (joku väitti, että nopeus olisi 80 %). Silloin kun olen tehnyt sisältöä iPadissä Ulysses-editorilla ja haluan siirtää tuotoksen sivustolle XMLRPC:tä käyttäen, niin laitan VPN:n päälle, mutta siinä melkein onkin iPadin tarve.

Minulla on aika harvakseltaan tarvetta vieraan wifin käyttöön, koska jaan hotspotin mieluummin omasta puhelimestani, mutta nyt minulla kuitenkin on turvallinen vaihtoehto verkkovierailuihin.

Oman VPN-yhteyden käyttö ei poista kokonaan dynaamisen IP:n tuomia hankaluuksia, mutta piilottaa ne. Silti joutuu aika ajoin käsin asettamaan ”oikean” IP-osoitteen, mutta nyt se ei enää ole kriittinen asia. Välillä joutuu myös testaamaan miten jokin asia toimii vieraalla ja nyt sekin onnistuu oman operaattorin antaman IP:n avulla.