Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

sudo ja vähimmät oikeudet

Moduuli 3: Käyttäjät, oikeudet ja sudo · Lukuaika: 11 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat työskennellä tavallisena käyttäjänä sudon kanssa, lisätä ylläpitäjän turvallisesti, muuttaa sudon asetuksia lukitsematta itseäsi ulos ja selittää, miksi vähimmät oikeudet suojaavat palvelintasi.

Keskeiset käsitteet: sudo, ryhmä sudo, ryhmä wheel, /etc/sudoers, /etc/sudoers.d, visudo, NOPASSWD, sudo -l, rootin lukitseminen, sudon loki, vähimmät oikeudet (least privilege), palvelukäyttäjä

Miksi ei vain työskennellä rootina?

Asennuksen jälkeen kirjaudut usein sisään rootina. Se on helppoa: kaikki on sallittua. Juuri se on kuitenkin ongelma:

  • Yksi kirjoitusvirhe riittää. rm -rf / home/anna/oud (huomaa välilyönti ensimmäisen kauttaviivan jälkeen) pyyhkii rootina koko palvelimesi. Tavallisena käyttäjänä saat virheilmoituksen.
  • Kaikki ajetaan rootina. Internetistä liittämäsi skripti tai testaamasi ohjelma: kaikki saavat täydet oikeudet.
  • Ei jälkiä. Jos kolme ihmistä työskentelee rootina, kukaan ei jälkikäteen tiedä, kuka teki mitä.
  • Root on nimi, jota jokainen hyökkääjä kokeilee. Root-kirjautuminen kannattaa poistaa kokonaan käytöstä (oppitunti 2.2), mutta se onnistuu vasta, kun sinulla on toinen tie ylläpito-oikeuksiin.

Tuo toinen tie on sudo: kirjaudut sisään omana itsenäsi ja lisäät sudo vain sellaisen komennon eteen, joka tarvitsee ylläpito-oikeudet.

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 käyttää versiosta 25.10 alkaen oletuksena sudo-rs:ää, joka on sudon uusi toteutus. Kaikessa tämän oppitunnin sisällössä se toimii samoin.)

sudo kysyy sinun salasanaasi, ei rootin. Sen jälkeen se muistaa sen oletuksena vartin, joten sitä ei tarvitse antaa jokaisen komennon kohdalla uudelleen. Jokainen sudolla ajamasi komento kirjautuu lokiin.

Ylläpitäjän luominen

Debianissa ja Ubuntussa jokainen ryhmän sudo jäsen saa tehdä sudon kautta kaiken. Tämä määritellään tiedostossa /etc/sudoers:

%sudo   ALL=(ALL:ALL) ALL

Lue se näin: ryhmän sudo jäsenet (%) saavat kaikilla koneilla (ALL) minä tahansa käyttäjänä ja ryhmänä ((ALL:ALL)) ajaa minkä tahansa komennon (ALL).

Ylläpitäjän lisääminen tapahtuu siis kahdessa vaiheessa rootina:

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

Lisää sen jälkeen Annan julkinen avain tiedostoon /home/anna/.ssh/authorized_keys oikealla omistajalla ja oikeuksilla:

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

Älä unohda komentoa chown: kun root kopioi tiedoston, se kuuluu rootille, eikä Anna silloin pääse kirjautumaan avaimellaan.

Testaa nyt toisessa ikkunassa, kun root-istuntosi pysyy auki:

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

Vasta kun tämä toimii, aseta SSH-asetuksiisi PermitRootLogin no (oppitunti 2.2). Siitä lähtien kirjaudut aina sisään Annana.

Yksi asia kannattaa muistaa: Anna tarvitsee nyt salasanan sudoa varten. Tallenna se salasanojen hallintaan. Kirjautuminen tapahtuu avaimella, sudo salasanalla: kaksi eri asiaa, jotka murtautujan pitää saada molemmat.

sudon asetusten muuttaminen: aina visudolla

Virhe tiedostossa /etc/sudoers voi tarkoittaa, ettei sudo toimi enää ollenkaan. Jos root ei myöskään pääse kirjautumaan, olet jumissa. Siksi sudon asetuksia ei koskaan muokata tavallisella editorilla vaan visudolla. Se avaa väliaikaisen kopion ja tarkistaa sisällön ennen tallentamista:

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

Käytä SSH:n tapaan mieluummin omaa tiedostoa hakemistossa /etc/sudoers.d/ kuin päätiedostoa. Huomaa kaksi tämän hakemiston sääntöä:

  • Tiedostot, joiden nimessä on piste tai joiden nimi päättyy merkkiin ~, ohitetaan. backup.conf ei siis toimi, backup toimii. Tarkoitus on ohittaa editorien tekemät kopiot, mutta se yllättää monet.
  • Tiedoston pitää kuulua rootille, eikä muilla saa olla siihen kirjoitusoikeutta (440 on tavallinen; visudo hoitaa sen).

Jos haluat tarkistaa olemassa olevan tiedoston muokkaamatta sitä: visudo -c tarkistaa kaiken.

NOPASSWD: kätevä, mutta tiedä mitä teet

Asetuksella NOPASSWD sudo ei enää kysy salasanaa:

anna ALL=(ALL:ALL) NOPASSWD: ALL

Jotkin VPS-imaget asettavat tämän oletuskäyttäjälle, jolloin olet heti avaimella kirjauduttuasi ylläpitäjä. Katso komennolla sudo -l, mitä sinun palvelimellasi on voimassa. Seuraus: jolla on Annan avain, on heti root. Toista lukkoa ei enää ole. Henkilökohtaisella palvelimella voit valita näin, mutta tee se tietoisesti.

