Přejít na obsah
Aktuální kupón:sleva 10 %Uplatnit v objednávce

Zabezpečení nové VPS: kontrolní seznam krok za krokem

Co udělat hned po založení VPS: aktualizace, nové root heslo, uživatel se sudo, SSH klíč, firewall, fail2ban a automatické bezpečnostní aktualizace. Každý krok vysvětlený.

  • začátečník
  • ~30 min
  • Aktualizováno 26. 10. 2026

Projdete kontrolní seznam, který z nové VPS udělá bezpečný server: aktualizace, silná hesla, vlastní uživatel, SSH klíč, firewall, fail2ban a automatické bezpečnostní záplaty. U každého kroku vysvětlíme, proč ho dělat a co přesně nastavujete.

Co budete potřebovat

  • Nová VPS u StormHostu s Ubuntu 24.04 nebo Debianem 13
  • Připojení přes SSH jako root (návod)
  • Správce hesel nebo bezpečné místo pro uložení hesel
  • Asi 30 minut

Proč hned po založení#

Každá veřejná IP adresa je vidět z celého internetu. Automatizovaní boti procházejí adresy a zkoušejí se přihlásit přes SSH běžnými jmény a hesly. Na nové VPS uvidíte první pokusy často už během několika minut. Zkuste si to:

bash
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" – jen za poslední hodinu.
  • grep -E "…" – nechá jen řádky s neúspěšným přihlášením nebo neexistujícím uživatelem.

Na síti blokujeme známé skenery internetu, ale všechny pokusy to nezastaví. Proti zbytku vás ochrání silné heslo, SSH klíč a fail2ban.

Kontrolní seznam#

KrokPročKde
Aktualizovat systémOpraví známé bezpečnostní chyby.Tento návod
Změnit root hesloPůvodní heslo prošlo e-mailem nebo obrazovkou.Změna root hesla
Vytvořit uživatele se sudoBěžná práce bez neomezených práv roota.Tento návod
Nastavit SSH klíč a vypnout hesloKlíč nejde uhodnout.SSH klíč
Zakázat přihlášení rootaÚtočník musí znát i jméno uživatele.Tento návod
Zapnout firewallZvenku bude dostupné jen to, co chcete.Firewall v zákaznické zóně, UFW
Nainstalovat fail2banZablokuje IP adresy, které zkoušejí hesla.Fail2ban
Zapnout automatické aktualizaceBezpečnostní záplaty se nainstalují samy.Automatické aktualizace
Nastavit časové pásmoČasy v logech budou odpovídat vašemu času.Tento návod

Zabezpečení a zákaznická zóna#

Záložky Soubory a Databáze v zákaznické zóně se k VPS připojují přes SSH, a to uživatelem a heslem (ve výchozím stavu root a heslo z doby založení). Některé kroky v tomto návodu je proto ovlivní:

Co změníteCo se stane se záložkami Soubory a DatabázeCo udělat
Root heslo (passwd)Přestanou se přihlašovat.V Soubory › Změnit přihlašovací údaje zadejte nové heslo.
Port SSHPřestanou se připojovat.V Soubory › Změnit přihlašovací údaje zadejte nový port.
Zákaz přihlášení rootaNepřihlásí se jako root.Zadejte tam jiného uživatele a jeho heslo. Soubory uvidíte s jeho právy. Instalace a automatické připojení v záložce Databáze pak vyžadují, aby měl sudo bez zadávání hesla.
Vypnutí přihlašování heslemPřestanou fungovat úplně.Soubory spravujte SFTP klientem s klíčem, databáze přes SSH tunel.
SSH povolené jen z vaší IPPřestanou fungovat (připojují se z našich serverů).Totéž jako výše.

Přihlašovací údaje v záložce Soubory může měnit jen vlastník služby. Konzole a záložky Síť, Firewall, Zálohy a Změna balíčku fungují vždy, nastavení VPS je neovlivní. Rozhodněte se, co je pro vás důležitější. Nejvyšší bezpečnost dává vypnuté přihlašování heslem. Pokud záložky Soubory a Databáze používáte, nechte heslo zapnuté, ale silné, a nainstalujte fail2ban.

