Apa itu Kontrol Postur SSH untuk Windows?

SSH Posture Control memungkinkan Anda mengaudit dan mengonfigurasi postur keamanan SSH Server di Windows Server 2019, 2022, dan 2025. Kontrol Postur SSH terintegrasi dengan mulus dengan layanan Azure Governance (Kebijakan, Konfigurasi Mesin) sehingga Anda dapat:

  • Memastikan kepatuhan terhadap standar sshd di industri atau organisasi Anda
  • Mengurangi permukaan serangan manajemen jarak jauh berbasis sshd
  • Pastikan penyiapan sshd yang konsisten di seluruh armada Anda untuk keamanan dan produktivitas

Cuplikan layar memperlihatkan daftar pemeriksaan SSH yang sesuai

Untuk membantu Anda menunjukkan kepatuhan kepada auditor (dan untuk membantu Anda mengambil tindakan jika diperlukan) setiap pemeriksaan kepatuhan menyertakan bukti melalui bidang Alasan yang menunjukkan bagaimana kepatuhan atau ketidakpatuhan ditentukan.

Anda dapat menyesuaikan parameter sshd (nomor port, grup yang diizinkan, dll.) atau menggunakan nilai default kebijakan.

Dokumentasi untuk memulai

  • Mulai Cepat: Untuk pengalaman langsung klik-demi-klik, lihat Mulai Cepat : Menerapkan Kontrol Postur SSH ke mesin uji.
  • Gambaran umum dan referensi: Untuk informasi konseptual, referensi, dan FAQ, lanjutkan dengan artikel ini .

Memilih perilaku audit-saja vs. audit-and-configure

Saat menetapkan kebijakan Kontrol Postur SSH, Anda dapat memilih perilaku khusus audit (alias "Audit") atau perilaku audit dan konfigurasi (alias "Konfigurasikan").

Definisi kebijakan Efek Azure Policy Catatan tentang apa yang diharapkan
Perilaku audit saja **Audit** SSH Posture Control on Windows machines auditIfNotExists Kebijakan ini mencakup pengaturan yang lebih ketat dibandingkan dengan banyak gambar sistem populer. Misalnya, penolakan akses root ssh. Dengan demikian, berharap untuk melihat status yang tidak patuh dilaporkan.
Perilaku audit dan konfigurasi **Configure** SSH Posture Control on Windows machines deployIfNotExists Seperti di atas, Anda dapat mengharapkan untuk melihat status yang tidak sesuai yang dilaporkan pada awalnya. Selanjutnya, komputer akan dikonfigurasi ulang agar sesuai dengan kebijakan, yang mengakibatkan status Sesuai akhirnya.

Untuk komputer yang ada, admin biasanya mulai dengan perilaku audit-saja untuk menentukan status yang ada dan untuk menemukan dependensi seperti akun yang diizinkan untuk otomatisasi sistem. Setelah membandingkan armada yang ada dengan default Kontrol Postur SSH, Anda akan memutuskan parameter Kontrol Postur SSH mana yang akan disesuaikan. Setelah analisis dan perencanaan ini, Anda kemudian akan beralih ke perilaku audit dan konfigurasi (dengan praktik penyebaran yang aman seperti cincin).

Untuk skenario greenfield atau mesin uji sekali pakai, Anda dapat memilih untuk melewati analisis tersebut dan berpindah langsung ke perilaku audit dan konfigurasi, dimulai dengan default Kontrol Postur SSH yang kuat.

Perhatian

Sebelum mengonfigurasi komputer apa pun, berhati-hatilah untuk memvalidasi konfigurasi baru Anda. Anda tidak sengaja dapat kehilangan akses ke komputer Anda.

Contoh penguncian diri Anda secara tidak sengaja meliputi:

  • Pengaturan otorisasi bersih yang diterapkan (kombinasi allowUsers,denyGroups, dll.) tidak mengizinkan login yang Anda butuhkan
  • Yang port Anda konfigurasi untuk sshd diblokir oleh kontrol lain di lingkungan Anda (Aturan firewall host, aturan firewall jaringan, dll.)
    • Untuk menghindari overstepping batas tim perusahaan, SSH Posture Control hanya mengonfigurasi sshd. Saat ini tidak mencoba mengubah aturan firewall pada komputer, dll. untuk mengakomodasi port sshd yang dikonfigurasi. Jika Anda ingin mendiskusikan skenario ini dengan kami, silakan hubungi kami (lihat Sumber daya tambahan di bawah).

