Bagikan melalui


Siapkan pengembangan Linux jarak jauh yang aman yang mematuhi FIPS

Dukungan Linux tersedia di Visual Studio 2017 dan yang lebih baru. Pengembangan Linux jarak jauh yang sesuai dengan FIPS tersedia di Visual Studio 2019 versi 16.5 dan yang lebih baru.

Publikasi Federal Information Processing Standard (FIPS) 140-2 adalah standar pemerintah AS untuk modul kriptografi. Implementasi standar divalidasi oleh NIST. Windows telah memvalidasi dukungan untuk modul kriptografi yang mematuhi FIPS. Dalam Visual Studio 2019 versi 16.5 dan yang lebih baru, Anda dapat menggunakan koneksi kriptografi yang aman dan mematuhi FIPS ke sistem Linux Anda untuk pengembangan jarak jauh.

Berikut cara menyiapkan koneksi yang aman dan mematuhi FIPS antara Visual Studio dan sistem Linux jarak jauh Anda. Panduan ini berlaku saat Anda membangun proyek Linux CMake atau MSBuild di Visual Studio. Artikel ini adalah versi instruksi koneksi yang mematuhi FIPS dalam Menghubungkan ke komputer Linux jarak jauh Anda.

Menyiapkan koneksi yang mematuhi FIPS

Beberapa persiapan diperlukan untuk menggunakan koneksi ssh yang mematuhi FIPS dan aman secara kriptografis antara Visual Studio dan sistem Linux jarak jauh Anda. Untuk kepatuhan FIPS-140-2, Visual Studio hanya mendukung kunci RSA.

Contoh dalam artikel ini menggunakan Ubuntu 18.04 LTS dengan server OpenSSH versi 7.6. Namun, instruksinya sama untuk distro apa pun yang menggunakan versi OpenSSH yang cukup baru.

Untuk menyiapkan server SSH pada sistem jarak jauh

  1. Pada sistem Linux, instal dan mulai server OpenSSH:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Jika Anda ingin ssh server dimulai secara otomatis saat sistem melakukan booting, aktifkan menggunakan systemctl:

    sudo systemctl enable ssh
    
  3. Buka /etc/ssh/sshd_config sebagai root. Edit (atau tambahkan, jika tidak ada) baris berikut:

    Ciphers aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc
    HostKeyAlgorithms ssh-rsa
    KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1
    MACs hmac-sha2-256,hmac-sha1
    

    Catatan

    ssh-rsa adalah satu-satunya algoritma kunci host yang mematuhi FIPS yang didukung VS. aes*-ctr Algoritma juga sesuai dengan FIPS, tetapi implementasi di Visual Studio tidak disetujui. ecdh-* Algoritma pertukaran kunci mematuhi FIPS, tetapi Visual Studio tidak mendukungnya.

    Anda tidak dibatasi pada opsi ini. Anda dapat mengonfigurasi ssh untuk menggunakan cipher lain, algoritma kunci host, dan sebagainya. Beberapa opsi keamanan relevan lainnya yang mungkin ingin Anda pertimbangkan adalah PermitRootLogin, ,PasswordAuthentication, dan PermitEmptyPasswords. Untuk informasi selengkapnya, lihat man halaman untuk sshd_config atau artikel Konfigurasi Server SSH.

  4. Setelah menyimpan dan menutup sshd_config, mulai ulang server ssh untuk menerapkan konfigurasi baru:

    sudo service ssh restart
    

Selanjutnya, Anda akan membuat pasangan kunci RSA di komputer Windows Anda. Kemudian Anda akan menyalin kunci publik ke sistem Linux jarak jauh untuk digunakan oleh ssh.

Untuk membuat dan menggunakan file kunci RSA

  1. Pada komputer Windows, buat pasangan kunci RSA publik/privat dengan menggunakan perintah ini:

    ssh-keygen -t rsa -b 4096 -m PEM
    

    Perintah membuat kunci publik dan kunci privat. Secara default, kunci disimpan ke %USERPROFILE%\.ssh\id_rsa dan %USERPROFILE%\\.ssh\\id_rsa.pub. (Di PowerShell, gunakan $env:USERPROFILE alih-alih makro %USERPROFILE%cmd ) Jika Anda mengubah nama kunci, gunakan nama yang diubah dalam langkah-langkah berikut. Sebaiknya gunakan frasa sandi untuk meningkatkan keamanan.

  2. Dari Windows, salin kunci publik ke komputer Linux:

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. Pada sistem Linux, tambahkan kunci ke daftar kunci yang diotorisasi, dan pastikan file memiliki izin yang benar:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. Sekarang, Anda dapat menguji untuk melihat apakah kunci baru berfungsi di ssh. Gunakan untuk masuk dari Windows:

    ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
    

Anda berhasil menyiapkan ssh, membuat dan menyebarkan kunci enkripsi, dan menguji koneksi Anda. Sekarang Anda siap untuk menyiapkan koneksi Visual Studio.