Aktualizace systému#

  1. Stáhněte seznam dostupných aktualizací:

    bash
    apt update
    • apt update – načte z repozitářů seznam nových verzí balíčků. Sám nic neinstaluje.
  2. Nainstalujte všechny aktualizace:

    bash
    apt full-upgrade -y
    • apt full-upgrade – aktualizuje balíčky a smí kvůli tomu přidat nebo odebrat závislosti (například nové jádro).
    • -y – automaticky odpovědět „ano“ na potvrzení.
  3. Pokud se během instalace objeví dotaz na konfigurační soubor (například /etc/ssh/sshd_config „has been locally modified“), zvolte keep the local version currently installed. Ponecháte tím současné nastavení, se kterým VPS funguje.

  4. Zjistěte, jestli je potřeba restart:

    bash
    ls /var/run/reboot-required

    Když příkaz soubor najde, restartujte. Na Debianu bez balíčku unattended-upgrades se soubor vytvořit nemusí, proto tam po aktualizaci jádra (balíček začínající linux-image) restartujte vždy.

  5. Restartujte VPS:

    bash
    reboot

    SSH spojení se ukončí. Po zhruba minutě se připojte znovu.

Změna root hesla#

Heslo z doby založení jste viděli v zákaznické zóně, případně v e-mailu. Nastavte si nové, které znáte jen vy.

  1. Vygenerujte silné heslo, například v generátoru hesel (aspoň 20 znaků), a uložte ho do správce hesel.

  2. Spusťte změnu hesla:

    bash
    passwd
    • passwd – bez dalšího parametru změní heslo uživatele, který příkaz spouští (tedy roota).
  3. Na výzvu New password: vložte nové heslo a stiskněte Enter. Heslo se nezobrazuje.

  4. Na výzvu Retype new password: ho vložte znovu. Uvidíte passwd: password updated successfully.

  5. Nezavírejte současné okno. Otevřete nové a vyzkoušejte přihlášení novým heslem.

  6. V zákaznické zóně otevřete záložku Soubory, klikněte na Změnit přihlašovací údaje, vyplňte Uživatel root, Port 22 a nové Heslo a klikněte na Ověřit a uložit.

Heslo v zákaznické zóně zůstane staré

Zákaznická zóna nové heslo nezná. V záložce Konzole bude řádek Heslo po kliknutí na Zobrazit dál ukazovat heslo z doby založení, které už neplatí. Platné heslo máte jen ve svém správci hesel.

Nový uživatel se sudo#

Pod rootem každý překlep v příkazu zasáhne celý systém. Pro běžnou práci si vytvořte vlastního uživatele, který si práva správce vyžádá jen příkazem sudo. Jako příklad použijeme jméno jan.

  1. Vytvořte uživatele:

    bash
    adduser jan
    • adduser – vytvoří uživatele, jeho domovskou složku /home/jan a zeptá se na heslo.

    Zadejte dvakrát heslo (jiné než root heslo). Dotazy na jméno, telefon a další údaje přeskočte klávesou Enter a na konci potvrďte Y.

  2. Přidejte uživatele do skupiny sudo:

    bash
    usermod -aG sudo jan
    • usermod – mění vlastnosti uživatele.
    • -aG sudo – přidá (-a) uživatele do další skupiny (-G) sudo. Bez -a by uživatel ze všech ostatních skupin vypadl.
    • Členové skupiny sudo smí spouštět příkazy jako root.
  3. Pokud už máte SSH klíč u roota, zkopírujte ho i novému uživateli:

    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_keys
    • install -d – vytvoří složku .ssh.
    • -m 700 / -m 600 – práva: složka jen pro vlastníka, soubor čtení a zápis jen pro vlastníka. SSH jiná práva odmítne.
    • -o jan -g jan – vlastníkem bude uživatel jan.
  4. V novém okně se přihlaste jako nový uživatel a vyzkoušejte sudo:

    bash
    ssh [email protected]
    sudo whoami
    • sudo whoami – spustí příkaz whoami jako root. Po zadání hesla uživatele jan musí vypsat root.

Pokud příkaz adduser nebo sudo chybí (minimální instalace Debianu), doinstalujte je: apt install adduser sudo.

SSH klíč a vypnutí přihlašování heslem#

Tohle je nejdůležitější krok. Heslo jde uhodnout, SSH klíč prakticky ne. Postup pro Windows, macOS i Linux najdete v samostatném návodu SSH klíč: přihlášení bez hesla, včetně bezpečného vypnutí přihlašování heslem.

Zákaz přihlášení roota#

