Prejsť na obsah

Nastavenia súborov cookie

Vyberte, aké druhy súborov cookie povolíte. Svoj výber môžete kedykoľvek zmeniť cez Nastavenia súborov cookie v dolnej časti každej stránky. Vyhlásenie o ochrane osobných údajov

Nevyhnutné

Vždy zapnuté

Potrebné na prihlásenie, uchovanie košíka a zapamätanie vašich volieb. Sú vždy zapnuté.

Ktoré súbory cookie?
  • weboke_sessie, weboke_klant, weboke_remember: vaša relácia a trvalé prihlásenie
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazovanie cien s DPH alebo bez DPH
  • wok_cookies: váš výber súborov cookie, 12 mesiacov

Merajú, ktorá reklama vedie k návšteve alebo objednávke, aby sme neplatili za reklamy, ktoré nič neprinášajú.

Ktoré súbory cookie?
  • Google Ads cez Google Tag Manager (_gcl_au, _gcl_aw), najviac 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: ktorý partner vás k nám odporučil (partnerský program), 60 dní

4,6

Krajina a jazyk

Každá krajina má vlastný web s cenami a DPH danej krajiny.

Zobraziť

sudo a minimálne práva

Modul 3: Používatelia, práva a sudo · Čas čítania: 11 minút

Cieľ lekcie: Po tejto lekcii budete vedieť pracovať ako bežný používateľ so sudo, bezpečne pridať správcu, meniť nastavenia sudo bez toho, aby ste si zablokovali prístup, a vysvetliť, prečo minimálne práva chránia váš server.

Kľúčové pojmy: sudo, skupina sudo, skupina wheel, /etc/sudoers, /etc/sudoers.d, visudo, NOPASSWD, sudo -l, uzamknutie účtu root, log sudo, minimálne práva (least privilege), služobný používateľ

Prečo nepracovať jednoducho ako root?

Po inštalácii sa často prihlasujete ako root. Je to pohodlné: všetko je dovolené. No práve v tom je problém:

  • Stačí jeden preklep. rm -rf / home/anna/oud (všimnite si medzeru za prvou lomkou) ako root vymaže celý váš server. Ako bežný používateľ dostanete chybové hlásenie.
  • Všetko beží ako root. Skript, ktorý vložíte z internetu, program, ktorý testujete: všetko dostane plné práva.
  • Žiadna stopa. Ak pracujú traja ľudia ako root, dodatočne nikto nevie, kto čo urobil.
  • Root je meno, ktoré skúša každý útočník. Prihlasovanie ako root je lepšie úplne vypnúť (lekcia 2.2), no to sa dá až vtedy, keď máte inú cestu k správcovským právam.

Tou inou cestou je sudo: prihlásite sa pod vlastným účtom a iba pred príkaz, ktorý potrebuje správcovské práva, napíšete sudo.

anna@web1:~$ apt update
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
anna@web1:~$ sudo apt update
[sudo] password for anna:
Hit:1 http://deb.debian.org/debian trixie InRelease
...

(Ubuntu od verzie 25.10 štandardne používa sudo-rs, novú implementáciu sudo. Pre všetko v tejto lekcii funguje rovnako.)

sudo žiada vaše heslo, nie heslo účtu root. Potom si ho štandardne pamätá štvrť hodiny, takže ho nemusíte zadávať pri každom príkaze. Každý príkaz, ktorý spustíte cez sudo, sa zapíše do logu.

Vytvorenie správcu

Na Debiane a Ubuntu smie každý člen skupiny sudo robiť cez sudo čokoľvek. Je to uvedené v /etc/sudoers:

%sudo   ALL=(ALL:ALL) ALL

Čítajte to takto: členovia skupiny sudo (%) smú na všetkých strojoch (ALL) ako ktorýkoľvek používateľ a skupina ((ALL:ALL)) spustiť akýkoľvek príkaz (ALL).

Pridanie správcu teda prebieha v dvoch krokoch, ako root:

root@web1:~# adduser anna
root@web1:~# adduser anna sudo

Potom vložte Annin verejný kľúč do /home/anna/.ssh/authorized_keys so správnym vlastníkom a právami:

root@web1:~# mkdir -p /home/anna/.ssh
root@web1:~# cp /root/.ssh/authorized_keys /home/anna/.ssh/
root@web1:~# chown -R anna:anna /home/anna/.ssh
root@web1:~# chmod 700 /home/anna/.ssh
root@web1:~# chmod 600 /home/anna/.ssh/authorized_keys

Nezabudnite na chown: ak súbor skopíruje root, patrí účtu root, a potom sa Anna nemôže prihlásiť svojím kľúčom.

Teraz, kým zostáva vaša relácia root otvorená, otestujte v druhom okne:

anna@laptop:~$ ssh anna@192.0.2.10
anna@web1:~$ sudo -l
[sudo] password for anna:
User anna may run the following commands on web1:
    (ALL : ALL) ALL
anna@web1:~$ sudo whoami
root

Až keď to funguje, nastavte v nastaveniach SSH PermitRootLogin no (lekcia 2.2). Odvtedy sa vždy prihlasujete ako Anna.

Jednu vec si zapamätajte: Anna teraz potrebuje na sudo heslo. Uložte si ho do správcu hesiel. Prihlásenie prebieha kľúčom, sudo heslom: dve rôzne veci, ktoré musí mať útočník obe.

Zmena nastavení sudo: vždy cez visudo

Chyba v /etc/sudoers môže znamenať, že sudo prestane úplne fungovať. Ak sa nedá prihlásiť ani ako root, ste v slepej uličke. Preto nastavenia sudo nikdy neupravujte bežným editorom, ale pomocou visudo. Ten otvorí dočasnú kópiu a pred uložením skontroluje jej obsah:

root@web1:~# visudo -f /etc/sudoers.d/backup

Podobne ako pri SSH radšej použite vlastný súbor v /etc/sudoers.d/ než hlavný súbor. Pri tomto priečinku dajte pozor na dve pravidlá:

  • Súbory, ktorých názov obsahuje bodku alebo končí na ~, sa preskakujú. backup.conf teda nefunguje, backup áno. Slúži to na ignorovanie kópií z editorov, no mnohých ľudí to prekvapí.
  • Súbor musí patriť účtu root a ostatní doň nesmú zapisovať (bežné je 440; visudo to zariadi).

Ak chcete existujúci súbor skontrolovať bez úprav: visudo -c skontroluje všetko.

NOPASSWD: praktické, ale vedzte, čo robíte

S NOPASSWD sudo už nežiada heslo:

anna ALL=(ALL:ALL) NOPASSWD: ALL

Niektoré obrazy VPS to nastavujú pre predvoleného používateľa, takže po prihlásení kľúčom máte hneď správcovské práva. Pomocou sudo -l zistíte, čo platí u vás. Dôsledok: kto má Annin kľúč, je okamžite root. Druhý zámok už neexistuje. Pri osobnom serveri sa tak môžete rozhodnúť, ale urobte to vedome.

Oveľa lepšie je NOPASSWD iba pre jeden konkrétny príkaz, napríklad pre zálohovací skript, ktorý musí bežať automaticky:

backup ALL=(root) NOPASSWD: /usr/local/bin/maak-backup

Používateľ backup potom smie ako root spustiť presne tento jeden skript, bez hesla, a nič iné. Dve pasce:

  • Vždy uvádzajte úplnú cestu. Ak uvediete iba maak-backup, niekto si môže dať na začiatok svojej cesty vlastný program s týmto názvom.
  • Do samotného skriptu tento používateľ nesmie môcť zapisovať. Inak ho upraví a potom spúšťa ako root ľubovoľné príkazy. To isté platí pre príkazy, ktoré dokážu samy otvoriť shell, napríklad editor (vim, nano) alebo less: kto ich smie spustiť cez sudo, môže z programu otvoriť shell s právami root. Takéto príkazy cez sudo nikdy samostatne nepovoľujte.

Čo sa zaznamenáva

Zakaždým, keď niekto použije sudo, pribudne záznam v journale (a na systémoch s rsyslog aj v /var/log/auth.log):

anna@web1:~$ sudo journalctl _COMM=sudo --since today
Nov 09 10:31:02 web1 sudo[2214]:     anna : TTY=pts/0 ; PWD=/home/anna ; USER=root ; COMMAND=/usr/bin/apt update

