Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Tóm tắt

Ngoài để cung cấp cho mình keypairs SSH xác thực người dùng, nền tảng Microsoft Azure dựa trên SSH keypairs để kích hoạt một số tính năng được thêm vào máy ảo (VM) lúc triển khai. Chúng tôi phát hiện ra rằng trong một số trường hợp giới hạn, khoá công cộng từ các chứng chỉ Azure nền có thể được bất ngờ vào tệp .ssh/authorized_keys. Các trường hợp được scoped chỉ đến một tình huống trong đó máy ảo được cung cấp bằng cách sử dụng máy chủ ảo init và người dùng chọn các tính năng Azure dựa trên chứng chỉ, chẳng hạn như bản hệ thống quản lý Dịch vụ.

Hành vi không mong muốn này xảy ra do thay đổi logic cung cấp hệ điều hành cụ thể. Đây là hệ thống sử dụng máy chủ ảo init đã vô tình cài đặt khoá công cộng từ tất cả các chứng chỉ được cung cấp cho máy ảo vào ssh cho phép khoá tệp trong VM tạo. 

Để tìm hiểu thêm, hãy đi tới CVE-2019-0816.

Thông tin Bổ sung

Tình huống chi tiết

Đám mây init logic được đề cập trong phần "Tóm tắt" hiện được biết là tồn tại trong hình ảnh Azure Ubuntu 18,04 ngoài 7.4/7.5/7.6 Public Preview RHEL và CentOS 7.4 init đám mây hình ảnh. Nó cũng có thể tồn tại trong hình ảnh tùy chỉnh bằng cách sử dụng các hệ điều hành.    Nếu bạn kích hoạt một trong những tính năng sau khi bạn cung cấp một hình ảnh Linux, bạn có thể thấy khoá bổ sung, không mong muốn trong tệp .ssh/authorized_keys như bất kỳ sau đây:

  • Quản lý danh tính

  • Phần mở rộng với thiết đặt bảo vệ

  • Triển khai một máy ảo với chìa khoá tín liệu một máy ảo

Xác định và remediate có sẵn máy ảo

Xác định

Để kiểm tra xem bạn có khoá bổ sung, đánh giá tập hợp lệ phím (vi .ssh/authorized_keys tệp) để xác định xem bất kỳ khoá bổ sung mà bạn không muốn bao gồm đã được thêm vào.

Rất an toàn tự loại bỏ bất kỳ bổ sung ssh công khoá đó có thể đã được thêm vào. Điều này sẽ không ảnh hưởng đến các tính năng được triển khai cùng với máy ảo. Ngoài ra, nó sẽ không ảnh hưởng đến cặp của bạn đã chỉ định SSH chính xác thực.

Nếu bạn không biết hoặc không thể phân biệt được khoá công cộng trong .ssh/authorized_keys tệp đã chỉ định cho xác thực, hãy làm theo các bước sau:

  1. Xem mẫu triển khai của bạn:

    1. SSH khoá công cộng

    2. SSH phím trong cấu hình máy chủ ảo init

  2. Lấy các triển khai ssh phím lúc tạo từ bên trong máy ảo, nếu bạn có thể truy cập sudo/gốc. Để thực hiện việc này, hãy làm theo các bước sau:

    1. Kiểm tra cấu hình máy chủ ảo init được chuyển vào CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Sử dụng giá trị CustomData và sau đó sử dụng base64 giải mã nhận khoá công cộng mà bạn triển khai: echo "<customData value>" | base64 -D

    2. Ngoài ra, hãy kiểm tra các phiên bản Meta dữ liệu dịch vụ (IMDS) để xem các ssh khoá công cộng được chuyển vào các ssh cộng sản chính của tạo máy ảo: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Remediate

Nếu bạn đã xác định các chứng chỉ mà bạn đã không có ý định triển khai máy ảo, bạn có thể loại bỏ các xóa các dòng tương ứng từ authorized_keys tệp.

Do sửa chữa kết nối với máy ảo tương tác, hoặc sử dụng phần mở rộng tập lệnh tuỳ chỉnh hoặc RunCommand trên nhiều máy ảo.

Triển khai bằng cách sử dụng tiện ích mở rộng đã bảo vệ cài đặt hoặc bản quản lý máy ảo

Sử dụng lệnh sau để xoá khoá công cộng từ chứng chỉ khi máy ảo được triển khai với phần mở rộng hoặc quản lý danh tính. Điều này sẽ không xoá khoá được chỉ định khi bạn triển khai một máy ảo, hoặc nếu máy ảo được triển khai với khoá tín liệu khoá.

Quan trọng

Chúng tôi khuyên bạn sao lưu tệp authorized_keys trước khi bạn chạy tập lệnh này.

 

#!/bin/bash
set -e

