Keamanan
- 3.1. Grup dan Pengguna GDM
- 3.2. PAM
- 3.3. utmp dan wtmp
- 3.4. Skema Otentikasi Xserver
- 3.5. Keamanan XDMCP
- 3.6. Kendali Akses XDMCP
- 3.7. Keamanan Firewall
- 3.8. PolicyKit
- 3.9. RBAC (Role Based Access Control)
3.1. Grup dan Pengguna GDM
Untuk alasan keamanan, id pengguna dan grup yang terdedikasi disarankan untuk operasi yang benar. Pengguna dan grup ini biasanya "gdm" pada kebanyakan sistem, tapi dapat ditata ke sebarang pengguna atau grup. Semua program GUI GDM dijalankan sebagai pengguna ini, sehingga program yang berinteraksi dengan pengguna dijalankan dalam suatu kotak pasir. Pengguna dan grup ini mesti memiliki hak terbatas.
Satu-satunya hak khusus yang diperlukan oleh pengguna "gdm" adalah kemampuan membaca dan menulis berkas Xauth ke direktori <var>/run/gdm directory. Direktori <var>/run/gdm mesti dimiliki oleh root:gdm dan hak 1777.
Anda jangan, dalam keadaan apapun, menata pengguna/grup GDM ke sesuatu yang dapat diakses dengan mudah oleh pengguna lain, seperti misalnya pengguna nobody. Sebarang pengguna yang mendapat akses ke kunci Xauth dapat menyadap dan mengendalikan program GUI yang berjalan pada sesi terkait atau melakukan serangan denial-of-service padanya. Penting untuk memastikan bahwa sistem ditata secara benar sehingga hanya pengguna "gdm" punya akses ke berkas tersebut dan tak mudah untuk log masuk ke akun ini. Sebagai contoh, akun mesti disiapkan untuk tak memiliki sandi atau mengijinkan pengguna bukan root untuk log masuk ke akun.
Konfigurasi penyapa GDM disimpan di dalam GConf. Untuk mengijinkan pengguna GDM menulis konfigurasi, pengguna "gdm" perlu memiliki direktori $HOME yang dapat ditulisi. Pengguna dapat menata konfigurasi bawaan GConf sesuai keinginan untuk menghindari perlunya menyediakan pengguna "gdm" dengan direktori $HOME yang dapat ditulisi. Namun beberapa fitur GDM mungkin mati bila tak bisa menulis informasi keadaan ke konfigurasi GConf.
3.2. PAM
GDM memakai PAM untuk otentikasi log masuk. PAM kependekan dari Pluggable Authentication Module (modul otentikasi yang dapat ditempelkan), dan dipakai oleh kebanyakan program yang meminta otentikasi pada komputer Anda. Itu mengijinkan administrator untuk menata perilaku otentikasi spesifik bagi program log masuk yang berbeda (seperti misalnya ssh, log masuk GUI, screensaver, dsb.)
PAM itu rumit dan dapat ditata dalam sangat banyak cara, dan dokumentasi ini bukan bertujuan untuk menjelaskan hal ini secara rinci. Alih-alih, ini ditujukan untuk memberi ringkasan tentang bagaimana konfigurasi PAM berhubungan dengan GDM, bagaimana PAM umumnya ditata dengan GDM, dan masalah-masalah yang telah diketahui. Diharapkan bahwa orang yang perlu melakukan konfigurasi PAM akan membaca lebih jauh dokumentasi PAM untuk memahami bagaimana menata PAM dan memahami istilah-istilah yang dipakai pada bagian ini.
Konfigurasi PAM memiliki antar muka yang berbeda namun mirip pada Sistem Operasi yang berbeda, sehingga periksalah halaman man pam.d atau pam.conf untuk rinciannya. Pastikan bahwa Anda membaca dokumentasi PAM dan merasa nyaman dengan implikasi keamanan dari perubahan apapun yang hendak Anda lakukan pada konfigurasi Anda.
Perhatikan bahwa, secara baku, GDM memakai nama layanan PAM "gdm" untuk log masuk normal dan nama layanan PAM "gdm-autologin" untuk log masuk otomatis. Layanan-layanan ini mungkin tak didefinisikan dalam berkas konfigurasi pam.d atau pam.conf Anda. Bila tak ada entri, maka GDM akan memakai perilaku PAM bawaan. Pada kebanyakan sistem ini mestinya berjalan baik. Namun, fitur log masuk otomatis mungkin tak bekerja bila layanan gdm-autologin tak terdefinisi.
Skrip PostLogin dijalankan sebelum pam_open_session dipanggil, dan skrip PreSession dipanggil setelahnya. Ini memungkinkan administrator sistem untuk menambahkan sebarang penskripan ke proses log masuk sebelum atau setelah PAM menginisialisasi sesi.
Bila Anda hendak membuat GDM bekerja dengan mekanisme otentikasi jenis lain (seperti misalnya sidik jari atau pembaca SmartCard), maka Anda mesti mengimplementasikan ini memakai modul layanan PAM bagi jenis otentikasi yang diinginkan daripada mencoba mengubah kode GDM secara langsung. Lihatlah dokumentasi PAM pada sistem Anda. Bagaimana melakukan hal ini sering didiskusikan di milis
, sehingga Anda dapat mengacu ke arsip milis untuk informasi lebih lanjut.PAM memiliki beberapa keterbatasan dalam kemampuan bekerja dengan banyak tipe otentikasi pada saat yang sama, seperti mendukung kemampuan menerima SmartCard dan kemampuan mengetikkan nama pengguna serta sandi ke dalam program log masuk. Ada teknik-teknik yang dipakai untuk membuat ini bekerja, dan yang terbaik adalah meneliti bagaimana masalah ini secara umum dipecahkan ketika menyiapkan konfigurasi seperti itu.
Bila log masuk otomatis tak bekerja pada suatu sistem, periksa apakah stack PAM "gdm-autologin" didefinisikan di dalam konfigurasi PAM. Agar ini bekerja, perlu memakai modul PAM yang tak melakukan otentikasi, atau yang sekedar mengembalikan PAM_SUCCESS dari semua antar muka publiknya. Dengan asumsi bahwa sistem Anda memiliki modul PAM pam_allow.so yang melakukan hal ini, konfigurasi PAM yang mengaktifkan "gdm-autologin" akan terlihat seperti ini:
gdm-autologin auth required pam_unix_cred.so.1 gdm-autologin auth sufficient pam_allow.so.1 gdm-autologin account sufficient pam_allow.so.1 gdm-autologin session sufficient pam_allow.so.1 gdm-autologin password sufficient pam_allow.so.1
Penataan di atas akan menyebabkan tiadanya entri lastlog. Bila suatu entri lastlog dikehendaki, maka gunakan yang berikut bagi sesi:
gdm-autologin session required pam_unix_session.so.1
Bila komputer dipakai oleh beberapa orang, yang membuat log masuk otomatis tidak cocok, Anda mungkin hendak mengijinkan beberapa pengguna untuk log masuk tanpa mengetikkan sandi. Fitur ini dapat diaktifkan sebagai opsi per pengguna dalam perkakas users-admin dari gnome-system-tools; ini dicapai dengan memeriksa apakah pengguna tersebut anggota dari grup Unix bernama "nopasswdlogin" sebelum menanyakan sandi. Agar ini bekerja, berkas konfigurasi PAM bagi layanan "gdm" mesti memuat suatu baris seperti:
gdm auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
3.3. utmp dan wtmp
GDM menjangkitkan entri Basis Data Akunting Pengguna utmp dan wtmp saat log masuk dan log keluar sesi. Basis data utmp memuat informasi akunting dan akses pengguna yang diakses oleh perintah seperti finger, last, login, dan who. Basis data wtmp memuat riwayat informasi akunting dan akses pengguna bagi basis data utmp. Lihatlah halaman man utmp dan wtmp pada sistem Anda untuk informasi lebih jauh.
3.4. Skema Otentikasi Xserver
Berkas otorisasi Xserver disimpan dalam subdirektori <var>/run/gdm yang baru dibuat saat awal mula. Berkas-berkas ini dipakai untuk menyimpan dan berbagi "sandi" antara klien X dan Xserver. "Sandi" ini unik bagi setiap sesi log masuk, sehingga pengguna dari sesi satu tak bisa menyadap pengguna sesi lain.
GDM hanya mendukung skema otentikasi Xserver MIT-MAGIC-COOKIE-1. Secara normal hanya sedikit keuntungan yang didapat dari skema lain, dan tak ada upaya untuk mengimplementasi mereka sejauh ini. Sangat berhati-hatilah untuk memakai XDMCP karena cookie otentikasi Xserver disalurkan lewat jaringan sebagai teks polos. Bila penyadapan mungkin, maka penyerang cukup sekedar menyadap sandi otentikasi saat Anda log masuk, tak peduli skema otentikasi yang dipakai. Bila penyadapan dimungkinkan dan tak diharapkan, maka Anda mesti memakai ssh untuk membungkus koneksi X daripada memakai XDMCP. Anda dapat menganggap XDMCP sebagai telnet mode grafis, yang memiliki masalah keamanan sama. Dalam kebanyakan kasus, ssh -Y mesti lebih disukai daripada fitur XDMCP GDM.
3.5. Keamanan XDMCP
Walaupun tampilan Anda dilindungi oleh cookies, XEvents dan juga ketikan saat memasukkan sandi masih akan dilewatkan jaringan dalam bentuk teks polos. Sangat mudah untuk menangkap itu.
XDMCP terutama berguna untuk menjalankan thin client seperti di lab terminal. Thin client itu hanya akan perlu jaringan untuk mengakses server, sehingga kebijakan keamanan terbaik adalah untuk menempatkan thin client tersebut pada jaringan terpisah yang tak dapat diakses oleh dunia luar, dan hanya dapat menyambung ke server. Satu-satunya titik yang perlu akses keluar adalah server. Jenis penyiapan ini tak boleh memakai unmanaged hub atau jaringa lain yang dapat disadap.
3.6. Kendali Akses XDMCP
Kendali akses XDMCP dilakukan memakai TCP wrappers. Memang mungkin untuk mengompail GDM tanpa dukungan TCP wrappers, sehingga fitur ini mungkin tak didukung pada beberapa Sistem Operasi.
Anda mesti memakai nama deamon gdm dalam berkas <etc>/hosts.allow dan <etc>/hosts.deny. Sebagai contoh untuk menolak komputer dari .evil.domain yang berusaha log masuk, maka tambahkan
gdm: .evil.domain
ke <etc>/hosts.deny. Anda mungkin juga perlu menambah
gdm: .your.domain
ke <etc>/hosts.allow bila biasanya Anda menolak semua layanan dari semua host. Lihat halaman man hosts.allow(5) untuk rinciannya.
3.7. Keamanan Firewall
Walaupun GDM mencoba untuk mengakali penyerang potensial yang mencoba mengambil keuntungan dari XDMCP, masih disarankan bagi Anda untuk memblokir port XDMCP (biasanya UDP port 177) pada firewall Anda kecuali bila memang diperlukan. GDM menjaga dari serangan denial of service, tapi protokol X masih tak aman secara inheren dan mestinya hanya dipakai dalam suatu lingkungan yang terkendali. Setiap koneksi remote juga menghabiskan banyak sumber daya, sehingga jauh lebih mudah melakukan serangan denial of service melalui XDMCP daripada menyerang suatu server web.
Juga bijaksana untuk memblokir semua port Xserver. Ini adalah port TCP 6000+ (satu bagi setiap nomor tampilan) pada firewall Anda. Perhatikan bahwa GDM akan memakai tampilan nomor 20 dan yang lebih tinggi bagi server on-demand yang fleksibel.
X bukan protokol yang aman ketika dipakai di Internet, dan XDMCP bahkan lebih tidak aman lagi.
3.8. PolicyKit
GDM dapat ditata untuk memakai PolicyKit yang mengijinkan administrator sistem mengendalikan apakah layar log masuk mesti menyediakan tombol matikan dan mulai ulang pada layar penyapa.
These buttons are controlled by the org.freedesktop.consolekit.system.stop-multiple-users and org.freedesktop.consolekit.system.restart-multiple-users actions respectively. Policy for these actions can be set up using the polkit-gnome-authorization tool, or the polkit-auth command line program.
3.9. RBAC (Role Based Access Control)
GDM dapat ditata untuk memakai RBAC sebagai pengganti PolicyKit. Dalam hal ini konfigurasi RBAC dipakai untuk mengendalikan apakah layar log masuk mesti menyediakan tombol matikan dan mulai ulang pada layar penyapa.
Sebagai contoh, pada Oracle Solaris, otorisasi "solaris.system.shutdown" dipakai untuk mengendalikan ini. Cukup ubah berkas /etc/user_attr sehingga pengguna "gdm" memiliki otorisasi ini.