Mine sisu juurde

Küpsiste seaded

Vali iga liigi kohta, milliseid küpsiseid lubad. Oma valikut saad alati muuta iga lehe allosas oleva lingi „Küpsiste seaded“ kaudu. Privaatsuspoliitika

Vajalikud

Alati sees

Vajalikud sisselogimiseks, ostukorvi säilitamiseks ja sinu valikute meelespidamiseks. Need on alati sees.

Millised küpsised?
  • weboke_sessie, weboke_klant, weboke_remember: sinu seanss ja sisselogituks jäämine
  • weboke_basket: sinu ostukorv
  • wkBtwIncl: hindade näitamine koos käibemaksuga või ilma
  • wok_cookies: sinu küpsisevalik, 12 kuud

Mõõdab, milline reklaam viib külastuse või tellimuseni, et me ei maksaks reklaamide eest, mis midagi ei anna.

Millised küpsised?
  • Google Ads Google Tag Manageri kaudu (_gcl_au, _gcl_aw), kuni 90 päeva
  • OpenAI Ads, reklaamid ChatGPT-s
  • wok_aff: millise partneri kaudu meie juurde jõudsid (partnerprogramm), 60 päeva

4,6

Riik ja keel

Igal riigil on oma sait, selle riigi hindade ja käibemaksuga.

Vaata

SSH-serveri turvaline seadistamine

Moodul 2: SSH ja võtmed · Lugemisaeg: 12 minutit

Õpieesmärk: Pärast seda õppetundi oskad parooliga sisselogimise ja root-i parooliga sisselogimise välja lülitada, kontrollida, milline seade päriselt kehtib, ja teha seda nii, et sa ennast välja ei lukusta.

Põhimõisted: sshd, sshd_config, sshd_config.d, loeb esimene väärtus, PasswordAuthentication, KbdInteractiveAuthentication, PermitRootLogin, AuthenticationMethods, AllowUsers, sshd -t, sshd -T, teine seanss, cloud-init, ssh.socket

Kõigepealt turvavõrk

Selles õppetunnis paned kinni ukse, millest pead ise läbi käima. Üks trükiviga võib tähendada, et sa enam sisse ei pääse. Seepärast tee enne alustamist alati järgmist:

  1. Kaks võtit töötavad (õppetund 2.1) ja oled uues aknas kontrollinud, et võtmega sisselogimine õnnestub.
  2. Hetktõmmis (snapshot) sinu VPS-ist. WebOkés teed selle VPS-i vaates, teistel teenusepakkujatel nimetatakse seda samuti snapshotiks või image'iks. Kui midagi läheb valesti, taasta see.
  3. Teenusepakkuja konsool on sulle tuttav: sealt pääsed sisse ilma SSH-ta.
  4. Sinu praegune SSH-seanss jääb lõpuni avatuks. Käimasolev seanss töötab edasi ka siis, kui muudad seadeid või laadid teenuse uuesti. Iga muudatust testid teises aknas.

Kus seaded asuvad

SSH-serveri nimi on sshd. Selle seaded on failis /etc/ssh/sshd_config. Debianis ja Ubuntus on selle faili alguses see rida:

Include /etc/ssh/sshd_config.d/*.conf

Kõik kaustas sshd_config.d olevad failid laiendiga .conf loetakse seega enne põhifaili ülejäänud osa, tähestikulises järjekorras. See on mugav: paned oma seaded eraldi faili ja jätad põhifaili rahule, nii et paketi uuendus sinu muudatusi ei puuduta.

Sellel on aga tagajärg, mis paljusid üllatab. Failis sshd_config kehtib reegel: iga seade puhul loeb esimene väärtus, mille sshd leiab. Hilisemaid sama seadega ridu eiratakse. Kui paned faili sshd_config lõppu PasswordAuthentication no, ei võida see kausta sshd_config.d faili, milles on yes.

cloud-init'i lõks

Paljud VPS-i image'id seadistab esimesel käivitusel cloud-init. Sõltuvalt sellest, kuidas image ja paigaldus on seadistatud, kirjutab cloud-init faili, näiteks /etc/ssh/sshd_config.d/50-cloud-init.conf, milles on näiteks:

PasswordAuthentication yes

Kuna see fail loetakse enne põhifaili, on parooliga sisselogimine sees, ükskõik mida sa failis sshd_config määrad. Ära siis eelda, vaid kontrolli:

root@web1:~# grep -ri passwordauthentication /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
/etc/ssh/sshd_config:#PasswordAuthentication yes
/etc/ssh/sshd_config.d/50-cloud-init.conf:PasswordAuthentication yes

Kaks puhast lahendust: muuda see fail väärtusele no või pane oma seaded faili, mis tuleb tähestikus varem, näiteks 00-beveiliging.conf. Fail 99-mijn.conf just ei tööta, sest siis on cloud-init juba võitnud.

Olulised seaded

Loo oma fail:

root@web1:~# nano /etc/ssh/sshd_config.d/00-beveiliging.conf

järgmise sisuga:

# Sisselogimine ainult võtmega
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password

Mida iga rida tähendab?

  • PasswordAuthentication no: server ei aktsepteeri enam parooli. OpenSSH vaikeväärtus on yes.
  • KbdInteractiveAuthentication no: "keyboard-interactive" on teine viis parooli küsida, PAM-i kaudu. Kui jätad selle sisse, saab keegi ikkagi parooli proovida, isegi kui PasswordAuthentication on väärtusel no. Vanemates juhendites on selle seade nimi ChallengeResponseAuthentication; alates OpenSSH 8.7-st on see sama asja vananenud teine nimi. Debian seab selle vaikimisi juba väärtusele no, kuid kirjuta see ikkagi faili: nii on asi selge ja klapib ka teistes süsteemides.
  • PermitRootLogin prohibit-password: root võib sisse logida, aga ainult võtmega. Alates OpenSSH 7.0-st on see vaikeväärtus. Rangem on PermitRootLogin no: root ei pääse SSH kaudu üldse sisse, logid sisse tavakasutajana ja kasutad sudo't (õppetund 3.2). Määra no alles siis, kui oled kindel, et selle kasutajana sisselogimine ja sudo töötavad.

Valikuline, kui tahad rohkem:

AllowUsers anna
AuthenticationMethods publickey

AllowUsers laseb sisse ainult nimetatud kasutajad; iga teine nimi lükatakse tagasi, isegi kui sellel on kehtiv võti. Kasulik, aga ära unusta iseennast ja ära unusta nimekirja täiendada, kui lisad teise halduri. AuthenticationMethods publickey ütleb ühe reaga, et kehtivad ainult võtmed.

Testimine, rakendamine, kontrollimine

Kõigepealt lase sshd-l faili kontrollida. See ei käivita ega muuda midagi:

root@web1:~# sshd -t
root@web1:~#

Väljundi puudumine tähendab: vigu pole. Trükivea korral näed rida ja faili. Alles siis laadi teenus uuesti:

root@web1:~# systemctl reload ssh

Debianis ja Ubuntus on teenuse nimi ssh, AlmaLinuxis ja Rocky Linuxis sshd.

Seejärel kontrolli, milline väärtus päriselt kehtib. sshd -T näitab täielikku, välja arvutatud konfiguratsiooni, kus kõik Include-failid on arvesse võetud:

root@web1:~# sshd -T | grep -Ei 'passwordauth|kbdinteractive|permitrootlogin'
permitrootlogin without-password
passwordauthentication no
kbdinteractiveauthentication no

(without-password on väärtuse prohibit-password vana nimi. OpenSSH versioonid enne 10.1, näiteks Debian 13 ja Ubuntu 24.04 omad, näitavad veel vana nime; uuemad näitavad prohibit-password. Tähendus on sama.)

Ja nüüd kõige tähtsam: testi teises aknas, samal ajal kui esimene jääb avatuks.

anna@laptop:~$ ssh anna@192.0.2.10
anna@web1:~$

Kui see töötab, proovi meelega parooliga sisse logida. See peab ebaõnnestuma:

anna@laptop:~$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no anna@192.0.2.10
anna@192.0.2.10: Permission denied (publickey).

Teate Permission denied järel on sulgudes kirjas, milliseid sisselogimisviise server veel pakub. Kui seal on ainult publickey, on kõik korras. Kui seal on ka password või keyboard-interactive, kehtib kuskil veel teine väärtus: kontrolli uuesti käsuga sshd -T.

Just seda nimekirja kontrollib ka kursuse ülesanne, väljastpoolt. Sinu SSH-klient küsib iga ühenduse alguses, milliseid viise tohib kasutada, päringuga tüübist "none". Server vastab nimekirjaga, ilma et proovitaks parooli või võtit.

Ubuntu 24.04 ja uuemad: ssh.socket

Ubuntus alates versioonist 22.10 ei kuula pordil 22 sshd ise, vaid systemd, ssh.socket'i kaudu. Alles siis, kui ühendus saabub, käivitab systemd SSH-teenuse. Selle õppetunni seadete jaoks pole sellel tähtsust: piisab käsust systemctl reload ssh või restart ssh.

Tähtsust on sellel siis, kui muudad porti või kuulamisaadressi (Port, ListenAddress). Alates Ubuntu 24.04-st loeb systemd need väärtused failist sshd_config, kuid ainult pärast järgmist:

root@web1:~# systemctl daemon-reload
root@web1:~# systemctl restart ssh.socket

Kui see ununeb, kuulab server lihtsalt edasi vanal pordil. Hullem veel: kui avad tulemüüris esmalt uue pordi ja paned vana kinni, aga SSH jääb vanale, lukustad ennast välja. Kontrolli alati käsuga ss -tlnp | grep ssh, kus päriselt kuulatakse (õppetund 5.1), ja ava uus port tulemüüris enne, kui vana sulged. Kas teine port on mõistlik, loe õppetunnist 2.3.

Kui midagi siiski läheb valesti

Kui sa enam sisse ei pääse, ava teenusepakkuja konsool, logi sisse root-ina (parooliga, sest konsool on "klaviatuur serveri küljes", mitte SSH) ja võta oma fail tagasi:

root@web1:~# mv /etc/ssh/sshd_config.d/00-beveiliging.conf /root/
root@web1:~# systemctl reload ssh

Kui ka see ei õnnestu, taasta hetktõmmis. WebOkés saad VPS-i vaates määrata ka uue root-i parooli; teistel teenusepakkujatel on sageli sarnane nupp või päästerežiim (rescue).

AlmaLinuxis ja Rocky Linuxis

Teenuse nimi on sshd (systemctl reload sshd). Ka seal on faili alguses Include /etc/ssh/sshd_config.d/*.conf ja süsteem paneb sellesse kausta oma failid; kehtib sama reegel "loeb esimene väärtus". Kui muudad porti, peab SELinux selle pordi lubama (semanage port -a -t ssh_port_t -p tcp 2222) ja firewalld peab selle avama.

Kokkuvõte

  • Failis sshd_config loeb esimene väärtus; kausta sshd_config.d failid loetakse enne. Pane oma seaded faili, näiteks 00-beveiliging.conf.
  • Määra PasswordAuthentication no ja KbdInteractiveAuthentication no; root ainult võtmega (prohibit-password) või üldse mitte (no).
  • Kontrolli enne uuesti laadimist käsuga sshd -t ja käsuga sshd -T, milline väärtus päriselt kehtib; jälgi faili 50-cloud-init.conf.
  • Testi teises aknas ja hoia esimene seanss avatuna. Tunne konsooli ja tee eelnevalt hetktõmmis.
  • Ubuntu 24.04+ puhul vajab teine port käske systemctl daemon-reload ja systemctl restart ssh.socket.

Test (quiz)

1. Faili /etc/ssh/sshd_config lõpus on PasswordAuthentication no, aga parooliga saab ikka sisse logida. Mis on kõige tõenäolisem põhjus?



2. Miks määrad lisaks seadele PasswordAuthentication no ka KbdInteractiveAuthentication no?



3. Mida tähendab PermitRootLogin prohibit-password?



4. Millises järjekorras töötad kõige turvalisemalt?



5. Muudad Ubuntu 24.04-s rea Port 22 kujule Port 2222 ja käivitad systemctl restart ssh. Käsuga ss -tlnp näed, et kuulatakse ikka pordil 22. Mis jäi tegemata?



Ülesanne

Ülesanne Z2.2: Parooliga sisselogimine on välja lülitatud. Lülita paroolilogin ja keyboard-interactive välja nagu selles õppetunnis ning lase siis programmil väljastpoolt kontrollida. Sisesta oma serveri IP-aadress või hostinimi, SSH-port (vaikimisi 22) ja kasutajanimi, millega ise sisse logid (näiteks anna, mitte root ega väljamõeldud nimi). Programm ei logi sisse: see küsib ainult, nagu iga SSH-klient enne sisselogimist, milliseid sisselogimisviise sinu server sellele kasutajale pakub. Õige on: ainult publickey.

Ülesanne Z2.2: Parooliga sisselogimine on välja lülitatud

Me ei logi sisse ega proovi ühtegi parooli ega võtit. Kõigepealt näita, et server on sinu: klõpsa „Näita minu koodi“ ja pane oma hostinime veebiserverisse fail /.well-known/weboke-cursus-<code>.txt, milles on ainult see kood. Laadime selle otse igalt IP-aadressilt, mida kontrollime (IPv4 ja IPv6 eraldi); TXT-kirje siin ei loe. Kontroll tuleb serverist heavy.webawere.nl (185.158.167.16 ja 2a07:ae80:100:0:185:158:167:16), mitte meie veebiserverist. Ainult registreerunud kursuslastele; serveri kohta kuni 6 kontrolli tunnis. Küsime ainult, milliseid sisselogimisviise su server sinu kasutajanimele pakub, nagu iga SSH-klient enne sisselogimist teeb. Sisesta oma kasutaja: tundmatu nimi jõuab su logisse kui „Invalid user“ ja fail2ban loeb selle üheks katseks.





Seda, mida sisestad, ja mida leiame, me ei salvesta. Su brauser jätab meelde su vastused ja selle, kas sooritasid ülesande. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et sul oli ülesanne (peaaegu) õige; ka selle saad sealt kustutada.

Loe edasi

Nende artiklite sammud kehtivad WebOké VPS-i vaate kohta; teistel teenusepakkujatel töötab see sarnaselt.

Hetk…

Seadista oma domeenid

Määra iga domeeni jaoks nimeserverid, seos sinu majutusega ja kes saab omanikuks.

Laadin sinu domeene…