Menggunakan QubesOS untuk bekerja dengan Windows 7

Tidak banyak artikel di Habré yang membahas tentang sistem operasi Qubes, dan artikel yang saya lihat tidak banyak menjelaskan pengalaman menggunakannya. Di bawah ini, saya berharap dapat memperbaikinya dengan menggunakan contoh penggunaan Qubes sebagai sarana perlindungan (terhadap) lingkungan Windows dan, pada saat yang sama, memperkirakan jumlah pengguna sistem yang berbahasa Rusia.

Menggunakan QubesOS untuk bekerja dengan Windows 7

Mengapa Qubes?

Kisah berakhirnya dukungan teknis untuk Windows 7 dan meningkatnya kecemasan pengguna menyebabkan perlunya mengatur kerja OS ini, dengan mempertimbangkan persyaratan berikut:

  • memastikan penggunaan Windows 7 yang diaktifkan sepenuhnya dengan kemampuan pengguna untuk menginstal pembaruan dan berbagai aplikasi (termasuk melalui Internet);
  • menerapkan pengecualian interaksi jaringan secara lengkap atau selektif berdasarkan kondisi (operasi otonom dan mode penyaringan lalu lintas);
  • memberikan kemampuan untuk menghubungkan media dan perangkat yang dapat dipindahkan secara selektif.

Serangkaian pembatasan ini mengandaikan pengguna yang dipersiapkan dengan jelas, karena administrasi independen diperbolehkan, dan pembatasan tersebut tidak terkait dengan pemblokiran tindakan potensialnya, namun dengan pengecualian kemungkinan kesalahan atau dampak perangkat lunak yang merusak. Itu. Tidak ada pelaku internal dalam model tersebut.

Dalam mencari solusi, kami segera meninggalkan gagasan untuk menerapkan pembatasan menggunakan alat bawaan atau tambahan Windows, karena cukup sulit untuk membatasi pengguna dengan hak administrator secara efektif, sehingga memberinya kemampuan untuk menginstal aplikasi.

Solusi selanjutnya adalah isolasi menggunakan virtualisasi. Alat terkenal untuk virtualisasi desktop (misalnya, seperti virtualbox) kurang cocok untuk memecahkan masalah keamanan dan batasan yang tercantum harus dilakukan oleh pengguna dengan terus-menerus mengganti atau menyesuaikan properti mesin virtual tamu (selanjutnya disebut sebagai sebagai VM), yang meningkatkan risiko kesalahan.

Pada saat yang sama, kami memiliki pengalaman menggunakan Qubes sebagai sistem desktop pengguna, tetapi kami memiliki keraguan tentang stabilitas bekerja dengan Windows tamu. Diputuskan untuk memeriksa versi Qubes saat ini, karena batasan yang disebutkan sangat sesuai dengan paradigma sistem ini, terutama implementasi templat mesin virtual dan integrasi visual. Selanjutnya saya akan mencoba membahas secara singkat tentang ide dan alat Qubes, dengan menggunakan contoh pemecahan masalah.

Jenis virtualisasi Xen

Qubes didasarkan pada hypervisor Xen, yang meminimalkan fungsi pengelolaan sumber daya prosesor, memori, dan mesin virtual. Semua pekerjaan lain dengan perangkat terkonsentrasi di dom0 berdasarkan kernel Linux (Qubes untuk dom0 menggunakan distribusi Fedora).

Menggunakan QubesOS untuk bekerja dengan Windows 7

Xen mendukung beberapa jenis virtualisasi (saya akan memberikan contoh untuk arsitektur Intel, meskipun Xen mendukung yang lain):

  • paravirtualization (PV) - mode virtualisasi tanpa menggunakan dukungan perangkat keras, mengingatkan pada virtualisasi container, dapat digunakan untuk sistem dengan kernel yang diadaptasi (dom0 beroperasi dalam mode ini);
  • virtualisasi penuh (HVM) - dalam mode ini, dukungan perangkat keras untuk sumber daya prosesor digunakan, dan semua peralatan lainnya ditiru menggunakan QEMU. Ini adalah cara paling universal untuk menjalankan berbagai sistem operasi;
  • paravirtualisasi perangkat keras (PVH - ParaVirtualized Hardware) - mode virtualisasi menggunakan dukungan perangkat keras ketika, untuk bekerja dengan perangkat keras, kernel sistem tamu menggunakan driver yang disesuaikan dengan kemampuan hypervisor (misalnya, memori bersama), menghilangkan kebutuhan emulasi QEMU dan meningkatkan kinerja I/O. Kernel Linux mulai dari 4.11 dapat bekerja dalam mode ini.

Menggunakan QubesOS untuk bekerja dengan Windows 7

