Linux VPS-palvelimen käyttöönotto, suojaus ja optimointi

Tämä opas käy läpi Debian-pohjaisen VPS-palvelimen turvallisen käyttöönoton vaihe vaiheelta. Jokainen komento on selitetty, jotta tiedät mitä teet ja miksi.

Ennen kuin aloitat

Uusi VPS-palvelin on verkossa näkyvä kohde heti käynnistymisestä lähtien. Automatisoidut botit skannaavat koko internetin jatkuvasti ja löytävät palvelimesi muutamassa minuutissa. Tämän takia suojaus pitää tehdä ennen kuin asennat mitään muuta.

Tarvitset:
  • VPS-palvelimen IP-osoitteen
  • Root-salasanan (jonka sait palveluntarjoajalta
  • Terminaalin omalla koneellasi.

1. Kirjaudu sisään ja päivitä järjestelmä

Kirjaudu palvelimelle ensimmäistä kertaa root-käyttäjänä. Tämä on ainoa kerta kun käytät root-tunnusta suoraan.

ssh root@PALVELIMEN_IP

Päivitä järjestelmä heti. Monet palvelinmurrot hyödyntävät tunnettuja haavoittuvuuksia, jotka olisi voitu estää pelkällä päivityksellä.

apt update        # hae lista saatavilla olevista päivityksistä
apt upgrade -y    # asenna kaikki päivitykset

2. Luo uusi käyttäjä

Root-käyttäjällä on rajattomat oikeudet, jos hyökkääjä pääsee sisään rootina, koko palvelin on välittömästi vaarantunut. Luodaan tavallinen käyttäjä päivittäiseen käyttöön.Komento kysyy salasanan ja muutaman valinnaisen tiedon. Paina Enter ohittaaksesi turhat kentät.

adduser kayttaja    # korvaa 'kayttaja' haluamallasi nimellä

Anna käyttäjälle sudo-oikeudet, jotta hän voi suorittaa ylläpitotoimia tarvittaessa.

usermod -aG sudo kayttaja    # lisää käyttäjä sudo-ryhmään

Vaihda uuteen käyttäjään ja varmista että sudo toimii. Komennon pitäisi tulostaa root.

su - kayttaja
sudo whoami    # pitäisi tulostaa: root

3. SSH-avainpari

Salasanakirjautuminen on altis brute-force-hyökkäyksille, joissa botti kokeilee tuhansia salasanoja sekunnissa. SSH-avainpari on kryptografisesti turvallinen vaihtoehto  ilman oikeaa avainta sisään ei pääse.
Tee tämä omalla koneellasi, ei palvelimella. Komento luo kaksi tiedostoa: id_ed25519 (yksityinen avain, älä jaa kenellekään) ja id_ed25519.pub (julkinen avain).

ssh-keygen -t ed25519 -C "oma@email.com"    # -t = algoritmi, -C = kommentti avaimeen

Kopioi julkinen avain palvelimelle. Tämän jälkeen palvelin tunnistaa sinut avaimen perusteella.

ssh-copy-id kayttaja@PALVELIMEN_IP    # lisää avaimen palvelimen authorized_keys-tiedostoon

4. SSH-asetusten koventaminen

Nyt kun avainkirjautuminen toimii, lukitaan SSH tiukemmalle. Avataan SSH:n konfiguraatiotiedosto.

sudo nano /etc/ssh/sshd_config

Etsi tiedostosta nämä rivit ja muuta ne alla olevan mukaisiksi. Portin vaihto pois oletuksesta 22 vähentää automaattisia skannaushyökkäyksiä merkittävästi, koska suurin osa boteista kokeilee vain porttia 22.

Port 2222                   # vaihda SSH oletusportista 22
PermitRootLogin no          # estä root-kirjautuminen
PasswordAuthentication no   # estä salasanakirjautuminen
PubkeyAuthentication yes    # varmista että avainkirjautuminen on päällä

Tallenna tiedosto (Ctrl+X, sitten Y, sitten Enter) ja käynnistä SSH uudelleen.

sudo systemctl restart sshd
Tärkeää! 

Älä sulje nykyistä yhteyttä ennen kuin olet testannut uuden portin toimivan. Avaa uusi terminaali-ikkuna ja kokeile kirjautua.

ssh -p 2222 kayttaja@PALVELIMEN_IP    # -p = portti

5. Palomuuri

Palomuuri päättää mikä verkkoliikenne palvelimelle sallitaan. Suljetaan ensin kaikki, sitten avataan vain tarvittavat portit.

sudo ufw default deny incoming    # estä kaikki sisään tuleva liikenne oletuksena
sudo ufw default allow outgoing   # salli kaikki ulos menevä liikenne oletuksena

Avaa tarvittavat portit. Muista käyttää samaa SSH-porttia jonka valitsit vaiheessa 4.

sudo ufw allow 2222/tcp    # SSH (vaihda jos käytät eri porttia)
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS

Ota palomuuri käyttöön ja tarkista tila.

sudo ufw enable
sudo ufw status verbose    # näyttää kaikki aktiiviset säännöt

6. Fail2ban

Fail2ban seuraa lokeja ja estää automaattisesti IP-osoitteet, jotka yrittävät kirjautua liian monta kertaa väärin. Tämä on tärkeä lisäkerros palomuurin päälle.

sudo apt install fail2ban -y

Luodaan paikallinen konfiguraatiotiedosto. Käytetään jail.local-tiedostoa eikä muokata jail.conf-tiedostoa suoraan, koska päivitykset saattaisivat ylikirjoittaa sen.

sudo nano /etc/fail2ban/jail.local

Kirjoita tiedostoon seuraava. Muista vaihtaa portti vastaamaan valitsemaasi SSH-porttia.

[DEFAULT]
bantime  = 1h     # bännitty IP estetään tunnin ajaksi
findtime = 10m    # tarkastellaan 10 minuutin aikaikkunaa
maxretry = 5      # 5 epäonnistunutta yritystä johtaa banniin

[sshd]
enabled = true
port    = 2222    # vaihda SSH-porttisi mukaan

Käynnistä Fail2ban ja aseta se käynnistymään automaattisesti.

sudo systemctl enable fail2ban    # käynnisty automaattisesti palvelimen uudelleenkäynnistyksessä
sudo systemctl start fail2ban     # käynnistä heti
sudo fail2ban-client status sshd  # tarkista että SSH-suojaus on aktiivinen

7. Automaattiset tietoturvapäivitykset

Manuaalinen päivittäminen unohtuu helposti. unattended-upgrades asentaa tietoturvapäivitykset automaattisesti taustalla ilman toimenpiteitä.

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades    # valitse Yes avautuvasta valikosta

Tarkista että asetus tallentui oikein. Molemmilla riveillä pitäisi lukea "1".

cat /etc/apt/apt.conf.d/20auto-upgrades

8. Swap-muisti

VPS-palvelimilla on usein rajallisesti RAM-muistia. Swap on levytilaa, jota käytetään varamuistina kun RAM loppuu. ilman sitä palvelin voi kaatua liikennepiikkien aikana. Luodaan 2 gigatavun swap-tiedosto. Muuta kokoa tarpeen mukaan pienelle palvelimelle 1G riittää, isommalle voi laittaa 4G.

sudo fallocate -l 2G /swapfile    # varaa 2G levytilaa
sudo chmod 600 /swapfile          # vain root voi lukea tiedoston
sudo mkswap /swapfile             # alusta swap-muistiksi
sudo swapon /swapfile             # ota käyttöön heti

Tee asetuksesta pysyvä lisäämällä swap /etc/fstab-tiedostoon, joka määrittää mitä otetaan käyttöön käynnistyksen yhteydessä.

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Säädä vielä swappiness-arvo. Oletusarvo 60 siirtää dataa swapiin melko aggressiivisesti arvo 10 pitää datan RAM:issa pidempään ja siirtyy swapiin vasta kun on pakko.

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p    # lataa asetukset heti ilman uudelleenkäynnistystä

9. Varmuuskopiot

Tietoturvakovennukset eivät auta jos kovalevy hajoaa tai poistat vahingossa tärkeän hakemiston. Varmuuskopiot ovat välttämättömät.

Asennetaan rsync, joka on tehokas työkalu tiedostojen kopiointiin.

sudo apt install rsync -y

Luodaan skripti joka kopioi tärkeimmät hakemistot automaattisesti. Skripti tallentaa kopiot päivättyihin kansioihin ja siivoaa yli 30 päivää vanhat versiot automaattisesti.

sudo nano /usr/local/bin/varmuuskopio.sh

Kirjoita tiedostoon:

#!/bin/bash
PAIVAMAARA=$(date +%Y-%m-%d)    # hae tämän päivän päivämäärä
KOHDE="/backup/$PAIVAMAARA"     # kohdepolku esim. /backup/2025-01-30

mkdir -p $KOHDE                          # luo kohdepolku jos ei ole olemassa
rsync -av /etc/ $KOHDE/etc/              # kopioi järjestelmäasetukset
rsync -av /var/www/ $KOHDE/www/          # kopioi verkkosivut
rsync -av /home/ $KOHDE/home/            # kopioi käyttäjien kotihakemistot

find /backup -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;    # poista yli 30pv vanhat

Anna skriptille suoritusoikeudet ja ajasta se pyörimään joka yö kello 03:00.

sudo chmod +x /usr/local/bin/varmuuskopio.sh    # anna suoritusoikeudet
sudo crontab -e                                  # avaa cron-editori

Lisää cron-editorin loppuun tämä rivi ja tallenna:

0 3 * * * /usr/local/bin/varmuuskopio.sh    # aja joka yö klo 03:00

10. Tarkistuslista

sudo ufw status verbose           # palomuuri päällä ja säännöt oikein?
sudo systemctl status sshd        # SSH toimii?
sudo systemctl status fail2ban    # Fail2ban toimii?
sudo swapon --show                # swap aktiivinen?
sudo unattended-upgrade --dry-run # automaattiset päivitykset OK? (dry-run = testiajo)
Auttoiko artikkeli teitä? 0 käyttäjistä hyötyivät artikkelista (0 Äänet)