Slijedeći dio Prethodni dio Sadržaj

6. Objašnjavanje serveru

Server ne prihvaća veze od bilo kamo. Ne želite da svi prikazuju prozore na vašem zaslonu. Ili čitaju ono što tipkate --- nemojte zaboraviti da je tipkovnica dio prikaza!

Čini se da premalo ljudi shvaća da je dopuštanje pristupa prikazu sigurnosni rizik. Netko tko može pristupiti vašem prikazu može čitati i mijenjati vaše ekrane, čitati vaše tipke i pratiti kretanje miša.

Većina servera poznaje dva načina autorizacije veza: mehanizam popisa računala (xhost) i mehanizam čarobnih riječi (xauth). Tu je i ssh, sigurna ljuska, koji može prenositi X veze.

6.1 xhost

xhost dopušta pristup na osnovu imena računala. Server ima popis računala koja se na njega smiju spojiti. Provjeru računala može i potpuno isključiti. Pažnja: to znači da provjera nema, pa se može spojiti bilo koje računalo!

Serverov popis računala nadgledate programom xhost. U prethodnom primjeru učinite ovo:

 
svemir$ xhost +crna.ru.pa

Ovo dopušta sve veze s računala crna.ru.pa. Čim se vaš X klijent spoji i prikaže prozor, radi sigurnosti onemogućite daljnja povezivanja pomoću:

 
svemir$ xhost -crna.ru.pa

Provjeru računala možete ugasiti s:

 
svemir$ xhost +

Tako se isključuje provjera pristupa što omogućuje svima da se spoje. Ovo nikad nemojte napraviti na mreži na kojoj ne vjerujete svim korisnicima (kao što je Internet). Ponovo uključite provjeru računala pomoću:

 
svemir$ xhost -

xhost - sam po sebi neće izbrisati sva računala iz popisa pristupa (to bi bilo prilično beskorisno --- ne biste se mogli spojiti od bilo gdje, čak ni sa svog lokalnog računala).

xhost je vrlo nesiguran mehanizam. Ne razlikuje pojedine korisnike na udaljenom računalu. Također, imena računala (zapravo adrese) mogu se krivotvoriti. To je loše ako ste na neprovjerenoj mreži (na primjer već i PPP pristupom na Internet).

6.2 xauth

xauth omogućava pristup svakome tko zna pravu tajnu. Takva tajna zove se autorizacijski zapis, odnosno čarobni kolačić. Taj način autorizacije formalno se zove MIT-MAGIC-COOKIE-1.

Kolačići za razne prikaze spremljeni su zajedno u ~/.Xauthority/. S kolačićima se bavi program xauth, odakle dolazi i nadimak ove sheme. Vašem ~/.Xauthority ne smiju moći pristupiti drugi korisnici.

Na početku rada server će pročitati kolačić iz datoteke navedene uz -auth argument. Nakon toga, server dopušta veze samo onim klijentima koji znaju isti kolačić. Kada se kolačić u ~/.Xauthority promijeni, server neće prihvatiti promjenu.

Noviji serveri kolačiće mogu generirati u letu za klijente koji to zatraže. No kolačići su još uvijek pohranjeni u serveri; ne završavaju u ~/.Xauthority, osim ako ih klijent tamo stavi. Prema Davidu Wigginsu:

U X11R6.3 dodana je još jedna mogućnost koja bi vas mogla zanimati. Preko novog proširenja SECURITY sam X server može generirati i vraćati kolačiće u letu. Također, kolačići se mogu odrediti "nepovjerljivima" tako da su aplikacije koje se spajaju s takvim kolačićima ograničene u svom djelovanju. Na primjer, neće moći krasti ulaz s tipkovnice/miša ili sadržaj prozora od drugih, povjerljivih klijenata. xauthu je dodana nova podnaredba generate kako bi ta mogućnost bila barem iskoristiva, ako ne jednostavna.

xauth ima jasnu sigurnosnu prednost nad xhostom. Možete ograničiti pristup na određene korisnike na određenim računalima. Nije ranjiv na krivotvorene adrese kao xhost. A ako želite, možete ga koristiti zajedno s xhostom za dopuštanje veza.

Pripremanje kolačića

Ako želite koristiti xauth, X server morate pokrenuti s argumentom -auth datoteka. Ako X server pokrećete startx skriptom, tamo je pravo mjesto za to. Ovako pripremite svoj autorizacijski zapis u svojoj startx skripti.

Izvadak iz /usr/X11R6/bin/startx:


mcookie|sed -e 's/^/add :0 . /'|xauth -q
xinit -- -auth "$HOME/.Xauthority"

mcookie je programčić iz paketa util-linux koji se distribuira s ftp://ftp.math.uio.no/pub/linux/. Možete koristiti i md5sum za pretvaranje nekih slučajnih podataka (na primjer, iz /dev/urandom ili ps -axl) u format kolačića:


