Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Sigurno postavljanje SSH poslužitelja

Modul 2: SSH i ključevi · Vrijeme čitanja: 12 minuta

Cilj učenja: Nakon ove lekcije moći ćete isključiti prijavu lozinkom i root prijavu lozinkom, provjeriti koja postavka stvarno vrijedi i to učiniti tako da sami sebi ne zaključate pristup.

Ključni pojmovi: sshd, sshd_config, sshd_config.d, vrijedi prva vrijednost, PasswordAuthentication, KbdInteractiveAuthentication, PermitRootLogin, AuthenticationMethods, AllowUsers, sshd -t, sshd -T, druga sesija, cloud-init, ssh.socket

Najprije sigurnosna mreža

U ovoj lekciji zatvarate nešto kroz što i sami morate proći. Jedna tipfeler može značiti da više ne možete ući. Zato uvijek, prije nego što počnete:

  1. Dva ključa rade (lekcija 2.1) i u novom ste prozoru provjerili da prijava ključem uspijeva.
  2. Snapshot Vašeg VPS-a. Kod WebOkéa ga izrađujete na zaslonu VPS-a, a kod drugih pružatelja zove se također snapshot ili image. Ako nešto pođe po zlu, vratite ga.
  3. Konzolu svog pružatelja poznajete: preko nje ulazite bez SSH-a.
  4. Vaša trenutna SSH sesija ostaje otvorena do samog kraja. Aktivna sesija nastavlja raditi kada mijenjate postavke ili ponovno učitate uslugu. Svaku promjenu testirate u drugom prozoru.

Gdje se nalaze postavke

SSH poslužitelj zove se sshd. Njegove postavke nalaze se u /etc/ssh/sshd_config. Na Debianu i Ubuntuu na vrhu te datoteke stoji ovaj redak:

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

Sve datoteke s nastavkom .conf u mapi sshd_config.d čitaju se dakle prije ostatka glavne datoteke, abecednim redom. To je praktično: vlastite postavke stavljate u zasebnu datoteku, a glavnu datoteku ne dirate, pa ažuriranje paketa ne utječe na Vaše izmjene.

No to ima posljedicu koja mnoge iznenadi. U sshd_config vrijedi: za svaku postavku važi prva vrijednost na koju sshd naiđe. Kasniji retci s istom postavkom zanemaruju se. Tko na dno datoteke sshd_config upiše PasswordAuthentication no, time ne nadjačava datoteku u sshd_config.d u kojoj piše yes.

Zamka cloud-inita

Mnoge VPS slike pri prvom pokretanju postavlja cloud-init. Ovisno o tome kako su slika i instalacija postavljene, cloud-init zapisuje datoteku poput /etc/ssh/sshd_config.d/50-cloud-init.conf u kojoj stoji primjerice:

PasswordAuthentication yes

Budući da se ta datoteka čita prije glavne datoteke, prijava lozinkom ostaje uključena, bez obzira na to što upišete u sshd_config. Zato ništa ne pretpostavljajte, nego provjerite:

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

Dva su uredna rješenja: promijenite tu datoteku u no ili stavite vlastite postavke u datoteku koja abecedno dolazi ranije, poput 00-beveiliging.conf. Datoteka 99-mijn.conf upravo neće raditi, jer je tada cloud-init već pobijedio.

Postavke koje su važne

Izradite vlastitu datoteku:

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

sa sljedećim sadržajem:

# Prijava samo pomoću ključa
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password