Sambungkan ke sistem jarak jauh di Visual Studio

  1. Di Visual Studio, pilih Alat > Opsi pada bilah menu untuk membuka dialog Opsi. Kemudian, pilih Lintas Platform > Pengelola Koneksi untuk membuka dialog Pengelola Koneksi.

    Jika Anda belum pernah menyiapkan koneksi di Visual Studio, saat Anda membangun proyek untuk pertama kalinya, Visual Studio akan membuka dialog Pengelola Koneksi untuk Anda.

  2. Dalam dialog Pengelola Koneksi, pilih tombol Tambahkan untuk menambahkan koneksi baru.

    Cuplikan layar memperlihatkan panel opsi dalam dialog Pengelola Sambungan. Cross Platform > C plus plus > Pengelola Sambungan disorot.

    Jendela Sambungkan ke Sistem Jarak Jauh ditampilkan.

    Cuplikan layar memperlihatkan jendela Sambungkan ke Sistem Jarak Jauh, yang memiliki kotak teks untuk nama host, port, nama pengguna, jenis autentikasi, dan kata sandi.

  3. Dalam dialog Sambungkan ke Sistem Jarak Jauh, masukkan detail koneksi komputer jarak jauh Anda.

    Entri Deskripsi
    Nama Host Nama atau alamat IP perangkat target Anda
    Port Port tempat layanan SSH berjalan, biasanya 22
    Nama pengguna Pengguna untuk diautentikasi sebagai
    Jenis autentikasi Pilih Kunci Privat untuk koneksi yang mematuhi FIPS
    File kunci privat File kunci privat yang dibuat untuk koneksi ssh
    Frasa sandi Frasa sandi yang digunakan dengan kunci privat yang dipilih di atas

    Ubah tipe autentikasi menjadi Kunci Privat. Masukkan jalur ke kunci privat Anda di bidang File kunci privat. Anda dapat menggunakan tombol Telusuri untuk menavigasi ke file kunci privat Anda sebagai gantinya. Kemudian, masukkan frasa sandi yang digunakan untuk mengenkripsi file kunci privat Anda di bidang Frasa Sandi.

  4. Pilih tombol Sambungkan untuk mencoba koneksi ke komputer jarak jauh.

    Jika koneksi berhasil, Visual Studio akan mengonfigurasi IntelliSense untuk menggunakan header jarak jauh. Untuk informasi selengkapnya, lihat IntelliSense untuk header pada sistem jarak jauh.

    Jika koneksi gagal, kotak entry yang perlu diubah akan diberi garis merah.

    Cuplikan layar jendela Sambungkan ke Sistem Jarak Jauh yang memiliki nama host dan kotak teks port yang diuraikan dengan warna merah untuk menunjukkan bahwa kotak teks tersebut perlu diubah.

    Untuk informasi selengkapnya tentang pemecahan masalah koneksi Anda, lihat Sambungkan ke komputer Linux jarak jauh Anda.

Utilitas baris perintah untuk Pengelola Koneksi

Visual Studio 2019 versi 16.5 atau yang lebih baru: ConnectionManager.exe adalah utilitas baris perintah untuk mengelola koneksi pengembangan jarak jauh di luar Visual Studio. Hal ini berguna untuk tugas seperti penyediaan komputer pengembangan baru. Atau, Anda dapat menggunakannya untuk menyiapkan integrasi berkelanjutan Visual Studio. Untuk contoh dan referensi lengkap tentang perintah ConnectionManager, lihat Referensi ConnectionManager.

Opsional: Mengaktifkan atau menonaktifkan mode FIPS

Dimungkinkan untuk mengaktifkan mode FIPS secara global di Windows.

  1. Untuk mengaktifkan mode FIPS, tekan Windows+R untuk membuka dialog Jalankan , lalu jalankan gpedit.msc.

  2. Perluas Kebijakan Komputer Lokal > Konfigurasi Komputer > Pengaturan Windows > Pengaturan Keamanan > Kebijakan Lokal dan pilih Opsi Keamanan.

  3. Di bawah Kebijakan, pilih Kriptografi sistem: Gunakan algoritme yang mematuhi FIPS untuk enkripsi, hashing, dan penandatanganan, lalu tekan Enter untuk membuka kotak dialognya.

  4. Di tab Pengaturan Keamanan Lokal, pilih Diaktifkan atau Dinonaktifkan, lalu pilih Ok untuk menyimpan perubahan Anda.

Peringatan

Mengaktifkan mode FIPS dapat menyebabkan beberapa aplikasi rusak atau berperilaku tidak terduga. Untuk informasi selengkapnya, lihat posting blog Mengapa Kami Tidak Merekomendasikan "mode FIPS" Lagi.

Sumber Daya Tambahan:

Dokumentasi Microsoft tentang validasi FIPS 140

FIPS 140-2: Persyaratan Keamanan untuk Modul Kriptografi (dari NIST)

Program Validasi Algoritma Kriptografi: Catatan Validasi (dari NIST)

Posting blog Microsoft tentang Mengapa Kami Tidak Merekomendasikan "mode FIPS" Lagi

Konfigurasi Server SSH

Lihat juga

Mengonfigurasi proyek Linux
Mengonfigurasi proyek CMake Linux
Menyambungkan ke komputer Linux jarak jauh Anda
Menyebarkan, menjalankan, dan men-debug proyek Linux Anda
Mengonfigurasi sesi penelusuran kesalahan CMake