dd if=/dev/urandom count=1|md5sum|sed -e 's/^/add :0 . /'|xauth -q
xinit -- -auth "$HOME/.Xauthority"

Ako ne možete promijeniti startx skriptu (jer niste root), neka to učini vaš administrator, ili neka postavi xdm. Ako neće ili ne želi, možete napraviti ~/.xserverrc skriptu. Ako ona postoji, umjesto pravog X servera pokreće ju xinit. Tako iz te skripte možete pokretati pravi X server s potrebnim argumentima. Da bi to radilo, stavite gornji primjer u svoj ~/.xserverrc za stvaranje kolačića, a zatim izvršite pravi X server:


#!/bin/sh
mcookie|sed -e 's/^/add :0 . /'|xauth -q
exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority"

Ako za rad sa X-om koristite xdm, xauth možete lako koristiti. Definirajte DisplayManager.authDir u /etc/X11/xdm/xdm-config. xdm će argument -auth prenijeti X serveru kada ga bude pokretao. Kada se logirate preko xdm-a, on za vas kolačić stavlja u vaš ~/.Xauthority. Za više informacija pogledajte man stranicu xdm(1). Na primjer, moj /etc/X11/xdm/xdm-config sadrži ovaj red:


DisplayManager.authDir: /var/lib/xdm

Prenošenje kolačića

Sad, kad ste počeli rad u X-u na poslužitelju svemir.svjet.la i svoj kolačić imate u ~/.Xauthority, trebate prenijeti kolačić klijentu crna.ru.pa.

To je najjednostavnije ako se vaš home direktorij dijeli između crna i svemir. ~/.Xauthority datoteke su jednake, pa se kolačić prenosi automatski. Međutim, tu je zamka: kada u ~/.Xauthority stavite kolačić za :0, crna će misliti da je to kolačić za njega, a ne za svemir. Kod stvaranja kolačića morate koristiti eksplicitno ime računala; ne možete ga izostaviti. Isti kolačić za :0 i svemir:0 možete instalirati pomoću:


#!/bin/sh
cookie=`mcookie`
xauth add :0 . $cookie
xauth add "$HOST:0" . $cookie
exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority"

Ako se home direktoriji ne dijele, kolačić možete prenijeti pomoću rsha, udaljene ljuske:

svemir$ xauth nlist :0 | rsh crna.ru.pa xauth nmerge -

Što će reći:

  1. Izvuci kolačić iz lokalnog ~/.Xauthority (xauth nlist :0).
  2. Prenesi ga na crna.ru.pa (| rsh crna.ru.pa).
  3. Stavi ga u tamošnji ~/.Xauthority (xauth nmerge -).

Moguće je da rsh neće raditi. Osim toga, rsh ima i sigurnosnih mana (opet lažna imena računala, ako se dobro sjećam). Ako ne možete ili ne želite koristiti rsh, kolačić možete prenijeti i ručno, na primjer ovako:

svemir$ echo $DISPLAY
:0
svemir$ xauth list $DISPLAY
svemir/unix:0 MIT-MAGIC-COOKIE-1 076aaecfd370fd2af6bb9f5550b26926
svemir$ rlogin crna.ru.pa
Password: 
crna% setenv DISPLAY svemir.svjet.la:0
crna% xauth add $DISPLAY . 076aaecfd370fd2af6bb9f5550b26926
crna% xfig &
[15332]
crna% logout
svemir$

Za više informacija također pogledajte man stranice za rsh(1) i xauth(1x).

Prijedlog: možda bi bilo moguće priljepiti kolačić TERM ili DISPLAY varijabli prilikom telneta na udaljeno računalo. To bi išlo na isti način kao i priljepljivanje DISPLAY varijable na TERM varijablu. Pogledajte dio Objašnjavanje klijentu. Tu se sami snađite, ali me zanima može li netko ovo potvrditi ili poreći.

Korištenje kolačića

X aplikacija na crna.ru.pa, u primjeru xfig, automatski će u ~/.Xauthority potražiti kolačić i njime se autentificirati.

6.3 ssh

Zapisi o autoritetu prenose se bez enkripcije. Ako ste zabrinuti da bi netko mogao prisluškivati vaše veze, koristite ssh, sigurnu ljusku. Proslijeđivat će X preko enkriptiranih veza. Osim toga, odlična je i za druge stvari. Dobra je strukturalna nadogradnja vašeg sustava. Samo posjetite http://www.cs.hut.fi/ssh/, ssh-ovu WWW stranicu.

Tko još zna nešto o autorizacijskim metodama ili enkriptiranju X veza? Možda Kerberos?


Slijedeći dio Prethodni dio Sadržaj