Mengonfigurasi bastion host

Halaman ini menjelaskan cara mengonfigurasi host bastion di deployment yang terhubung ke Google Distributed Cloud Anda untuk memungkinkan engineer Google mengakses dan memecahkan masalah node di zona yang terhubung ke Distributed Cloud Anda melalui Secure Shell (SSH).

Google menyediakan kode sumber lengkap yang dapat Anda gunakan untuk membangun virtual machine host bastion yang disesuaikan berdasarkan persyaratan bisnis Anda.

Prasyarat

Bagian ini mencantumkan prasyarat untuk men-deploy solusi host bastion yang terhubung Distributed Cloud.

Aktifkan Persetujuan Akses

Fitur host bastion menggunakan fitur Persetujuan Akses dari Transparansi Akses untuk memungkinkan Google meminta akses ke data Anda. Anda harus mengaktifkan Transparansi Akses dan Access Approval di project Anda sebelum men-deploy virtual machine host bastion. Google Cloud Untuk mengetahui informasi selengkapnya, lihat halaman berikut:

Spesifikasi virtual machine

Solusi host bastion yang terhubung dengan Distributed Cloud memerlukan deployment OpenStack berukuran small yang setara dengan spesifikasi berikut:

  • CPU: 1 vCPU
  • RAM: 2 GB
  • Disk: 20GB

Google merekomendasikan deployment virtual machine bastion host N+1 per Google Cloud region untuk meningkatkan keandalan.

Persyaratan jaringan

Solusi host bastion yang terhubung ke Distributed Cloud mengharuskan Anda mengonfigurasi sesi peering jaringan berikut untuk setiap mesin virtual host bastion:

  • Arah utara. Menghubungkan virtual machine bastion host ke Internet. Memerlukan akses Internet dan harus mengizinkan koneksi di port 22 dari alamat IP tertentu yang disediakan Google sebagai bagian dari paket kode sumber dan image disk solusi host bastion.
  • Menuju selatan. Menghubungkan virtual machine bastion host melalui port 22 ke zona yang terhubung Distributed Cloud yang sesuai di satu region Google Cloud .
  • Pengelolaan. Menghubungkan mesin virtual bastion host ke jaringan lokal Anda untuk tujuan operasi dan pemeliharaan. Konfigurasi sesi peering ini sesuai dengan kebijakan keamanan organisasi Anda.

Praktik keamanan terbaik

Google sangat merekomendasikan agar Anda mengikuti praktik terbaik keamanan yang dijelaskan di bagian ini saat mengonfigurasi solusi host bastion pada deployment yang terhubung dengan Distributed Cloud selain kebijakan keamanan organisasi Anda:

  • Ikuti aturan hak istimewa terendah dan pertahankan pemisahan tugas yang jelas untuk pengguna.
  • Untuk semua akun pengguna selain Administrator, gunakan hanya autentikasi berbasis sertifikat; nonaktifkan autentikasi berbasis sandi dan akses root ke virtual machine bastion host.
  • Menolak akses dari semua IP pada sesi peering northbound yang bukan bagian dari daftar alamat IP dukungan yang disediakan Google.
  • Tutup semua port pada sesi peering southbound kecuali port 22 (SSH) dan izinkan hanya untuk alamat IP dalam daftar alamat IP dukungan yang disediakan Google.
  • Selalu perbarui semua virtual machine host bastion. Google menyediakan paket kode sumber baru dengan setiap patch keamanan dan update versi.
  • Konfigurasi solusi pemberitahuan dan audit yang memenuhi kebijakan keamanan organisasi Anda.

Mengaktifkan dukungan bastion host

Untuk mengaktifkan dukungan bastion host pada deployment Distributed Cloud yang terhubung, kirim permintaan.

Anda harus mengaktifkan dan mengonfigurasi dukungan host bastion satu per satu untuk setiap zona yang terhubung ke Distributed Cloud. Hal ini memungkinkan Anda men-deploy konfigurasi akses dan jaringan yang berbeda-beda yang paling sesuai dengan kebutuhan bisnis organisasi Anda untuk setiap zona yang terhubung ke Distributed Cloud.

Mendapatkan software bastion host

Paket software host bastion dikirimkan kepada Anda setelah Dukungan Google mengaktifkan fitur host bastion untuk deployment Google Distributed Cloud terhubung Anda. Paket berisi hal berikut:

  • Kode sumber. Anda dapat menyesuaikan dan membuat image virtual machine host bastion sendiri berdasarkan persyaratan bisnis Anda.
  • Dokumentasi. Dokumentasi tambahan untuk tugas seperti mengonfigurasi sertifikat.

Membangun image virtual machine bastion host

Bagian ini memberikan ringkasan langkah-langkah yang diperlukan untuk membuat image mesin virtual host bastion dari kode sumber yang disediakan oleh Google. Petunjuk lengkap diberikan dalam file README yang disertakan dengan kode sumber.

Prasyarat

