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

Tämä opas käy läpi RHEL-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ä.

dnf update -y    # päivitä kaikki paketit uusimpaan versioon (-y hyväksyy automaattisesti)

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.

adduser kayttaja      # luo uusi käyttäjä
passwd kayttaja       # aseta salasana (RHEL ei kysy sitä automaattisesti)

Anna käyttäjälle wheel-oikeudet. 

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

Vaihda uuteen käyttäjään ja varmista että sudo toimii:

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.

ssh-keygen -t ed25519 -C "oma@email.com"    # luo avainpari

Kopioi julkinen avain palvelimelle:

ssh-copy-id kayttaja@PALVELIMEN_IP    # lisää avaimen palvelimelle

4. Palomuuri

Palomuuri päättää mikä verkkoliikenne palvelimelle sallitaan.

Ensimmäisenä asennetaan palomuuri

sudo dnf install firewalld -y
sudo systemctl enable firewalld    # käynnistä automaattisesti bootissa

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

sudo firewall-cmd --permanent --add-port=2222/tcp    # SSH (oma portti)
sudo firewall-cmd --permanent --add-service=http     # HTTP
sudo firewall-cmd --permanent --add-service=https    # HTTPS
sudo systemctl start firewalld     # käynnistä heti

Lataa asetukset.

sudo firewall-cmd --reload    # ottaa muutokset käyttöön

Tarkista tila.

sudo firewall-cmd --list-all    # näyttää aktiiviset säännöt

5. SSH-asetusten koventaminen

Jotta nano komennot toimivat tässä ympäristössä, pitää asentaa nano.

sudo dnf install nano -y

Nyt kun avainkirjautuminen toimii, lukitaan SSH tiukemmalle.

sudo nano /etc/ssh/sshd_config

Etsi ja muuta:

Port 2222                   # vaihda oletusportti 22 → vähentää bottiskannauksia
PermitRootLogin no          # estä root-kirjautuminen kokonaan
PasswordAuthentication no   # estä salasanakirjautuminen
PubkeyAuthentication yes    # varmista että avainkirjautuminen on käytössä

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

6. Fail2ban

Fail2ban estää automaattisesti IP-osoitteet, jotka yrittävät kirjautua väärillä tunnuksilla.

Asennus vaatii EPEL-repositorion.

sudo dnf install epel-release -y
sudo dnf 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     # IP estetään tunniksi
findtime = 10m    # tarkasteluaika
maxretry = 5      # sallittujen virheiden määrä

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

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

sudo systemctl enable fail2ban    # käynnistyy automaattisesti
sudo systemctl start fail2ban     # käynnistä heti
sudo fail2ban-client status sshd  # tarkista tila

7. Automaattiset tietoturvapäivitykset

Manuaalinen päivittäminen unohtuu helposti.

sudo dnf install dnf-automatic -y

Ota käyttöön.

sudo systemctl enable --now dnf-automatic.timer    # ajastettu päivitys

Halutessasi muokkaa asetuksia.

sudo nano /etc/dnf/automatic.conf

Tiedoston sisällä.

apply_updates = yes    # asentaa päivitykset automaattisesti

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 2 gigatavua levyltä
sudo chmod 600 /swapfile          # vain root saa käyttää
sudo mkswap /swapfile             # alustaa swapiksi
sudo swapon /swapfile             # ottaa käyttöön

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

Optimointi.

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

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 dnf 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)    # tämän päivän päivämäärä
KOHDE="/backup/$PAIVAMAARA"     # kohdekansio

mkdir -p $KOHDE                          # luo kansio jos puuttuu
rsync -av /etc/ $KOHDE/etc/              # järjestelmäasetukset
rsync -av /var/www/ $KOHDE/www/          # web-sisältö
rsync -av /home/ $KOHDE/home/            # käyttäjät

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
sudo crontab -e

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 firewall-cmd --list-all           # 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 systemctl status dnf-automatic.timer  # automaattiset päivitykset OK?
Auttoiko artikkeli teitä? 0 käyttäjistä hyötyivät artikkelista (0 Äänet)