Pal­ve­li­men tur­val­li­nen kon­fi­gu­roin­ti on yksi jär­jes­tel­män­val­vo­jien tär­keim­mis­tä teh­tä­vis­tä. Tämä koskee paitsi itse hal­lin­noi­ta­via pal­ve­li­mia myös vuo­krat­tua lait­teis­toa. Sa­la­sa­na­suo­jaus, luo­tet­ta­vat SSH-asetukset ja sään­nöl­li­set päi­vi­tyk­set muo­dos­ta­vat kattavan tie­to­tur­va­pa­ke­tin.

Kuka vastaa pal­ve­li­men tur­val­li­ses­ta kon­fi­gu­roin­nis­ta?

Oman pal­ve­li­men ylläpito tarjoaa suurimman mah­dol­li­sen vapauden kon­fi­gu­roin­nis­sa. Hyvä vaih­toeh­to ovat root-pal­ve­li­met, joita monet pal­ve­lun­tar­joa­jat tarjoavat ja joihin annetaan root-käyttäjän oikeudet. Mo­lem­mis­sa ta­pauk­sis­sa kriit­ti­set tehtävät, kuten asennus, rakenne ja ylläpito, ovat kokonaan vuo­kraa­jan vastuulla. Virheet root-alueella voivat aiheuttaa vakavia ongelmia. Oikeiden me­net­te­ly­ta­po­jen nou­dat­ta­mi­nen luo kuitenkin ihan­teel­li­sen perustan luo­tet­ta­val­le, suo­ri­tus­ky­kyi­sel­le ja tur­val­li­sel­le pal­ve­li­mel­le.

Kuinka suojata pal­ve­li­me­si vaihe vaiheelta

Haluatpa sitten suojata Windows-, Ubuntu- tai Debian-pal­ve­li­men, muu­ta­mal­la yleis­pä­te­väl­lä toi­men­pi­teel­lä voit luoda vankan tie­to­tur­va­poh­jan. Seu­raa­vas­sa esit­te­lem­me tär­keim­mät vaiheet.

Vaihe 1: Suorita pe­rus­a­sen­nus

Jo ennen kuin ryhdyt suo­ja­toi­miin ja pal­ve­li­men mää­rit­tä­mi­seen, voit vaikuttaa pro­jek­ti­si tu­le­vai­suu­den tie­to­tur­va­mah­dol­li­suuk­siin. Käytitpä sitten Windows- tai Linux-käyt­tö­jär­jes­tel­mää, noudata tätä pe­ri­aa­tet­ta asen­nuk­sen aikana: pal­ve­li­mel­la­si tulisi olla vain ne oh­jel­mis­tot, joita se tarvitsee teh­tä­vien­sä suo­rit­ta­mi­seen.

Syynä on se, että jokainen asennettu sovellus aiheuttaa po­ten­ti­aa­li­sen tie­to­tur­va­ris­kin ja voi heikentää jär­jes­tel­män suo­ri­tus­ky­kyä. Haa­voit­tu­vuuk­sien mi­ni­moi­mi­sek­si kannattaa asentaa vain vält­tä­mät­tö­mät jär­jes­tel­mä­kom­po­nen­tit ja käyttää yk­si­no­maan luo­tet­ta­vak­si todettuja kolmannen osapuolen oh­jel­mis­to­ja.

Vaihe 2: Aseta vahva salasana

Asen­nuk­sen jälkeen sinun tulisi en­sim­mäi­sek­si asettaa vahva jär­jes­tel­män­val­vo­jan salasana (Windows) tai root-salasana (Linux). Ole­tusar­voi­ses­ti salasanaa ei ole mää­ri­tet­ty, joten jär­jes­tel­män­val­vo­jan tili pysyy lukittuna, kunnes syötät salasanan. Useimmat käyt­tö­jär­jes­tel­mät ke­hot­ta­vat sinua luomaan salasanan si­säl­tä­vän tilin heti asen­nuk­sen jälkeen; tätä salasanaa käytetään jär­jes­tel­män­val­vo­jan tai root-käyttäjän kir­jau­tu­mi­seen.

