Preskoči na vsebino

Nastavitve piškotkov

Za vsako vrsto izberite, katere piškotke dovolite. Svojo izbiro lahko kadar koli spremenite prek povezave Nastavitve piškotkov na dnu vsake strani. Izjava o zasebnosti

Nujni

Vedno vklopljeno

Potrebni so za prijavo, shranjevanje košarice in pomnjenje Vaših izbir. Vedno so vklopljeni.

Kateri piškotki?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša seja in ohranjanje prijave
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cen z DDV ali brez DDV
  • wok_cookies: Vaša izbira glede piškotkov, 12 mesecev

Meri, kateri oglas vodi do obiska ali naročila, da ne plačujemo za oglase, ki ne prinesejo ničesar.

Kateri piškotki?
  • Google Ads prek Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, oglasi v ChatGPT
  • wok_aff: prek katerega partnerja ste prišli k nam (partnerski program), 60 dni

4,6

Država in jezik

Vsaka država ima svojo spletno stran, s cenami in DDV za to državo.

Prikaži

sudo in minimalne pravice

Modul 3: Uporabniki, pravice in sudo · Čas branja: 11 minut

Učni cilj: Po tej lekciji boste znali delati kot navaden uporabnik s sudo, varno dodati skrbnika, spremeniti nastavitve sudo, ne da bi se zaklenili iz strežnika, in pojasniti, zakaj minimalne pravice ščitijo Vaš strežnik.

Ključni pojmi: sudo, skupina sudo, skupina wheel, /etc/sudoers, /etc/sudoers.d, visudo, NOPASSWD, sudo -l, zaklepanje računa root, dnevnik sudo, minimalne pravice (least privilege), storitveni uporabnik

Zakaj ne bi preprosto delali kot root?

Po namestitvi se pogosto prijavite kot root. To je priročno: vse je dovoljeno. A prav to je težava:

  • Dovolj je ena tipkarska napaka. rm -rf / home/anna/oud (bodite pozorni na presledek za prvo poševnico) kot root izbriše celoten strežnik. Kot navaden uporabnik dobite sporočilo o napaki.
  • Vse teče kot root. Skripta, ki jo prilepite z interneta, program, ki ga preizkušate: vse dobi polne pravice.
  • Ni sledi. Če trije ljudje delajo kot root, nihče pozneje ne ve, kdo je kaj naredil.
  • Root je ime, ki ga poskusi vsak napadalec. Prijavo kot root je bolje povsem izklopiti (lekcija 2.2), vendar je to mogoče šele, ko imate drugo pot do skrbniških pravic.

Ta druga pot je sudo: prijavite se kot Vi sami in samo pred ukaz, ki potrebuje skrbniške pravice, postavite 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 različice 25.10 privzeto uporablja sudo-rs, novo izvedbo sudo. Za vse v tej lekciji deluje enako.)

sudo zahteva Vaše geslo, ne gesla uporabnika root. Nato si ga privzeto zapomni za četrt ure, tako da ga ni treba vnašati pri vsakem ukazu. Vsak ukaz, ki ga izvedete s sudo, se zapiše v dnevnik.

Ustvarjanje skrbnika

Na Debianu in Ubuntuju lahko vsak član skupine sudo prek sudo naredi vse. To je zapisano v /etc/sudoers:

%sudo   ALL=(ALL:ALL) ALL

To preberite takole: člani skupine sudo (%) smejo na vseh računalnikih (ALL) kot kateri koli uporabnik in skupina ((ALL:ALL)) izvesti kateri koli ukaz (ALL).

Skrbnika torej dodate v dveh korakih, kot root:

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

Nato Annin javni ključ postavite v /home/anna/.ssh/authorized_keys s pravim lastnikom in pravicami:

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

Ne pozabite na chown: datoteka, ki jo kopira root, pripada uporabniku root, in Anna se potem s svojim ključem ne more prijaviti.

Zdaj, medtem ko Vaša seja root ostane odprta, preizkusite v drugem oknu:

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

Šele ko to deluje, v nastavitvah SSH nastavite PermitRootLogin no (lekcija 2.2). Od takrat se vedno prijavljate kot Anna.

Nekaj si zapomnite: Anna zdaj za sudo potrebuje geslo. Shranite ga v upravitelj gesel. Prijava poteka s ključem, sudo z geslom: dve različni stvari, ki ju mora vsiljivec imeti obe.

Spreminjanje nastavitev sudo: vedno z visudo

Napaka v /etc/sudoers lahko pomeni, da sudo sploh ne deluje več. Če se tudi root ne more prijaviti, ste obtičali. Zato nastavitev sudo nikoli ne urejate z navadnim urejevalnikom, temveč z visudo. Ta odpre začasno kopijo in preveri vsebino, preden jo shrani:

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

Tako kot pri SSH raje uporabite lastno datoteko v /etc/sudoers.d/ kot glavno datoteko. Bodite pozorni na dve pravili te mape:

  • Datoteke, katerih ime vsebuje piko ali se končá z ~, se preskočijo. backup.conf torej ne deluje, backup pa deluje. To je namenjeno temu, da se prezrejo kopije urejevalnikov, vendar preseneti veliko ljudi.
  • Datoteka mora pripadati uporabniku root in drugi vanjo ne smejo pisati (običajno je 440; za to poskrbi visudo).

Če želite obstoječo datoteko preveriti, ne da bi jo urejali: visudo -c preveri vse.

NOPASSWD: priročno, a vedite, kaj počnete

