Praktik terbaik untuk mengontrol akses jaringan SSH


Dokumen ini menjelaskan praktik terbaik untuk mengontrol akses jaringan SSH ke instance virtual machine (VM) Linux.

Untuk terhubung ke instance VM menggunakan SSH, pengguna memerlukan akses jaringan ke instance VM dan kredensial SSH yang valid. Secara default, Compute Engine menggunakan aturan firewall yang tidak membatasi akses jaringan SSH, tetapi mengizinkan siapa saja di internet untuk terhubung ke port 22 instance VM. Meskipun memudahkan developer untuk memulai dengan cepat tanpa mempertimbangkan kontrol jaringan atau keamanan, mengizinkan pengguna terhubung dari perangkat, jaringan, dan lokasi apa pun akan menimbulkan risiko:

  • Pengguna mungkin terhubung dari perangkat atau jaringan yang tidak tepercaya.
  • Pelaku kejahatan mungkin meluncurkan serangan brute force dan mencoba menyusupi instance VM Anda.
  • Pelaku kejahatan yang memiliki akses ke kredensial SSH yang bocor atau tidak dicabut tepat waktu dapat menggunakan kredensial tersebut untuk mengakses dan login ke VM dari jaringan mana pun.

Bagian berikut menjelaskan cara mengurangi risiko dengan membatasi jaringan, lokasi, atau perangkat tempat pengguna dapat membuat koneksi SSH ke VM Anda:

Dokumen ini berfokus pada praktik yang spesifik untuk Google Cloud atau yang sangat relevan saat menggunakan SSH di Google Cloud. Dokumen ini tidak mencakup praktik terbaik untuk implementasi server atau klien SSH tertentu.

Mengurangi eksposur jaringan

Mengizinkan pengguna membuat koneksi SSH dari mana saja berarti Anda sepenuhnya bergantung pada mekanisme autentikasi dan otorisasi SSH untuk melindungi VM. Anda dapat mengurangi risiko dan membuat lapisan perlindungan tambahan dengan mengurangi eksposur jaringan VM.

Ada beberapa pendekatan untuk mengurangi eksposur jaringan VM Anda. Untuk mengidentifikasi pendekatan yang paling sesuai dengan lingkungan Anda, Anda harus mempertimbangkan sejumlah faktor seperti yang diilustrasikan oleh diagram alir berikut:

Mengurangi eksposur jaringan

  • Akses eksternal: Faktor pertama yang perlu dipertimbangkan adalah apakah VM hanya perlu diakses dalam jaringan VPC, atau apakah Anda memerlukan VM untuk diakses secara eksternal juga.

    Jika akses internal VPC sudah memadai, Anda tidak perlu menetapkan alamat IP eksternal ke VM, tetapi Anda tetap harus memutuskan cara mengelola akses.

  • Ukuran jaringan internal: Jika akses internal VPC sudah memadai, faktor kedua yang perlu dipertimbangkan adalah ukuran jaringan internal Anda.

    Di jaringan yang lebih kecil, Anda mungkin cukup menggunakan aturan firewall yang mengizinkan traffic masuk ke port 22 dari alamat internal untuk membantu melindungi VM Anda. Dalam jaringan yang lebih besar, mengandalkan aturan firewall saja mungkin terlalu membatasi: Dalam kasus tersebut, Anda dapat memanfaatkan Penerusan TCP Identity-Aware Proxy untuk menerapkan akses berbasis konteks ke VM.

  • Desain perimeter Kontrol Layanan VPC: Faktor berikutnya yang perlu dipertimbangkan adalah apakah instance VM merupakan bagian dari perimeter Kontrol Layanan VPC.

    Jika VM adalah bagian dari perimeter layanan, setiap akses API yang berasal dari VM dianggap berasal dari dalam perimeter. Jika Anda memberi pengguna yang berada di luar perimeter akses SSH ke VM di dalam perimeter, mereka berpotensi menyalin data dari perimeter ke workstation lokal mereka, atau sebaliknya – hal ini dapat membahayakan kerahasiaan dan integritas data perimeter Anda.

    Setiap kali Anda perlu memberikan akses SSH ke instance VM yang merupakan bagian dari perimeter Kontrol Layanan VPC, gunakan Penerusan TCP IAP. IAP mendeteksi apakah workstation pengguna merupakan bagian dari perimeter Kontrol Layanan VPC yang sama dan memblokir upaya akses dari luar perimeter layanan secara default. Untuk mengizinkan akses eksternal, gunakan aturan masuk dan konfigurasikan aturan tersebut untuk menerapkan akses kontekstual.

  • Pengelolaan perangkat klien: Faktor terakhir yang perlu dipertimbangkan adalah cara pengelolaan perangkat klien, karena hal ini menentukan cara Anda dapat mengontrol akses kontekstual.

    Akses kontekstual paling efektif jika Access Context Manager memiliki akses ke kumpulan sinyal yang beragam tentang pengguna, perangkat, dan lokasi mereka, sehingga berfungsi bersama dengan Chrome Enterprise Premium: Jika Anda menggunakan Chrome Enterprise Premium untuk mengelola perangkat, Anda dapat menyiapkan tingkat akses yang mengontrol akses berdasarkan postur perangkat. Kemudian, Anda dapat menerapkan tingkat akses ini ke akses SSH menggunakan penerusan TCP IAP yang dikombinasikan dengan binding akses atau kondisi IAM.

    Jika tidak mengontrol konfigurasi perangkat klien, Anda harus menganggapnya tidak dikelola dan berpotensi tidak tepercaya.

    Untuk mengizinkan akses dari perangkat yang tidak dikelola, Anda juga dapat menggunakan penerusan TCP IAP, tetapi Anda hanya dapat mengelola akses berdasarkan identitas pengguna dan alamat IP perangkat. Karena Access Context Manager tidak memiliki akses ke sinyal perangkat apa pun, Anda tidak akan dapat membatasi akses berdasarkan postur perangkat.