Když root nesmí přes SSH, útočník musí znát i jméno vašeho uživatele. Udělejte to až ve chvíli, kdy se přihlásíte jako nový uživatel a funguje vám sudo.

  1. Otevřete (nebo vytvořte) vlastní konfigurační soubor SSH serveru:

    bash
    nano /etc/ssh/sshd_config.d/00-zabezpeceni.conf
  2. Přidejte řádek:

    /etc/ssh/sshd_config.d/00-zabezpeceni.confini
    PermitRootLogin no
    NastaveníCo děláDoporučená hodnotaKdy změnit
    PermitRootLoginJestli se root smí přihlásit přes SSH. no = vůbec, prohibit-password = jen klíčem, yes = i heslem.noprohibit-password, pokud potřebujete root přístup klíčem (například pro zálohovací skript).

    Soubor má na začátku názvu 00, aby se načetl jako první. SSH server totiž používá první nalezenou hodnotu každého nastavení.

  3. Zkontrolujte konfiguraci a platnou hodnotu:

    bash
    sshd -t && sshd -T | grep -i permitrootlogin
    • sshd -t – kontrola syntaxe. Při chybě vypíše soubor a řádek.
    • && – další příkaz se spustí jen tehdy, když předchozí skončil bez chyby.
    • sshd -T – vypíše výslednou platnou konfiguraci. Musí obsahovat permitrootlogin no.
  4. Restartujte SSH server:

    bash
    systemctl restart ssh

    Současné spojení zůstane otevřené.

  5. V novém okně ověřte, že se ssh [email protected] už nepřihlásí a ssh [email protected] ano.

Jako root pak pracujete přes sudo -i (otevře rootovský příkazový řádek po zadání hesla uživatele jan).

Změna portu SSH#

Přesun SSH z portu 22 na jiný port není skutečné zabezpečení, útočník nový port najde. Výrazně ale ubude pokusů botů v logu.

Pro:

  • Méně automatických pokusů o přihlášení a čistší logy.

Proti:

  • Při každém připojení musíte zadat port (ssh -p 2222 …).
  • Některé firemní a veřejné sítě nestandardní porty blokují.
  • Port musíte upravit ve firewallu, ve fail2banu i v zákaznické zóně (Soubory).

Pokud se pro změnu rozhodnete, zvolte port nad 1024, který nepoužívá jiná aplikace (vyhněte se například portu 2022, který používají některé herní panely pro SFTP). V příkladu použijeme 2222.

  1. Povolte nový port ve firewallu dřív, než SSH přesunete: v záložce Firewall přidejte pravidlo Příchozí, Povolit, TCP, port 2222 (nutné v režimu Blokovat vše kromě povoleného, v režimu Povolit vše neuškodí) a pokud používáte UFW, spusťte ufw allow 2222/tcp.

  2. Do souboru /etc/ssh/sshd_config.d/00-zabezpeceni.conf přidejte dva řádky. Starý port zatím ponecháte, aby vás změna neodřízla:

    /etc/ssh/sshd_config.d/00-zabezpeceni.confini
    Port 22
    Port 2222
    • Port – port, na kterém SSH server poslouchá. Řádků Port může být víc, server pak poslouchá na všech.
  3. Zkontrolujte konfiguraci: sshd -t.

  4. Zjistěte, jak se SSH na vaší VPS spouští:

    bash
    systemctl is-active ssh.socket

    Výsledek active znamená, že SSH spouští systemd přes socket (výchozí stav na Ubuntu 24.04). Výsledek inactive znamená běžnou službu (obvykle Debian 13).

Podle výsledku použijte nový port:

Socket aktivní

bash
systemctl daemon-reload
systemctl restart ssh.socket
  • systemctl daemon-reload – nechá systemd znovu přečíst konfiguraci. Na Ubuntu 24.04 při tom zvláštní generátor převezme porty z konfigurace SSH do nastavení socketu. Bez tohoto kroku by SSH zůstalo na portu 22.
  • systemctl restart ssh.socket – začne poslouchat na nových portech.

Socket neaktivní

bash
systemctl restart ssh
  • systemctl restart ssh – restartuje SSH server, který si porty přečte z konfigurace.
  1. Ověřte, že SSH poslouchá na obou portech: ss -tlnp | grep -E ':22 |:2222 '.
  2. V novém okně se připojte přes nový port: ssh -p 2222 [email protected].
  3. Když připojení přes nový port funguje, smažte v konfiguraci řádek Port 22.
  4. Zkontrolujte konfiguraci: sshd -t.
  5. Změnu načtěte stejným příkazem jako výše (podle toho, jestli je socket aktivní).
  6. V zákaznické zóně otevřete Soubory › Změnit přihlašovací údaje a zadejte port 2222. Záložky Soubory a Databáze se k VPS připojují přes SSH a bez nového portu by přestaly fungovat.
  7. Upravte port v jailu sshd ve fail2banu (viz Fail2ban).
  8. Ve firewallu smažte pravidlo pro port 22.

