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ä

SSH-palvelimen turvallinen määrittäminen

Moduuli 2: SSH ja avaimet · Lukuaika: 12 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat poistaa käytöstä salasanalla kirjautumisen ja rootin salasanakirjautumisen, tarkistaa, mikä asetus on todella voimassa, ja tehdä tämän lukitsematta itseäsi ulos.

Keskeiset käsitteet: sshd, sshd_config, sshd_config.d, ensimmäinen arvo ratkaisee, PasswordAuthentication, KbdInteractiveAuthentication, PermitRootLogin, AuthenticationMethods, AllowUsers, sshd -t, sshd -T, toinen istunto, cloud-init, ssh.socket

Ensin turvaverkko

Tällä oppitunnilla suljet oven, josta sinun itsesi pitää kulkea. Yksi kirjoitusvirhe voi tarkoittaa, ettet pääse enää sisään. Tee siksi aina ennen aloittamista nämä:

  1. Kaksi avainta toimii (oppitunti 2.1), ja olet tarkistanut uudessa ikkunassa, että kirjautuminen avaimella onnistuu.
  2. Tilannevedos (snapshot) VPS:stäsi. WebOkéssa teet sen VPS-näkymässä, muilla palveluntarjoajilla sen nimi on myös snapshot tai image. Jos jokin menee pieleen, palautat sen.
  3. Palveluntarjoajasi konsoli on sinulle tuttu: sen kautta pääset sisään ilman SSH:ta.
  4. Nykyinen SSH-istuntosi pysyy auki loppuun asti. Käynnissä oleva istunto toimii edelleen, vaikka muutat asetuksia tai lataat palvelun uudelleen. Testaat jokaisen muutoksen toisessa ikkunassa.

Missä asetukset ovat

SSH-palvelimen nimi on sshd. Sen asetukset ovat tiedostossa /etc/ssh/sshd_config. Debianissa ja Ubuntussa tiedoston alussa on tämä rivi:

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

Kaikki kansion sshd_config.d tiedostot, joiden pääte on .conf, luetaan siis ennen pääasetustiedoston muuta sisältöä, aakkosjärjestyksessä. Tämä on kätevää: laitat omat asetuksesi omaan tiedostoonsa etkä koske pääasetustiedostoon, jolloin paketin päivitys ei vaikuta muutoksiisi.

Tällä on kuitenkin seuraus, joka yllättää monet. Tiedostossa sshd_config pätee: jokaisen asetuksen kohdalla ratkaisee ensimmäinen arvo, jonka sshd kohtaa. Myöhemmät rivit, joissa on sama asetus, ohitetaan. Jos kirjoitat sshd_config-tiedoston loppuun PasswordAuthentication no, se ei siis voita kansion sshd_config.d tiedostoa, jossa lukee yes.

cloud-initin sudenkuoppa

Monet VPS-imaget määrittää ensimmäisellä käynnistyskerralla cloud-init. Riippuen siitä, miten image ja asennus on määritetty, cloud-init kirjoittaa tiedoston, kuten /etc/ssh/sshd_config.d/50-cloud-init.conf, jossa on esimerkiksi:

PasswordAuthentication yes

Koska tämä tiedosto luetaan ennen pääasetustiedostoa, salasanakirjautuminen on käytössä, kirjoitit tiedostoon sshd_config mitä tahansa. Älä siis oleta, vaan tarkista:

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

Kaksi siistiä ratkaisua: muuta tuo tiedosto arvoon no tai laita omat asetuksesi tiedostoon, joka tulee aakkosissa aiemmin, kuten 00-beveiliging.conf. Tiedosto 99-mijn.conf ei nimenomaan toimi, koska silloin cloud-init on jo voittanut.

Asetukset, joilla on merkitystä

Luo oma tiedostosi:

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

ja lisää siihen tämä sisältö:

# Kirjautuminen vain avaimella
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password

Mitä kukin rivi tarkoittaa?

  • PasswordAuthentication no: palvelin ei enää hyväksy salasanaa. OpenSSH:n oletusarvo on yes.
  • KbdInteractiveAuthentication no: "keyboard-interactive" on toinen tapa kysyä salasanaa, PAM:n kautta. Jos jätät tämän päälle, joku voi silti kokeilla salasanaa, vaikka PasswordAuthentication olisi arvossa no. Vanhemmissa ohjeissa tämän asetuksen nimi on ChallengeResponseAuthentication; OpenSSH 8.7:stä lähtien se on saman asetuksen vanhentunut vaihtoehtoinen nimi. Debian asettaa sen oletuksena jo arvoon no, mutta kirjoita se silti tiedostoon: silloin asia on selvä ja pitää paikkansa myös muissa järjestelmissä.
  • PermitRootLogin prohibit-password: root saa kirjautua, mutta vain avaimella. Tämä on ollut oletus OpenSSH 7.0:sta lähtien. Tiukempi vaihtoehto on PermitRootLogin no: root ei pääse SSH:n kautta sisään lainkaan, vaan kirjaudut tavallisena käyttäjänä ja käytät sudoa (oppitunti 3.2). Aseta no vasta, kun olet varma, että kirjautuminen kyseisenä käyttäjänä ja sudo toimivat.