# /var/lib/waagent has *.crt files that include the crt files corresponding to 
# the user provided public keys and one additional .crt file from MSI.
# This script converts the content of the .crt file into the ssh public key and
# remove it from the authorized_keys file
readarray -t CRT_FILES < <(grep -l -E "(Microsoft.ManagedIdentity|Windows Azure)" /var/lib/waagent/*.crt)
for ((i=0; i < ${#CRT_FILES[@]}; i++))
do
    PUBKEY=$(openssl x509 -in "${CRT_FILES[$i]}" -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8)
    sed -i -e "\@$PUBKEY@d" $HOME/.ssh/authorized_keys
Done 

Sau khi đã chạy tập lệnh kiểm tra tệp ssh/authorized_keys nhằm chỉ các khu vực key(s) hiện có.

Máy ảo được bố trí khoá tín liệu bí mật

Để xác định xem khoá được thêm vào khi triển khai với khoá tín liệu phím, hãy làm theo các bước sau:

  1. Có tên của chứng chỉ khoá tín liệu bạn triển khai bằng cách sử dụng máy ảo, xem xét triển khai mã Az CLI hoặc ARM mẫu hoặc chạy CLI Az này: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlTrả lời sẽ hiển thị tên chứng chỉ: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Tải xuống chứng chỉ: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Trích xuất các khóa công khai: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. So sánh kết quả từ các bước trước đó để Certs hàng còn lại trong tệp ssh/authorized_keys. vi .ssh/authorized_keys file

Giải pháp

Xanh trường ảnh

Sửa chữa đã được áp dụng cho máy chủ ảo-init Azure ảnh đã xác định:

  • Canonical:UbuntuServer:18.04-LTS:18.04.201902190

  • Canonical:UbuntuServer:18.10-DAILY:18.10.201903200

  • RedHat:RHEL:7-RAW-CI:7.6.2019030421

  • OpenLogic:CentOS-CI:7-CI:7.6.20190306

Hình ảnh tùy chỉnh

Nếu bạn đang sử dụng hình ảnh tuỳ chỉnh được cung cấp bởi máy chủ ảo-init cho các hệ điều hành, bạn sẽ phải cập nhật nguồn ảnh tuỳ chỉnh của bạn.

Ubuntu 18,04 ảnh

Cập Nhật hình ảnh tuỳ chỉnh nguồn, bạn phải thực hiện các thay đổi sau:

  • Chỉnh sửa tệp sau: /etc/Cloud/Cloud.cfg.d/90-Azure.cfg

  • Thêm mã sau vào cuối tập tin.

Quan trọng

Mã phải được thêm chính xác như được hiển thị, bao gồm cả dấu cách.

datasource:
   Azure:
     agent_command: [service, walinuxagent, start]

RHEL 7.4/7.5/7.6 và CentOS 7,6 ảnh

Nếu bạn đã tạo ảnh RHEL/CentOS bằng cách sử dụng các bước sau (hoặc một phương pháp tương tự), bạn phải Cập Nhật hình ảnh nguồn mà bạn đã tạo các máy ảo. Sau đây là các bước bổ sung được yêu cầu để thêm vào cấu hình ảnh VM nguồn hiện có:

Bước 1

Chỉnh sửa tệp sau:

/etc/cloud/cloud.cfg.d/91-azure_datasource.cfg

Quan trọng

Mã phải được thêm chính xác như được hiển thị, bao gồm cả dấu cách.

Thêm dòng sau vào cuối tập tin:

datasource:
   Azure:
     agent_command: [systemctl, start, waagent, --no-block]

Bước 2

Cập Nhật cấu hình tác nhân như sau:

cp /lib/systemd/system/waagent.service /etc/systemd/system/waagent.service
sed -i 's/After=network-online.target/WantedBy=cloud-init.service\\nAfter=network.service systemd-networkd-wait-online.service/g' /etc/systemd/system/waagent.service
systemctl daemon-reload

máy chủ ảo init gói

Tất cả các gói máy chủ ảo init bao gồm các bản vá trong quá trình Cập Nhật. Microsoft đang nghiên cứu vấn đề này và sẽ đăng thêm thông tin trong bài viết này khi thông tin có sẵn.

Câu hỏi thường gặp

Câu hỏi 1: Microsoft có được quyền truy cập vào máy ảo của tôi?

A1: Khoá mật mã được sử dụng để quản lý danh tính và phần mở rộng không được thiết kế để truy cập của nhân viên của Microsoft. Chúng tôi có quy trình giám sát, đăng nhập và ngăn loại truy cập. Như một biện pháp phòng ngừa an toàn, chúng tôi đang xem xét tất cả các bản ghi để đảm bảo rằng không có khoá khách hàng được truy cập không thích hợp. Chứng chỉ được lưu trữ trong khoá tín liệu tham chiếu tại VM hoặc VMSS, nhân viên của Microsoft không có bất kỳ tới bí mật.

Câu hỏi 2: Là triển khai đám mây-init OSs và phiên bản bị ảnh hưởng hay không?

A2: Không. Chúng tôi đã thấy sự cố này không liên quan chính chỉ trong hệ điều hành được xác định. Chúng tôi không nhìn thấy nó xảy ra trong các phiên bản cũ hơn của Ubuntu. Điều này là do các hệ thống sử dụng một cơ chế khác nhau để đặt khoá công cộng.

Câu hỏi 3: Đám mây bị ảnh hưởng-init gói cho bản phát hành Linux bao gồm khắc phục sự cố không?

A3: Chúng tôi đang tìm thêm các bản sửa lỗi gói cho các phiên bản bị ảnh hưởng và chúng tôi sẽ cập nhật bài viết này khi hoàn thành công việc đó.

Câu hỏi 4: Sẽ Microsoft tự động Cập Nhật bất kỳ máy ảo bị ảnh hưởng?

A4: Không. Microsoft sẽ không thay đổi nội dung của máy ảo mà bạn đã cung cấp.

Câu hỏi 5: Các chính sách bảo mật ngăn tôi hoạt động một máy ảo Linux với nội dung đưa authorized_keys. Tôi có thể làm gì về việc này ngay hôm nay?

A5: Bạn có thể loại bỏ các dòng vi phạm an toàn từ authorized_keys tệp. Điều này sẽ không ảnh hưởng đến SSH keypair mà bạn đã tạo và điều khiển hoặc quản lý danh tính. Bạn có thể thực hiện việc này theo cách thủ công hoặc bằng cách chạy lệnh tuỳ chỉnh hoặc tuỳ chỉnh lệnh trên bất kỳ đội bị ảnh hưởng.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×