Sử dụng QubesOS để làm việc với Windows 7

Không có nhiều bài viết về Habré dành riêng cho hệ điều hành Qubes, và những bài tôi xem cũng không mô tả nhiều về trải nghiệm sử dụng nó. Phần dưới đây, tôi hy vọng sẽ khắc phục điều này bằng cách sử dụng ví dụ về việc sử dụng Qubes như một phương tiện bảo vệ (chống lại) môi trường Windows, đồng thời ước tính số lượng người dùng hệ thống nói tiếng Nga.

Sử dụng QubesOS để làm việc với Windows 7

Tại sao lại là Qube?

Câu chuyện về việc ngừng hỗ trợ kỹ thuật cho Windows 7 và sự lo lắng ngày càng tăng của người dùng đã dẫn đến nhu cầu tổ chức công việc của hệ điều hành này, có tính đến các yêu cầu sau:

  • đảm bảo việc sử dụng Windows 7 được kích hoạt hoàn toàn với khả năng người dùng cài đặt các bản cập nhật và các ứng dụng khác nhau (bao gồm cả qua Internet);
  • thực hiện loại trừ hoàn toàn hoặc có chọn lọc các tương tác mạng dựa trên các điều kiện (chế độ vận hành tự chủ và lọc lưu lượng);
  • cung cấp khả năng kết nối có chọn lọc các thiết bị và phương tiện di động.

Tập hợp các hạn chế này giả định người dùng đã được chuẩn bị rõ ràng, vì được phép quản trị độc lập và các hạn chế này không liên quan đến việc chặn các hành động tiềm ẩn của anh ta mà liên quan đến việc loại trừ các lỗi có thể xảy ra hoặc các hiệu ứng phá hoại phần mềm. Những thứ kia. Không có người phạm tội nội bộ trong mô hình.

Trong quá trình tìm kiếm giải pháp, chúng tôi đã nhanh chóng từ bỏ ý tưởng thực hiện các hạn chế bằng cách sử dụng các công cụ Windows tích hợp hoặc bổ sung, vì rất khó để hạn chế một cách hiệu quả người dùng có quyền quản trị viên, khiến anh ta có khả năng cài đặt ứng dụng.

Giải pháp tiếp theo là cách ly bằng ảo hóa. Các công cụ nổi tiếng để ảo hóa máy tính để bàn (ví dụ: hộp ảo) không phù hợp để giải quyết các vấn đề bảo mật và người dùng sẽ phải thực hiện các hạn chế được liệt kê bằng cách liên tục chuyển đổi hoặc điều chỉnh các thuộc tính của máy ảo khách (sau đây gọi là như VM), điều này làm tăng nguy cơ xảy ra lỗi.

Đồng thời, chúng tôi đã có kinh nghiệm sử dụng Qubes làm hệ thống máy tính để bàn của người dùng, nhưng lại nghi ngờ về tính ổn định khi làm việc với Windows khách. Người ta quyết định kiểm tra phiên bản hiện tại của Qubes, vì những hạn chế đã nêu rất phù hợp với mô hình của hệ thống này, đặc biệt là việc triển khai các mẫu máy ảo và tích hợp trực quan. Tiếp theo, tôi sẽ cố gắng nói ngắn gọn về những ý tưởng và công cụ của Qubes, sử dụng ví dụ về cách giải quyết vấn đề.

Các loại ảo hóa Xen

Qubes dựa trên Xen hypervisor, giúp giảm thiểu các chức năng quản lý tài nguyên bộ xử lý, bộ nhớ và máy ảo. Tất cả các công việc khác với các thiết bị đều tập trung vào dom0 dựa trên nhân Linux (Qubes cho dom0 sử dụng bản phân phối Fedora).

Sử dụng QubesOS để làm việc với Windows 7