Dimulai dengan Qubes 4.0, demi alasan keamanan, penggunaan mode paravirtualisasi ditinggalkan (termasuk karena kerentanan yang diketahui dalam arsitektur Intel, yang sebagian diatasi dengan penggunaan virtualisasi penuh); mode PVH digunakan secara default.

Saat menggunakan emulasi (mode HVM), QEMU diluncurkan di VM terisolasi yang disebut stubdomain, sehingga mengurangi risiko eksploitasi potensi kesalahan dalam implementasi (proyek QEMU berisi banyak kode, termasuk untuk kompatibilitas).
Dalam kasus kami, mode ini harus digunakan untuk Windows.

Layanan mesin virtual

Dalam arsitektur keamanan Qubes, salah satu kemampuan utama hypervisor adalah transfer perangkat PCI ke lingkungan tamu. Pengecualian perangkat keras memungkinkan Anda mengisolasi bagian host sistem dari serangan eksternal. Xen mendukung ini untuk mode PV dan HVM, dalam kasus kedua memerlukan dukungan untuk IOMMU (Intel VT-d) - manajemen memori perangkat keras untuk perangkat virtual.

Ini menciptakan beberapa mesin virtual sistem:

  • sys-net, ke mana perangkat jaringan ditransfer dan digunakan sebagai jembatan untuk VM lain, misalnya yang mengimplementasikan fungsi firewall atau klien VPN;
  • sys-usb, ke mana USB dan pengontrol perangkat periferal lainnya ditransfer;
  • sys-firewall, yang tidak menggunakan perangkat, tetapi berfungsi sebagai firewall untuk VM yang terhubung.

Untuk bekerja dengan perangkat USB, layanan proxy digunakan, yang menyediakan, antara lain:

  • untuk kelas perangkat HID (perangkat antarmuka manusia), mengirimkan perintah ke dom0;
  • untuk media yang dapat dipindahkan, pengalihan volume perangkat ke VM lain (kecuali dom0);
  • mengarahkan langsung ke perangkat USB (menggunakan USBIP dan alat integrasi).

Dalam konfigurasi seperti itu, serangan yang berhasil melalui tumpukan jaringan atau perangkat yang terhubung dapat menyebabkan kompromi hanya pada layanan VM yang sedang berjalan, dan bukan keseluruhan sistem secara keseluruhan. Dan setelah memulai ulang layanan VM, itu akan dimuat dalam keadaan semula.

Alat integrasi VM

Ada beberapa cara untuk berinteraksi dengan desktop mesin virtual - menginstal aplikasi di sistem tamu atau meniru video menggunakan alat virtualisasi. Aplikasi tamu dapat berupa berbagai alat akses jarak jauh universal (RDP, VNC, Spice, dll.) atau disesuaikan dengan hypervisor tertentu (alat tersebut biasanya disebut utilitas tamu). Opsi campuran juga dapat digunakan, ketika hypervisor mengemulasi I/O untuk sistem tamu, dan secara eksternal menyediakan kemampuan untuk menggunakan protokol yang menggabungkan I/O, misalnya, seperti Spice. Pada saat yang sama, alat akses jarak jauh biasanya mengoptimalkan gambar, karena melibatkan bekerja melalui jaringan, yang tidak berdampak positif pada kualitas gambar.

Qubes menyediakan alatnya sendiri untuk integrasi VM. Pertama-tama, ini adalah subsistem grafis - jendela dari VM yang berbeda ditampilkan pada satu desktop dengan bingkai warnanya sendiri. Secara umum, alat integrasi didasarkan pada kemampuan hypervisor - memori bersama (tabel hibah Xen), alat notifikasi (saluran acara Xen), penyimpanan bersama xenstore, dan protokol komunikasi vchan. Dengan bantuan mereka, komponen dasar qrexec dan qubes-rpc, dan layanan aplikasi diimplementasikan - pengalihan audio atau USB, mentransfer file atau konten clipboard, menjalankan perintah dan meluncurkan aplikasi. Dimungkinkan untuk menetapkan kebijakan yang memungkinkan Anda membatasi layanan yang tersedia di VM. Gambar di bawah adalah contoh prosedur inisialisasi interaksi dua VM.

Menggunakan QubesOS untuk bekerja dengan Windows 7

Dengan demikian, pekerjaan di VM dilakukan tanpa menggunakan jaringan, yang memungkinkan penggunaan penuh VM otonom untuk menghindari kebocoran informasi. Misalnya, ini adalah bagaimana pemisahan operasi kriptografi (PGP/SSH) diterapkan, ketika kunci privat digunakan dalam VM yang terisolasi dan tidak melampauinya.

Templat, aplikasi, dan VM satu kali