Jos olet vuo­kran­nut Linux-pal­ve­li­me­si pal­ve­lun­tar­joa­jal­ta ja saanut valmiiksi mää­ri­te­tyn pää­käyt­tä­jän tunnuksen, vaihda salasana vä­lit­tö­mäs­ti. Kirjaudu pal­ve­li­mee­si SSH:n kautta ja kirjoita ter­mi­naa­liin seuraava komento:

passwd
bash

Kun olet asettanut tur­val­li­sen salasanan, sinun on vah­vis­tet­ta­va se. Varmista, että valitset mah­dol­li­sim­man pitkän salasanan, joka sisältää sekä kirjaimia, eri­kois­merk­ke­jä että numeroita. On myös suo­si­tel­ta­vaa käyttää sa­la­sa­nan­hal­lin­taoh­jel­maa, jotta voit tallentaa salasanan tur­val­li­ses­ti ja käyttää sitä tar­vit­taes­sa helposti.

Vaihe 3: Muuta SSH-porttia

Ole­tusar­voi­ses­ti SSH-yhteys käyttää TCP/UDP-porttia 22, joka mää­ri­te­tään valmiiksi jär­jes­tel­män asen­nuk­sen yh­tey­des­sä. Hakkerit koh­dis­ta­vat au­to­maat­ti­set kir­jau­tu­mis­yri­tyk­sen­sä usein juuri tähän porttiin. Vähennä lu­vat­to­man pääsyn riskiä mää­rit­tä­mäl­lä sa­la­tuil­le etäyh­teyk­sil­le eri portti.

Tätä varten muokkaa SSH-mää­ri­tys­tie­dos­toa sshd_config millä tahansa teks­tie­di­to­ril­la. Jos haluat käyttää esi­mer­kik­si nano-editoria, suorita seuraava komento:

nano /etc/ssh/sshd_config
bash

Etsi rivi, jossa lukee ”Port”, ja korvaa portin numero 22 ha­lua­mal­la­si numerolla. Muista, että eri pal­ve­luil­le on varattu useita muita va­kio­port­te­ja (esim. portti 80 HTTP:lle).

Huomio

Ennen kuin tiedoston sshd_config muutokset astuvat voimaan, sinun on käyn­nis­tet­tä­vä SSH-palvelu uudelleen. De­bia­nis­sa tämä tapahtuu ko­men­nol­la etc/init.d/ssh restart. Ubuntu-käyt­tä­jien tulee käyn­nis­tää palvelu uudelleen ko­men­nol­la service ssh restart.

Vaihe 4: Poista SSH-kir­jau­tu­mi­nen käytöstä jär­jes­tel­män­val­vo­jan tileillä

Pal­ve­li­men tur­val­li­suu­den pa­ran­ta­mi­sek­si on suo­si­tel­ta­vaa poistaa SSH-kir­jau­tu­mi­nen käytöstä root- tai jär­jes­tel­män­val­vo­jan tilillä. Muussa ta­pauk­ses­sa hyökkääjä voi käyttää tiliä etä­käyt­töön, jos hän pääsee käsiksi sa­la­sa­naan.

Ennen kuin otat tämän toi­men­pi­teen käyttöön, varmista, että pal­ve­li­meen voi kirjautua ainakin yhdellä muulla tilillä, jotta et jää ulos jär­jes­tel­mäs­tä. Linux-jär­jes­tel­mis­sä luo tällainen tili seu­raa­val­la ko­men­nol­la:

useradd -g users -d /home/user1 -m -s /bin/bash user1
bash

Tämä luo esi­merk­ki­ti­lin nimeltä ”user1”. Määritä seu­raa­vak­si tilille tur­val­li­nen salasana:

passwd user1
bash

Tarkista, toimiiko kir­jau­tu­mi­nen luodulla käyt­tä­jä­ti­lil­lä. Jos kir­jau­tu­mi­nen onnistuu, siirry pää­teh­tä­vään: poista root-tili käytöstä. Avaa SSH-mää­ri­tys­tie­dos­to sshd_config uudelleen ha­lua­mal­la­si teks­tie­di­to­ril­la. Etsi kohta PermitRootLogin yes ja korvaa se kohdalla PermitRootLogin no. Kun olet käyn­nis­tä­nyt SSH-palvelun uudelleen, etäkäyttö root-tilillä ei enää ole mah­dol­lis­ta.