Xen hỗ trợ một số loại ảo hóa (Tôi sẽ đưa ra ví dụ về kiến ​​trúc Intel, mặc dù Xen hỗ trợ các loại khác):

  • paravirtualization (PV) - chế độ ảo hóa không sử dụng hỗ trợ phần cứng, gợi nhớ đến ảo hóa container, có thể được sử dụng cho các hệ thống có kernel thích ứng (dom0 hoạt động ở chế độ này);
  • ảo hóa hoàn toàn (HVM) - ở chế độ này, hỗ trợ phần cứng được sử dụng cho tài nguyên bộ xử lý và tất cả các thiết bị khác được mô phỏng bằng QEMU. Đây là cách phổ biến nhất để chạy các hệ điều hành khác nhau;
  • ảo hóa phần cứng (PVH - ParaVirtualized Hardware) - chế độ ảo hóa sử dụng hỗ trợ phần cứng khi, để làm việc với phần cứng, nhân hệ thống khách sử dụng trình điều khiển thích ứng với khả năng của bộ ảo hóa (ví dụ: bộ nhớ dùng chung), loại bỏ nhu cầu mô phỏng QEMU và tăng hiệu suất I/O. Nhân Linux bắt đầu từ 4.11 có thể hoạt động ở chế độ này.

Sử dụng QubesOS để làm việc với Windows 7

Bắt đầu với Qubes 4.0, vì lý do bảo mật, việc sử dụng chế độ ảo hóa song song bị hủy bỏ (bao gồm cả do các lỗ hổng đã biết trong kiến ​​trúc Intel, được giảm thiểu một phần nhờ sử dụng ảo hóa hoàn toàn); chế độ PVH được sử dụng theo mặc định.

Khi sử dụng mô phỏng (chế độ HVM), QEMU được khởi chạy trong một VM biệt lập có tên là stubdomain, do đó giảm rủi ro khai thác các lỗi tiềm ẩn trong quá trình triển khai (dự án QEMU chứa rất nhiều mã, bao gồm cả mã để tương thích).
Trong trường hợp của chúng tôi, chế độ này nên được sử dụng cho Windows.

Dịch vụ máy ảo

Trong kiến ​​trúc bảo mật Qubes, một trong những khả năng chính của bộ ảo hóa là chuyển các thiết bị PCI sang môi trường khách. Loại trừ phần cứng cho phép bạn cách ly phần máy chủ của hệ thống khỏi các cuộc tấn công từ bên ngoài. Xen hỗ trợ điều này cho chế độ PV và HVM, trong trường hợp thứ hai, nó yêu cầu hỗ trợ IOMMU (Intel VT-d) - quản lý bộ nhớ phần cứng cho các thiết bị ảo hóa.

Điều này tạo ra một số máy ảo hệ thống:

  • sys-net, nơi các thiết bị mạng được chuyển đến và được sử dụng làm cầu nối cho các máy ảo khác, chẳng hạn như những thiết bị thực hiện chức năng của tường lửa hoặc máy khách VPN;
  • sys-usb, nơi chuyển USB và các bộ điều khiển thiết bị ngoại vi khác;
  • sys-firewall, không sử dụng thiết bị nhưng hoạt động như tường lửa cho các máy ảo được kết nối.

Để hoạt động với các thiết bị USB, các dịch vụ proxy được sử dụng, trong số những thứ khác, cung cấp:

  • đối với lớp thiết bị HID (thiết bị giao diện con người), gửi lệnh tới dom0;
  • đối với phương tiện lưu động, chuyển hướng khối lượng thiết bị sang các máy ảo khác (ngoại trừ dom0);
  • chuyển hướng trực tiếp đến thiết bị USB (sử dụng USBIP và các công cụ tích hợp).

Trong cấu hình như vậy, một cuộc tấn công thành công thông qua ngăn xếp mạng hoặc các thiết bị được kết nối có thể dẫn đến sự xâm phạm chỉ VM dịch vụ đang chạy chứ không phải toàn bộ hệ thống. Và sau khi khởi động lại dịch vụ VM, nó sẽ được tải ở trạng thái ban đầu.

Công cụ tích hợp VM

Có một số cách để tương tác với màn hình của máy ảo - cài đặt ứng dụng trong hệ thống khách hoặc mô phỏng video bằng các công cụ ảo hóa. Các ứng dụng khách có thể là nhiều công cụ truy cập từ xa phổ quát khác nhau (RDP, VNC, Spice, v.v.) hoặc được điều chỉnh cho phù hợp với một trình ảo hóa cụ thể (các công cụ như vậy thường được gọi là tiện ích dành cho khách). Tùy chọn hỗn hợp cũng có thể được sử dụng khi trình ảo hóa mô phỏng I/O cho hệ thống khách và cung cấp từ bên ngoài khả năng sử dụng giao thức kết hợp I/O, chẳng hạn như Spice. Đồng thời, các công cụ truy cập từ xa thường tối ưu hóa hình ảnh vì chúng liên quan đến hoạt động qua mạng, điều này không có tác động tích cực đến chất lượng hình ảnh.