Cakupan Kontrol Postur SSH: aturan, default, dan kustomisasi

Tabel berikut mencantumkan item yang dapat diaudit atau dikonfigurasi dengan Kontrol Postur SSH. Masing-masing dikenal sebagai aturan.

Sebagian besar aturan dapat diberikan nilai kustom, melalui parameter penetapan kebijakan untuk mengaudit atau mengonfigurasi dan mengaudit. Misalnya, jika standar di organisasi Anda adalah menggunakan port 1111 (bukan 22) untuk sshd, Anda akan mengatur parameter yang sesuai dalam penetapan kebijakan. Parameter ini memiliki pengidentifikasi yang disertakan dalam tabel di bawah ini. Biasanya, nama parameter pendek digunakan secara terprogram (misalnya dengan az policy assignment create --params ...), sementara nama tampilan parameter yang lebih panjang digunakan dalam alur kerja portal Microsoft Azure.

Saat menyesuaikan nilai, berhati-hatilah untuk menyediakan nilai yang kompatibel dengan sshd. Misalnya, allowGroups mengambil daftar pola nama grup yang dibatasi spasi. Untuk referensi, lihat halaman sshd_config man. Referensi sshd_config juga berguna untuk memahami perilaku sshd lainnya seperti bagaimana daftar izinkan dan tolak bersinggungan.

Nota

Untuk mempertahankan tata letak tabel, beberapa nilai sel telah dipindahkan ke catatan kaki di bawah tabel.

Nama aturan Nilai standar Nama Parameter Nama tampilan parameter
Pastikan bahwa grup yang diizinkan untuk SSH dikonfigurasi <catatan kaki 1> AllowGroups Grup yang diizinkan
Pastikan bahwa pengguna yang diizinkan untuk akses SSH dikonfigurasi "" AllowUsers Pengguna yang diizinkan
Pastikan bahwa metode autentikasi untuk SSH dikonfigurasi apa pun AuthenticationMethods Metode autentikasi
Pastikan bahwa grup yang ditolak untuk SSH dikonfigurasi "" DenyGroups Grup yang ditolak
Pastikan bahwa pengguna yang ditolak untuk SSH dikonfigurasi "" DenyUsers Pengguna yang ditolak
Pastikan bahwa kode fasilitas yang digunakan saat mencatat pesan untuk SSH dikonfigurasi LOCAL0 SyslogFacility Fasilitas pengelogan sistem
Pastikan bahwa SSH MaxAuthTries dikonfigurasi 6 MaxAuthTries Upaya autentikasi maksimum
Pastikan bahwa SSH HostKey dikonfigurasi <catatan kaki 2> HostKey Kunci host
Pastikan bahwa file kunci resmi untuk SSH dikonfigurasi <catatan kaki 3> AuthorizedKeysFile File kunci resmi
Pastikan GSSApiAuthentication untuk SSH dikonfigurasi tidak benar GSSAPIAuthentication Autentikasi GSSAPI
Pastikan bahwa spanduk peringatan SSH dikonfigurasi <catatan kaki 4> Banner Spanduk
Pastikan sandi yang sesuai digunakan untuk SSH aes128-ctr,aes192-ctr,aes256-ctr Ciphers Cipher yang diizinkan
Pastikan bahwa hanya algoritma MAC yang disetujui yang digunakan hmac-sha2-256 MACs Algoritma MAC
Pastikan bahwa SSH ClientAliveCountMax dikonfigurasi 0 ClientAliveCountMax Jumlah pesan hidup klien
Pastikan port SSH dikonfigurasi 22 Port Pelabuhan
Pastikan bahwa SSH LoginGraceTime dikonfigurasi 60 (enam puluh) LoginGraceTime Waktu tenggang masuk
Pastikan bahwa SSH ClientAliveInterval dikonfigurasi 3600 ClientAliveInterval Interval hidup klien
Pastikan bahwa SSH PermitEmptyPasswords dikonfigurasi tidak benar PermitEmptyPasswords Izin kata sandi kosong

