Next Previous Contents

6. Memerintahkan server

X Server tidak akan menerima permintaan koneksi dari sembarang tempat. Anda tidak menginginkan setiap orang menampilkan windows pada layar Anda. Ataupun membaca setiap yang Anda tulis - perlu diingat bahwa keyboard Anda merupakan bagian dari tampilan!

Terlalu sedikit orang yang menyadari bahwa pemberian akses terhadap tampilan Anda mengandung suatu risiko keamanan. Seseorang yang mampu melakukan akses ke dalam tampilan Anda akan dapat membaca dan menulis ke dalam layar Anda, membaca tulisan Anda, bahkan membaca pergerakan mouse Anda.

Hampir semua server memiliki dua cara untuk melakukan otentikasi terhadap koneksi terhadapnya, yaitu: mekanisma daftar host (xhost) dan mekanisma cookie ajaib (xauth). Terdapat pula ssh, yaitu shell yang aman, yang mampu mengarahkan koneksi X.

6.1 Xhost

Xhost memberikan akses berdasarkan nama komputer (host). Server memiliki sebuah daftar berisi setiap host yang diizinkan melakukan koneksi terhadapnya. Xhost dapat pula menon-aktifkan pemeriksaan host secara keseluruhan. Mohon berhati-hati: dengan menon-aktifkan pemeriksaan host berarti pemeriksaan ditiadakan, sehingga setiap host akan dapat melakukan koneksi!

Anda dapat melakukan kontrol terhadap daftar host yang dimiliki server dengan menggunakan program xhost. Untuk menggunakan mekanisme ini pada contoh di atas, lakukan:

light$ xhost  +dark.matt.er

Perintah di atas mengizinkan semua koneksi yang berasal dari host dark.matt.er. Tidak lama sesudah klien X membuat koneksi dan menampilkan sebuah window, untuk kepentingan keamanan, tarik kembali pemberian izin untuk membuat lebih banyak koneksi dengan cara:

        light$  xhost  -dark.matt.er

Anda dapat menon-aktifkan pemeriksaan host dengan cara:

        light$ xhost +

Perintah di atas menon-aktifkan pemeriksaan akses terhadap host sehingga mengizinkan semua orang untuk membuat koneksi. Anda seharusnya tidak melakukan hal ini di dalam suatu jaringan yang Anda sendiri tidak mempercayai semua usernya (seperti pada Internet). Anda dapat mengaktifkan kembali pemeriksaan host dengan cara:

        light$ xhost -

xhost - tidak dapat menghilangkan sendiri semua host dari daftar akses (menjadi sangat tidak bermanfaat - Anda tidak dapat melakukan koneksi tempat manapun, bahkan dari komputer lokal Anda sekalipun).

Xhost merupakan suatu mekanisme yang tidak aman. Dalam hal ini xhost tidak membedakan pemakai yang berbeda di dalam komputer remote. Demikian pula, hostname (yang sesungguhnya merupakan alamat) dapat dipalsukan (spoofing). Keadaan ini sangat buruk jika Anda berada di dalam suatu jaringan yang tidak memiliki jaminan keamanan (misalnya sesudah membuat dialup PPP untuk mengakses Internet).

6.2 Xauth

Xauth memberikan akses kepada setiap orang yang mengetahui rahasia yang dibutuhkan. Rahasia yang dimaksud adalah rekord otorisasi, atau cookie ajaib. Skema otorisasi ini secara formal disebut sebagai MIT-MAGIC-COOKIE-1.

Semua cookie dari tampilan-tampilan yang berbeda disimpan di dalam file ~/.Xauthority. File ~/.Xauthority yang Anda miliki tidak boleh dapat diakses oleh group/pemakai lain manapun. Program xauth mengelola cookie tsb, itulah sebabnya nama kependekan xauth digunakan untuk skema ini.