Qubes cung cấp các công cụ riêng để tích hợp VM. Trước hết, đây là một hệ thống con đồ họa - các cửa sổ từ các máy ảo khác nhau được hiển thị trên một màn hình duy nhất với khung màu riêng. Nhìn chung, các công cụ tích hợp dựa trên khả năng của bộ ảo hóa - bộ nhớ dùng chung (bảng cấp Xen), công cụ thông báo (kênh sự kiện Xen), bộ lưu trữ chia sẻ xenstore và giao thức truyền thông vchan. Với sự trợ giúp của họ, các thành phần cơ bản qrexec và qubes-rpc cũng như các dịch vụ ứng dụng sẽ được triển khai - chuyển hướng âm thanh hoặc USB, truyền tệp hoặc nội dung bảng tạm, thực thi lệnh và khởi chạy ứng dụng. Có thể đặt chính sách cho phép bạn giới hạn các dịch vụ có sẵn trên VM. Hình dưới đây là một ví dụ về quy trình khởi tạo tương tác của hai máy ảo.

Sử dụng QubesOS để làm việc với Windows 7

Do đó, công việc trong VM được thực hiện mà không cần sử dụng mạng, điều này cho phép sử dụng toàn bộ VM tự trị để tránh rò rỉ thông tin. Ví dụ: đây là cách thực hiện phân tách các hoạt động mã hóa (PGP/SSH), khi khóa riêng được sử dụng trong các máy ảo bị cô lập và không vượt quá chúng.

Mẫu, ứng dụng và máy ảo dùng một lần

Tất cả công việc của người dùng ở Qubes đều được thực hiện trên máy ảo. Hệ thống máy chủ chính được sử dụng để kiểm soát và trực quan hóa chúng. Hệ điều hành được cài đặt cùng với một bộ máy ảo dựa trên mẫu cơ bản (TemplateVM). Mẫu này là một máy ảo Linux dựa trên bản phân phối Fedora hoặc Debian, với các công cụ tích hợp được cài đặt và định cấu hình cũng như các phân vùng người dùng và hệ thống chuyên dụng. Việc cài đặt và cập nhật phần mềm được thực hiện bởi trình quản lý gói tiêu chuẩn (dnf hoặc apt) từ các kho lưu trữ được định cấu hình với xác minh chữ ký số bắt buộc (GnuPG). Mục đích của các máy ảo như vậy là để đảm bảo sự tin cậy vào các máy ảo ứng dụng được khởi chạy trên cơ sở chúng.

Khi khởi động, VM ứng dụng (AppVM) sử dụng ảnh chụp nhanh của phân vùng hệ thống của mẫu VM tương ứng và sau khi hoàn tất sẽ xóa ảnh chụp nhanh này mà không lưu các thay đổi. Dữ liệu mà người dùng yêu cầu được lưu trữ trong phân vùng người dùng duy nhất cho mỗi VM ứng dụng, được gắn trong thư mục chính.

Sử dụng QubesOS để làm việc với Windows 7

Sử dụng máy ảo dùng một lần (disposableVM) có thể hữu ích từ quan điểm bảo mật. Một máy ảo như vậy được tạo dựa trên một mẫu tại thời điểm khởi động và được khởi chạy với một mục đích - để thực thi một ứng dụng, hoàn thành công việc sau khi đóng ứng dụng đó. Máy ảo dùng một lần có thể được sử dụng để mở các tệp đáng ngờ có nội dung có thể dẫn đến việc khai thác các lỗ hổng ứng dụng cụ thể. Khả năng chạy VM một lần được tích hợp vào trình quản lý tệp (Nautilus) và ứng dụng email (Thunderbird).