Z NOPASSWD sudo ne zahteva več gesla:

anna ALL=(ALL:ALL) NOPASSWD: ALL

Nekatere slike VPS to nastavijo za privzetega uporabnika, tako da ste po prijavi s ključem takoj skrbnik. Z sudo -l preverite, kaj velja pri Vas. Posledica: kdor ima Annin ključ, je takoj root. Druge ključavnice ni več. Za osebni strežnik se lahko za to odločite, vendar to storite zavestno.

Veliko bolje je NOPASSWD uporabiti samo za en določen ukaz, na primer za skripto za varnostno kopiranje, ki se mora izvajati samodejno:

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

Uporabnik backup sme potem kot root brez gesla zagnati natanko to eno skripto in nič drugega. Dve pasti:

  • Vedno uporabite celotno pot. Če navedete samo maak-backup, lahko nekdo svoj program s tem imenom postavi na začetek svoje poti.
  • Skripta sama za tega uporabnika ne sme biti zapisljiva. Sicer jo spremeni in nato kot root izvaja poljubne ukaze. Enako velja za ukaze, ki lahko sami odprejo lupino, kot je urejevalnik (vim, nano) ali less: kdor jih sme zagnati prek sudo, lahko iz programa odpre lupino root. Takšnih ukazov nikoli ne dovolite posamično prek sudo.

Kaj se beleži

Vsakič, ko nekdo uporabi sudo, se v journal zapiše vrstica (na sistemih z rsyslog tudi 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

Vidite, kdo, kje, kot kdo in kateri ukaz. To je eden od razlogov, da več ljudi ne dela kot root. Neuspešni poskusi sudo ("incorrect password attempts") z računa, ki ni Vaš, so opozorilni znak.

Minimalne pravice v širšem smislu

sudo je ena uporaba splošnega načela: minimalnih pravic (least privilege). Vsak uporabnik in vsaka storitev dobi natanko tiste pravice, ki jih potrebuje, in nič več. Na strežniku to med drugim pomeni:

  • delate kot navaden uporabnik in sudo uporabljate le, kadar je to potrebno;
  • vsaka storitev teče pod lastnim uporabnikom brez lupine (lekcija 3.1), ne kot root;
  • spletna aplikacija dobi uporabnika podatkovne baze, ki sme uporabljati samo svojo podatkovno bazo, ne skrbnika strežnika podatkovnih baz;
  • skripta za varnostno kopiranje sme izvesti samo tisti en ukaz, ki ga potrebuje (NOPASSWD s celotno potjo);
  • sodelavec, ki samo posodablja spletno mesto, dobi pravico pisanja v /var/www/example.com prek skupine, ne sudo.

Zamisel: če gre kaj narobe (luknja v vtičniku, ukraden ključ), škoda ostane omejena na tega enega uporabnika ali storitev. V načelih CIS in v lekciji o utrjevanju (10.1) se to vedno znova pojavlja.

Na AlmaLinux in Rocky Linux

Tam se skrbniška skupina imenuje wheel namesto sudo: usermod -aG wheel anna. Vrstica v /etc/sudoers je %wheel ALL=(ALL) ALL. visudo in /etc/sudoers.d delujeta enako. Sporočila sudo so tam tudi v /var/log/secure.

Povzetek

  • Delajte kot navaden uporabnik in za upravljanje uporabljajte sudo; sudo zahteva Vaše lastno geslo in beleži vsak ukaz.
  • Ustvarjanje skrbnika: adduser anna, adduser anna sudo (wheel na sistemih, podobnih RHEL), ključ s pravim lastnikom in pravicami, preizkus v drugem oknu, šele nato izklop prijave root.
  • Pravila sudo urejajte samo z visudo, najraje v lastni datoteki v /etc/sudoers.d/ brez pike v imenu.
  • NOPASSWD za vse odstrani eno ključavnico; raje ga uporabite samo za en ukaz s celotno potjo, ki ga uporabnik ne more spremeniti.
  • Minimalne pravice: vsak uporabnik in storitev dobi natanko to, kar potrebuje, da napaka ali luknja ostane majhna.

Kviz

1. Katero geslo sudo privzeto zahteva, ko Anna vtipka sudo apt update?



2. Ustvarite datoteko /etc/sudoers.d/backup.conf z veljavno vrstico, vendar ne deluje. Zakaj?



3. Zakaj pravila sudo urejate z visudo?



4. Katera vrstica uporabniku za varnostno kopiranje prinaša najmanjše tveganje?



5. V kakšnem vrstnem redu izklopite prijavo root, ne da bi se zaklenili iz strežnika?



Naloga

Naloga O3.2: Skrbnik s sudo. Na svojem strežniku ustvarite navadnega skrbnika (na primer anna), pravilno nastavite svoj ključ, v drugem oknu preizkusite prijavo in sudo -l, nato pa izklopite prijavo root prek SSH (PermitRootLogin no). Označite korake, prilepite izpis id (samo ime in skupine) in odgovorite na vprašanja: katera vrstica daje Vašemu skrbniku pravice, ali je kje NOPASSWD in kako pridete v strežnik, če pozabite geslo?

Naloga O3.2: Skrbnik s sudo

To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.




Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.

Za nadaljnje branje

Koraki v teh člankih veljajo za VPS-je WebOké; pri drugih ponudnikih deluje podobno.

Trenutek…

Nastavite svoje domene

Za vsako domeno uredite imenske strežnike, povezavo z gostovanjem in kdo bo imetnik.

Nalaganje Vaših domen…