Što znači svaki redak?

  • PasswordAuthentication no: poslužitelj više ne prihvaća lozinku. Zadana vrijednost OpenSSH-a je yes.
  • KbdInteractiveAuthentication no: "keyboard-interactive" je drugi način traženja lozinke, preko PAM-a. Ako ovo ostavite uključeno, netko i dalje može pokušati s lozinkom, čak i ako je PasswordAuthentication postavljeno na no. U starijim uputama ova se postavka zove ChallengeResponseAuthentication; od OpenSSH 8.7 to je zastarjeli drugi naziv za isto. Debian je prema zadanim postavkama već postavlja na no, ali je ipak upišite: tada je jasno i ispravno je i na drugim sustavima.
  • PermitRootLogin prohibit-password: root se smije prijaviti, ali samo ključem. To je zadana vrijednost od OpenSSH 7.0. Strože je PermitRootLogin no: root uopće ne smije ući preko SSH-a, prijavljujete se kao običan korisnik i koristite sudo (lekcija 3.2). Postavite no tek kada ste sigurni da prijava kao taj korisnik i sudo rade.

Neobavezno, za one koji žele više:

AllowUsers anna
AuthenticationMethods publickey

AllowUsers pušta unutra samo navedene korisnike; svako drugo ime odbija se, čak i ako ima valjan ključ. Korisno, ali ne zaboravite sebe i ne zaboravite dopuniti popis kada dodate drugog administratora. AuthenticationMethods publickey u jednom retku kaže da vrijede samo ključevi.

Testiranje, primjena, provjera

Najprije neka sshd provjeri datoteku. To ništa ne pokreće i ništa ne mijenja:

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

Nema ispisa znači: nema pogrešaka. Kod tipfelera vidjet ćete redak i datoteku. Tek tada ponovno učitajte uslugu:

root@web1:~# systemctl reload ssh

Na Debianu i Ubuntuu usluga se zove ssh, a na AlmaLinuxu i Rocky Linuxu sshd.

Zatim provjerite koja vrijednost stvarno vrijedi. sshd -T prikazuje potpunu, izračunatu konfiguraciju sa svim obrađenim Include datotekama:

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

(without-password je stari naziv za prohibit-password. Verzije OpenSSH-a prije 10.1, kao na Debianu 13 i Ubuntuu 24.04, još prikazuju stari naziv; novije prikazuju prohibit-password. Značenje je isto.)

A sada najvažnije: testirajte u drugom prozoru, dok prvi ostaje otvoren.

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

Ako to radi, namjerno se pokušajte prijaviti lozinkom. To mora propasti:

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

Iza Permission denied u zagradama piše koje načine prijave poslužitelj još nudi. Ako tamo stoji samo publickey, sve je u redu. Ako uz to stoji password ili keyboard-interactive, negdje još vrijedi druga vrijednost: ponovno provjerite s sshd -T.

Upravo taj popis provjerava i zadatak u tečaju, izvana. Vaš SSH klijent pri svakoj vezi najprije pita koji su načini dopušteni, zahtjevom vrste "none". Poslužitelj odgovara popisom, a da se pritom ne pokušava ni lozinka ni ključ.

Ubuntu 24.04 i noviji: ssh.socket

Na Ubuntuu od verzije 22.10 na priključku 22 ne sluša sam sshd, nego systemd, preko ssh.socket. Tek kada stigne veza, systemd pokreće SSH uslugu. Za postavke iz ove lekcije to nije bitno: systemctl reload ssh ili restart ssh je dovoljno.

Bitno je međutim kada mijenjate priključak ili adresu na kojoj se sluša (Port, ListenAddress). Od Ubuntua 24.04 systemd te vrijednosti čita iz sshd_config, ali tek nakon:

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

Ako to zaboravite, poslužitelj i dalje sluša na starom priključku. Još gore: ako najprije postavite vatrozid na novi priključak, a SSH ostane na starom, sami ste sebi zaključali pristup. Uvijek provjerite s ss -tlnp | grep ssh na čemu se stvarno sluša (lekcija 5.1) i otvorite novi priključak u vatrozidu prije nego što zatvorite stari. Ima li smisla drugi priključak, pročitajte u lekciji 2.3.

Ako ipak pođe po zlu

Ako više ne možete ući, otvorite konzolu svog pružatelja, prijavite se kao root (lozinkom, jer je konzola "tipkovnica spojena na poslužitelj", a ne SSH) i vratite svoju datoteku:

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