Windows VM cũng có thể được sử dụng để tạo mẫu và VM dùng một lần bằng cách di chuyển hồ sơ người dùng sang một phần riêng biệt. Trong phiên bản của chúng tôi, mẫu như vậy sẽ được người dùng sử dụng cho các tác vụ quản trị và cài đặt ứng dụng. Dựa trên mẫu, một số máy ảo ứng dụng sẽ được tạo - với quyền truy cập hạn chế vào mạng (khả năng tường lửa hệ thống tiêu chuẩn) và hoàn toàn không có quyền truy cập vào mạng (thiết bị mạng ảo không được tạo). Tất cả các thay đổi và ứng dụng được cài đặt trong mẫu sẽ có sẵn để hoạt động trong các máy ảo này và ngay cả khi các chương trình đánh dấu được giới thiệu, chúng sẽ không có quyền truy cập mạng để thỏa hiệp.

Chiến đấu vì Windows

Các tính năng được mô tả ở trên là nền tảng của Qubes và hoạt động khá ổn định, khó khăn bắt đầu từ Windows. Để tích hợp Windows, bạn phải sử dụng một bộ công cụ khách Qubes Windows Tools (QWT), bao gồm trình điều khiển để làm việc với Xen, trình điều khiển qvideo và một bộ tiện ích trao đổi thông tin (truyền tệp, khay nhớ tạm). Quá trình cài đặt và cấu hình được ghi lại chi tiết trên trang web của dự án, vì vậy chúng tôi sẽ chia sẻ trải nghiệm ứng dụng của mình.

Khó khăn chính về cơ bản là thiếu sự hỗ trợ cho các công cụ đã phát triển. Nhà phát triển chính (QWT) dường như không có sẵn và dự án tích hợp Windows đang chờ nhà phát triển chính. Vì vậy, trước hết, cần phải đánh giá hiệu quả hoạt động của nó và hình thành sự hiểu biết về khả năng hỗ trợ nó một cách độc lập, nếu cần thiết. Khó phát triển và gỡ lỗi nhất là trình điều khiển đồ họa, trình điều khiển này mô phỏng bộ điều hợp video và màn hình để tạo hình ảnh trong bộ nhớ dùng chung, cho phép bạn hiển thị toàn bộ màn hình nền hoặc cửa sổ ứng dụng trực tiếp trong cửa sổ hệ thống máy chủ. Trong quá trình phân tích hoạt động của trình điều khiển, chúng tôi đã điều chỉnh mã để lắp ráp trong môi trường Linux và tìm ra sơ đồ gỡ lỗi giữa hai hệ thống khách Windows. Ở giai đoạn xây dựng chéo, chúng tôi đã thực hiện một số thay đổi giúp đơn giản hóa mọi thứ cho chúng tôi, chủ yếu là về mặt cài đặt các tiện ích “im lặng”, đồng thời loại bỏ hiện tượng giảm hiệu suất khó chịu khi làm việc trong VM trong thời gian dài. Chúng tôi đã trình bày kết quả của công việc một cách riêng biệt kho lưu trữ, do đó không lâu cảm hứng Trưởng nhóm phát triển Qubes.

Giai đoạn quan trọng nhất về tính ổn định của hệ thống khách là khởi động Windows, tại đây bạn có thể thấy màn hình xanh quen thuộc (hoặc thậm chí không nhìn thấy). Đối với hầu hết các lỗi được xác định, có nhiều cách giải quyết khác nhau - loại bỏ trình điều khiển thiết bị khối Xen, vô hiệu hóa cân bằng bộ nhớ VM, sửa cài đặt mạng và giảm thiểu số lượng lõi. Công cụ khách của chúng tôi xây dựng các lượt cài đặt và chạy trên Windows 7 và Windows 10 được cập nhật đầy đủ (ngoại trừ qvideo).

Khi chuyển từ môi trường thực sang môi trường ảo, sẽ phát sinh vấn đề khi kích hoạt Windows nếu sử dụng phiên bản OEM được cài đặt sẵn. Các hệ thống như vậy sử dụng kích hoạt dựa trên giấy phép được chỉ định trong UEFI của thiết bị. Để xử lý chính xác quá trình kích hoạt, cần phải dịch một trong toàn bộ phần ACPI của hệ thống máy chủ (bảng SLIC) sang hệ thống khách và chỉnh sửa một chút các phần khác, đăng ký nhà sản xuất. Xen cho phép bạn tùy chỉnh nội dung ACPI của các bảng bổ sung mà không cần sửa đổi các bảng chính. Một bản vá từ một dự án OpenXT tương tự, được điều chỉnh cho Qubes, đã giúp giải quyết vấn đề này. Các bản sửa lỗi có vẻ hữu ích không chỉ với chúng tôi và đã được dịch sang kho lưu trữ Qubes chính và thư viện Libvirt.