Firewall a fail2ban#

  • Firewall v zákaznické zóně filtruje provoz ještě před VPS a nastavíte ho klikáním: Firewall v zákaznické zóně.
  • UFW je firewall přímo ve VPS: Firewall UFW.
  • Fail2ban hlídá neúspěšná přihlášení a útočníky blokuje: Fail2ban.

Stačí jeden z firewallů. Pro začátečníky doporučujeme firewall v zákaznické zóně, protože ho opravíte i tehdy, když se odříznete.

Automatické bezpečnostní aktualizace#

Balíček unattended-upgrades jednou denně nainstaluje bezpečnostní aktualizace. Na Ubuntu je nainstalovaný a zapnutý, na Debianu ho zapnete.

Ubuntu 24.04

  1. Ověřte, že jsou automatické aktualizace zapnuté:

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

    Výstup musí obsahovat:

    Výstuptext
    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Unattended-Upgrade "1";
    • Update-Package-Lists "1" – každý den (1 = každý 1 den) stáhnout seznam aktualizací.
    • Unattended-Upgrade "1" – každý den nainstalovat povolené aktualizace.
  2. Pokud soubor chybí, spusťte dpkg-reconfigure -plow unattended-upgrades a odpovězte Yes.

Debian 13

  1. Nainstalujte balíčky:

    bash
    apt install unattended-upgrades apt-listchanges
    • unattended-upgrades – automatická instalace aktualizací.
    • apt-listchanges – umí posílat přehled změn v aktualizovaných balíčcích.
  2. Zapněte automatické aktualizace:

    bash
    dpkg-reconfigure -plow unattended-upgrades
    • dpkg-reconfigure – znovu spustí nastavení balíčku.
    • -plow – ukáže i méně důležité otázky.

    Na otázku, jestli automaticky stahovat a instalovat stabilní aktualizace, odpovězte Yes. Vytvoří se soubor /etc/apt/apt.conf.d/20auto-upgrades.

Ve výchozím stavu se na Ubuntu instalují jen bezpečnostní aktualizace, na Debianu bezpečnostní aktualizace a opravy z bodových vydání stabilní verze (například 13.1, 13.2). VPS se sama nerestartuje. Chování upravíte ve vlastním souboru, který přebije výchozí 50unattended-upgrades (ten neupravujte, aktualizace balíčku by ho mohla přepsat):

bash
nano /etc/apt/apt.conf.d/52unattended-upgrades-local
/etc/apt/apt.conf.d/52unattended-upgrades-localtext
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
NastaveníCo děláDoporučená hodnotaKdy změnit
Automatic-RebootRestartuje VPS, když to aktualizace vyžaduje (typicky nové jádro). Výchozí je false.trueNechte false, pokud vaše aplikace po restartu samy nenaběhnou (nejsou nastavené jako služba). Pak restartujte ručně jednou týdně.
Automatic-Reboot-TimeKdy se restart provede, například "04:00". Bez nastavení proběhne ihned po aktualizaci."04:00"Zvolte čas, kdy je na serveru nejmenší provoz.
Remove-Unused-DependenciesSmaže balíčky, které po aktualizaci už nic nepotřebuje.truefalse, pokud si nepřejete, aby se cokoli odinstalovalo samo.

Nastavení vyzkoušejte nanečisto:

bash
unattended-upgrade --dry-run --debug
  • --dry-run – jen simulace, nic se nenainstaluje.
  • --debug – podrobný výpis, včetně načtených nastavení a balíčků, které by se aktualizovaly.

Záznamy o skutečných aktualizacích najdete ve složce /var/log/unattended-upgrades/.