Valinnaisesti, jos haluat mennä pidemmälle:

AllowUsers anna
AuthenticationMethods publickey

AllowUsers päästää sisään vain luetellut käyttäjät; kaikki muut nimet hylätään, vaikka niillä olisi kelvollinen avain. Kätevää, mutta älä unohda itseäsi, äläkä unohda lisätä nimeä, kun otat käyttöön toisen ylläpitäjän. AuthenticationMethods publickey kertoo yhdellä rivillä, että vain avaimet kelpaavat.

Testaa, ota käyttöön, tarkista

Ensin annat sshd:n tarkistaa tiedoston. Tämä ei käynnistä eikä muuta mitään:

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

Jos tulostetta ei tule, virheitä ei ole. Kirjoitusvirheen kohdalla näet rivin ja tiedoston. Vasta sitten lataat palvelun uudelleen:

root@web1:~# systemctl reload ssh

Debianissa ja Ubuntussa palvelun nimi on ssh, AlmaLinuxissa ja Rocky Linuxissa sshd.

Sen jälkeen tarkistat, mikä arvo on todella voimassa. sshd -T näyttää koko lasketun määrityksen, johon kaikki Include-tiedostot on käsitelty:

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

(without-password on vanha nimi arvolle prohibit-password. OpenSSH:n versiot ennen 10.1:tä, kuten Debian 13:ssa ja Ubuntu 24.04:ssä, näyttävät vielä vanhan nimen; uudemmat näyttävät prohibit-password. Merkitys on sama.)

Ja nyt tärkein: testaa toisessa ikkunassa, kun ensimmäinen pysyy auki.

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

Jos se toimii, yritä tarkoituksella kirjautua salasanalla. Tämän pitää epäonnistua:

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

Tekstin Permission denied perässä suluissa näkyy, mitä kirjautumistapoja palvelin vielä tarjoaa. Jos siinä on vain publickey, kaikki on kunnossa. Jos mukana on password tai keyboard-interactive, jossain on vielä voimassa toinen arvo: tarkista uudelleen komennolla sshd -T.

Juuri tämän listan kurssin tehtävä tarkistaa myös, ulkopuolelta. SSH-asiakasohjelmasi kysyy jokaisen yhteyden alussa ensin, mitkä tavat ovat sallittuja, "none"-tyyppisellä pyynnöllä. Palvelin vastaa listalla, eikä salasanaa tai avainta kokeilla.

Ubuntu 24.04 ja uudemmat: ssh.socket

Ubuntussa versiosta 22.10 lähtien porttia 22 ei kuuntele sshd itse vaan systemd, ssh.socket-yksikön kautta. Vasta kun yhteys saapuu, systemd käynnistää SSH-palvelun. Tämän oppitunnin asetuksiin sillä ei ole vaikutusta: systemctl reload ssh tai restart ssh riittää.

Sillä on kuitenkin merkitystä, jos muutat porttia tai kuunteluosoitetta (Port, ListenAddress). Ubuntu 24.04:stä lähtien systemd lukee nämä arvot tiedostosta sshd_config, mutta vasta tämän jälkeen:

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

Jos unohdat sen, palvelin kuuntelee edelleen vanhaa porttia. Pahempaa: jos asetat palomuurin ensin uuteen porttiin ja SSH jää vanhaan, lukitset itsesi ulos. Tarkista aina komennolla ss -tlnp | grep ssh, mitä todella kuunnellaan (oppitunti 5.1), ja avaa uusi portti palomuurista ennen kuin suljet vanhan. Onko toisesta portista hyötyä, sen luet oppitunnilta 2.3.

Jos jokin kuitenkin menee pieleen

Jos et enää pääse sisään, avaa palveluntarjoajasi konsoli, kirjaudu rootina (salasanalla, koska konsoli on "näppäimistö palvelimessa" eikä SSH) ja palauta tiedostosi:

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