Những nhược điểm rõ ràng của các công cụ tích hợp Windows bao gồm thiếu hỗ trợ cho âm thanh, thiết bị USB và sự phức tạp khi làm việc với phương tiện vì không có hỗ trợ phần cứng cho GPU. Nhưng điều trên không ngăn cản việc sử dụng VM để làm việc với các tài liệu văn phòng, cũng như không ngăn cản việc khởi chạy các ứng dụng cụ thể của công ty.

Yêu cầu chuyển sang chế độ hoạt động không có mạng hoặc có mạng hạn chế sau khi tạo mẫu Windows VM đã được đáp ứng bằng cách tạo cấu hình thích hợp của máy ảo ứng dụng và khả năng kết nối có chọn lọc phương tiện di động cũng được giải quyết bằng các công cụ hệ điều hành tiêu chuẩn - khi được kết nối , chúng có sẵn trong hệ thống VM sys-usb, từ đó chúng có thể được "chuyển tiếp" tới VM được yêu cầu. Máy tính để bàn của người dùng trông giống như thế này.

Sử dụng QubesOS để làm việc với Windows 7

Phiên bản cuối cùng của hệ thống đã được người dùng chấp nhận một cách tích cực (trong chừng mực mà giải pháp toàn diện như vậy cho phép) và các công cụ tiêu chuẩn của hệ thống giúp mở rộng ứng dụng sang máy trạm di động của người dùng có quyền truy cập qua VPN.

Thay vì một kết luận

Ảo hóa nói chung cho phép bạn giảm thiểu rủi ro khi sử dụng các hệ thống Windows không được hỗ trợ - nó không bắt buộc phải tương thích với phần cứng mới, nó cho phép bạn loại trừ hoặc kiểm soát quyền truy cập vào hệ thống qua mạng hoặc thông qua các thiết bị được kết nối và nó cho phép bạn triển khai môi trường khởi chạy một lần.

Dựa trên ý tưởng cách ly thông qua ảo hóa, Qubes OS giúp bạn tận dụng những cơ chế này và các cơ chế khác để bảo mật. Nhìn từ bên ngoài, nhiều người chủ yếu coi Qubes là một nơi ẩn danh, nhưng đây là một hệ thống hữu ích cho cả các kỹ sư, những người thường xử lý các dự án, cơ sở hạ tầng và bí mật để truy cập chúng, cũng như cho các nhà nghiên cứu bảo mật. Việc tách các ứng dụng, dữ liệu và chính thức hóa sự tương tác của chúng là những bước đầu tiên của quá trình phân tích mối đe dọa và thiết kế hệ thống bảo mật. Sự tách biệt này giúp cấu trúc thông tin và giảm khả năng xảy ra sai sót do yếu tố con người - sự vội vàng, mệt mỏi, v.v.

Hiện tại, trọng tâm chính trong phát triển là mở rộng chức năng của môi trường Linux. Phiên bản 4.1 đang được chuẩn bị phát hành, dựa trên Fedora 31 và bao gồm các phiên bản hiện tại của các thành phần chính Xen và Libvirt. Điều đáng chú ý là Qubes được tạo ra bởi các chuyên gia bảo mật thông tin, những người luôn nhanh chóng phát hành các bản cập nhật nếu xác định được các mối đe dọa hoặc lỗi mới.

bạt

Một trong những khả năng thử nghiệm mà chúng tôi đang phát triển cho phép chúng tôi tạo máy ảo có hỗ trợ khách truy cập vào GPU dựa trên công nghệ Intel GVT-g, cho phép chúng tôi sử dụng các khả năng của bộ điều hợp đồ họa và mở rộng đáng kể phạm vi của hệ thống. Tại thời điểm viết bài, chức năng này hoạt động đối với các bản dựng thử nghiệm của Qubes 4.1 và có sẵn trên github.

Nguồn: www.habr.com

Thêm một lời nhận xét