Časové pásmo a název serveru#

  1. Nastavte české časové pásmo, aby časy v logech odpovídaly:

    bash
    timedatectl set-timezone Europe/Prague
    • timedatectl – nastavuje čas a časové pásmo systému.
    • set-timezone Europe/Prague – středoevropský čas včetně letního.
  2. Ověřte výsledek příkazem timedatectl. Řádek Time zone musí ukazovat Europe/Prague a System clock synchronized: yes.

  3. Volitelně změňte název serveru (hostname):

    bash
    hostnamectl set-hostname vps1
    • hostnamectl set-hostname vps1 – nastaví název VPS na vps1. Používejte malá písmena, číslice a pomlčky.

    Nový název se ukáže v příkazovém řádku po dalším přihlášení. Pokud sudo začne vypisovat unable to resolve host vps1, doplňte název do /etc/hosts na řádek 127.0.1.1. Když soubor v hlavičce uvádí, že se generuje automaticky, řiďte se pokyny z hlavičky.

Co dál#

  • Zálohy: celou VPS zálohujeme my a obnovíte ji v záložce Zálohy. Důležitá data si zálohujte i mimo VPS, viz Zálohy VPS.
  • Přehled: jednou za čas zkontrolujte místo na disku (df -h), běžící služby (systemctl --failed) a záznamy fail2banu.
  • Jen potřebné služby: co nepotřebujete, neinstalujte. Každý otevřený port je další možný vstup.

Ověření#

  • apt update po aktualizaci vypíše All packages are up to date.
  • Nové root heslo funguje a záložka Soubory se přihlásí.
  • Uživatel jan se přihlásí přes SSH a sudo whoami vypíše root.
  • sshd -T | grep -E "^(permitrootlogin|passwordauthentication|port) " ukazuje hodnoty, které jste nastavili.
  • unattended-upgrade --dry-run --debug proběhne bez chyby.

Když něco nefunguje#

Odřízli jste se od SSH#

Použijte konzoli v prohlížeči. Přihlásíte se root heslem (i když máte root přes SSH zakázaný) a chybu opravíte, například smažete soubor /etc/ssh/sshd_config.d/00-zabezpeceni.conf a restartujete SSH příkazem systemctl restart ssh.

sudo: jan is not in the sudoers file#

Uživatel není ve skupině sudo. Jako root spusťte usermod -aG sudo jan a uživatel se musí odhlásit a znovu přihlásit, aby se skupina projevila.

Záložka Soubory hlásí, že se přihlášení k VPS nezdařilo#

Zákaznická zóna používá staré údaje. Otevřete Soubory › Změnit přihlašovací údaje a zadejte aktuálního uživatele, port a heslo. Pokud máte vypnuté přihlašování heslem nebo SSH povolené jen z vaší IP adresy, záložka fungovat nebude (viz tabulka v sekci Zabezpečení a zákaznická zóna).

sshd -T ukazuje jinou hodnotu, než jste nastavili#

Stejné nastavení je v jiném souboru, který se načítá dřív (SSH server bere první nalezenou hodnotu). Najděte ho:

bash
grep -rni "permitrootlogin" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
  • grep -rni – hledá text ve všech souborech složky (-r), bez ohledu na velikost písmen (-i) a vypíše číslo řádku (-n).

Řádek v cizím souboru zakomentujte (napište na jeho začátek #), nebo hodnotu změňte přímo tam. Pak znovu spusťte sshd -t && sshd -T | grep -i permitrootlogin a SSH restartujte.

SSH po změně portu dál poslouchá jen na portu 22#

Na Ubuntu 24.04 jste nejspíš vynechali systemctl daemon-reload. Spusťte ho a pak systemctl restart ssh.socket.

E: Could not get lock /var/lib/dpkg/lock-frontend#

Na pozadí právě běží jiná instalace, typicky automatické aktualizace (u nové VPS po prvním startu). Počkejte pár minut a příkaz zopakujte. Proces nenásilně neukončujte.

Shrnutí

  • Aktualizujte systém (apt update, apt full-upgrade) a po novém jádře restartujte.
  • Změňte root heslo příkazem passwd a nové heslo zadejte i v záložce Soubory.
  • Pracujte pod vlastním uživatelem se sudo, root přes SSH zakažte až po otestování.
  • Nastavte SSH klíč, firewall a fail2ban podle samostatných návodů.
  • Automatické bezpečnostní aktualizace řídí unattended-upgrades, úpravy patří do 52unattended-upgrades-local.
  • Vypnutí hesla nebo omezení SSH na vaši IP vypne záložky Soubory a Databáze, konzole funguje vždy.

Byl návod užitečný?

Platí pro

  • Ubuntu 24.04
  • Debian 13

Služby

Nahlásit chybu v návodu

Hledání v návodech