Kuinka suojata palvelin
Palvelimen turvallinen konfigurointi on yksi järjestelmänvalvojien tärkeimmistä tehtävistä. Tämä koskee paitsi itse hallinnoitavia palvelimia myös vuokrattua laitteistoa. Salasanasuojaus, luotettavat SSH-asetukset ja säännölliset päivitykset muodostavat kattavan tietoturvapaketin.
Kuka vastaa palvelimen turvallisesta konfiguroinnista?
Oman palvelimen ylläpito tarjoaa suurimman mahdollisen vapauden konfiguroinnissa. Hyvä vaihtoehto ovat root-palvelimet, joita monet palveluntarjoajat tarjoavat ja joihin annetaan root-käyttäjän oikeudet. Molemmissa tapauksissa kriittiset tehtävät, kuten asennus, rakenne ja ylläpito, ovat kokonaan vuokraajan vastuulla. Virheet root-alueella voivat aiheuttaa vakavia ongelmia. Oikeiden menettelytapojen noudattaminen luo kuitenkin ihanteellisen perustan luotettavalle, suorituskykyiselle ja turvalliselle palvelimelle.
Kuinka suojata palvelimesi vaihe vaiheelta
Haluatpa sitten suojata Windows-, Ubuntu- tai Debian-palvelimen, muutamalla yleispätevällä toimenpiteellä voit luoda vankan tietoturvapohjan. Seuraavassa esittelemme tärkeimmät vaiheet.
Vaihe 1: Suorita perusasennus
Jo ennen kuin ryhdyt suojatoimiin ja palvelimen määrittämiseen, voit vaikuttaa projektisi tulevaisuuden tietoturvamahdollisuuksiin. Käytitpä sitten Windows- tai Linux-käyttöjärjestelmää, noudata tätä periaatetta asennuksen aikana: palvelimellasi tulisi olla vain ne ohjelmistot, joita se tarvitsee tehtäviensä suorittamiseen.
Syynä on se, että jokainen asennettu sovellus aiheuttaa potentiaalisen tietoturvariskin ja voi heikentää järjestelmän suorituskykyä. Haavoittuvuuksien minimoimiseksi kannattaa asentaa vain välttämättömät järjestelmäkomponentit ja käyttää yksinomaan luotettavaksi todettuja kolmannen osapuolen ohjelmistoja.
Vaihe 2: Aseta vahva salasana
Asennuksen jälkeen sinun tulisi ensimmäiseksi asettaa vahva järjestelmänvalvojan salasana (Windows) tai root-salasana (Linux). Oletusarvoisesti salasanaa ei ole määritetty, joten järjestelmänvalvojan tili pysyy lukittuna, kunnes syötät salasanan. Useimmat käyttöjärjestelmät kehottavat sinua luomaan salasanan sisältävän tilin heti asennuksen jälkeen; tätä salasanaa käytetään järjestelmänvalvojan tai root-käyttäjän kirjautumiseen.
Jos olet vuokrannut Linux-palvelimesi palveluntarjoajalta ja saanut valmiiksi määritetyn pääkäyttäjän tunnuksen, vaihda salasana välittömästi. Kirjaudu palvelimeesi SSH:n kautta ja kirjoita terminaaliin seuraava komento:
passwdbashKun olet asettanut turvallisen salasanan, sinun on vahvistettava se. Varmista, että valitset mahdollisimman pitkän salasanan, joka sisältää sekä kirjaimia, erikoismerkkejä että numeroita. On myös suositeltavaa käyttää salasananhallintaohjelmaa, jotta voit tallentaa salasanan turvallisesti ja käyttää sitä tarvittaessa helposti.
Vaihe 3: Muuta SSH-porttia
Oletusarvoisesti SSH-yhteys käyttää TCP/UDP-porttia 22, joka määritetään valmiiksi järjestelmän asennuksen yhteydessä. Hakkerit kohdistavat automaattiset kirjautumisyrityksensä usein juuri tähän porttiin. Vähennä luvattoman pääsyn riskiä määrittämällä salatuille etäyhteyksille eri portti.
Tätä varten muokkaa SSH-määritystiedostoa sshd_config millä tahansa tekstieditorilla. Jos haluat käyttää esimerkiksi nano-editoria, suorita seuraava komento:
nano /etc/ssh/sshd_configbashEtsi rivi, jossa lukee ”Port”, ja korvaa portin numero 22 haluamallasi numerolla. Muista, että eri palveluille on varattu useita muita vakioportteja (esim. portti 80 HTTP:lle).
Ennen kuin tiedoston sshd_config muutokset astuvat voimaan, sinun on käynnistettävä SSH-palvelu uudelleen. Debianissa tämä tapahtuu komennolla etc/init.d/ssh restart. Ubuntu-käyttäjien tulee käynnistää palvelu uudelleen komennolla service ssh restart.
Vaihe 4: Poista SSH-kirjautuminen käytöstä järjestelmänvalvojan tileillä
Palvelimen turvallisuuden parantamiseksi on suositeltavaa poistaa SSH-kirjautuminen käytöstä root- tai järjestelmänvalvojan tilillä. Muussa tapauksessa hyökkääjä voi käyttää tiliä etäkäyttöön, jos hän pääsee käsiksi salasanaan.
Ennen kuin otat tämän toimenpiteen käyttöön, varmista, että palvelimeen voi kirjautua ainakin yhdellä muulla tilillä, jotta et jää ulos järjestelmästä. Linux-järjestelmissä luo tällainen tili seuraavalla komennolla:
useradd -g users -d /home/user1 -m -s /bin/bash user1bashTämä luo esimerkkitilin nimeltä ”user1”. Määritä seuraavaksi tilille turvallinen salasana:
passwd user1bashTarkista, toimiiko kirjautuminen luodulla käyttäjätilillä. Jos kirjautuminen onnistuu, siirry päätehtävään: poista root-tili käytöstä. Avaa SSH-määritystiedosto sshd_config uudelleen haluamallasi tekstieditorilla. Etsi kohta PermitRootLogin yes ja korvaa se kohdalla PermitRootLogin no. Kun olet käynnistänyt SSH-palvelun uudelleen, etäkäyttö root-tilillä ei enää ole mahdollista.
Määrittämällä asetustiedoston 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ähköpostimuistutukset SSH-kirjautumisille
Riippumatta siitä, millaisia toimenpiteitä SSH-yhteyden suojaamiseksi toteutat, sinun tulisi seurata jatkuvasti kaikkia etätoimintoja niiden jälkeen. Näin voit varmistaa, että palvelimesi SSH-palvelu on suojattu asianmukaisesti, ja havaita luvattomat kirjautumisyritykset varhaisessa vaiheessa, jolloin voit reagoida tilanteeseen asianmukaisesti. Yksinkertainen shell-skripti voi lähettää automaattisesti ilmoituksen sähköpostitse osoitteeseesi aina, kun palvelimeesi on kirjauduttu etäyhteydellä.
Tässä on esimerkki skriptistä /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
fingertxtLisää seuraavaksi seuraava rivi tiedostoon /etc/profile:
/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.comtxtTämä asetus varmistaa, että skripti suoritetaan ja lähettää ilmoitussähköpostin määritettyyn osoitteeseen aina, kun SSH-kirjautuminen tapahtuu. Jotta tämä toimisi, skriptille on annettava käyttöoikeudet 755 (luku- ja suoritusoikeudet kaikille käyttäjille sekä kirjoitusoikeudet omistajalle). Voit määrittää nämä käyttöoikeudet seuraavalla komennolla:
chmod 755 /opt/shell-login.shbashVaihe 6: Estä käyttämättömät portit
Avoimet portit eivät yleensä aiheuta merkittävää tietoturvariskiä, sillä ne ovat välttämättömiä viestinnälle eri palveluiden ja sovellusten kanssa. Esimerkiksi portit 80 ja 443 ovat välttämättömiä HTTP- ja HTTPS-yhteyksille, samoin kuin valitsemasi SSH-portti. Nämä rajapinnat voivat kuitenkin muuttua haavoittuvuuksiksi, jos niihin liittyvissä ohjelmissa on tietoturva-aukkoja, joita hyökkääjät voivat hyödyntää.
Jos olet suorittanut järjestelmän perusasennuksen ja asentanut vain muutamia kolmannen osapuolen sovelluksia, tarvittavien lisäporttien määrä on todennäköisesti pieni. Suojaaksesi palvelimesi hyökkäyksiltä sinun tulisi estää kaikki tarpeettomat avoimet portit palomuuriasetuksissasi. Useimmissa yleisimmissä käyttöjärjestelmissä on oletusarvoisesti mukana pakettisuodatusohjelmisto, kuten iptables. Tämän työkalun avulla voit määrittää sääntöjä dataliikenteen hallitsemiseksi, mukaan lukien sallittujen ja estettyjen porttien määrittäminen.
Vaihe 7: Päivitä ohjelmisto säännöllisesti
Sovellustentunnetut tietoturva-aukot korjataan yleensä nopeasti päivitysten avulla. Pysymällä ajan tasalla käyttöjärjestelmän ja asennettujen sovellusten päivityksistä sekä asentamalla ne viipymättä varmistat palvelimesi optimaalisen suojan. Useimmissa palvelinjärjestelmissä on myös ominaisuuksia, jotka lataavat ja asentavat kriittiset tietoturvapäivitykset automaattisesti taustalla.
Esimerkiksi, jos olet suojaamassa Windows-palvelinta, Windows Update -osiossa voit määrittää automaattisia päivityksiä koskevia erityisiä käytäntöjä. Tähän sisältyy sen määrittäminen, milloin ja kuinka usein päivityksiä tarkistetaan, asennetaanko ne välittömästi ja milloin järjestelmä käynnistetään uudelleen. Linux-järjestelmissä on käytettävissä työkaluja, kuten apt-listchanges tai apticron, jotka ilmoittavat päivittäin uusista saatavilla olevista ohjelmistopaketeista ja lataavat ne. Muita komentosarjoja, kuten unattended-upgrades, voidaan käyttää automaattiseen asennukseen.
Vaikka käytätkin automaattista päivitysprosessia, varmista, että pidät kirjaa suoritetuista päivityksistä. Tämä auttaa tunnistamaan ja korjaamaan päivitysprosessin aikana mahdollisesti ilmeneviä virheitä.
Vaihe 8: Suojaa Windows- ja Linux-palvelimet brute force -hyökkäyksiltä
Yksi yksinkertaisimmista ja yleisimmistä hyökkäysmenetelmistä on brute force -hyökkäys. Tällaisessa hyökkäyksessä hakkerit käyttävät työkaluja, joilla ne kokeilevat salasanaa toistuvasti. Ottamalla käyttöön vahvat salasananhallintakäytännöt voit vähentää merkittävästi tämän menetelmän onnistumisen todennäköisyyttä.
Jos palvelimesi tarjoaa palveluja, jotka edellyttävät käyttäjien kirjautumista, et voi kuitenkaan olettaa, että kaikki käyttäjät noudattavat vahvojen salasanojen käytäntöjä. Analyysityökalut voivat auttaa vähentämään tätä riskiä: Fail2banin (Linux/POSIX-järjestelmät) tai RdpGuardin (Windows) kaltaiset ratkaisut valvovat palvelimen lokitiedostoja, havaitsevat epätavallista käyttäytymistä ja estävät epäilyttävät IP-osoitteet. Voit määrittää, kuinka monta epäonnistunutta kirjautumisyritystä sallitaan ennen estämistä, sekä eston keston.
Vaihe 9: Käytä seurantatyökaluja
Palvelimen tietoturvan ylläpitämiseksi on ehdottoman tärkeää varmistaa, että laitteiston ja ohjelmistojen välinen vuorovaikutus toimii tarkoitetulla tavalla. Kyseessä ei ole kertaluonteinen tehtävä, vaan jatkuva vastuu, joka vaatii jatkuvaa huomiota. Koska järjestelmässä on lukuisia erilaisia prosesseja, on suositeltavaa ottaa valvontatyökalut käyttöön jo alusta alkaen. Nämä työkalut seuraavat kaikkea palvelimen toimintaa ja ilmoittavat poikkeamista.
Tähän tarkoitukseen sopiva selkeä ja helposti konfiguroitava ohjelma on Monit, joka voidaan asentaa pakettihallinnan kautta useisiin Linux-jakeluihin. Tämä avoimen lähdekoodin sovellus (GNU-AGPL-lisenssi) pystyy valvomaan prosesseja, tiedostoja, pilvipalveluita, isäntäkoneita, ohjelmia tai skriptejä sekä järjestelmän resursseja, kuten prosessorin ja muistin käyttöä. Kattavampaa valvontaa varten kannattaa harkita Nagiosia, avoimen lähdekoodin työkalua, joka on saatavilla Linuxille ja Windowsille. Nagiosia voidaan myös laajentaa Nagios-laajennuksilla.
Vaihe 10: Varmuuskopioiden määrittäminen
Suositellut määritystoimenpiteet parantavat palvelimesi tietoturvaa merkittävästi. Edes parhaat määritykset ja huolellinen ylläpito eivät kuitenkaan voi taata 100-prosenttista suojaa. Kattava varmuuskopiointistrategia on keskeinen osa tietoturvajärjestelmääsi, sillä sen avulla voit palauttaa tiedostot tietojen menetyksen sattuessa.
Käytössäsi on monia luotettavia työkaluja varmuuskopioiden luomiseen ja palauttamiseen. Yksi ilmainen vaihtoehto on avoimen lähdekoodin synkronointityökalu rsync, joka on yhteensopiva useimpien yleisimpien alustojen (macOS, Windows, Linux) kanssa. Tämä työkalu pitää varmuuskopiosi ajan tasalla reaaliajassa peilaamalla kaikki alkuperäisiin tietoihin tehdyt muutokset.
Yleisen palvelinvarmuuskopioinnin lisäksi varmista, että varmuuskopioit myös tietokannat.
Varmistaaksesi varmuuskopioiden turvallisuuden mahdollisimman hyvin, tallenna varmuuskopiot ulkoisille tallennuslaitteille (esim. kannettaville kiintolevyille tai lisäpalvelimille) sen sijaan, että tallentaisit ne suojattavalle palvelimelle.