Mää­rit­tä­mäl­lä ase­tus­tie­dos­ton kohdassa AllowGroups voit myös määrittää, mitkä käyttäjät saavat muodostaa yhteyden SSH:n kautta. Luo tätä varten ryhmä (addgroup) ja lisää siihen haluamasi käyttäjät (adduser). Lisää sitten valitun ryhmän nimi kohtaan sshd_config (esim. AllowGroups ssh_users).

Vaihe 5: Määritä säh­kö­pos­ti­muis­tu­tuk­set SSH-kir­jau­tu­mi­sil­le

Riip­pu­mat­ta siitä, millaisia toi­men­pi­tei­tä SSH-yhteyden suo­jaa­mi­sek­si toteutat, sinun tulisi seurata jat­ku­vas­ti kaikkia etä­toi­min­to­ja niiden jälkeen. Näin voit varmistaa, että pal­ve­li­me­si SSH-palvelu on suojattu asian­mu­kai­ses­ti, ja havaita lu­vat­to­mat kir­jau­tu­mis­yri­tyk­set var­hai­ses­sa vaiheessa, jolloin voit reagoida ti­lan­tee­seen asian­mu­kai­ses­ti. Yk­sin­ker­tai­nen shell-skripti voi lähettää au­to­maat­ti­ses­ti il­moi­tuk­sen säh­kö­pos­tit­se osoit­tee­see­si aina, kun pal­ve­li­mee­si on kir­jau­dut­tu etäyh­tey­del­lä.

Tässä on esimerkki sk­rip­tis­tä /opt/shell-login.sh Linuxille, jonka voit helposti luoda itse:

#!/bin/bash
echo "Login on $(hostname) on $(date +%Y-%m-%d) at $(date +%H:%M)"
echo "User: $USER"
echo
finger
txt

Lisää seu­raa­vak­si seuraava rivi tie­dos­toon /etc/profile:

/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.com
txt

Tämä asetus varmistaa, että skripti suo­ri­te­taan ja lähettää il­moi­tus­säh­kö­pos­tin mää­ri­tet­tyyn osoit­tee­seen aina, kun SSH-kir­jau­tu­mi­nen tapahtuu. Jotta tämä toimisi, sk­rip­til­le on annettava käyt­tö­oi­keu­det 755 (luku- ja suo­ri­tusoi­keu­det kaikille käyt­tä­jil­le sekä kir­joi­tusoi­keu­det omis­ta­jal­le). Voit määrittää nämä käyt­tö­oi­keu­det seu­raa­val­la ko­men­nol­la:

chmod 755 /opt/shell-login.sh
bash

Vaihe 6: Estä käyt­tä­mät­tö­mät portit

Avoimet portit eivät yleensä aiheuta mer­kit­tä­vää tie­to­tur­va­ris­kiä, sillä ne ovat vält­tä­mät­tö­miä vies­tin­näl­le eri pal­ve­lui­den ja so­vel­lus­ten kanssa. Esi­mer­kik­si portit 80 ja 443 ovat vält­tä­mät­tö­miä HTTP- ja HTTPS-yh­teyk­sil­le, samoin kuin va­lit­se­ma­si SSH-portti. Nämä ra­ja­pin­nat voivat kuitenkin muuttua haa­voit­tu­vuuk­sik­si, jos niihin liit­ty­vis­sä oh­jel­mis­sa on tie­to­tur­va-aukkoja, joita hyök­kää­jät voivat hyödyntää.

Jos olet suo­rit­ta­nut jär­jes­tel­män pe­rus­a­sen­nuk­sen ja asentanut vain muutamia kolmannen osapuolen so­vel­luk­sia, tar­vit­ta­vien li­sä­port­tien määrä on to­den­nä­köi­ses­ti pieni. Suo­jaak­se­si pal­ve­li­me­si hyök­käyk­sil­tä sinun tulisi estää kaikki tar­peet­to­mat avoimet portit pa­lo­muu­ria­se­tuk­sis­sa­si. Useim­mis­sa ylei­sim­mis­sä käyt­tö­jär­jes­tel­mis­sä on ole­tusar­voi­ses­ti mukana pa­ket­ti­suo­da­tus­oh­jel­mis­to, kuten iptables. Tämän työkalun avulla voit määrittää sääntöjä da­ta­lii­ken­teen hal­lit­se­mi­sek­si, mukaan lukien sal­lit­tu­jen ja es­tet­ty­jen porttien mää­rit­tä­mi­nen.