Semua pekerjaan pengguna di Qubes dilakukan di mesin virtual. Sistem host utama digunakan untuk mengontrol dan memvisualisasikannya. OS diinstal bersama dengan seperangkat dasar mesin virtual berbasis template (TemplateVM). Templat ini adalah VM Linux berdasarkan distribusi Fedora atau Debian, dengan alat integrasi diinstal dan dikonfigurasi, serta sistem khusus dan partisi pengguna. Instalasi dan pembaruan perangkat lunak dilakukan oleh manajer paket standar (dnf atau apt) dari repositori yang dikonfigurasi dengan verifikasi tanda tangan digital wajib (GnuPG). Tujuan dari VM tersebut adalah untuk memastikan kepercayaan pada aplikasi VM yang diluncurkan atas dasar mereka.

Saat startup, VM aplikasi (AppVM) menggunakan snapshot dari partisi sistem dari template VM yang sesuai, dan setelah selesai menghapus snapshot ini tanpa menyimpan perubahan. Data yang diperlukan oleh pengguna disimpan dalam partisi pengguna yang unik untuk setiap VM aplikasi, yang dipasang di direktori home.

Menggunakan QubesOS untuk bekerja dengan Windows 7

Menggunakan VM sekali pakai (disposableVM) dapat bermanfaat dari sudut pandang keamanan. VM semacam itu dibuat berdasarkan template pada saat startup dan diluncurkan untuk satu tujuan - untuk menjalankan satu aplikasi, menyelesaikan pekerjaan setelah ditutup. VM sekali pakai dapat digunakan untuk membuka file mencurigakan yang isinya dapat menyebabkan eksploitasi kerentanan aplikasi tertentu. Kemampuan untuk menjalankan VM satu kali terintegrasi ke dalam pengelola file (Nautilus) dan klien email (Thunderbird).

Windows VM juga dapat digunakan untuk membuat templat dan VM satu kali dengan memindahkan profil pengguna ke bagian terpisah. Dalam versi kami, templat seperti itu akan digunakan oleh pengguna untuk tugas administrasi dan instalasi aplikasi. Berdasarkan template, beberapa VM aplikasi akan dibuat - dengan akses terbatas ke jaringan (kemampuan sys-firewall standar) dan tanpa akses ke jaringan sama sekali (perangkat jaringan virtual tidak dibuat). Semua perubahan dan aplikasi yang diinstal pada templat akan tersedia untuk bekerja di VM ini, dan bahkan jika program bookmark diperkenalkan, mereka tidak akan memiliki akses jaringan untuk dikompromikan.

Berjuang untuk Windows

Fitur-fitur yang dijelaskan di atas adalah dasar dari Qubes dan bekerja dengan cukup stabil; kesulitan dimulai dengan Windows. Untuk mengintegrasikan Windows, Anda harus menggunakan seperangkat alat tamu Qubes Windows Tools (QWT), yang mencakup driver untuk bekerja dengan Xen, driver qvideo dan seperangkat utilitas untuk pertukaran informasi (transfer file, clipboard). Proses instalasi dan konfigurasi didokumentasikan secara rinci di situs proyek, jadi kami akan berbagi pengalaman aplikasi kami.

Kesulitan utama pada dasarnya adalah kurangnya dukungan terhadap alat yang dikembangkan. Pengembang Utama (QWT) tampaknya tidak tersedia dan proyek integrasi Windows sedang menunggu pengembang utama. Oleh karena itu, pertama-tama perlu dilakukan penilaian kinerjanya dan membentuk pemahaman tentang kemungkinan mendukungnya secara mandiri, jika diperlukan. Yang paling sulit untuk dikembangkan dan di-debug adalah driver grafis, yang mengemulasi adaptor video dan tampilan untuk menghasilkan gambar dalam memori bersama, memungkinkan Anda untuk menampilkan seluruh desktop atau jendela aplikasi langsung di jendela sistem host. Selama analisis operasi driver, kami mengadaptasi kode untuk perakitan di lingkungan Linux dan menyusun skema debugging antara dua sistem tamu Windows. Pada tahap crossbuild, kami membuat beberapa perubahan yang menyederhanakan banyak hal bagi kami, terutama dalam hal instalasi utilitas “senyap”, dan juga menghilangkan penurunan kinerja yang mengganggu saat bekerja di VM untuk waktu yang lama. Kami mempresentasikan hasil pekerjaan secara terpisah repositori, jadi tidak lama menginspirasi Pengembang Qubes Utama.

Tahap paling kritis dalam hal stabilitas sistem tamu adalah startup Windows, di sini Anda dapat melihat layar biru yang familiar (atau bahkan tidak melihatnya). Untuk sebagian besar kesalahan yang teridentifikasi, ada berbagai solusi - menghilangkan driver perangkat blok Xen, menonaktifkan penyeimbangan memori VM, memperbaiki pengaturan jaringan, dan meminimalkan jumlah inti. Alat tamu kami membangun instalasi dan berjalan pada Windows 7 dan Windows 10 yang diperbarui sepenuhnya (kecuali qvideo).

