Kaip saugiai paruošti VPS serverį: 10 žingsnių

Paskutinį kartą atnaujinta: 2026-09-24 · Ovanap Team, knygos „Linux nuo nulio“ autoriai (leidėjas – Ovanap, Monine AS)

Trumpas atsakymas: naują Ubuntu VPS serverį apsaugosi taip: prisijungi SSH raktu, sukuri paprastą vartotoją su sudo, ufw ugniasienėje leidi SSH prieš ją įjungdamas, o tada faile kataloge /etc/ssh/sshd_config.d/ uždarai root ir slaptažodžių prisijungimus. Automatinius saugumo atnaujinimus palik įjungtus. Svarbiausia – būtent tokia tvarka, visą laiką laikant atidarytą antrą SSH sesiją, o tiekėjo web konsolę – kaip kelią atgal.

Svarbiausia

  • sshd daugumai nustatymų taiko pirmąją perskaitytą reikšmę, o Include failus apdoroja abėcėlės tvarka. Todėl failas 00-… nugali cloud-init failą 50-… (sshd_config vadovas).
  • Docker atveriami prievadai apeina ufw. Docker dokumentacijoje rašoma, kad srautas į konteinerių prievadus nukreipiamas anksčiau, nei jam pritaikomos ufw taisyklės (Docker dokumentacija).
  • Ubuntu unattended-upgrades įdiegia pagal numatymą, ir šis paketas saugumo atnaujinimus diegia automatiškai (Ubuntu Server dokumentacija).
  • Ubuntu 26.04 numatytasis sudo yra sudo-rs (leidimo pastabos), todėl slaptažodžio užklausa atrodo kitaip.
  • Tiekėjo web konsolė veikia net tada, kai SSH ir ugniasienė sugadintos. Renkantis VPS ji privaloma.

Naujas VPS serveris (virtualus privatus serveris) visam internetui pasiekiamas jau po minutės nuo sukūrimo, o robotai bandyti prisijungti pradeda per kelias valandas – dažniausiai vardu root. Gera žinia: pradedančiajam reikalinga apsauga trumpa, gerai išbandyta ir nemokama.

Tik yra viena sąlyga – tvarka. Kiekvienas žemiau aprašytas žingsnis paprastas, bet sukeitus du iš jų vietomis galima užsirakinti nuo savo paties serverio. Todėl šis sąrašas parašytas Ubuntu Server 26.04 LTS sistemai tokia tvarka, kad kiekviename žingsnyje liktų kelias atgal.

Pavyzdžiuose serverio adresas – 203.0.113.10 (dokumentacijai rezervuota adresų sritis), o naujas vartotojas – admin. Visur įrašyk savo reikšmes.

Aukso taisyklė: visada dvi sesijos

Kol nebaigei, laikyk dvi atidarytas SSH sesijas dviejuose terminalo languose. Vienoje dirbi, kitą paliki ramybėje – tai atsarginės išėjimo durys. Niekada neuždaryk paskutinio veikiančio prisijungimo, kol naujame lange nepatikrinai, kad prisijungti vis dar įmanoma.

1 žingsnis: rinkis tiekėją su web konsole

Prieš mokėdamas patikrink penkis dalykus: duomenų centras arti tavęs ir tavo lankytojų, kaina, atsarginės kopijos, Ubuntu 26.04 LTS atvaizdas ir web konsolė. Konsolė – tai tavo serverio ekranas ir klaviatūra naršyklėje. Ji veikia net tada, kai SSH ir ugniasienė sugadintos, todėl yra tavo apsauginis tinklas visiems tolesniems žingsniams. Tiekėjas be web konsolės pradedančiajam netinka.

Pradžiai pakanka plano su 1–2 GB RAM ir vienu branduoliu. Mūsų VPS tiekėjų palyginime – tik tai, ką pavyko patikrinti oficialioje dokumentacijoje.

2 žingsnis: viešąjį SSH raktą pridėk kurdamas serverį

SSH raktų pora – tai du failai: privatusis raktas, kuris niekada nepalieka tavo kompiuterio, ir viešasis raktas, kurį duodi serveriams, kad jie tave atpažintų. Jei raktų poros dar neturi, susikurk ją savo kompiuteryje (ssh-keygen -t ed25519), o tada atspausdink viešąją dalį:

cat ~/.ssh/id_ed25519.pub

Šią vieną eilutę, prasidedančią ssh-ed25519, įklijuok į tiekėjo formos lauką „SSH key“. Iš tavo kompiuterio iškeliauja tik failas su galūne .pub. Jei forma prašo privačiojo rakto – sustok: taip niekada neturi būti.

3 žingsnis: pirmas prisijungimas ir antspaudo palyginimas