Vaihe 7: Päivitä oh­jel­mis­to sään­nöl­li­ses­ti

So­vel­lus­tentunnetut tie­to­tur­va-aukot korjataan yleensä nopeasti päi­vi­tys­ten avulla. Pysymällä ajan tasalla käyt­tö­jär­jes­tel­män ja asen­net­tu­jen so­vel­lus­ten päi­vi­tyk­sis­tä sekä asen­ta­mal­la ne vii­py­mät­tä varmistat pal­ve­li­me­si op­ti­maa­li­sen suojan. Useim­mis­sa pal­ve­lin­jär­jes­tel­mis­sä on myös omi­nai­suuk­sia, jotka lataavat ja asentavat kriit­ti­set tie­to­tur­va­päi­vi­tyk­set au­to­maat­ti­ses­ti taustalla.

Esi­mer­kik­si, jos olet suo­jaa­mas­sa Windows-pal­ve­lin­ta, Windows Update -osiossa voit määrittää au­to­maat­ti­sia päi­vi­tyk­siä koskevia erityisiä käy­tän­tö­jä. Tähän sisältyy sen mää­rit­tä­mi­nen, milloin ja kuinka usein päi­vi­tyk­siä tar­kis­te­taan, asen­ne­taan­ko ne vä­lit­tö­mäs­ti ja milloin jär­jes­tel­mä käyn­nis­te­tään uudelleen. Linux-jär­jes­tel­mis­sä on käy­tet­tä­vis­sä työkaluja, kuten apt-listchanges tai apticron, jotka il­moit­ta­vat päi­vit­täin uusista saa­ta­vil­la olevista oh­jel­mis­to­pa­ke­teis­ta ja lataavat ne. Muita ko­men­to­sar­jo­ja, kuten unattended-upgrades, voidaan käyttää au­to­maat­ti­seen asen­nuk­seen.

Huomio

Vaikka käytätkin au­to­maat­tis­ta päi­vi­tyspro­ses­sia, varmista, että pidät kirjaa suo­ri­te­tuis­ta päi­vi­tyk­sis­tä. Tämä auttaa tun­nis­ta­maan ja kor­jaa­maan päi­vi­tyspro­ses­sin aikana mah­dol­li­ses­ti ilmeneviä virheitä.

Vaihe 8: Suojaa Windows- ja Linux-pal­ve­li­met brute force -hyök­käyk­sil­tä

Yksi yk­sin­ker­tai­sim­mis­ta ja ylei­sim­mis­tä hyök­käys­me­ne­tel­mis­tä on brute force -hyökkäys. Täl­lai­ses­sa hyök­käyk­ses­sä hakkerit käyttävät työkaluja, joilla ne ko­kei­le­vat salasanaa tois­tu­vas­ti. Ottamalla käyttöön vahvat sa­la­sa­nan­hal­lin­ta­käy­tän­nöt voit vähentää mer­kit­tä­väs­ti tämän me­ne­tel­män on­nis­tu­mi­sen to­den­nä­köi­syyt­tä.

Jos pal­ve­li­me­si tarjoaa palveluja, jotka edel­lyt­tä­vät käyt­tä­jien kir­jau­tu­mis­ta, et voi kui­ten­kaan olettaa, että kaikki käyttäjät nou­dat­ta­vat vahvojen sa­la­sa­no­jen käy­tän­tö­jä. Ana­lyy­si­työ­ka­lut voivat auttaa vä­hen­tä­mään tätä riskiä: Fail2banin (Linux/POSIX-jär­jes­tel­mät) tai Rdp­Guar­din (Windows) kaltaiset ratkaisut valvovat pal­ve­li­men lo­ki­tie­dos­to­ja, ha­vait­se­vat epä­ta­val­lis­ta käyt­täy­ty­mis­tä ja estävät epäi­lyt­tä­vät IP-osoitteet. Voit määrittää, kuinka monta epä­on­nis­tu­nut­ta kir­jau­tu­mis­yri­tys­tä sallitaan ennen estämistä, sekä eston keston.