Anda memerlukan item berikut untuk membuat image virtual machine bastion host:

  • Mesin yang menjalankan Debian 11.
  • Image server cloud Debian terbaru.
  • Software qemu-img, qemu-system-x86_x64, dan GNU mtools yang diinstal di perangkat.
  • File bernama host-user-key.pub yang berisi kunci SSH publik untuk login ke instance host bastion dan memulai sesi host-user. Kunci ini dapat digunakan untuk autentikasi langsung atau sebagai kunci penandatanganan certificate authority. Instance bastion host harus memercayai CA ini.
  • File bernama admin-user-key.pub yang berisi kunci SSH publik untuk melakukan tugas administratif di instance host bastion target. Kunci ini dapat digunakan untuk autentikasi langsung atau sebagai kunci penandatanganan certificate authority. Instance bastion host harus memercayai CA ini.
  • File bernama guest-user-key.pub yang berisi kunci penandatanganan certificate authority SSH publik yang disediakan oleh Google yang memungkinkan Dukungan Google melakukan autentikasi sebagai guest-user saat terhubung ke instance host bastion.

Bangun image mesin virtual

Ikuti petunjuk yang diberikan dalam file README yang disertakan dengan kode sumber untuk mem-build image virtual machine bastion host dari kode sumber yang disediakan oleh Google. Contoh dalam panduan ini merujuk pada file gambar yang dihasilkan sebagai bastion-host.img.

Membangun paket HIBA

Bangun paket penginstalan Debian untuk lapisan software autentikasi Host Identity-Based Authorization for SSH (HIBA) sebagai berikut:

  1. Instal dependensi yang diperlukan menggunakan perintah berikut:

    sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
  2. Bangun paket penginstalan menggunakan perintah berikut:

    ./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir

Paket penginstalan disimpan di direktori /tmp/hiba-build-workdir dan diberi nama hiba_x.y-z_amd64.deb, dengan x, y, dan z menunjukkan nomor versi HIBA.

Buat konfigurasi cloud-init

Gunakan skrip generate-cloud-init.py untuk membuat konfigurasi cloud-init yang diperlukan. Anda juga dapat membuat konfigurasi ini menggunakan alat Anda sendiri. Konfigurasi ini melakukan hal berikut:

  • Buat akun pengguna yang diperlukan dalam image virtual machine bastion host dan konfigurasi akun tersebut dengan kunci SSH yang dijelaskan sebelumnya.
  • Tambahkan skrip yang membatasi hak istimewa akun guest-user hanya untuk bergabung ke sesi multiplexer terminal yang sudah dibuat.
  • Tambahkan skrip yang membuat dan mengelola sesi multiplexer terminal.
  • Siapkan file konfigurasi HIBA.

Skrip generate-cloud-init.py memerlukan paket HIBA yang Anda buat sebelumnya, dan tiga file yang berisi kunci SSH yang diperlukan. Jalankan skrip sebagai berikut:

./generate-cloud-init.py \
    --hiba-package="${WORK_DIR}/hiba_1.0-1_amd64.deb" \
    --host-user-key="HOST_USER_KEY_FILE" \
    --manager-user-key="ADMIN_USER_KEY_FILE" \
    --guest-user-ca="GUEST_USER_KEY_FILE" \
    "${WORK_DIR}/cloud-init/"

Ganti kode berikut:

  • HOST_USER_KEY_FILE: jalur dan nama lengkap file host-user-key.pub.
  • ADMIN_USER_KEY_FILE: jalur dan nama lengkap file admin-user-key.pub.
  • GUEST_USER_KEY_FILE: jalur dan nama lengkap file guest-user-key.pub.

Skrip akan menempatkan file cloud-init.img ke direktori cloud-init di dalam direktori kerja lokal Anda.

Terapkan konfigurasi cloud-init ke image virtual machine bastion host

Gunakan alat qemu-system-x86_64 untuk menerapkan konfigurasi cloud-init yang Anda buat sebelumnya ke file image virtual machine bastion host Anda sebagai berikut:

qemu-system-x86_64 \
      -nographic \
      -enable-kvm \
      -smp 1 \
      -m 1g \
      -drive format=qcow2,index=0,file=${WORK_DIR}/bastion-host.img \
      -drive format=raw,index=1,file=${WORK_DIR}/cloud-init/cloud-init.img \
      -nic user,hostfwd=tcp::10022-:22

Jika perintah ini menampilkan error, Anda mungkin perlu mengubah ukuran disk di image mesin virtual host bastion.

Anda dapat memverifikasi bahwa konfigurasi telah berhasil diterapkan setelah Anda mem-booting virtual machine. Anda akan melihat output yang mirip dengan berikut ini di log auditd:

