Prejdete kontrolný zoznam, ktorý z nového VPS urobí bezpečný server: aktualizácie, silné heslá, vlastný používateľ, SSH kľúč, firewall, fail2ban a automatické bezpečnostné záplaty. Pri každom kroku vysvetlíme, prečo ho robiť a čo presne nastavujete.
Čo budete potrebovať
- Nový VPS u StormHostu s Ubuntu 24.04 alebo Debianom 13
- Pripojenie cez SSH ako root (návod)
- Správcu hesiel alebo bezpečné miesto na uloženie hesiel
- Približne 30 minút
Prečo hneď po založení#
Každá verejná IP adresa je vidieť z celého internetu. Automatizované boty prechádzajú adresy a skúšajú sa prihlásiť cez SSH bežnými menami a heslami. Na novom VPS uvidíte prvé pokusy často už počas niekoľkých minút. Skúste si to:
journalctl -u ssh --since "1 hour ago" | grep -E "Failed password|Invalid user"journalctl -u ssh– vypíše záznamy služby SSH.--since "1 hour ago"– iba za poslednú hodinu.grep -E "…"– nechá iba riadky s neúspešným prihlásením alebo neexistujúcim používateľom.
Na sieti blokujeme známe skenery internetu, ale všetky pokusy to nezastaví. Proti zvyšku vás ochráni silné heslo, SSH kľúč a fail2ban.
Kontrolný zoznam#
| Krok | Prečo | Kde |
|---|---|---|
| Aktualizovať systém | Opraví známe bezpečnostné chyby. | Tento návod |
| Zmeniť root heslo | Pôvodné heslo prešlo e-mailom alebo obrazovkou. | Zmena root hesla |
| Vytvoriť používateľa so sudo | Bežná práca bez neobmedzených práv roota. | Tento návod |
| Nastaviť SSH kľúč a vypnúť heslo | Kľúč sa nedá uhádnuť. | SSH kľúč |
| Zakázať prihlásenie roota | Útočník musí poznať aj meno používateľa. | Tento návod |
| Zapnúť firewall | Zvonku bude dostupné iba to, čo chcete. | Firewall v zákazníckom účte, UFW |
| Nainštalovať fail2ban | Zablokuje IP adresy, ktoré skúšajú heslá. | Fail2ban |
| Zapnúť automatické aktualizácie | Bezpečnostné záplaty sa nainštalujú samy. | Automatické aktualizácie |
| Nastaviť časové pásmo | Časy v logoch budú zodpovedať vášmu času. | Tento návod |
Zabezpečenie a zákaznícky účet#
Záložky Súbory a Databázy v zákazníckom účte sa k VPS pripájajú cez SSH, a to používateľom a heslom (v predvolenom stave root a heslo z času založenia). Niektoré kroky v tomto návode ich preto ovplyvnia:
| Čo zmeníte | Čo sa stane so záložkami Súbory a Databázy | Čo urobiť |
|---|---|---|
Root heslo (passwd) | Prestanú sa prihlasovať. | V Súbory › Zmeniť prihlasovacie údaje zadajte nové heslo. |
| Port SSH | Prestanú sa pripájať. | V Súbory › Zmeniť prihlasovacie údaje zadajte nový port. |
| Zákaz prihlásenia roota | Neprihlásia sa ako root. | Zadajte tam iného používateľa a jeho heslo. Súbory uvidíte s jeho právami. Inštalácia a automatické pripojenie v záložke Databázy potom vyžadujú, aby mal sudo bez zadávania hesla. |
| Vypnutie prihlasovania heslom | Prestanú fungovať úplne. | Súbory spravujte SFTP klientom s kľúčom, databázy cez SSH tunel. |
| SSH povolené iba z vašej IP | Prestanú fungovať (pripájajú sa z našich serverov). | To isté ako vyššie. |
Prihlasovacie údaje v záložke Súbory môže meniť iba vlastník služby. Konzola a záložky Sieť, Firewall, Zálohy a Zmena balíka fungujú vždy, nastavenie VPS ich neovplyvní. Rozhodnite sa, čo je pre vás dôležitejšie. Najvyššiu bezpečnosť dáva vypnuté prihlasovanie heslom. Ak záložky Súbory a Databázy používate, nechajte heslo zapnuté, ale silné, a nainštalujte fail2ban.
Aktualizácia systému#
Stiahnite zoznam dostupných aktualizácií:
bash apt updateapt update– načíta z repozitárov zoznam nových verzií balíkov. Sám nič neinštaluje.
Nainštalujte všetky aktualizácie:
bash apt full-upgrade -yapt full-upgrade– aktualizuje balíky a smie kvôli tomu pridať alebo odobrať závislosti (napríklad nové jadro).-y– automaticky odpovedať „áno“ na potvrdenie.
Ak sa počas inštalácie objaví otázka na konfiguračný súbor (napríklad
/etc/ssh/sshd_config„has been locally modified“), zvoľte keep the local version currently installed. Ponecháte tým súčasné nastavenie, s ktorým VPS funguje.Zistite, či je potrebný reštart:
bash ls /var/run/reboot-requiredKeď príkaz súbor nájde, reštartujte. Na Debiane bez balíka
unattended-upgradessa súbor vytvoriť nemusí, preto tam po aktualizácii jadra (balík začínajúcilinux-image) reštartujte vždy.Reštartujte VPS:
bash rebootSSH spojenie sa ukončí. Po zhruba minúte sa pripojte znova.
Zmena root hesla#
Heslo z času založenia ste videli v zákazníckom účte, prípadne v e-maile. Nastavte si nové, ktoré poznáte iba vy.
Vygenerujte silné heslo, napríklad v generátore hesiel (aspoň 20 znakov), a uložte ho do správcu hesiel.
Spustite zmenu hesla:
bash passwdpasswd– bez ďalšieho parametra zmení heslo používateľa, ktorý príkaz spúšťa (teda roota).
Na výzvu
New password:vložte nové heslo a stlačte Enter. Heslo sa nezobrazuje.Na výzvu
Retype new password:ho vložte znova. Uvidítepasswd: password updated successfully.Nezatvárajte súčasné okno. Otvorte nové a vyskúšajte prihlásenie novým heslom.
V zákazníckom účte otvorte záložku Súbory, kliknite na Zmeniť prihlasovacie údaje, vyplňte Používateľ
root, Port22a nové Heslo a kliknite na Overiť a uložiť.
Heslo v zákazníckom účte zostane staré
Zákaznícky účet nové heslo nepozná. V záložke Konzola bude riadok Heslo po kliknutí na Zobraziť ďalej ukazovať heslo z času založenia, ktoré už neplatí. Platné heslo máte iba vo svojom správcovi hesiel.
Nový používateľ so sudo#
Pod rootom každý preklep v príkaze zasiahne celý systém. Na bežnú prácu si vytvorte vlastného používateľa, ktorý si práva správcu vyžiada iba príkazom sudo. Ako príklad použijeme meno jan.
Vytvorte používateľa:
bash adduser janadduser– vytvorí používateľa, jeho domovský priečinok/home/jana opýta sa na heslo.
Zadajte dvakrát heslo (iné než root heslo). Otázky na meno, telefón a ďalšie údaje preskočte klávesom Enter a na konci potvrďte
Y.Pridajte používateľa do skupiny
sudo:bash usermod -aG sudo janusermod– mení vlastnosti používateľa.-aG sudo– pridá (-a) používateľa do ďalšej skupiny (-G)sudo. Bez-aby používateľ zo všetkých ostatných skupín vypadol.- Členovia skupiny
sudosmú spúšťať príkazy ako root.
Ak už máte SSH kľúč pri rootovi, skopírujte ho aj novému používateľovi:
bash install -d -m 700 -o jan -g jan /home/jan/.ssh install -m 600 -o jan -g jan /root/.ssh/authorized_keys /home/jan/.ssh/authorized_keysinstall -d– vytvorí priečinok.ssh.-m 700/-m 600– práva: priečinok iba pre vlastníka, súbor čítanie a zápis iba pre vlastníka. SSH iné práva odmietne.-o jan -g jan– vlastníkom bude používateľjan.
V novom okne sa prihláste ako nový používateľ a vyskúšajte sudo:
bash ssh [email protected] sudo whoamisudo whoami– spustí príkazwhoamiako root. Po zadaní hesla používateľajanmusí vypísaťroot.
Ak príkaz adduser alebo sudo chýba (minimálna inštalácia Debianu), doinštalujte ich: apt install adduser sudo.
SSH kľúč a vypnutie prihlasovania heslom#
Toto je najdôležitejší krok. Heslo sa dá uhádnuť, SSH kľúč prakticky nie. Postup pre Windows, macOS aj Linux nájdete v samostatnom návode SSH kľúč: prihlásenie bez hesla, vrátane bezpečného vypnutia prihlasovania heslom.
Zákaz prihlásenia roota#
Keď root nesmie cez SSH, útočník musí poznať aj meno vášho používateľa. Urobte to až vo chvíli, keď sa prihlásite ako nový používateľ a funguje vám sudo.
Otvorte (alebo vytvorte) vlastný konfiguračný súbor SSH servera:
bash nano /etc/ssh/sshd_config.d/00-zabezpeceni.confPridajte riadok:
/etc/ ssh/ inisshd_config.d/ 00-zabezpeceni.conf PermitRootLogin noNastavenie Čo robí Odporúčaná hodnota Kedy zmeniť PermitRootLoginČi sa root smie prihlásiť cez SSH. no= vôbec,prohibit-password= iba kľúčom,yes= aj heslom.noprohibit-password, ak potrebujete root prístup kľúčom (napríklad pre zálohovací skript).Súbor má na začiatku názvu
00, aby sa načítal ako prvý. SSH server totiž používa prvú nájdenú hodnotu každého nastavenia.Skontrolujte konfiguráciu a platnú hodnotu:
bash sshd -t && sshd -T | grep -i permitrootloginsshd -t– kontrola syntaxe. Pri chybe vypíše súbor a riadok.&&– ďalší príkaz sa spustí iba vtedy, keď predchádzajúci skončil bez chyby.sshd -T– vypíše výslednú platnú konfiguráciu. Musí obsahovaťpermitrootlogin no.
Reštartujte SSH server:
bash systemctl restart sshSúčasné spojenie zostane otvorené.
V novom okne overte, že sa
ssh [email protected]už neprihlási assh [email protected]áno.
Ako root potom pracujete cez sudo -i (otvorí rootovský príkazový riadok po zadaní hesla používateľa jan).
Zmena portu SSH#
Presun SSH z portu 22 na iný port nie je skutočné zabezpečenie, útočník nový port nájde. Výrazne však ubudne pokusov botov v logu.
Za:
- Menej automatických pokusov o prihlásenie a čistejšie logy.
Proti:
- Pri každom pripojení musíte zadať port (
ssh -p 2222 …). - Niektoré firemné a verejné siete neštandardné porty blokujú.
- Port musíte upraviť vo firewalle, vo fail2bane aj v zákazníckom účte (Súbory).
Ak sa pre zmenu rozhodnete, zvoľte port nad 1024, ktorý nepoužíva iná aplikácia (vyhnite sa napríklad portu 2022, ktorý používajú niektoré herné panely pre SFTP). V príklade použijeme 2222.
Povoľte nový port vo firewalle skôr, než SSH presuniete: v záložke Firewall pridajte pravidlo Prichádzajúce, Povoliť, TCP, port
2222(nutné v režime Blokovať všetko okrem povoleného, v režime Povoliť všetko neuškodí) a ak používate UFW, spustiteufw allow 2222/tcp.Do súboru
/etc/pridajte dva riadky. Starý port zatiaľ ponecháte, aby vás zmena neodrezala:ssh/ sshd_ config. d/ 00-zabezpeceni. conf /etc/ ssh/ inisshd_config.d/ 00-zabezpeceni.conf Port 22 Port 2222Port– port, na ktorom SSH server počúva. RiadkovPortmôže byť viac, server potom počúva na všetkých.
Skontrolujte konfiguráciu:
sshd -t.Zistite, ako sa SSH na vašom VPS spúšťa:
bash systemctl is-active ssh.socketVýsledok
activeznamená, že SSH spúšťa systemd cez socket (predvolený stav na Ubuntu 24.04). Výsledokinactiveznamená bežnú službu (zvyčajne Debian 13).
Podľa výsledku použite nový port:
Socket aktívny
systemctl daemon-reload
systemctl restart ssh.socketsystemctl daemon-reload– nechá systemd znova prečítať konfiguráciu. Na Ubuntu 24.04 pri tom zvláštny generátor prevezme porty z konfigurácie SSH do nastavenia socketu. Bez tohto kroku by SSH zostalo na porte 22.systemctl restart ssh.socket– začne počúvať na nových portoch.
Socket neaktívny
systemctl restart sshsystemctl restart ssh– reštartuje SSH server, ktorý si porty prečíta z konfigurácie.
- Overte, že SSH počúva na oboch portoch:
ss -tlnp | grep -E ':22 |:2222 '. - V novom okne sa pripojte cez nový port:
ssh -p 2222 [email protected]. - Keď pripojenie cez nový port funguje, zmažte v konfigurácii riadok
Port 22. - Skontrolujte konfiguráciu:
sshd -t. - Zmenu načítajte rovnakým príkazom ako vyššie (podľa toho, či je socket aktívny).
- V zákazníckom účte otvorte Súbory › Zmeniť prihlasovacie údaje a zadajte port
2222. Záložky Súbory a Databázy sa k VPS pripájajú cez SSH a bez nového portu by prestali fungovať. - Upravte port v jaile
sshdvo fail2bane (pozri Fail2ban). - Vo firewalle zmažte pravidlo pre port 22.
Firewall a fail2ban#
- Firewall v zákazníckom účte filtruje prevádzku ešte pred VPS a nastavíte ho klikaním: Firewall v zákazníckom účte.
- UFW je firewall priamo vo VPS: Firewall UFW.
- Fail2ban stráži neúspešné prihlásenia a útočníkov blokuje: Fail2ban.
Stačí jeden z firewallov. Pre začiatočníkov odporúčame firewall v zákazníckom účte, pretože ho opravíte aj vtedy, keď sa odrežete.
Automatické bezpečnostné aktualizácie#
Balík unattended-upgrades raz denne nainštaluje bezpečnostné aktualizácie. Na Ubuntu je nainštalovaný a zapnutý, na Debiane ho zapnete.
Ubuntu 24.04
Overte, že sú automatické aktualizácie zapnuté:
bash cat /etc/apt/apt.conf.d/20auto-upgradesVýstup musí obsahovať:
Výstuptext APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";Update-Package-Lists "1"– každý deň (1 = každý 1 deň) stiahnuť zoznam aktualizácií.Unattended-Upgrade "1"– každý deň nainštalovať povolené aktualizácie.
Ak súbor chýba, spustite
dpkg-reconfigure -plow unattended-upgradesa odpovedzte Yes.
Debian 13
Nainštalujte balíky:
bash apt install unattended-upgrades apt-listchangesunattended-upgrades– automatická inštalácia aktualizácií.apt-listchanges– dokáže posielať prehľad zmien v aktualizovaných balíkoch.
Zapnite automatické aktualizácie:
bash dpkg-reconfigure -plow unattended-upgradesdpkg-reconfigure– znova spustí nastavenie balíka.-plow– ukáže aj menej dôležité otázky.
Na otázku, či automaticky sťahovať a inštalovať stabilné aktualizácie, odpovedzte Yes. Vytvorí sa súbor
/etc/.apt/ apt. conf. d/ 20auto-upgrades
V predvolenom stave sa na Ubuntu inštalujú iba bezpečnostné aktualizácie, na Debiane bezpečnostné aktualizácie a opravy z bodových vydaní stabilnej verzie (napríklad 13.1, 13.2). VPS sa sám nereštartuje. Správanie upravíte vo vlastnom súbore, ktorý prebije predvolený 50unattended-upgrades (ten neupravujte, aktualizácia balíka by ho mohla prepísať):
nano /etc/apt/apt.conf.d/52unattended-upgrades-localUnattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Unattended-Upgrade::Remove-Unused-Dependencies "true";| Nastavenie | Čo robí | Odporúčaná hodnota | Kedy zmeniť |
|---|---|---|---|
Automatic-Reboot | Reštartuje VPS, keď to aktualizácia vyžaduje (typicky nové jadro). Predvolené je false. | true | Nechajte false, ak vaše aplikácie po reštarte samy nenabehnú (nie sú nastavené ako služba). Potom reštartujte ručne raz týždenne. |
Automatic-Reboot-Time | Kedy sa reštart vykoná, napríklad "04:00". Bez nastavenia prebehne ihneď po aktualizácii. | "04:00" | Zvoľte čas, keď je na serveri najmenšia prevádzka. |
Remove-Unused-Dependencies | Zmaže balíky, ktoré po aktualizácii už nič nepotrebuje. | true | false, ak si neželáte, aby sa čokoľvek odinštalovalo samo. |
Nastavenie vyskúšajte nanečisto:
unattended-upgrade --dry-run --debug--dry-run– iba simulácia, nič sa nenainštaluje.--debug– podrobný výpis, vrátane načítaných nastavení a balíkov, ktoré by sa aktualizovali.
Záznamy o skutočných aktualizáciách nájdete v priečinku /var/.
Časové pásmo a názov servera#
Nastavte stredoeurópske časové pásmo, aby časy v logoch zodpovedali:
bash timedatectl set-timezone Europe/Praguetimedatectl– nastavuje čas a časové pásmo systému.set-timezone Europe/Prague– stredoeurópsky čas vrátane letného (rovnako fungujeEurope/Bratislava).
Overte výsledok príkazom
timedatectl. RiadokTime zonemusí ukazovaťEurope/PragueaSystem clock synchronized: yes.Voliteľne zmeňte názov servera (hostname):
bash hostnamectl set-hostname vps1hostnamectl set-hostname vps1– nastaví názov VPS navps1. Používajte malé písmená, číslice a pomlčky.
Nový názov sa ukáže v príkazovom riadku po ďalšom prihlásení. Ak
sudozačne vypisovaťunable to resolve host vps1, doplňte názov do/etc/hostsna riadok127.0.1.1. Keď súbor v hlavičke uvádza, že sa generuje automaticky, riaďte sa pokynmi z hlavičky.
Čo ďalej#
- Zálohy: celý VPS zálohujeme my a obnovíte ho v záložke Zálohy. Dôležité dáta si zálohujte aj mimo VPS, pozri Zálohy VPS.
- Prehľad: raz za čas skontrolujte miesto na disku (
df -h), bežiace služby (systemctl --failed) a záznamy fail2banu. - Iba potrebné služby: čo nepotrebujete, neinštalujte. Každý otvorený port je ďalší možný vstup.
Overenie#
apt updatepo aktualizácii vypíšeAll packages are up to date.- Nové root heslo funguje a záložka Súbory sa prihlási.
- Používateľ
jansa prihlási cez SSH asudo whoamivypíšeroot. sshd -T | grep -E "^(ukazuje hodnoty, ktoré ste nastavili.permitrootlogin| passwordauthentication| port) " unattended-upgrade --dry-run --debugprebehne bez chyby.
Keď niečo nefunguje#
Odrezali ste sa od SSH#
Použite konzolu v prehliadači. Prihlásite sa root heslom (aj keď máte root cez SSH zakázaný) a chybu opravíte, napríklad zmažete súbor /etc/ a reštartujete SSH príkazom systemctl restart ssh.
sudo: jan is not in the sudoers file#
Používateľ nie je v skupine sudo. Ako root spustite usermod -aG sudo jan a používateľ sa musí odhlásiť a znova prihlásiť, aby sa skupina prejavila.
Záložka Súbory hlási, že sa prihlásenie k VPS nepodarilo#
Zákaznícky účet používa staré údaje. Otvorte Súbory › Zmeniť prihlasovacie údaje a zadajte aktuálneho používateľa, port a heslo. Ak máte vypnuté prihlasovanie heslom alebo SSH povolené iba z vašej IP adresy, záložka fungovať nebude (pozri tabuľku v sekcii Zabezpečenie a zákaznícky účet).
sshd -T ukazuje inú hodnotu, než ste nastavili#
Rovnaké nastavenie je v inom súbore, ktorý sa načítava skôr (SSH server berie prvú nájdenú hodnotu). Nájdite ho:
grep -rni "permitrootlogin" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/grep -rni– hľadá text vo všetkých súboroch priečinka (-r), bez ohľadu na veľkosť písmen (-i) a vypíše číslo riadka (-n).
Riadok v cudzom súbore zakomentujte (napíšte na jeho začiatok #), alebo hodnotu zmeňte priamo tam. Potom znova spustite sshd -t && sshd -T | grep -i permitrootlogin a SSH reštartujte.
SSH po zmene portu ďalej počúva iba na porte 22#
Na Ubuntu 24.04 ste najskôr vynechali systemctl daemon-reload. Spustite ho a potom systemctl restart ssh.socket.
E: Could not get lock /var/lib/dpkg/lock-frontend #
Na pozadí práve beží iná inštalácia, typicky automatické aktualizácie (pri novom VPS po prvom štarte). Počkajte pár minút a príkaz zopakujte. Proces násilne neukončujte.
Zhrnutie
- Aktualizujte systém (
apt update,apt full-upgrade) a po novom jadre reštartujte. - Zmeňte root heslo príkazom
passwda nové heslo zadajte aj v záložke Súbory. - Pracujte pod vlastným používateľom so
sudo, root cez SSH zakážte až po otestovaní. - Nastavte SSH kľúč, firewall a fail2ban podľa samostatných návodov.
- Automatické bezpečnostné aktualizácie riadi
unattended-upgrades, úpravy patria do52unattended-upgrades-local. - Vypnutie hesla alebo obmedzenie SSH na vašu IP vypne záložky Súbory a Databázy, konzola funguje vždy.