Saat berpindah dari lingkungan nyata ke lingkungan virtual, masalah muncul saat mengaktifkan Windows jika versi OEM yang sudah diinstal sebelumnya digunakan. Sistem tersebut menggunakan aktivasi berdasarkan lisensi yang ditentukan dalam UEFI perangkat. Untuk memproses aktivasi dengan benar, Anda perlu mentransfer salah satu dari seluruh bagian ACPI dari sistem host (tabel SLIC) ke sistem tamu dan sedikit mengedit yang lain dengan mendaftarkan pabrikan. Xen memungkinkan Anda untuk menyesuaikan konten ACPI dari tabel tambahan, tetapi tanpa mengubah tabel utama. Patch dari proyek OpenXT serupa, yang diadaptasi untuk Qubes, membantu solusinya. Perbaikan tersebut tampaknya berguna tidak hanya bagi kami dan telah diterjemahkan ke dalam repositori Qubes utama dan perpustakaan Libvirt.

Kerugian yang jelas dari alat integrasi Windows termasuk kurangnya dukungan untuk audio, perangkat USB, dan kerumitan bekerja dengan media, karena tidak ada dukungan perangkat keras untuk GPU. Namun hal di atas tidak menghalangi penggunaan VM untuk bekerja dengan dokumen kantor, juga tidak menghalangi peluncuran aplikasi perusahaan tertentu.

Persyaratan untuk beralih ke mode operasi tanpa jaringan atau dengan jaringan terbatas setelah membuat templat VM Windows dipenuhi dengan membuat konfigurasi VM aplikasi yang sesuai, dan kemungkinan menghubungkan media yang dapat dipindahkan secara selektif juga diselesaikan dengan alat OS standar - saat terhubung , mereka tersedia di sistem VM sys-usb, dari mana mereka dapat "diteruskan" ke VM yang diperlukan. Desktop pengguna terlihat seperti ini.

Menggunakan QubesOS untuk bekerja dengan Windows 7

Versi final sistem secara positif (sejauh memungkinkan solusi komprehensif memungkinkan) diterima oleh pengguna, dan alat standar sistem memungkinkan untuk memperluas aplikasi ke stasiun kerja seluler pengguna dengan akses melalui VPN.

Alih-alih sebuah kesimpulan

Virtualisasi secara umum memungkinkan Anda mengurangi risiko penggunaan sistem Windows yang dibiarkan tanpa dukungan - virtualisasi tidak memaksakan kompatibilitas dengan perangkat keras baru, memungkinkan Anda mengecualikan atau mengontrol akses ke sistem melalui jaringan atau melalui perangkat yang terhubung, dan memungkinkan Anda untuk menerapkan lingkungan peluncuran satu kali.

Berdasarkan gagasan isolasi melalui virtualisasi, Qubes OS membantu Anda memanfaatkan mekanisme ini dan mekanisme keamanan lainnya. Dari luar, banyak orang melihat Qubes terutama sebagai keinginan untuk anonimitas, namun ini adalah sistem yang berguna baik bagi para insinyur, yang sering menangani proyek, infrastruktur, dan rahasia untuk mengaksesnya, dan bagi peneliti keamanan. Pemisahan aplikasi, data, dan formalisasi interaksinya merupakan langkah awal analisis ancaman dan desain sistem keamanan. Pemisahan ini membantu menyusun informasi dan mengurangi kemungkinan kesalahan yang disebabkan oleh faktor manusia - tergesa-gesa, kelelahan, dll.

Saat ini, penekanan utama dalam pengembangan adalah perluasan fungsionalitas lingkungan Linux. Versi 4.1 sedang dipersiapkan untuk rilis, yang akan didasarkan pada Fedora 31 dan menyertakan versi terkini dari komponen utama Xen dan Libvirt. Perlu dicatat bahwa Qubes dibuat oleh profesional keamanan informasi yang selalu segera merilis pembaruan jika ancaman atau kesalahan baru teridentifikasi.

penutup

Salah satu kemampuan eksperimental yang kami kembangkan memungkinkan kami membuat VM dengan dukungan akses tamu ke GPU berdasarkan teknologi Intel GVT-g, yang memungkinkan kami menggunakan kemampuan adaptor grafis dan memperluas cakupan sistem secara signifikan. Pada saat penulisan, fungsi ini berfungsi untuk uji coba Qubes 4.1, dan tersedia di github.

Sumber: www.habr.com

Tambah komentar