ssh root@203.0.113.10

Jungiantis pirmą kartą, SSH parodo serverio antspaudą (angl. fingerprint). Jei tiekėjo skydelyje jis rodomas, prieš rašydamas yes palygink. Tada apsidairyk: whoami, hostname, ls /home. Tai paskutinis kartas, kai root reikalingas tiesiogiai.

4 žingsnis: sukurk paprastą vartotoją su sudo

sudo adduser admin
sudo usermod -aG sudo admin

Slaptažodį rinkis stiprų: jo reikės sudo patvirtinimui ir web konsolei. Atkreipk dėmesį į mažąją -a (angl. append – „pridėk“): be jos usermod -G ne pridėtų grupę, o pakeistų visas vartotojo grupes – klasikinė naujokų klaida.

5 žingsnis: patikrink naują vartotoją antrame lange

Root langą palik atidarytą. Naujame terminale:

ssh admin@203.0.113.10
sudo whoami

Atsakymas turi būti root. Ubuntu 26.04 naudoja sudo-rs, todėl slaptažodžio užklausa atrodo taip: [sudo: authenticate] Password: – tai normalu. Jei vietoj to gauni atsisakymą, pataisyk grupę iš root lango, tada atsijunk ir prisijunk iš naujo.

Jei šis prisijungimas baigiasi Permission denied (publickey), tavo tiekėjas slaptažodžių prisijungimą jau išjungė. Tai ne tavo klaida: patikrą atlik per web konsolę, o kitame žingsnyje naudok alternatyvų būdą.

6 žingsnis: perduok raktą naujam vartotojui

Iš savo kompiuterio:

ssh-copy-id admin@203.0.113.10

Jei slaptažodžiai jau išjungti, raktą nukopijuok iš vis dar atidarytos root sesijos:

sudo mkdir -p /home/admin/.ssh
sudo cp /root/.ssh/authorized_keys /home/admin/.ssh/
sudo chown -R admin:admin /home/admin/.ssh

Dabar ssh admin@203.0.113.10 naujame lange turi įleisti be jokios slaptažodžio užklausos. Kol to nepamatei, toliau neik.

7 žingsnis: ugniasienė – SSH leidimas pirmiausia

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Ugniasienė (angl. firewall) sprendžia, kokie įeinantys ryšiai įleidžiami, o ufw (angl. uncomplicated firewall) – paprastas Ubuntu įrankis jai valdyti. Visa esmė – tvarka. enable be SSH taisyklės užblokuoja visus naujus įeinančius ryšius, įskaitant tavo paties. Į perspėjimą apie galimai sutrikdomus SSH ryšius atsakyk y. Būsenoje turi matyti Status: active, Default: deny (incoming), allow (outgoing) ir vieną taisyklę: 22/tcp (OpenSSH) ALLOW IN Anywhere. (Jei sumažintame atvaizde ufw nėra, įdiek: sudo apt install ufw.)

Ir vėl aukso taisyklė: prieš eidamas toliau, prisijunk iš naujo lango.

8 žingsnis: uždaryk root ir slaptažodžius SSH paslaugoje

Čia iš interneto nukopijuotos instrukcijos dažniausiai nesuveikia – ir tyliai. Pagrindinis Ubuntu failas /etc/ssh/sshd_config prijungia visus .conf failus iš katalogo /etc/ssh/sshd_config.d/, o sshd taiko pirmąją perskaitytą reikšmę. Debesų atvaizduose dažnai guli 50-cloud-init.conf; jei jame parašyta PasswordAuthentication yes, pagrindinio failo keitimas nieko nepakeis. Todėl susikurk savo failą, kuris perskaitomas pirmas:

ls /etc/ssh/sshd_config.d/
sudo nano /etc/ssh/sshd_config.d/00-saugumas.conf

Įrašyk dvi eilutes, išsaugok (Ctrl+O, Enter) ir išeik (Ctrl+X):

PermitRootLogin no
PasswordAuthentication no

Patikrink sintaksę, pritaikyk ir įsitikink, kokios reikšmės iš tiesų galioja:

sudo sshd -t
sudo systemctl reload ssh
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'

sshd -t tyli, kai sintaksė teisinga. Paskutinė komanda turi atspausdinti permitrootlogin no ir passwordauthentication no. Atkreipk dėmesį į paslaugos vardą: Ubuntu sistemoje ji vadinasi ssh, ne sshd.

Galutinė patikra, kol abu senieji langai dar atidaryti: ssh root@203.0.113.10 turi būti atmestas su Permission denied (publickey), o ssh admin@203.0.113.10 – įleisti raktu. „Root atmestas, admin įleistas“ – dabar root langą jau gali uždaryti.

