Kontrolni seznam po namestitvi Linuxa: začetna konfiguracija strežnika
Stopnja: začetnik / srednje napredni
Ocenjeni čas: ~40 minut
Cilj: Izvesti bistveno začetno konfiguracijo strežnika VPS z Linuxom – utrditi dostop SSH, ustvariti uporabnika s pravicami sudo, nastaviti požarni zid, vzpostaviti samodejne varnostne posodobitve in načrtovati osnovna vzdrževalna opravila s cronom.
Uvod
Prvih 30 minut po vzpostavitvi VPS je najpomembnejših. Sveže nameščen strežnik Linux je na stežaj odprt: prijava kot root prek SSH je običajno omogočena, pravil požarnega zidu ni, paketi pa so že zastareli. Ta kontrolni seznam po namestitvi Linuxa zajema vse pomembne korake za produkcijsko ali razvojno okolje – od ustvarjanja uporabnika s pravicami sudo in nastavitve overjanja s ključi SSH do omogočitve UFW in načrtovanja samodejnih varnostnih posodobitev. Če ta vodič izvedete enkrat, se zaščitite pred najpogostejšimi vektorji napadov, še preden na strežnik namestite karkoli drugega.
Vodič zajema instance VPS z operacijskimi sistemi Ubuntu, Debian in AlmaLinux (združljiv z RHEL).
Predpogoji
Preden začnete, poskrbite, da so izpolnjeni naslednji pogoji:
- Operacijski sistem: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 ali AlmaLinux 8/9/10
- Dostop: dostop SSH do strežnika kot root (z geslom ali ključem – med vodičem ga boste utrdili)
- Lokalni računalnik: na voljo odjemalec SSH (ssh v Linuxu/macOS, PuTTY ali Windows Terminal v sistemu Windows)
- Potrebno znanje: osnovno delo z ukazno vrstico Linuxa – premikanje po imenikih, urejanje datotek z urejevalnikom nano
- Ocenjeni čas: ~40 minut za prvi čisti prehod
Vodič je bil preizkušen na sistemih Ubuntu 24.04 LTS, Debian 12/13 in AlmaLinux 9/10. Koraki so enaki, razen če je navedeno drugače.
Korak 1: Nastavite ime gostitelja strežnika
Ustrezno ime gostitelja naredi dnevnike berljive in preprečuje zmedo pri upravljanju več strežnikov.
Najprej posodobite datoteko /etc/hosts, da lahko sistem novo ime gostitelja razrešuje lokalno. Odprite datoteko:
sudo nano /etc/hosts
Dodajte ali posodobite vrstico za 127.0.1.1 (ali 127.0.0.1, če 127.0.1.1 ne obstaja), da bo ustrezala novemu imenu gostitelja. Če na primer nameravate uporabiti web-01:
127.0.1.1 web-01
Shranite datoteko in zaprite urejevalnik (Ctrl+O, Enter, Ctrl+X).
Nato ime gostitelja nastavite globalno z ukazom hostnamectl:
sudo hostnamectl set-hostname <YOUR_HOSTNAME>
Preverite, ali je bila sprememba uveljavljena:
hostnamectl
Pričakovani izpis:
Static hostname: web-01 Icon name: computer-vm Chassis: vm Machine ID: a1b2c3d4e5f6... Boot ID: ... Operating System: Ubuntu 24.04.1 LTS Kernel: Linux 6.8.0-31-generic Architecture: x86-64
Številne storitve – vključno s Postfixom (pošta) in orodji za potrdila SSL, kot je Certbot – zahtevajo, da je ime gostitelja mogoče razrešiti lokalno. Če datoteko /etc/hosts posodobite pred zagonom ukaza hostnamectl, se izognete težko opaznim napakam pri razreševanju imen.
Korak 2: Posodobite vse pakete
Takoj izvedite popolno posodobitev sistema. Paketi v sveže vzpostavljeni sliki VPS skoraj vedno zaostajajo za trenutnimi različicami.
Ubuntu/Debian (APT):
sudo apt update && sudo apt upgrade -y
AlmaLinux/RHEL (DNF):
sudo dnf update -y
Ko se posodobitev konča, preverite, ali je potreben ponovni zagon.
Debian/Ubuntu:
cat /var/run/reboot-required 2>/dev/null && echo "Reboot required" || echo "No reboot needed"
AlmaLinux/RHEL:
sudo dnf install -y dnf-utils needs-restarting -r
Če je ponovni zagon potreben, ga izvedite zdaj, preden nadaljujete – nekatere posodobitve jedra in knjižnic začnejo veljati šele po ponovnem zagonu:
sudo reboot
Če ponovnega zagona ne izvedete, čeprav je potreben, ostaneta jedro in nekatere knjižnice v uporabi v stari različici. Tako lahko znane ranljivosti ostanejo nepopravljene tudi po posodobitvi.
Korak 3: Ustvarite uporabnika s pravicami sudo
Prijava kot root za vsakodnevno delo ni varna in velja za slabo prakso. Ustvarite navadnega uporabnika in mu dodelite pravice sudo.
3.1 Dodajte uporabnika
sudo adduser <YOUR_USERNAME>
V sistemu Ubuntu/Debian vas bo ukaz pozval, naj nastavite geslo in izpolnite neobvezna kontaktna polja. Vnesite geslo, preostala polja pa preskočite s tipko Enter.
V sistemu AlmaLinux/RHEL je adduser simbolna povezava na useradd in se izvede neinteraktivno, brez poziva za geslo, zato račun ostane zaklenjen. Geslo morate nastaviti ročno:
sudo passwd <YOUR_USERNAME>
3.2 Dodelite pravice sudo
Ubuntu/Debian – dodajte uporabnika v skupino sudo:
sudo usermod -aG sudo <YOUR_USERNAME>
AlmaLinux/RHEL – dodajte uporabnika v skupino wheel:
sudo usermod -aG wheel <YOUR_USERNAME>
3.3 Preverite dostop
Preklopite na novega uporabnika in preizkusite sudo:
su - <YOUR_USERNAME> sudo whoami
Pričakovani izpis:
root
Če vidite root, ima uporabnik delujoče pravice sudo. Zdaj se lahko odjavite iz seje root:
exit
V sistemu AlmaLinux je članstvo v skupini wheel določeno v datoteki /etc/sudoers z vrstico %wheel ALL=(ALL) ALL, ki je privzeto omogočena. V sistemih Ubuntu/Debian isto vlogo opravlja skupina sudo.
Korak 4: Nastavite overjanje s ključi SSH
Overjanje SSH z geslom je ranljivo za napade z grobo silo (brute force). Overjanje s ključi SSH geslo nadomesti s kriptografskim parom ključev, ki ga je bistveno težje napasti. To je eden najpomembnejših varnostnih ukrepov pri konfiguraciji SSH.
4.1 Ustvarite par ključev SSH (na lokalnem računalniku)
Če para ključev SSH še nimate, ga ustvarite na lokalnem računalniku (ne na strežniku):
ssh-keygen -t ed25519 -C "<YOUR_USERNAME>@<YOUR_HOSTNAME>"
Sprejmite privzeto lokacijo datoteke. Ko ste pozvani, nastavite geslo ključa (passphrase) – ta zaščiti ključ, če bi bil lokalni računalnik kdaj ogrožen.
Vrsta ključa ed25519 je priporočena. Je hitrejša, krajša in varnejša od starejše vrste rsa (2048-bitni). Če vaš odjemalec SSH te vrste ne podpira, uporabite ssh-keygen -t rsa -b 4096.
4.2 Kopirajte javni ključ na strežnik
Z lokalnega računalnika kopirajte ključ v račun novega uporabnika:
ssh-copy-id <YOUR_USERNAME>@<YOUR_SERVER_IP>
Če ukaz ssh-copy-id ni na voljo (npr. v sistemu Windows), ročno kopirajte vsebino datoteke ~/.ssh/id_ed25519.pub in jo dodajte na konec datoteke ~/.ssh/authorized_keys na strežniku.
4.3 Preizkusite prijavo s ključem
Odprite novo okno terminala (trenutne seje še ne zapirajte) in preizkusite prijavo:
ssh <YOUR_USERNAME>@<YOUR_SERVER_IP>
Prijaviti bi se morali brez poziva za geslo (zahtevano je le geslo ključa, če ste ga nastavili).
Obstoječe seje SSH ne zapirajte, dokler ne potrdite, da prijava s ključem deluje. Če je kaj napačno nastavljeno, boste z obstoječo sejo še vedno lahko odpravili težavo.
Korak 5: Utrdite konfiguracijo SSH in onemogočite prijavo kot root
Ko ste potrdili prijavo s ključem (korak 4), zaklenite demon SSH. Onemogočitev prijave kot root in overjanja z geslom prek SSH je eden najučinkovitejših ukrepov na vsakem kontrolnem seznamu za utrjevanje strežnika Linux.
Na vseh treh distribucijah ima datoteka /etc/ssh/sshd_config blizu vrha vrstico Include /etc/ssh/sshd_config.d/*.conf , SSH pa za vsako nastavitev uporabi prvo najdeno vrednost. Datoteke z dopolnilnimi nastavitvami (drop-in) ponudnika distribucije že obstajajo in prevladajo nad vsem, kar pozneje dodate v glavno datoteko:
- Ubuntu 24.04: 50-cloud-init.conf nastavi PasswordAuthentication yes
- AlmaLinux: 50-redhat.conf nastavi X11Forwarding yes
Zato je urejanje glavne datoteke sshd_config nezanesljivo. Namesto tega ustvarite drop-in datoteko za utrditev z nizko številko (00-), da se prebere prva in prevlada nad datotekami ponudnika. Ista datoteka deluje na vseh treh distribucijah.
Ustvarite drop-in datoteko:
sudo tee /etc/ssh/sshd_config.d/00-hardening.conf > /dev/null <<'EOF' PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys X11Forwarding no EOF
Predpona 00- zagotavlja, da se ta datoteka razčleni pred drop-in datotekami ponudnika, kot sta 50-cloud-init.conf in 50-redhat.conf. Ker SSH velja pravilo »prvo ujemanje zmaga«, teh datotek ni treba urejati.
Pred ponovnim zagonom storitve preverite skladnjo konfiguracije:
sudo sshd -t
Če ukaz ne izpiše ničesar, je skladnja veljavna. Zdaj preverite dejanske nastavitve, ki jih bo uporabljal demon:
sudo sshd -T | grep -iE "permitrootlogin|passwordauthentication|x11forwarding"
Pričakovani izpis:
permitrootlogin no passwordauthentication no x11forwarding no
Pred ponovnim zagonom se prepričajte, da so vse tri vrednosti pravilne. Če passwordauthentication še vedno kaže yes, vašo datoteko preglasi drop-in datoteka ponudnika – preverite, ali je bila datoteka 00-hardening.conf pravilno shranjena. Obstoječe seje SSH ne zapirajte, dokler ne preverite, da prijava s ključem še vedno deluje.
Znova zaženite demon SSH, da se spremembe uveljavijo.
Ubuntu 24.04 (aktivacija prek vtičnice):
sudo systemctl restart ssh.socket
Debian in starejši Ubuntu:
sudo systemctl restart ssh
AlmaLinux/RHEL:
sudo systemctl restart sshd
Preverite, ali storitev teče (v sistemu AlmaLinux uporabite sshd, v sistemu Ubuntu 24.04 pa ssh.socket):
sudo systemctl status ssh
Videti bi morali Active: active (running) (oziroma active (listening) pri SSH z aktivacijo prek vtičnice).
Zdaj potrdite, da je prijava kot root blokirana. Z lokalnega računalnika izvedite:
ssh root@<YOUR_SERVER_IP>
Pričakovani rezultat: povezava je zavrnjena s sporočilom Permission denied (publickey). Prijava kot root prek SSH je zdaj onemogočena.
Korak 6: Nastavite požarni zid (UFW)
UFW (Uncomplicated Firewall) je standardno orodje za požarni zid v sistemih Ubuntu in Debian. V sistemu AlmaLinux je privzeti požarni zid firewalld, vendar je mogoče tudi tam namestiti UFW. Ta korak zajema oba pristopa.
Preden omogočite kateri koli požarni zid, poskrbite, da je SSH (vrata 22) izrecno dovoljen. Če se pri tem zmotite, se boste izklopili iz strežnika.
6.1 UFW (Ubuntu/Debian)
V sistemu Debian (zlasti Debian 13) paket ufw morda ni privzeto nameščen. Najprej ga namestite:
sudo apt update && sudo apt install -y ufw
Preverite trenutno stanje:
sudo ufw status
Pred omogočitvijo požarnega zidu dovolite SSH:
sudo ufw allow ssh
Če nameravate zagnati spletni strežnik, dovolite HTTP in HTTPS:
sudo ufw allow http sudo ufw allow https
Omogočite požarni zid:
sudo ufw enable
Preverite aktivna pravila:
sudo ufw status verbose
Pričakovani izpis:
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 80/tcp ALLOW IN Anywhere 443/tcp ALLOW IN Anywhere
6.2 Firewalld (AlmaLinux/RHEL)
Omogočite in zaženite firewalld:
sudo systemctl enable --now firewalld
Dovolite SSH, HTTP in HTTPS:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Preverite:
sudo firewall-cmd --list-all
Konfiguracija požarnega zidu v Linuxu pomeni izbiro ustreznega orodja za vašo distribucijo in izogibanje hkratnemu delovanju dveh demonov požarnega zidu. Če ste v sistemu AlmaLinux namestili UFW, najprej onemogočite firewalld z ukazom sudo systemctl disable --now firewalld.
Korak 7: Sinhronizirajte sistemsko uro (NTP)
Natančen čas je nujen za varnostne protokole (preverjanje SSL/TLS, Kerberos), pravilne časovne žige v dnevnikih in načrtovana opravila. Neusklajena ura lahko povzroči napake pri potrdilih SSL, neuspela overjanja in zmedene vnose v dnevnikih.
Preverite trenutno stanje sinhronizacije:
timedatectl status
Pričakovani izpis:
System clock synchronized: yes NTP service: active
V sistemih Ubuntu 24.04 in Debian 13 je NTP običajno aktiven prek systemd-timesyncd. V sistemu AlmaLinux 10 je običajno aktiven prek chrony. Če timedatectl prikazuje System clock synchronized: yes in NTP service: active, ni treba spreminjati ničesar.
Če je storitev NTP prikazana kot neaktivna (inactive) ali n/a, namestite in omogočite chrony – priporočeni demon NTP za produkcijske strežnike:
Ubuntu/Debian:
sudo apt install chrony -y sudo systemctl enable --now chrony
V sistemu Debian 13 lahko po namestitvi chrony ukaz `timedatectl` prikaže `NTP service: n/a`. V tem primeru stanje preverite z ukazom `chronyc tracking`.
AlmaLinux/RHEL:
sudo dnf install chrony -y sudo systemctl enable --now chronyd
Po zagonu storitve počakajte 30–60 sekund, nato preverite, ali je sinhronizacija aktivna:
chronyc tracking
Poiščite Leap status: Normal. To potrjuje, da je sistemska ura sinhronizirana in da NTP deluje pravilno.
Če upravljate strežnike v več časovnih pasovih, nastavite sistemski časovni pas pred konfiguracijo NTP, da bodo časovni žigi v dnevnikih v pričakovanem lokalnem času. Primer: sudo timedatectl set-timezone Europe/Warsaw.
Korak 8: Omogočite samodejne varnostne posodobitve
Ročne posodobitve delujejo, vendar so odvisne od tega, da se jih spomnite izvesti. Samodejne varnostne posodobitve so varnostna mreža – še posebej pomembne pri instancah VPS brez nadzora. Tako nastavite samodejne varnostne posodobitve v Linuxu, ne da bi ogrozili stabilnost.
8.1 Ubuntu/Debian – unattended-upgrades
Namestite paket:
sudo apt install unattended-upgrades -y
Omogočite in konfigurirajte ga:
sudo dpkg-reconfigure --priority=low unattended-upgrades
Ko boste pozvani, je ključno izbrati Yes (Da). Če izberete No (Ne), potrebna konfiguracijska datoteka (/etc/apt/apt.conf.d/20auto-upgrades) ne bo ustvarjena, naslednja preverjanja pa bodo spodletela z napako »No such file or directory«. S tem se omogoči samodejno nameščanje samo varnostnih posodobitev – redne posodobitve funkcionalnosti ostanejo ročne.
Preverite konfiguracijo:
cat /etc/apt/apt.conf.d/20auto-upgrades
Pričakovani izpis:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
Preizkus brez uveljavljanja sprememb:
sudo unattended-upgrade --dry-run --debug
8.2 AlmaLinux/RHEL – dnf-automatic
Namestite:
sudo dnf install dnf-automatic -y
Odprite konfiguracijsko datoteko in nastavite vrsto posodobitev na samo varnostne. Najprej naredite varnostno kopijo:
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo nano /etc/dnf/automatic.conf
Poiščite in nastavite:
apply_updates = yes upgrade_type = security
Omogočite in zaženite časovnik (timer):
sudo systemctl enable --now dnf-automatic.timer
Preverite:
sudo systemctl status dnf-automatic.timer
Korak 9: Načrtujte osnovno vzdrževanje s cronom
Cron upravlja načrtovana opravila – stvari, ki se morajo izvajati redno, brez ročnega posredovanja. Preprosto opravilo cron, na primer čiščenje dnevnikov ali preverjanje obnove potrdil, je standardna praksa na vsakem upravljanem strežniku.
Priprava za AlmaLinux/RHEL:
Na čisti namestitvi sistema AlmaLinux 10 urejevalnik nano morda ni nameščen, ukaz crontab -e pa bo odprl vi. Če želite uporabiti nano, izvedite naslednji ukaz v eni vrstici, ki se izvede zaporedno in zagotovi, da spremenljivka okolja ostane veljavna:
sudo dnf install nano -y && export EDITOR=nano && crontab -e
V drugih sistemih (kot sta Ubuntu/Debian) preprosto odprite crontab trenutnega uporabnika:
crontab -e
Ob prvem zagonu (v sistemih Ubuntu/Debian) boste pozvani, da izberete urejevalnik. Izberite nano (možnost 1).
Primeri pogostih opravil cron
Izvedba opravila vsako noč ob 2:00:
0 2 * * * /usr/local/bin/my-maintenance-script.sh >> /var/log/maintenance.log 2>&1
Tedenska obnova potrdil SSL (za uporabnike Certbota):
0 3 * * 0 certbot renew --quiet >> /var/log/certbot-renew.log 2>&1
Mesečno brisanje začasnih datotek:
0 4 1 * * find /tmp -type f -atime +30 -delete
Cron uporablja obliko minuta ura dan-v-mesecu mesec dan-v-tednu ukaz. Del >> /var/log/task.log 2>&1 preusmeri stdout in stderr v dnevniško datoteko, tako da lahko pozneje pregledate, kaj se je zgodilo.
Preverite, ali so vaša opravila cron registrirana:
crontab -l
Videti bi morali vnose, ki ste jih dodali. Cron datoteko prebere samodejno – ponovno nalaganje ni potrebno. Če želite preveriti, ali storitev cron teče, uporabite:
Ubuntu/Debian:
sudo systemctl status cron
AlmaLinux/RHEL:
sudo systemctl status crond
Preverjanje
Preglejte ta kontrolni seznam, da potrdite, da je bilo vse pravilno uveljavljeno:
Preverite ime gostitelja:
hostnamectl | grep hostname
Potrdite, da sta prijava kot root prek SSH in overjanje z geslom onemogočena (to preveri aktivno izvajalno konfiguracijo):
sudo sshd -T | grep -iE "permitrootlogin|passwordauthentication"
Pričakovano:
permitrootlogin no passwordauthentication no
Potrdite, da storitev SSH teče:
# For Ubuntu 24.04: sudo systemctl status ssh.socket # For Debian / Older Ubuntu: sudo systemctl status ssh # For AlmaLinux: sudo systemctl status sshd
Preverite stanje požarnega zidu (Ubuntu/Debian):
sudo ufw status verbose
Preverite sinhronizacijo NTP:
timedatectl status | grep -E "synchronized|NTP"
Pričakovano:
System clock synchronized: yes NTP service: active
Preverite samodejne posodobitve (Ubuntu/Debian):
cat /etc/apt/apt.conf.d/20auto-upgrades
Izpišite aktivna opravila cron:
crontab -l
Povrnitev sprememb (rollback)
Za razveljavitev posameznih korakov, če gre kaj narobe:
Ponovna omogočitev prijave kot root prek SSH (če ste se izklopili iz strežnika in obnavljate dostop prek konzole):
# Re-enable root/password login temporarily for recovery sudo rm /etc/ssh/sshd_config.d/00-hardening.conf sudo sshd -t # Restart SSH (use the variant for your system): sudo systemctl restart ssh.socket # Ubuntu 24.04 sudo systemctl restart ssh # Debian / older Ubuntu sudo systemctl restart sshd # AlmaLinux/RHEL
Onemogočitev UFW:
sudo ufw disable
Odstranitev paketa unattended-upgrades (Ubuntu/Debian):
sudo apt remove unattended-upgrades -y
Odstranitev paketa dnf-automatic (AlmaLinux):
sudo systemctl disable --now dnf-automatic.timer sudo dnf remove dnf-automatic -y
Odstranitev opravila cron:
crontab -e # Delete the relevant line, save and exit
Ponovna omogočitev prijave kot root ali overjanja z geslom razveljavi večino varnostnih ukrepov iz tega vodiča. To storite le začasno, za obnovitev dostopa, nato pa jih znova zaklenite.
Zaključek
S tem je zajet celoten kontrolni seznam po namestitvi Linuxa. Zdaj imate strežnik z ustreznim imenom gostitelja, popolnoma posodobljenimi paketi, uporabnikom s pravicami sudo (ne root), vzpostavljenim overjanjem s ključi SSH, onemogočeno prijavo kot root, nastavljenim požarnim zidom, sinhroniziranim NTP, delujočimi samodejnimi varnostnimi posodobitvami in urnikom opravil cron, ki ga lahko razširite. To je izhodiščna konfiguracija strežnika Linux po namestitvi, ki bi jo moral imeti vsak VPS, preden se nanj namesti karkoli drugega.
Od tu naprej so logični naslednji koraki odvisni od namena strežnika:
- Spletni strežnik: namestite Nginx ali Apache, nastavite navidezni gostitelj (virtual host) in konfigurirajte SSL s Certbotom
- Podatkovna baza: namestite in utrdite MySQL/MariaDB ali PostgreSQL
- Nadzor: vzpostavite zbiranje dnevnikov (npr. logrotate) ali lahek agent za nadzor
- Nadzor dostopa: preglejte konfiguracijo sudoers in člane ekipe dodajte po enakem vzorcu kot v koraku 3
Kontrolni seznam za začetno konfiguracijo strežnika Linux se s tem ne konča – razvija se skupaj z vlogo strežnika. Vendar je ta izhodišče neizogiben začetek.
Različica dokumenta: 1.0
Zadnja posodobitev: maj 2026
Lastnik: Ekipa za tehnično dokumentacijo