Pada sessi permulaan, server membaca sebuah cookie dari sebuah file yang ditunjukkan oleh argumen -auth. Sesudah itu, server tadi hanya mengizinkan koneksi dari klien-klien yang mengetahui cookie yang sama. Jika cookie di dalam file ~/.Xauthority berubah, server tidak akan menerima perubahan yang terjadi.

Server-server baru dapat menghasilkan langsung cookie pada saat klien-klien memintanya. Semua cookie tetap disimpan di dalam server; Cookie tadi tidak berakhir di dalam ~/.Xauthority kecuali apabila seorang klien meletakkan ke dalamnya. Seperti yang telah disampaikan oleh David Wiggins:

Perkembangan lanjutan telah ditambahkan ke dalam X11R6.3 yang mungkin akan menarik perhatian Anda. Dengan penambahan SECURITY baru, X Server sendiri sambil berjalan dapat membuat dan mengembalikan cookies baru. Lebih lanjut, cookies tadi dapat ditandai sebagai "tidak dipercaya" sehingga aplikasi-aplikasi yang membuat koneksi menggunakan cookie tadi akan dibatasi operasinya. Misalnya, aplikasi tadi tidak mampu untuk mencuri input keyboard/mouse, atau isi window, dari klien lain yang tidak dipercayai. Sebuah sub-perintah dari xauth yang baru dibuat memungkinkan penggunaan fasilitas ini, jika tidak mudah.

Xauth memiliki suatu kelebihan yang jelas dalam hal keamanan dibandingkan xhost. Anda dapat membatasi akses user-user tertentu ke dalam komputer tertentu. Xauth tidak terancam dengan pemalsuan alamat seperti pada xhost. Dan jika Anda menginginkannya, Anda masih dapat menggunakan xhost bersama-sama dengan xauth untuk memberikan koneksi.

Pembuatan cookie

Jika anda ingin menggunakan xauth, Anda harus menjalankan X Server menggunakan argumen -auth authfile. Jika Anda menggunakan script startx, script itu merupakan tempat yang tepat untuk melakukannya. Buatlah rekord otorisasi seperti yang diberikan berikut ini di dalam startx yang Anda miliki.

Merupakan bagian yang diambil dari /usr/X11R6/bin/startx:

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

mcookie merupakan sebuah program kecil dari paket util-linux, situs utamanya adalah ftp://ftp.math.uio.no/pub/linux/. Secara alternatif, Anda dapat menggunakan md5sum untuk mengambil beberapa data secara acak (misalnya dari /dev/urandom atau ps -ax) dan memasukkannya ke dalam format cookie:

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

Jika Anda tidak dapat mengedit script startx (karena Anda bukan root), mintalah administrator sistem Anda untuk melakukan setup terhadap startx sesuai dengan yang diinginkan, atau meminta dia untuk men-setup xdm. Jika dia tidak dapat atau dia tidak mau melakukannya, Anda dapat membuat sebuah script ~/.xserverrc. Jika Anda memilikinya, script ini dijalankan oleh xinit dan bukan oleh X Server yang sebenarnya. Setelah itu, Anda dapat mulai menjalankan X Server yang sebenarnya dari script ini menggunakan argumen yang tepat. Untuk dapat melakukannya, buatlah agar ~/.xserverrc Anda menggunakan baris cookie ajaib di atas untuk membuat sebuah cookie lalu mengeksekusi X Server yang sebenarnya:

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

Jika Anda menggunakan xdm untuk mengelola sessi X Anda, Anda dapat menggunakan xauth dengan mudah. Definisikan resource untuk DisplayManager.authDir di dalam /etc/X11/xdm/xdm-config. Xdm akan memberikan argumen -auth tadi ke X Server pada saat mulai dijalankan. Pada saat Anda login sebagai xdm, xdm akan meletakkan cookie di dalam ~/.Xauthority Anda. Silahkan baca xadm(1) untuk mendapatkan informasi lebih lanjut. Sebagai contoh /etc/X11/xdm/xdm-config milik penulis memiliki baris berikut:

        DisplayManager.authDir: /var/lib/xdm