Catatan kaki tabel:

  1. administrators "openssh users"

  2. __PROGRAMDATA__/ssh/ssh_host_ecdsa_key

  3. %programdata%/ssh/administrators_authorized_keys

  4. #######################################################################/r/n/r/nAuthorized access only!/r/n/r/nIf you are not authorized to access or use this system, disconnect now!/r/n/r/n#######################################################################/r/n

    1. Catatan: ini ditampilkan kepada pengguna akhir sebagai:
    #######################################################################
    
    Authorized access only!
    
    If you are not authorized to access or use this system, disconnect now!
    
    #######################################################################
    

Parameter kebijakan tambahan (non-sshd)

Parameter kebijakan tambahan ini tersedia selama penetapan kebijakan. Ini memengaruhi perilaku penetapan Azure Policy, dibandingkan dengan pengaturan sshd pada komputer.

Nama Deskripsi Bawaan
Sertakan server yang terhubung dengan Arc Dengan memilih opsi ini, Anda setuju untuk dikenakan biaya bulanan per komputer yang terhubung dengan Arc. SALAH
Efek Aktifkan atau nonaktifkan eksekusi kebijakan ini <Bergantung pada Memilih perilaku audit-saja vs. audit-and-configure>

Definisi kebijakan? Penetapan kebijakan? Tugas tamu? Konfigurasi Mesin? Bagaimana semua ini cocok bersama-sama?

Untuk mulai menggunakan Kontrol Postur SSH, tindakan inti Anda adalah membuat penetapan kebijakan. Penetapan kebijakan Anda menautkan definisi kebijakan (misalnya, "Audit Kontrol Postur SSH untuk komputer Windows") ke cakupan (misalnya, "my_factory_3_resource_group").

Saat Anda menggunakan sistem, Anda akan menemukan jenis dan terminologi sumber daya tambahan, seperti yang dirangkum dalam hal berikut.

diagram memperlihatkan bagaimana penetapan kebijakan menautkan komputer ke layanan Konfigurasi Mesin melalui penetapan tamu

Deskripsi
Definisi Kebijakan Dalam layanan Kebijakan, data abstrak yang menjelaskan kluster perilaku audit dan/atau konfigurasi yang tersedia. Misalnya, "Audit Kontrol Postur SSH pada komputer Windows".
Penetapan kebijakan Menautkan definisi kebijakan abstrak ke cakupan konkret, seperti grup sumber daya. Penetapan kebijakan dapat mencakup Parameter dan properti lain yang khusus untuk penugasan tersebut.
Konfigurasi Mesin Layanan dan agen Azure yang menangani audit dan pengaturan konfigurasi di tingkat OS.
Penetapan tamu Sumber daya yang bertindak sebagai tautan tiga arah antara penetapan kebijakan, komputer, dan layanan Konfigurasi Mesin. Kebijakan membuat dan memantau sumber daya penetapan tamu sesuai kebutuhan.
Untuk informasi selengkapnya tentang terminologi "tamu" vs. "mesin", lihat Mengapa saya melihat istilah "Konfigurasi Tamu" dan "Automanage" di tempat?
Mesin Komputer yang diaktifkan Arc atau Azure VM.

Tentang kompatibilitas (implementasi SSH Server, dll.)

Kontrol Postur SSH dirancang untuk skenario Windows Server tujuan umum arus utama dari satu instans SSH Server yang berjalan lama :

  • yang siklus hidupnya dikelola oleh sistem init seperti Service Control Manager
  • yang perilakunya diatur oleh file sshd_config, konsisten dengan perilaku sshd OpenSSH
  • yang konfigurasi/status efektifnya diungkapkan oleh sshd -T output, konsisten dengan perilaku sshd OpenSSH

Untuk semua OS yang didukung (lihat di bawah), ini adalah kasus penggunaan SSH Server default.

Pada prinsipnya, mesin dapat memiliki sejumlah instans server SSH yang berjalan dengan berbagai masa pakai, berdasarkan sejumlah basis kode, dan mengambil konfigurasinya dari sejumlah tempat (file konfigurasi, argumen baris perintah, parameter waktu kompilasi, dll.). Kasus seperti itu berada di luar cakupan untuk Kontrol Postur SSH saat ini. Jika Anda tertarik dengan kasus seperti itu untuk masa depan, silakan hubungi kami untuk mendiskusikan.