Berdasarkan faktor-faktor tersebut dan dengan menggunakan diagram alir, Anda dapat mengidentifikasi pendekatan mana untuk mengurangi eksposur jaringan yang paling sesuai dengan lingkungan Anda. Bagian berikut akan menjelaskan pendekatan ini secara lebih mendetail.

Akses SSH berbasis IAP

Ide pendekatan ini adalah hanya mengizinkan akses SSH melalui penerusan TCP IAP, dan untuk memungkinkan IAP mengontrol akses berdasarkan identitas pengguna.

Kami merekomendasikan pendekatan ini untuk instance VM yang memenuhi hal berikut:

  • Instance VM harus dapat diakses secara eksternal atau dari jaringan internal yang besar.
  • VM bukan bagian dari perimeter Kontrol Layanan VPC.

Secara default, instance VM dengan alamat IP eksternal mengizinkan akses SSH karena firewall default mengizinkan koneksi dari internet publik ke port 22, tetapi ini bukan pendekatan yang direkomendasikan. Pendekatan ini dapat secara signifikan meningkatkan risiko VM menjadi sasaran serangan seperti berikut:

  • Penggunaan kredensial yang tidak dicabut: Mantan karyawan yang aksesnya belum dicabut sepenuhnya dapat terus mengakses VM.
  • Penyalahgunaan kredensial yang valid: Pelaku tidak bertanggung jawab yang memiliki kredensial yang dicuri atau bocor mungkin menggunakannya untuk login.
  • Denial of service: Pihak tidak bertanggung jawab mungkin mencoba menghabiskan resource VM dengan membanjirinya dengan permintaan.

Cara yang lebih aman untuk mengaktifkan akses SSH eksternal ke instance VM adalah dengan menggunakan penerusan TCP IAP. Serupa dengan host bastion atau proxy terbalik, pengalihan TCP IAP bertindak sebagai perantara antara perangkat klien dan VM.

Penerusan TCP IAP melakukan empat fungsi berikut saat pengguna mencoba membuat koneksi SSH:

  • Autentikasi: IAP memverifikasi bahwa pengguna memiliki kredensial Google yang valid.
  • Otorisasi: IAP memeriksa kebijakan IAM untuk memverifikasi bahwa pengguna telah diberi izin untuk terhubung ke VM melalui IAP.
  • Akses kontekstual: Secara opsional, IAP dapat memverifikasi bahwa pengguna, perangkat, dan lokasinya memenuhi tingkat akses tertentu.
  • Audit: Jika log akses data diaktifkan, IAP akan mencatat setiap upaya yang berhasil dan gagal untuk terhubung ke instance VM.

Dengan bertindak sebagai perantara dan menjalankan fungsi ini, IAP menghilangkan kebutuhan untuk menetapkan alamat IP eksternal ke VM dan memberikan lapisan keamanan tambahan.