Vidíte kto, kde, ako kto a ktorý príkaz. To je jeden z dôvodov, prečo nepracovať viacerí ako root. Neúspešné pokusy o sudo ("incorrect password attempts") z účtu, ktorý nie je váš, sú varovným signálom.

Minimálne práva vo väčšom

sudo je jedno z použití všeobecného princípu: minimálne práva (least privilege). Každý používateľ a každá služba dostane presne tie práva, ktoré potrebuje, a nie viac. Na serveri to okrem iného znamená:

  • pracujete ako bežný používateľ a sudo používate iba vtedy, keď je to potrebné;
  • každá služba beží pod vlastným používateľom bez shellu (lekcia 3.1), nie ako root;
  • webová aplikácia dostane databázového používateľa, ktorý smie používať iba svoju vlastnú databázu, nie správcu databázového servera;
  • zálohovací skript smie iba ten jeden príkaz, ktorý potrebuje (NOPASSWD s úplnou cestou);
  • kolega, ktorý iba aktualizuje web, dostane právo zápisu do /var/www/example.com cez skupinu, nie sudo.

Myšlienka: ak sa niečo pokazí (diera v plugine, ukradnutý kľúč), škoda zostane obmedzená na toho jedného používateľa alebo službu. V princípoch CIS a v lekcii o hardeningu (10.1) sa to stále opakuje.

Na AlmaLinux a Rocky Linux

Tam sa skupina správcov nevolá sudo, ale wheel: usermod -aG wheel anna. Pravidlo v /etc/sudoers je %wheel ALL=(ALL) ALL. visudo a /etc/sudoers.d fungujú rovnako. Hlásenia sudo nájdete tam aj v /var/log/secure.

Zhrnutie

  • Pracujte ako bežný používateľ a na správu používajte sudo; sudo žiada vaše vlastné heslo a zaznamenáva každý príkaz.
  • Vytvorenie správcu: adduser anna, adduser anna sudo (wheel na systémoch podobných RHEL), kľúč so správnym vlastníkom a právami, test v druhom okne, až potom vypnúť prihlasovanie ako root.
  • Pravidlá sudo upravujte iba pomocou visudo, najlepšie vo vlastnom súbore v /etc/sudoers.d/ bez bodky v názve.
  • NOPASSWD pre všetko odstraňuje jeden zámok; radšej ho použite iba pre jeden príkaz s úplnou cestou, ktorý používateľ nemôže meniť.
  • Minimálne práva: každý používateľ a služba dostane presne to, čo potrebuje, aby chyba alebo únik zostali malé.

Kvíz

1. Aké heslo štandardne žiada sudo, keď Anna napíše sudo apt update?



2. Vytvoríte súbor /etc/sudoers.d/backup.conf s platným pravidlom, ale nefunguje. Prečo?



3. Prečo upravujete pravidlá sudo pomocou visudo?



4. Ktoré pravidlo predstavuje pre zálohovacieho používateľa najmenšie riziko?



5. V akom poradí vypnete prihlasovanie ako root bez toho, aby ste si zablokovali prístup?



Úloha

Úloha O3.2: Správca so sudo. Vytvorte na svojom serveri bežného správcu (napríklad anna), správne nastavte kľúč, v druhom okne otestujte prihlásenie a sudo -l a potom vypnite prihlasovanie ako root cez SSH (PermitRootLogin no). Odškrtnite kroky, vložte výstup id (iba meno a skupiny) a odpovedzte na otázky: ktoré pravidlo dáva vášmu správcovi práva, je niekde NOPASSWD a ako sa dostanete dnu, ak zabudnete heslo?

Úloha O3.2: Správca so sudo

Túto úlohu vykonávate sami, nikto ju nekontroluje. Odškrtnite, čo ste urobili, a označte úlohu ako splnenú.




Vaše zaškrtnutia a poznámky zostávajú iba v tomto prehliadači, nikam ich neposielame. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že ste úlohu splnili.

Ďalšie čítanie

Kroky v týchto článkoch platia pre VPS od WebOké; u iných poskytovateľov to funguje podobne.

Chvíľu strpenia…

Nastavte svoje domény

Pri každej doméne nastavte nameservery, prepojenie s hostingom a to, kto bude jej vlastníkom.

Načítavajú sa vaše domény…