Kontrol Postur SSH dimaksudkan untuk digunakan pada komputer Windows Server 2019, 2022, dan 2025 yang didukung oleh Azure Policy dan Konfigurasi Mesin -

Kompatibilitas dengan komputer tertentu pada waktu proses tidak dapat dijamin karena sysadmins dan penyusun gambar bebas untuk menghapus komponen dari OS, membuat sistem file baca-saja, dll.

Kompatibilitas dengan sshd_config Sertakan arahan

Kontrol Postur SSH mencoba mengakomodasi dan menggunakan arahan Include dalam sshd_config, sebagai berikut:

  • Untuk tindakan audit/baca: Mengandalkan -T sshd untuk mencerminkan konfigurasi bersih dari perspektif sshd-- dengan mempertimbangkan Termasuk apa pun.
  • Untuk tindakan konfigurasi/tulis:
    • Tautkan file spesifik Kontrol Postur SSH baru ke sshd_config (sebagai Sertakan). Selanjutnya, tempatkan semua tulisan ke dalam file Kontrol Postur SSH yang ditautkan. Ini meningkatkan kebersihan sistem dan keterlacakan perubahan sistem.

Kompatibilitas dengan direktif sshd_config Match

Kontrol Postur SSH dirancang untuk mengaudit dan mengonfigurasi perilaku sshd inti. Ini tidak mencoba berinteraksi dengan blok bersyarat Match (jika ada) yang dapat menerapkan konfigurasi sshd yang berbeda untuk populasi tertentu.

Kompatibilitas dengan beberapa nilai sshd_config

Kontrol Postur SSH tidak mendukung penggunaan beberapa nilai untuk aturan 'port' yaitu, mengatur aturan 'port' ke 22 dan 33. Aturan ini harus dikonfigurasi dengan satu nilai untuk memastikan fungsionalitas dan kepatuhan yang tepat untuk mengaudit dan mengonfigurasi skenario. Aturan lain seperti izinkan/tolak pengguna dan sandi dapat memiliki beberapa nilai, selama ditambahkan pada satu baris.

Contoh:

  • File sshd_config yang ada mencakup baris "port:22" dan baris lain "port:33".
  • Kebijakan "Audit SSH" digunakan untuk mengaudit nilai port yang diharapkan 33.
  • Hasil: Audit dapat lolos atau gagal tanpa diduga.
  • Rekomendasi: Jangan gunakan fitur ini dengan skenario seperti ini.

Bagaimana cara mengkueri hasil secara terprogram?