Paljon parempi on käyttää NOPASSWD:tä vain yhdelle tietylle komennolle, esimerkiksi varmuuskopiointiskriptille, jonka pitää voida käynnistyä automaattisesti:

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

Käyttäjä backup saa silloin ajaa juuri tuon yhden skriptin rootina ilman salasanaa, eikä mitään muuta. Kaksi sudenkuoppaa:

  • Käytä aina koko polkua. Pelkällä nimellä maak-backup joku voi laittaa samannimisen oman ohjelmansa polkunsa alkuun.
  • Skripti itse ei saa olla kirjoitettavissa tuolle käyttäjälle. Muuten hän muokkaa sitä ja ajaa sitten mielivaltaisia komentoja rootina. Sama koskee komentoja, jotka voivat itse avata shellin, kuten editoria (vim, nano) tai less: joka saa käynnistää ne sudon kautta, voi avata ohjelmasta root-shellin. Älä koskaan anna tällaisia komentoja erikseen sudon kautta.

Mitä lokiin kirjataan

Aina kun joku käyttää sudoa, journaliin tulee rivi (ja rsyslogia käyttävissä järjestelmissä myös tiedostoon /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

Näet kuka, missä, kenenä ja minkä komennon. Tämä on yksi syy olla työskentelemättä usean ihmisen kanssa rootina. Epäonnistuneet sudo-yritykset ("incorrect password attempts") tililtä, joka ei ole sinun, ovat hälytysmerkki.

Vähimmät oikeudet laajemmin

sudo on yksi yleisen periaatteen sovellus: vähimmät oikeudet (least privilege). Jokainen käyttäjä ja jokainen palvelu saa juuri tarvitsemansa oikeudet, ei enempää. Palvelimella se tarkoittaa muun muassa:

  • työskentelet tavallisena käyttäjänä ja käytät sudoa vain tarvittaessa;
  • jokainen palvelu toimii omana käyttäjänään ilman shelliä (oppitunti 3.1), ei rootina;
  • verkkosovellus saa tietokantakäyttäjän, joka saa käyttää vain omaa tietokantaansa, ei tietokantapalvelimen ylläpitäjää;
  • varmuuskopiointiskripti saa ajaa vain sen yhden komennon, jota se tarvitsee (NOPASSWD ja koko polku);
  • kollega, joka vain päivittää verkkosivustoa, saa kirjoitusoikeuden hakemistoon /var/www/example.com ryhmän kautta, ei sudoa.

Ajatus: jos jokin menee pieleen (lisäosan haavoittuvuus, varastettu avain), vahinko rajoittuu tuohon yhteen käyttäjään tai palveluun. CIS-periaatteissa ja koventamista käsittelevässä oppitunnissa (10.1) tämä toistuu jatkuvasti.

AlmaLinuxissa ja Rocky Linuxissa

Niissä ylläpitäjäryhmän nimi on wheel eikä sudo: usermod -aG wheel anna. Rivi tiedostossa /etc/sudoers on %wheel ALL=(ALL) ALL. visudo ja /etc/sudoers.d toimivat samoin. Sudo-ilmoitukset löytyvät siellä myös tiedostosta /var/log/secure.

Yhteenveto

  • Työskentele tavallisena käyttäjänä ja käytä sudoa ylläpitoon; sudo kysyy omaa salasanaasi ja kirjaa jokaisen komennon lokiin.
  • Ylläpitäjän luominen: adduser anna, adduser anna sudo (wheel RHEL-tyyppisissä), avain oikealla omistajalla ja oikeuksilla, testaus toisessa ikkunassa, vasta sitten root-kirjautuminen pois päältä.
  • Muokkaa sudo-sääntöjä vain komennolla visudo, mieluiten omassa tiedostossa hakemistossa /etc/sudoers.d/ ilman pistettä nimessä.
  • NOPASSWD kaikelle poistaa yhden lukon; käytä sitä mieluummin vain yhdelle komennolle koko polulla, jota käyttäjä ei voi muuttaa.
  • Vähimmät oikeudet: jokainen käyttäjä ja palvelu saa juuri sen mitä tarvitsee, jolloin virhe tai haavoittuvuus jää pieneksi.

Tietovisa (quiz)

1. Mitä salasanaa sudo kysyy oletuksena, kun Anna kirjoittaa sudo apt update?



2. Luot tiedoston /etc/sudoers.d/backup.conf, jossa on kelvollinen rivi, mutta se ei toimi. Miksi?



3. Miksi sudo-sääntöjä muokataan visudolla?



4. Mikä rivi antaa varmuuskopiointikäyttäjälle pienimmän riskin?



5. Missä järjestyksessä poistat root-kirjautumisen käytöstä lukitsematta itseäsi ulos?



Tehtävä

Tehtävä O3.2: Ylläpitäjä, jolla on sudo. Luo palvelimellesi tavallinen ylläpitäjä (esimerkiksi anna), aseta avaimesi oikein, testaa kirjautuminen ja sudo -l toisessa ikkunassa ja poista sen jälkeen root-kirjautuminen SSH:n kautta käytöstä (PermitRootLogin no). Merkitse vaiheet tehdyiksi, liitä komennon id tuloste (vain nimi ja ryhmät) ja vastaa kysymyksiin: mikä rivi antaa ylläpitäjällesi oikeudet, onko jossain NOPASSWD ja miten pääset sisään, jos unohdat salasanasi?

Tehtävä O3.2: Ylläpitäjä, jolla on sudo

Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.




Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.

Lue lisää

Näiden artikkelien vaiheet koskevat WebOkén VPS-palvelimia; muilla palveluntarjoajilla se toimii samaan tapaan.

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…