Vaihe 9: Käytä seu­ran­ta­työ­ka­lu­ja

Pal­ve­li­men tie­to­tur­van yl­lä­pi­tä­mi­sek­si on eh­dot­to­man tärkeää varmistaa, että lait­teis­ton ja oh­jel­mis­to­jen välinen vuo­ro­vai­ku­tus toimii tar­koi­te­tul­la tavalla. Kyseessä ei ole ker­ta­luon­tei­nen tehtävä, vaan jatkuva vastuu, joka vaatii jatkuvaa huomiota. Koska jär­jes­tel­mäs­sä on lukuisia erilaisia pro­ses­se­ja, on suo­si­tel­ta­vaa ottaa val­von­ta­työ­ka­lut käyttöön jo alusta alkaen. Nämä työkalut seuraavat kaikkea pal­ve­li­men toimintaa ja il­moit­ta­vat poik­kea­mis­ta.

Tähän tar­koi­tuk­seen sopiva selkeä ja helposti kon­fi­gu­roi­ta­va ohjelma on Monit, joka voidaan asentaa pa­ket­ti­hal­lin­nan kautta useisiin Linux-ja­ke­lui­hin. Tämä avoimen läh­de­koo­din sovellus (GNU-AGPL-lisenssi) pystyy valvomaan pro­ses­se­ja, tie­dos­to­ja, pil­vi­pal­ve­lui­ta, isän­tä­ko­nei­ta, ohjelmia tai skriptejä sekä jär­jes­tel­män re­surs­se­ja, kuten pro­ses­so­rin ja muistin käyttöä. Kat­ta­vam­paa valvontaa varten kannattaa harkita Nagiosia, avoimen läh­de­koo­din työkalua, joka on saa­ta­vil­la Linuxille ja Win­dow­sil­le. Nagiosia voidaan myös laajentaa Nagios-laa­jen­nuk­sil­la.

Vaihe 10: Var­muus­ko­pioi­den mää­rit­tä­mi­nen

Suo­si­tel­lut mää­ri­tys­toi­men­pi­teet pa­ran­ta­vat pal­ve­li­me­si tie­to­tur­vaa mer­kit­tä­väs­ti. Edes parhaat mää­ri­tyk­set ja huo­lel­li­nen ylläpito eivät kui­ten­kaan voi taata 100-pro­sent­tis­ta suojaa. Kattava var­muus­ko­pioin­ti­stra­te­gia on keskeinen osa tie­to­tur­va­jär­jes­tel­mää­si, sillä sen avulla voit palauttaa tiedostot tietojen me­ne­tyk­sen sattuessa.

Käy­tös­sä­si on monia luo­tet­ta­via työkaluja var­muus­ko­pioi­den luomiseen ja pa­laut­ta­mi­seen. Yksi ilmainen vaih­toeh­to on avoimen läh­de­koo­din synk­ro­noin­ti­työ­ka­lu rsync, joka on yh­teen­so­pi­va useimpien ylei­sim­pien alustojen (macOS, Windows, Linux) kanssa. Tämä työkalu pitää var­muus­ko­pio­si ajan tasalla re­aa­lia­jas­sa pei­laa­mal­la kaikki al­ku­pe­räi­siin tietoihin tehdyt muutokset.

Yleisen pal­ve­lin­var­muus­ko­pioin­nin lisäksi varmista, että var­muus­ko­pioit myös tie­to­kan­nat.

Huomio

Var­mis­taak­se­si var­muus­ko­pioi­den tur­val­li­suu­den mah­dol­li­sim­man hyvin, tallenna var­muus­ko­piot ul­koi­sil­le tal­len­nus­lait­teil­le (esim. kan­net­ta­vil­le kiin­to­le­vyil­le tai li­sä­pal­ve­li­mil­le) sen sijaan, että tal­len­tai­sit ne suo­jat­ta­val­le pal­ve­li­mel­le.

Siirry pää­va­lik­koon