Jos sekään ei onnistu, palauta tilannevedos. WebOkéssa voit myös asettaa VPS-näkymässä uuden root-salasanan; muilla palveluntarjoajilla on usein vastaava painike tai pelastustila (rescue).

AlmaLinuxissa ja Rocky Linuxissa

Palvelun nimi on sshd (systemctl reload sshd). Myös siellä tiedoston alussa on Include /etc/ssh/sshd_config.d/*.conf, ja järjestelmä tuo omia tiedostojaan tuohon kansioon; sama sääntö "ensimmäinen arvo ratkaisee" pätee. Jos muutat porttia, SELinuxin on myös sallittava se (semanage port -a -t ssh_port_t -p tcp 2222) ja firewalldin avattava se.

Yhteenveto

  • Tiedostossa sshd_config ratkaisee ensimmäinen arvo; kansion sshd_config.d tiedostot luetaan ensin. Laita omat asetuksesi tiedostoon, kuten 00-beveiliging.conf.
  • Aseta PasswordAuthentication no ja KbdInteractiveAuthentication no; root vain avaimella (prohibit-password) tai ei lainkaan (no).
  • Tarkista komennolla sshd -t ennen uudelleenlatausta ja komennolla sshd -T, mikä arvo on todella voimassa; varo tiedostoa 50-cloud-init.conf.
  • Testaa toisessa ikkunassa ja pidä ensimmäinen istunto auki. Tunne konsoli ja tee tilannevedos etukäteen.
  • Ubuntu 24.04+:ssa toinen portti vaatii komennot systemctl daemon-reload ja systemctl restart ssh.socket.

Tietovisa (quiz)

1. Tiedoston /etc/ssh/sshd_config lopussa on PasswordAuthentication no, mutta voit yhä kirjautua salasanalla. Mikä on todennäköisin syy?



2. Miksi asetat asetuksen PasswordAuthentication no lisäksi myös KbdInteractiveAuthentication no?



3. Mitä PermitRootLogin prohibit-password tarkoittaa?



4. Missä järjestyksessä toimit turvallisimmin?



5. Muutat Ubuntu 24.04:ssä rivin Port 22 muotoon Port 2222 ja ajat systemctl restart ssh. Komennolla ss -tlnp näet, että porttia 22 kuunnellaan yhä. Mitä unohdit?



Tehtävä

Tehtävä Z2.2: Salasanakirjautuminen on pois päältä. Poista salasanakirjautuminen ja keyboard-interactive käytöstä tämän oppitunnin mukaisesti ja anna sitten ohjelman tarkistaa tilanne ulkopuolelta. Anna palvelimesi IP-osoite tai isäntänimi, SSH-portti (oletus 22) ja käyttäjänimi, jolla itse kirjaudut (esimerkiksi anna, ei root eikä keksitty nimi). Ohjelma ei kirjaudu sisään: se vain kysyy, kuten jokainen SSH-asiakasohjelma ennen kirjautumista, mitä kirjautumistapoja palvelimesi tarjoaa kyseiselle käyttäjälle. Oikea tulos: vain publickey.

Tehtävä Z2.2: Salasanakirjautuminen on pois päältä

Emme kirjaudu sisään emmekä kokeile salasanaa tai avainta. Osoita ensin, että palvelin on sinun: napsauta "Näytä koodini" ja tallenna isäntänimesi verkkopalvelimelle tiedosto /.well-known/weboke-cursus-<code>.txt, jossa on pelkkä tämä koodi. Haemme sen suoraan jokaisesta tarkistamastamme IP-osoitteesta (IPv4 ja IPv6 erikseen); TXT-tietue ei kelpaa tähän. Tarkistus tulee osoitteesta heavy.webawere.nl (185.158.167.16 ja 2a07:ae80:100:0:185:158:167:16), ei meidän verkkopalvelimeltamme. Vain kirjautuneille kurssilaisille; enintään 6 tarkistusta tunnissa palvelinta kohden. Kysymme vain, mitä kirjautumistapoja palvelimesi tarjoaa käyttäjänimellesi, kuten jokainen SSH-asiakasohjelma tekee ennen kirjautumista. Anna oma käyttäjänimesi: tuntematon nimi näkyy lokissa merkintänä "Invalid user" ja lasketaan fail2banissa yhdeksi yritykseksi.





Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Lue lisää

Näiden artikkelien vaiheet koskevat WebOkén VPS-näkymää; muilla palveluntarjoajilla toiminta on samankaltaista.

Hetkinen…

Määritä verkkotunnuksesi

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

Ladataan verkkotunnuksia…