Akses SSH kontekstual berbasis IAP

Ide pendekatan ini adalah hanya mengizinkan akses SSH melalui penerusan TCP IAP, dan mengizinkan IAP mengontrol akses berdasarkan identitas pengguna dan faktor tambahan.

Kami merekomendasikan pendekatan ini untuk instance VM yang memenuhi hal berikut:

  • Instance VM harus dapat diakses dari luar VPC dan jaringan yang terhubung ke VPC.
  • VM bukan bagian dari perimeter Kontrol Layanan VPC.
  • VM hanya perlu dapat diakses dari perangkat, jaringan, atau lokasi tertentu.

Jika Anda memberi pengguna akses SSH ke instance VM – baik secara langsung maupun melalui IAP – secara default, mereka dapat mengakses instance VM dari perangkat, jaringan, dan lokasi apa pun. Meskipun praktis bagi pengguna, tingkat akses ini meningkatkan risiko karena pengguna mungkin terhubung dari perangkat yang disusupi atau jaringan yang tidak tepercaya.

Untuk mengurangi risiko, konfigurasikan penerusan TCP IAP sehingga pengguna hanya dapat mengakses instance VM dari perangkat atau lokasi tertentu. Anda dapat mengonfigurasi akses kontekstual tersebut dengan dua cara:

  • Binding akses: Anda dapat membuat tingkat akses dan menetapkannya ke grup menggunakan binding akses. Binding akses adalah kebijakan berbasis formulir atau identitas dan berlaku untuk semua resource yang dicoba diakses pengguna – termasuk IAP, tetapi juga API lain dan konsol Google Cloud.

    Menggunakan binding akses paling efektif jika Anda ingin memastikan bahwa akses kontekstual diterapkan secara seragam di seluruh resource.

  • Kondisi IAM: Anda dapat membuat tingkat akses dan menetapkannya ke setiap binding peran IAM menggunakan kondisi IAM.

    Menggunakan binding peran IAM adalah bentuk kebijakan berbasis resource dan pendekatan ini paling efektif jika Anda ingin menerapkan kebijakan yang berbeda ke kumpulan VM yang berbeda.

Tingkat akses dasar memungkinkan Anda membatasi akses menurut jaringan atau geolokasi. Sebagai pelanggan Chrome Enterprise Premium, Anda juga dapat membatasi akses berdasarkan atribut lain seperti kekuatan kredensial, konfigurasi browser yang digunakan untuk autentikasi, atau postur perangkat.

Akses SSH berbasis Kontrol Layanan VPC

Ide pendekatan ini adalah hanya mengizinkan akses SSH melalui penerusan TCP IAP, dan mengonfigurasi perimeter layanan untuk mengizinkan masuk IAP untuk identitas tertentu dari sumber kami.

Sebaiknya gunakan pendekatan ini untuk instance VM yang merupakan bagian dari perimeter Kontrol Layanan VPC.

Memberi pengguna akses SSH eksternal ke VM yang merupakan bagian dari perimeter layanan dapat berisiko karena dapat memungkinkan pengguna merusak perimeter Kontrol Layanan VPC Anda dengan mengeksfiltrasi data melalui SSH.

Dengan hanya mengizinkan akses SSH melalui penerusan TCP IAP, Anda dapat mengurangi risiko ini dan memastikan bahwa semua akses SSH tunduk pada konfigurasi perimeter Kontrol Layanan VPC Anda:

  • Jika pengguna mencoba terhubung dari luar perimeter layanan (seperti yang diilustrasikan dalam contoh sebelumnya), penerusan TCP IAP tidak hanya memeriksa apakah pengguna diberi akses IAM ke VM, tetapi juga memeriksa apakah permintaan memenuhi salah satu aturan masuk perimeter.
  • Jika pengguna mencoba terhubung dari dalam perimeter layanan, penerusan TCP IAP juga akan memeriksa apakah pengguna diberi akses IAM ke VM, tetapi mengabaikan aturan masuk Kontrol Layanan VPC.

    IAP menganggap koneksi berasal dari dalam perimeter layanan jika salah satu hal berikut berlaku:

    • IP sumber adalah alamat IP eksternal VM yang merupakan bagian dari perimeter layanan.
    • Koneksi dibuat melalui Akses Google Pribadi dari VM yang merupakan bagian dari perimeter layanan.
    • Koneksi dibuat melalui endpoint akses Private Service Connect yang merupakan bagian dari perimeter layanan.