9 žingsnis: automatiniai saugumo atnaujinimai

sudo apt install unattended-upgrades
cat /etc/apt/apt.conf.d/20auto-upgrades

Abi eilutės turi baigtis "1". Jei failo nėra arba matai "0", paleisk sudo dpkg-reconfigure -plow unattended-upgrades ir atsakyk Yes. Daugelyje Ubuntu atvaizdų paketas jau įdiegtas – tada apt tiesiog tai pasakys.

10 žingsnis: kelią atgal suplanuok iš anksto

  • Žinok, kaip grįžti. Užsirakinai po ufw enable? Web konsolė → sudo ufw allow OpenSSH. SSH nustojo veikti po pakeitimo? Web konsolė → 00-saugumas.conf eilutes užkomentuok ženklu #, tada sudo sshd -t ir sudo systemctl reload ssh. Pametei privatųjį raktą? Web konsolė → naują viešąjį raktą įrašyk į /home/admin/.ssh/authorized_keys.
  • Įjunk atsargines kopijas pas tiekėją kaip pirmąjį sluoksnį, tada pasidaryk savo kopiją „kitur“ ir išbandyk ją atkurdamas. Galimybės ir šifruotos kopijos pavyzdys – priede apie atsargines kopijas.
  • Jei vėliau diegsi Docker: Docker atveriami prievadai apeina ufw. Visada susiek juos su localhost, pavyzdžiui, "127.0.0.1:3000:8080", o išorėn publikuok per nginx. Dabartinės diegimo eilutės – Docker priede.

Apie patarimą „pakeisk SSH prievadą“

Patarimas populiarus, bet nebūtinas: slaptažodžių spėliojimą iš tiesų sustabdo prisijungimas tik raktu. Jei vis dėlto keisi, Ubuntu 26.04 sistemoje senos instrukcijos (Port 2222 ir systemctl restart sshd) neveiks: paslauga vadinasi ssh, o prievadą tvarko ssh.socket. Pirmiausia reikėtų sudo ufw allow 2222/tcp, tada sudo systemctl daemon-reload ir sudo systemctl restart ssh.socket, o bandyti – ssh -p 2222 admin@203.0.113.10, senąjį langą laikant atidarytą. Platesnė pamoka: prieš vykdydamas bet kurią instrukciją, patikrink, kuriai sistemai ji parašyta.

Dažni klausimai

Ką pirmiausia daryti su nauju VPS serveriu? Sukurti paprastą vartotoją su sudo teise ir įsitikinti, kad juo gali prisijungti SSH raktu, pirmąją sesiją laikant atidarytą. Tik tada įjungti ugniasienę ir uždaryti root bei slaptažodžių prisijungimus.

Kodėl ufw mane išmetė iš serverio? Beveik visada todėl, kad ufw buvo įjungta anksčiau, nei leistas SSH. Jei jau užsirakinai, prisijunk per tiekėjo web konsolę ir paleisk sudo ufw allow OpenSSH.

Įrašiau PasswordAuthentication no, bet slaptažodžiu vis tiek įleidžia. Kodėl? Failas kataloge /etc/ssh/sshd_config.d/ (dažnai 50-cloud-init.conf) gali grąžinti yes, o sshd naudoja pirmąją perskaitytą reikšmę. Naudok 00- failą ir patikrink su sudo sshd -T.

Ar reikia keisti SSH prievadą? Nebūtina, ir tai neatstoja prisijungimo tik raktu. Ubuntu 26.04 sistemoje tai susiję su ssh.socket, todėl naudok naujas instrukcijas ir pirmiausia leisk naują prievadą ufw ugniasienėje.

Ar ufw saugo Docker konteinerius? Pati savaime – ne. Docker atveriami prievadai apeina ufw. Susiek juos su 127.0.0.1 ir naudok atvirkštinį tarpinį serverį.

Nuo saugaus serverio iki naudingo

Šis sąrašas – vieno knygos „Linux nuo nulio“ skyriaus santrauka. Knygoje tai visa laboratorija: kiekviena komanda paaiškinta (ką atlieki, kodėl, kas pasikeis, kaip patikrinti ir kokia rizika), o kiekvienai klaidai – ramus grįžimo kelias. Toliau knyga veda prie svetainės su savo domenu ir HTTPS, išbandytų atsarginių kopijų, Docker ir savo AI pagalbininko tame pačiame serveryje – apie tai rašome straipsnyje Savo AI pagalbininkas savo serveryje.

Pirmiausia perskaityk nemokamą ištrauką (įvadas ir visas terminalo skyrius, registruotis nereikia). Jei toks mokymosi būdas tinka, knyga – čia.