Menggunakan kueri Azure Resource Graph (ARG) Anda dapat mengintegrasikan data penetapan dan status ke dalam alur kerja Anda sendiri. Contoh-contoh ini digunakan Search-AzGraph di PowerShell untuk menjalankan kueri ARG, tetapi PowerShell tidak diperlukan. Anda dapat menggunakan ARG dari banyak titik masuk termasuk Portal Microsoft Azure, Azure CLI, panggilan REST, dll.

  1. Pada ketinggian ringkasan tertinggi, Anda bisa mendapatkan jumlah mesin per wadah status kepatuhan. Contohnya:

    $machineCountsQuery = @'
    // SSH machine counts by compliance status
    guestconfigurationresources
    | where name contains "SecureShell"
    | extend complianceStatus = tostring(properties.complianceStatus)
    | summarize machineCount = count() by complianceStatus
    '@
    
    Search-AzGraph -Query $machineCountsQuery
    
    <#
    Sample output from an environment with two machines:
    
    complianceStatus machineCount
    ---------------- ------------
    Pending                     1
    Compliant                   1
    #>
    
  2. Untuk menelusuri-sehingga Anda melihat status kepatuhan keseluruhan menurut komputer, Anda dapat menggunakan yang berikut ini:

    $machinePerRowQuery = @'
    // SSH machine level compliance
    guestconfigurationresources
    | where name contains "SecureShell"
    | project 
     machine = split(properties.targetResourceId,'/')[-1],
     complianceStatus = properties.complianceStatus,
     lastComplianceStatusChecked = properties.lastComplianceStatusChecked
    '@
    
    Search-AzGraph -Query $machinePerRowQuery
    
    <#
    Sample output:
    
    machine     complianceStatus lastComplianceStatusChecked
    -------     ---------------- ---------------------------
    sshdemovm01 Compliant        2/15/2024 11:07:21 PM
    sshdemovm02 Pending          1/1/0001 12:00:00 AM
    #>
    
  3. Untuk menelusuri detail pengaturan demi pengaturan, Anda bisa menggunakan yang berikut ini:

    $settingPerRowQuery = @'
    // SSH rule level detail
    GuestConfigurationResources
    | where name contains "SecureShell"
    | project report = properties.latestAssignmentReport,
     machine = split(properties.targetResourceId,'/')[-1],
     lastComplianceStatusChecked=properties.lastComplianceStatusChecked
    | mv-expand report.resources
    | project machine,
     rule = report_resources.resourceId,
     ruleComplianceStatus = report_resources.complianceStatus,
     ruleComplianceReason = report_resources.reasons[0].phrase,
     lastComplianceStatusChecked
    '@
    
    Search-AzGraph $settingPerRowQuery
    
    <#
    Sample output:
    
    machine     rule                                                  ruleComplianceStatus     ruleComplianceReason
    -------     ---------------                                                  ------               ------
    sshdemovm01 Ensure that the allowed groups for SSH are configured            true            ["administrators","openssh users"] contains the expected values: ["administrators","openssh users"]
    sshdemovm01 Ensure that appropriate ciphers are used for SSH                 true            ["aes128-ctr","aes192-ctr","aes256-ctr"] contains the expected values: ["aes128-ctr","aes192-ctr","aes256-ctr"]
    sshdemovm01 Ensure that the authorized key file for SSH is configured        true            "%programdata%/ssh/administrators_authorized_keys" is equal to "%programdata%/ssh/administrators_authorized_keys"
    sshdemovm01 Ensure that the SSH ClientAliveInterval is configured            true            3600 is equal to 3600
    sshdemovm01 Ensure that the SSH PermitEmptyPasswords is configured           true            false is equal to false
    sshdemovm01 Ensure that the SSH port is configured                           true            22 is equal to 22
    sshdemovm01 Ensure that the SSH MaxAuthTries is configured                   true            6 is equal to 6
    sshdemovm01 Ensure that only approved MAC algorithms are used                true            ["hmac-sha2-256"] contains the expected values: ["hmac-sha2-256"]
    sshdemovm01 Ensure that the SSH HostKey is configured                        true            "__PROGRAMDATA__/ssh/ssh_host_ecdsa_key" is equal to "__PROGRAMDATA__/ssh/ssh_host_ecdsa_key"
    sshdemovm01 Ensure that the SSH LoginGraceTime is configured                 true            60 is equal to 60
    #>
    

Mengapa saya melihat istilah "Konfigurasi Tamu" dan "Automanage" di tempat?

Layanan Konfigurasi Mesin juga telah dikenal sebagai Konfigurasi Tamu dan sebagai Konfigurasi Mesin Automanage. Anda mungkin menemukan nama-nama ini saat berinteraksi dengan layanan dan dokumentasi. Contohnya:

  • Dalam contoh kueri Azure Resource Graph dalam artikel ini, tabel data disebut guestconfigurationresources.
  • Di portal Microsoft Azure, tampilan yang berguna untuk mengamati hasil disebut "Penugasan Tamu".
  • Di portal Microsoft Azure, saat menerapkan ekstensi VM yang relevan untuk mengaktifkan Konfigurasi Mesin, judul ekstensinya adalah "Konfigurasi Mesin Automanage".

Untuk tujuan Kontrol Postur SSH, tidak ada perbedaan yang berarti antara "tamu" dan "mesin". Komputer yang diaktifkan Arc dan Azure VM memenuhi syarat.

Apa pengidentifikasi untuk definisi kebijakan bawaan?

Dalam beberapa kasus, seperti membuat penetapan kebijakan dengan Azure CLI, mungkin berguna atau perlu merujuk ke definisi kebijakan berdasarkan id daripada nama tampilan.

nama tampilan Id
Audit Kontrol Postur SSH pada komputer Windows /providers/Microsoft.Authorization/policyDefinitions/fe4e11ff-f561-4d4a-877c-256cc0b6470e
Mengonfigurasi Kontrol Postur SSH pada komputer Windows /providers/Microsoft.Authorization/policyDefinitions/42830b63-79aa-4ea5-85dc-6baa719d7d7c