Akses SSH internal yang dikontrol firewall

Ide pendekatan ini adalah untuk melarang semua akses eksternal dan hanya mengizinkan akses SSH internal VPC.

Anda dapat menggunakan pendekatan ini untuk instance VM yang memenuhi hal berikut:

  • Instance VM tidak perlu dapat diakses secara eksternal.
  • VM terhubung ke jaringan internal berukuran kecil hingga sedang.
  • VM bukan bagian dari perimeter Kontrol Layanan VPC.

Untuk melarang semua akses eksternal, Anda dapat melakukan salah satu tindakan berikut:

  • Deploy instance VM tanpa alamat IP eksternal.
  • Konfigurasikan aturan firewall sehingga traffic SSH masuk dari rentang IP di luar VPC tidak diizinkan.

Menonaktifkan akses konsol serial

Untuk memecahkan masalah instance VM yang tidak berfungsi, Compute Engine memungkinkan Anda terhubung ke konsol port serial instance melalui gateway SSH, ssh-serialport.googleapis.com. Gateway ini dapat diakses secara publik melalui internet.

Gateway SSH mengakses VM melalui hypervisor yang mendasarinya, bukan jaringan VPC. Oleh karena itu, akses ke konsol serial dikontrol oleh kebijakan IAM, bukan oleh aturan firewall.

Mengizinkan pengguna mengakses konsol serial VM dapat menyebabkan VM terekspos secara tidak sengaja. Untuk mencegah eksposur berlebih ini, gunakan batasan kebijakan organisasi compute.disableSerialPortAccess untuk menonaktifkan akses konsol serial, dan hapus batasan untuk sementara saat Anda memerlukan akses darurat ke port serial VM.

Menggunakan VM bastion jika Anda memerlukan perekaman sesi

Dengan bertindak sebagai perantara antara perangkat klien dan VM, penerusan TCP IAP akan menjalankan fungsi yang biasanya dilakukan oleh host bastion atau server jump. Fungsi ini mencakup:

  • Menerapkan kebijakan akses secara terpusat
  • Mengaudit akses

Tidak seperti beberapa bastion host, penerusan TCP IAP tidak menghentikan koneksi SSH: Saat Anda membuat koneksi SSH ke VM melalui penerusan TCP IAP, koneksi SSH dienkripsi end-to-end antara klien dan VM. Akibat enkripsi menyeluruh ini, penerusan TCP IAP tidak dapat memeriksa konten sesi SSH, dan tidak menyediakan kemampuan perekaman sesi. Log audit IAP berisi metadata koneksi, tetapi tidak mengungkapkan informasi apa pun tentang konten sesi.

Jika Anda memerlukan perekaman sesi, gunakan VM bastion:

  • Konfigurasikan VM bastion agar menghentikan koneksi SSH dan mencatat kontennya. Pastikan untuk membatasi penggunaan penerusan port SSH karena dapat mengurangi efektivitas perekaman sesi.
  • Siapkan aturan firewall VM target sehingga koneksi SSH hanya diizinkan dari VM bastion.
  • Mengizinkan akses ke VM bastion hanya melalui penerusan TCP IAP

Menggunakan kebijakan firewall untuk membatasi eksposur SSH

Setelah menentukan cara membatasi eksposur SSH yang paling cocok untuk lingkungan Anda, Anda harus memastikan bahwa semua VM dan project dikonfigurasi dengan benar. Secara khusus, Anda harus memastikan bahwa semua project menggunakan kumpulan aturan firewall yang konsisten yang menentukan cara penggunaan SSH.

Untuk menerapkan serangkaian aturan firewall di beberapa project, gunakan kebijakan firewall hierarkis dan terapkan ke folder dalam hierarki resource Anda.

Misalnya, untuk membantu memastikan bahwa semua akses SSH dilakukan melalui pengalihan TCP IAP, terapkan kebijakan firewall yang menyertakan dua aturan kustom berikut (dalam urutan prioritas):

  1. Izinkan traffic masuk dari 35.235.240.0/20 ke port 22 VM yang dipilih. 35.235.240.0/20 adalah rentang IP yang digunakan oleh penerusan TCP IAP.
  2. Menolak traffic masuk dari 0.0.0.0/0 ke port 22 di semua VM.

Langkah selanjutnya