Ako ni to ne uspije, vratite snapshot. Kod WebOkéa na zaslonu VPS-a možete postaviti i novu root lozinku; drugi pružatelji često imaju sličan gumb ili način za spašavanje (rescue).

Na AlmaLinuxu i Rocky Linuxu

Usluga se zove sshd (systemctl reload sshd). I tamo na vrhu stoji Include /etc/ssh/sshd_config.d/*.conf, a sustav u toj mapi isporučuje vlastite datoteke; vrijedi isto pravilo "vrijedi prva vrijednost". Ako mijenjate priključak, SELinux mora i taj priključak dopustiti (semanage port -a -t ssh_port_t -p tcp 2222), a firewalld ga mora otvoriti.

Sažetak

  • U sshd_config vrijedi prva vrijednost; datoteke u sshd_config.d čitaju se prve. Vlastite postavke stavite u datoteku poput 00-beveiliging.conf.
  • Postavite PasswordAuthentication no i KbdInteractiveAuthentication no; root samo s ključem (prohibit-password) ili nikako (no).
  • Provjerite s sshd -t prije ponovnog učitavanja, a s sshd -T koja vrijednost stvarno vrijedi; pazite na 50-cloud-init.conf.
  • Testirajte u drugom prozoru i držite prvu sesiju otvorenom. Upoznajte konzolu i unaprijed izradite snapshot.
  • Na Ubuntuu 24.04+ drugi priključak zahtijeva systemctl daemon-reload i systemctl restart ssh.socket.

Kviz

1. Na dnu datoteke /etc/ssh/sshd_config stoji PasswordAuthentication no, ali se i dalje možete prijaviti lozinkom. Što je najvjerojatniji uzrok?



2. Zašto uz PasswordAuthentication no postavljate i KbdInteractiveAuthentication no?



3. Što znači PermitRootLogin prohibit-password?



4. Kojim redoslijedom radite najsigurnije?



5. Na Ubuntuu 24.04 mijenjate redak Port 22 u Port 2222 i pokrećete systemctl restart ssh. S ss -tlnp vidite da se i dalje sluša na 22. Što ste zaboravili?



Zadatak

Zadatak Z2.2: Prijava lozinkom je isključena. Isključite prijavu lozinkom i keyboard-interactive kao u ovoj lekciji, a zatim neka program provjeri izvana. Unesite IP adresu ili naziv hosta svog poslužitelja, SSH priključak (zadano 22) i korisničko ime kojim se sami prijavljujete (primjerice anna, a ne root ili izmišljeno ime). Program se ne prijavljuje: samo pita, kao svaki SSH klijent prije prijave, koje načine prijave Vaš poslužitelj nudi za tog korisnika. Ispravno je: samo publickey.

Zadatak Z2.2: Prijava lozinkom je isključena

Ne prijavljujemo se i ne isprobavamo nikakvu lozinku ni ključ. Najprije pokažite da je poslužitelj Vaš: kliknite "Prikaži moj kod" i postavite datoteku /.well-known/weboke-cursus-<code>.txt koja sadrži samo taj kod na web-poslužitelj Vašeg naziva hosta. Dohvaćamo je izravno sa svake IP adrese koju provjeravamo (IPv4 i IPv6 zasebno); TXT zapis se ovdje ne računa. Provjera dolazi s heavy.webawere.nl (185.158.167.16 i 2a07:ae80:100:0:185:158:167:16), a ne s našeg web-poslužitelja. Samo za prijavljene polaznike; najviše 6 provjera po poslužitelju na sat. Pitamo samo koje načine prijave Vaš poslužitelj nudi za Vaše korisničko ime, kao što to prije prijave čini svaki SSH klijent. Upišite vlastitog korisnika: nepoznato ime pojavit će se u Vašem zapisniku kao "Invalid user" i fail2ban ga broji kao jedan pokušaj.





Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno štivo

Koraci u ovim člancima odnose se na zaslon VPS-a u WebOkéu; kod drugih pružatelja postupak je sličan.

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…