Pengiriman cookie

Sekarang Anda telah menjalankan sessi X di dalam server host light.uni.verse dan telah memiliki cookie di dalam ~/.Xauthority, Anda harus mengirimkan cooke tadi ke client host, dark.matt.er.

Cara termudah adalah ketika direktori-direktori home di dalam komputer light dan dark digunakan secara bersama-sama. File ~/.Xauthority memiliki isi yang sama, sehingga cookie akan dikirimkan segera. Namun ada suatu kendala: pada saat Anda meletakkan sebuah cookie untuk :0 di dalam ~/.Xauthority, komputer dark akan mengira bahwa cookie itu disediakan untuknya dan bukan untuk komputer light. Anda harus memberikan hostname secara eksplisit ketika Anda membuat sebuah cookie; Anda tidak dapat mengosongkannya. Anda dapat menginstal cookie yang sama untuk :0 dan light:0 dengan cara:

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

Jika direktori-direktori home tidak dipakai secara bersama-sama, Anda dapat mengirimkan cookie tadi dengan menggunakan rsh, remote shell:

light$ xauth  nlist  :0  | rsh  dark.matt.er  xauth  nmerge  -

  1. Ambillah cookie dari file lokal Anda ~/.Xauthority (xauth nlist :0)
  2. Transfer cookie tadi ke dark.matt.er ( | rsh dark.matt.er)
  3. Letakkan di dalam file ~/.Xauthority (xauth nmerge -)

rsh mungkin tidak berjalan sesuai dengan keinginan Anda. Selain itu, rsh juga memiliki sebuah kelemahan dalam keamanan (pemalsuan hostname, jika ingatan penulis tidak salah). Jika Anda tidak akan atau tidak mau menggunakan rsh, Anda dapat mengirimkan cookie secara manual sbb:

light$ echo $DISPLAY
:0
light$ xauth list $DISPLAY
light/unix:0 MIT-MAGIC-COOKIE-1 076aaecfd370fd2af6bb9f5550b26926
light$ rlogin dark.matt.er
Password:
dark% setenv DISPLAY light.uni.verse:0
dark% xauth add $DISPLAY . 076aaecfd370fd2af6bb9f5550b26926
dark% xfig &
[15332]
dark% logout
light$

Silahkan juga baca rsh(1) dan xauth(1) untuk mendapat informasi selanjutnya.

Memasukkan cookie ke dalam variabel-variabel TERM ataupun DISPLAY pada saat Anda melakukan telnet ke host remote merupakan suatu hal yang mungkin dilakukan. Cara yang dilakukannya sama dengan cara untuk memasukkan variabel DISPLAY ke dalam variabel TERM. Bacalah Bagian 5: Memerintahkan klien. Dalam pandangan penulis Anda harus menghadapi resiko sendiri, namun penulis berminat untuk mengetahui jika ada yang bermaksud memberi konfirmasi ataupun sanggahan.

Penggunaan cookie

Sebuah aplikasi di dalam komputer dark.matt.er, seperti xfig di atas, akan secara otomatis memeriksa file  /.Xauthority untuk mencari cookie guna melakukan otentikasi bagi dirinya.

6.3 Ssh

Rekord otoritas akan dikirim tanpa menggunakan enkripsi. Jika anda khawatir kalau ada orang yang akan mencium data itu, gunakanlah ssh, secure shell. Ssh akan melakukan pengiriman X melalui koneksi berenkripsi. Disamping itu, ssh juga berguna untuk hal-hal. Ssh merupakan peningkatan struktur yang baik bagi sistem Anda. Kunjungilah homepage ssh di http://www.cs.hut.fi/ssh/.

Siapa yang mengetahui skema otentikasi lainnya untuk melakukan enkripsi koneksi X? Mungkinkan digunakan kerberos?


Next Previous Contents

mirror server hosted at Truenetwork, Russian Federation.