[   52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.

Anda juga dapat memeriksa akun pengguna dan konfigurasi sshd secara manual untuk memverifikasinya.

Mengimpor image virtual machine bastion host

Sebelum mengimpor image virtual machine bastion host yang telah dikonfigurasi sepenuhnya ke infrastruktur deployment, Anda harus membuat snapshot-nya menggunakan alat qemu-img sebagai berikut:

qemu-img snapshot -c installed bastion-image.img

Ikuti proses yang ditetapkan oleh organisasi Anda untuk mengimpor image mesin virtual host bastion ke infrastruktur deployment Anda.

Mengonfigurasi virtual machine bastion host

Ikuti langkah-langkah di bagian ini untuk mengonfigurasi virtual machine host bastion.

Mengonfigurasi akun pengguna yang diperlukan

Fitur host bastion Distributed Cloud yang terhubung memerlukan satu atau beberapa akun pengguna dalam setiap kategori berikut:

  • Pengelolaan. Ini adalah akun administrator untuk virtual machine bastion host. Perangkat memiliki akses root.
  • Pengguna host. Ini adalah akun engineer operasi. Dapat memulai dan mengelola sesi multiplexer terminal untuk Dukungan Google, tetapi tidak dapat memasukkan perintah apa pun ke dalam sesi tersebut.
  • Pengguna tamu. Ini adalah akun engineer Dukungan Google. Hal ini dapat membuat koneksi SSH dalam sesi multiplexer terminal yang dibagikan dengan engineer operasi Anda di mesin virtual bastion host. Pengguna ini tidak memiliki hak istimewa lainnya.
  • Pengguna gabungan. Akun ini membuat sesi multiplexer terminal di mesin virtual host bastion. Engineer operasi Anda dan engineer dukungan Google akan terhubung bersama ke sesi ini.

Mengonfigurasi sertifikat

Anda harus mengonfigurasi sertifikat yang memungkinkan akun yang dijelaskan di bagian sebelumnya mengakses virtual machine host bastion. Paket software bastion host mencakup skrip bernama generate-cloud-init.py yang menghasilkan konfigurasi cloud-init yang diperlukan dengan akun, kunci SSH, dan sertifikat yang diperlukan untuk setiap akun.

Untuk mengetahui petunjuknya, lihat Membuat konfigurasi cloud-init.

Mengonfigurasi logging

Log host bastion tersedia secara real-time dan sesuai permintaan dari daemon audit. Anda dapat mengelola konfigurasi logging melalui file auditd.conf. Anda bertanggung jawab untuk merotasi dan mengekspor log dari virtual machine bastion host berdasarkan persyaratan bisnis Anda. Anda juga harus menyediakan ruang disk yang cukup untuk menyimpannya di virtual machine.

Menguji konfigurasi Anda

Selesaikan langkah-langkah di bagian ini untuk menguji deployment virtual machine bastion host Anda, termasuk konektivitas dari kedua ujung, dan kontrol akses yang tepat untuk akun pengguna yang diperlukan. Sebaiknya Anda bekerja sama dengan Dukungan Google untuk melakukan pengujian langsung.

Menguji deployment Anda secara lokal

  1. Pastikan Anda dapat membuat sesi SSH sebagai host-user dengan virtual machine bastion host Anda. Jika gagal, periksa kunci dan sertifikat SSH Anda.

  2. Pastikan Anda dapat memulai sesi multiplexer terminal menggunakan perintah berikut:

    ./opt/create-shared-tmux-session
  3. Pastikan deployment yang terhubung ke Distributed Cloud dapat dijangkau dari mesin virtual bastion host menggunakan perintah berikut:

    ssh -vv bastion-user@TARGET_ADDRESS

    Ganti TARGET_ADDRESS dengan alamat IP target Distributed Cloud atau switch ToR.

    Permintaan akan ditolak oleh autentikasi SSH, tetapi permintaan autentikasi dan transport SSH harus tetap mencapai deployment yang terhubung ke Distributed Cloud Anda. Jika hal ini gagal, periksa konfigurasi firewall Anda.

  4. Pastikan Transparansi Akses dan Access Approval telah diaktifkan di organisasi dan project target Anda seperti yang dijelaskan sebelumnya dalam panduan ini. Google Cloud

Menguji deployment Anda secara langsung dengan Dukungan Google

Setelah Anda berhasil menguji deployment host bastion secara lokal, hubungi Dukungan Google untuk menjadwalkan sesi pengujian langsung. Sebelum sesi dimulai, Dukungan Google akan mengirimkan permintaan Persetujuan Akses kepada Anda. Selama sesi pengujian langsung, Anda dan Google akan membahas hal berikut:

  • Pembuatan dan persetujuan permintaan Persetujuan Akses.
  • Alur kerja akses menyeluruh untuk deployment host bastion Anda.
  • Log Persetujuan Akses dan Transparansi Akses.
  • Cara memecahkan masalah skenario berikut:
    • Google mencoba terhubung ke instance bastion host yang tidak ditentukan dalam permintaan Persetujuan Akses.
    • Google mencoba terhubung ke instance bastion host saat Anda belum memulai sesi multiplexer terminal.
    • Google mencoba terhubung ke instance host bastion setelah permintaan Persetujuan Akses yang sesuai ditolak atau dibatalkan.
    • Anda memutuskan koneksi dari atau mengakhiri sesi multiplexer terminal.

Langkah berikutnya