Perkiraan waktu penyelesaian: 1 hari
Pemilik komponen yang dapat dioperasikan: VULN
Profil keterampilan: Deployment engineer
Terakhir diperbarui: 18 Agustus 2025
Nessus adalah pemindai keamanan untuk sistem operasi dan dukungan Google Distributed Cloud (GDC) dengan air gap. Hal ini membantu tim pusat operasi memantau dan merespons kerentanan keamanan di hardware dan software.
Dokumen ini menyajikan langkah-langkah untuk men-deploy Nessus dan mengasumsikan bahwa operator yang mengikutinya melakukan langkah-langkah dari OC Workstation dengan PowerShell dan WSL yang tersedia.
33.1. Sebelum memulai
Perlu akses
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-rootdi cluster admin root. - Dapatkan peran
role/system-artifact-management-admindi namespacegpc-systemdari cluster admin root.
- Dapatkan peran cluster
- Ikuti IAM-R0005:
Alat yang diperlukan
- kubectl
- gdcloud
- helm
- yq
- docker
Pemberian Lisensi
- Satu lisensi Nessus
- Ikuti NES-G0004 - How to perform Nessus license preactivation untuk menyiapkan paket pra-aktivasi "GDCH 1"
- Satu lisensi Nessus
33.1.1. Praktik Terbaik
33.1.1.1. Upgrade
Untuk upgrade dari versi sebelum 1.14, ikuti "Opsional: Uninstal" di setiap bagian utama panduan ini sebelum melakukan penginstalan apa pun.
Jika ada penginstalan ulang, ikuti bagian "Opsional: Uninstal" di setiap bagian utama panduan ini.
33.1.1.2. Menangani perbedaan versi antara organisasi dan zona
Tidak boleh ada masalah karena perbedaan versi antara organisasi dan zona. Ikuti langkah-langkah khusus organisasi dengan mempertimbangkan versi organisasi. Setiap deployment akan bersifat independen per zona.
33.1.2. Lisensi Tenablesc
Tenable.sc adalah software pihak ketiga berlisensi yang memerlukan file lisensi untuk beroperasi. Lisensi Tenable harus diperoleh sesuai dengan SBOM sebelum melanjutkan. Dalam kasus khusus, kami mungkin dapat memberikan lisensi.
File lisensi harus memiliki nama
seperti SecurityCenter-<version>-1000IPs-<uid>.key. Temukan file ini dan catat untuk digunakan nanti karena file ini harus diupload langsung ke UI Tenablesc.
Persyaratan:
- Satu file lisensi Tenablesc dengan batas IP minimal 1000 dan nama host
tenablesc-as1
33.2. Menemukan file deployment Nessus
Sebelum men-deploy Nessus, selesaikan langkah-langkah berikut menggunakan Windows PowerShell untuk menemukan file penginstalan Nessus:
Akses image virtual machine (VM) dan diagram Helm Nessus:
Dalam OC, fitur ini dapat diakses di
\\<dc-prefix>-hyperv1\OpsCenter\tenable-nessus./operations_center/tenable-nessus/ ├── rhel-8.6-x86_64-kvm-tenablesc.qcow2 # Tenable.sc server image ├── tenablesc-automation-bundle-v6n.tar # Tenable.sc automation bundle ├── tenablesc-admin.tgz # Ops admin Tenable.sc Helm chart └── tenablesc-vms.tgz # Ops admin Tenable.sc Helm chart for VMPindahkan file ini ke workstation lokal Anda untuk digunakan nanti:
# Eg "\\dc1-hyperv1\OpsCenter\tenable-nessus\*" $OPS_TENABLE_RESOURCES = "" mkdir $env:USERPROFILE\tenable-nessus Copy-Item ${OPS_TENABLE_RESOURCES} $env:USERPROFILE\tenable-nessus
33.3. Menemukan paket pra-aktivasi Nessus
Paket Pra-aktivasi Nessus khusus untuk setiap penginstalan Nessus dan oleh karena itu tidak dapat disertakan dalam paket pusat operasi. Ikuti Panduan Nessus NES-G0004 - How to perform Nessus license preactivation untuk menyiapkan paket praaktivasi "GDCH 1" sebelum melanjutkan.
Di komputer yang terhubung ke internet, dapatkan
nessus-preact-gdch1.tar.gzsendiri atau melalui POC Engineering Google.Transfer file ini ke workstation Anda dan tempatkan di
$env:USERPROFILE\tenable-nessusDirektori
$env:USERPROFILE\tenable-nessusharus berisi paket pra-aktivasi:$env:USERPROFILE\tenable-nessus ├── nessus-preact-gdch1.tar.gz # GDCH Nessus Preactivation File
33.4. Membuka WSL
Langkah-langkah selanjutnya di halaman ini memerlukan WSL untuk semua perintah, kecuali jika dinyatakan lain.
Opsional: Sudo diperlukan. Jika Anda tidak mengetahui sandi pengguna sudo, jalankan perintah berikut untuk menyetel sandi pengguna sudo WSL
oc-it:/mnt/c/Windows/System32/wsl.exe --distribution "${WSL_DISTRO_NAME}" --user root --exec passwd oc-it
33.5. Menetapkan variabel lingkungan
Lakukan langkah-langkah berikut untuk menetapkan variabel lingkungan yang diperlukan:
Tentukan variabel lingkungan
ROOT_ADMIN_CLUSTER_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster admin yang dibuat sebagai prasyarat:ROOT_ADMIN_CLUSTER_KUBECONFIG=Tentukan alias untuk perintah kubectl cluster admin yang dipilih di terminal saat ini:
alias kra='kubectl --kubeconfig ${ROOT_ADMIN_CLUSTER_KUBECONFIG:?}'Tetapkan variabel
USERPROFILE:export USERPROFILE=$(wslpath $(cmd.exe /c "<nul set /p=%UserProfile%" 2>/dev/null))$USERPROFILEkini mengarah ke lokasi yang sama dengan$env:USERPROFILE.
33.5.1. Menetapkan variabel lingkungan untuk organisasi v1
Tentukan variabel lingkungan
ORG_ADMIN_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster admin org yang dipilih yang dibuat sebagai prasyarat:ORG_ADMIN_KUBECONFIG=Tentukan alias untuk perintah kubectl cluster admin org yang dipilih di terminal saat ini:
alias kna='kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}'Tentukan variabel lingkungan
ORG_SYSTEM_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster sistem yang dipilih yang dibuat sebagai prasyarat:ORG_SYSTEM_KUBECONFIG=Tentukan alias untuk perintah kubectl cluster sistem yang dipilih di terminal saat ini:
alias knu='kubectl --kubeconfig ${ORG_SYSTEM_KUBECONFIG:?}'
33.5.2. Menetapkan variabel lingkungan untuk organisasi v2
Tentukan variabel lingkungan
ORG_MGMT_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig server API bidang pengelolaan organisasi v2 yang dipilih, yang dibuat sebagai prasyarat:ORG_MGMT_KUBECONFIG=Tentukan alias untuk perintah kubectl cluster admin org yang dipilih di terminal saat ini:
alias kna='kubectl --kubeconfig ${ORG_MGMT_KUBECONFIG:?}'Tentukan variabel lingkungan
ORG_INFRA_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig server API bidang kontrol organisasi v2 yang dipilih yang dibuat sebagai prasyarat:ORG_INFRA_KUBECONFIG=Tentukan alias untuk perintah kubectl cluster sistem yang dipilih di terminal saat ini:
alias knu='kubectl --kubeconfig ${ORG_INFRA_KUBECONFIG:?}'
33.6. Mengupload paket praaktivasi
Lakukan langkah-langkah berikut untuk mengupload registry Harbor artefak.
Konversi paket ke format OCI dengan metadata yang sesuai:
BUNDLE_PATH=${USERPROFILE:?}/tenable-nessus/nessus-preact-gdch1.tar.gz BUNDLE_OCI_PATH=${USERPROFILE:?}/tenable-nessus/nessus-preact-gdch1-oci BUNDLE_TAG=$(date '+%Y%m%d%H%M%S') gdcloud artifacts oci build-from-tar ${BUNDLE_PATH:?} ${BUNDLE_OCI_PATH:?} \ --version "${BUNDLE_TAG:?}" \ --index-annotations "org.google.gpc.harbor.tag=${BUNDLE_TAG:?},com.gpc.oci.image.flat=true" \ --manifest-annotations "org.google.gpc.harbor.project=gpc-system-nessus-updates,org.google.gpc.harbor.repo=nessus-preactivation,com.gpc.oci.image.flat=true" \ --layer-media-type="application/vnd.unknown.layer.v1.tar"Instal sertifikat CA Harbor:
HARBOR_URL=$(kra get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') HARBOR_IP=${HARBOR_URL#https://} sudo mkdir -p /etc/docker/certs.d/${HARBOR_IP:?} CA_CRT=$(kra get secret trust-store-internal-only -n anthos-creds -o jsonpath='{.data.ca\.crt}') sudo sh -c "echo ${CA_CRT} | openssl base64 -A -d > /etc/docker/certs.d/${HARBOR_IP:?}/ca.crt"Temukan sistem operasi:
sudo sh -c "hostnamectl"Untuk Rocky Linux sebagai sistem operasi, jalankan:
sudo update-ca-trust extractUntuk Ubuntu sebagai sistem operasi, jalankan:
sudo update-ca-certificatesUpload paket pra-aktivasi ke Harbor:
Metode ideal: autentikasi menggunakan
gdcloud auth login.INFRA_CONSOLE_URL="https://$(kra get dnsregistrations.network.private.gdc.goog -n gpc-system infra-console -o jsonpath='{.status.fqdn}')" gdcloud config set core/organization_console_url ${INFRA_CONSOLE_URL:?} gdcloud auth login gdcloud auth configure-docker gdcloud system container-registry load-oci ${BUNDLE_OCI_PATH:?} --create-release-metadata=false --skip-failover-registryMetode pencadangan: menggunakan
kubeconfig.gdcloud system container-registry load-oci ${BUNDLE_OCI_PATH:?} --create-release-metadata=false --use-ip-port=true --skip-failover-registry --kubeconfig=${ROOT_ADMIN_CLUSTER_KUBECONFIG:?}
33.7. Menginstal Nessus
Memicu penginstalan Nessus:
cat <<EOF | kra apply -f - apiVersion: vulnerabilitymanagement.private.gdc.goog/v1alpha1 kind: ParentNessusManagerConfig metadata: name: parent-nessus-manager-config namespace: tenable-nessus-system spec: preactivationUrlBundleTag: "${BUNDLE_TAG:?}" installedAt: "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" EOFTunggu sekitar 1,5 jam hingga penginstalan selesai.
33.7.1. Opsional: Uninstal Nessus
Bagian ini berisi perintah untuk menghapus deployment Nessus dari semua cluster yang diperlukan.
Uninstal Nessus dari cluster admin root:
helm list -n tenable-nessus-system -q --kubeconfig ${ROOT_ADMIN_CLUSTER_KUBECONFIG:?} | xargs helm uninstall -n tenable-nessus-system --kubeconfig ${ROOT_ADMIN_CLUSTER_KUBECONFIG:?}Untuk arsitektur org v1:
Uninstal Nessus dari cluster admin org:
helm list -n tenable-nessus-system -q --kubeconfig ${ORG_ADMIN_KUBECONFIG:?} | xargs helm uninstall -n tenable-nessus-system --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}Uninstal Nessus dari cluster sistem org:
helm list -n tenable-nessus-system -q --kubeconfig ${ORG_SYSTEM_KUBECONFIG:?} | xargs helm uninstall -n tenable-nessus-system --kubeconfig ${ORG_SYSTEM_KUBECONFIG:?}
Untuk arsitektur organisasi v2:
Uninstal Nessus dari cluster pengelolaan org:
helm list -n tenable-nessus-system -q --kubeconfig ${ORG_MGMT_KUBECONFIG:?} | xargs helm uninstall -n tenable-nessus-system --kubeconfig ${ORG_MGMT_KUBECONFIG:?}Uninstal Nessus dari cluster infrastruktur org:
helm list -n tenable-nessus-system -q --kubeconfig ${ORG_INFRA_KUBECONFIG:?} | xargs helm uninstall -n tenable-nessus-system --kubeconfig ${ORG_INFRA_KUBECONFIG:?}
33.7.2. Memverifikasi Nessus di cluster admin root
Pastikan kunci dan sertifikat dipublikasikan:
echo "Child linking key published: $(kra get pnm -A -o yaml | yq e '.items[0].status.conditions[] | select(.type == "ChildLinkingKeyPublished") | .status')" echo "Agent linking key published: $(kra get pnm -A -o yaml | yq e '.items[0].status.conditions[] | select(.type == "AgentLinkingKeyPublished") | .status')" echo "Nessus TLS Crt published: $(kra get pnm -A -o yaml | yq e '.items[0].status.conditions[] | select(.type == "NessusTlsCrtPublished") | .status')"Verifikasi bahwa Nessus Manager induk dalam kondisi baik:
POD_NAME=$(kra get pod -n tenable-nessus-system | grep vuln-parent-nessus-backend-app | awk '{print $1}') if kra exec -n tenable-nessus-system -c manager ${POD_NAME:?} -- /bin/bash -c "/opt/nessus/sbin/nessuscli node status" | grep -Fq "Agents linked"; then echo "Manager node is healthy" else echo "Manager node is unhealthy" fiJika Nessus Manager induk dilaporkan tidak sehat, seperti output dari salah satu perintah sebelumnya adalah salah (false), mulai ulang Nessus Manager induk dengan perintah berikut:
kra rollout restart deployment vuln-parent-nessus-backend-app -n tenable-nessus-systemTunggu sekitar 1,5 jam, lalu periksa kembali statusnya.
Jika Nessus Manager induk masih dilaporkan tidak sehat setelah 1,5 jam, eskalasikan masalah ini ke petugas yang bertugas.
Sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana:
{pod="<pod_name>"}Sertakan konfigurasi Nessus Manager induk:
kra get pnm -A -o yaml
Verifikasi bahwa Nessus Manager turunan dalam kondisi baik:
POD_NAME=$(kra get pod -n tenable-nessus-system | grep vuln-managed-nessus-backend-app | awk '{print $1}') if kra exec -n tenable-nessus-system -c manager ${POD_NAME:?} -- /bin/bash -c "/opt/nessus/sbin/nessuscli node status" | grep -Fq "Agents linked"; then echo "Manager node is healthy" else echo "Manager node is unhealthy" fiJika Nessus Manager turunan dilaporkan tidak sehat, mulai ulang Nessus Manager turunan dengan perintah berikut, tunggu 20 menit, lalu periksa status lagi:
kra rollout restart deployment vuln-managed-nessus-backend-app -n tenable-nessus-systemJika setelah 20 menit, pengelola Child Nessus masih dilaporkan tidak sehat, eskalasikan masalah dan sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
Sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana:
{pod="<pod_name>"}Sertakan konfigurasi Nessus Manager turunan:
kra get cnm -A -o yaml
Pastikan tidak ada agen yang tidak sehat:
echo "Nodes with unhealthy agents:"\ $(kra get nessusagent -A -o yaml | yq '.items[] | select(.status.conditions[] | select(.type == "Heartbeat" and .status == "False")) | .spec.nodeRef')Untuk semua agen yang tercantum dalam daftar tidak sehat, tetapkan variabel
NESSUS_AGENT_NAMEdan jalankan perintah berikut untuk semuanya:NESSUS_AGENT_NAME= kra delete nessusagent ${NESSUS_AGENT_NAME} -n tenable-nessus-systemJika setelah 20 menit agen yang tidak sehat masih dilaporkan dalam daftar, lakukan hal berikut untuk setiap agen:
Periksa log pod
install-<node_name>di grafana dan jika ada log erroransible-playbook error: one or more host failed, buat koneksi SSH ke node bare metal menggunakan PLATAUTH-G0001.Setelah membuat koneksi SSH ke node bare metal, pindahkan
/etc/yum.repos.dke/etc/ yum.repos.d.back(untuk menghapus yum repos conf secara efektif).
Jika setelah 20 menit agen yang tidak sehat masih dilaporkan dalam daftar, eskalasikan masalah dan sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
Sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
{pod="<pod_name>"}Sertakan status agen Nessus:
kra get nessusagent/${NESSUS_AGENT_NAME} -n tenable-nessus-system -o yamlSertakan konfigurasi agen Nessus:
kra get nessusagentconfig/nessus-agent-config -n tenable-nessus-system -o yaml
33.8. Nessus Manager - verifikasi organisasi
Bagian ini membahas langkah-langkah yang diperlukan untuk memverifikasi Nessus dalam organisasi Distributed Cloud.
Untuk memastikan verifikasi Nessus berhasil dan selesai, jalankan prosedur ini untuk setiap cluster organisasi Distributed Cloud, termasuk cluster organisasi IT Operations Center.
Mencantumkan organisasi yang tersedia:
kra get -n gpc-system organization
Lakukan langkah-langkah berikut untuk setiap organisasi, selain organisasi root yang sudah dibahas.
33.8.1. Prasyarat
Akses diperlukan untuk organisasi v1
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-rootdi cluster admin root.
- Dapatkan peran cluster
Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster admin root.
Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-org-legacydi cluster admin org target.
- Dapatkan peran cluster
Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster admin organisasi target.
Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-system-legacydi cluster sistem target.
- Dapatkan peran cluster
Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster sistem target.
- Ikuti IAM-R0005:
Akses diperlukan untuk organisasi v2
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-rootdi cluster admin root.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster admin root.
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-infra-mpdi cluster target.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG mp untuk cluster infrastruktur target.
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-infra-cpdi server kube API bidang kontrol infrastruktur target.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG cp untuk cluster infrastruktur.
- Ikuti IAM-R0005:
Ikuti Setel Variabel Lingkungan untuk menyiapkan akses ke cluster organisasi, dan tentukan alias command line kna dan knu.
33.8.2. Verifikasi Nessus di cluster admin org di organisasi v1 dan server kube API bidang pengelolaan infrastruktur di organisasi v2
Pastikan tidak ada agen yang tidak sehat:
echo "Nodes with unhealthy agents:"\ $(kna get nessusagent -A -o yaml | yq '.items[] | select(.status.conditions[] | select(.type == "Heartbeat" and .status == "False")) | .spec.nodeRef')Untuk semua agen yang tercantum dalam daftar tidak sehat, tetapkan variabel
NESSUS_AGENT_NAMEdan jalankan perintah berikut untuk semua-NESSUS_AGENT_NAME= kna delete nessusagent ${NESSUS_AGENT_NAME} -n tenable-nessus-systemJika setelah 20 menit agen yang tidak sehat masih dilaporkan dalam daftar, lakukan hal berikut untuk setiap agen:
Periksa log pod
install-<node_name>di grafana dan jika ada log erroransible-playbook error: one or more host failed, buat koneksi SSH ke node bare metal menggunakan PLATAUTH-G0001.Setelah membuat koneksi SSH ke node bare metal, pindahkan
/etc/yum.repos.dke/etc/ yum.repos.d.back(untuk menghapus yum repos conf secara efektif).
Jika setelah 20 menit agen yang tidak sehat masih dilaporkan dalam daftar, eskalasikan masalah dan sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
{pod="<pod_name>"}
33.8.3. Memverifikasi Nessus di cluster sistem dalam organisasi v1 dan server kube API bidang kontrol infrastruktur dalam organisasi v2
Verifikasi bahwa Nessus Manager turunan dalam kondisi baik:
POD_NAME=$(knu get pod -n tenable-nessus-system | grep vuln-managed-nessus-backend-app | awk '{print $1}') if knu exec -n tenable-nessus-system -c manager ${POD_NAME:?} -- /bin/bash -c "/opt/nessus/sbin/nessuscli node status" | grep -Fq "Agents linked"; then echo "Manager node is healthy" else echo "Manager node is unhealthy" fiJika Nessus Manager turunan dilaporkan tidak sehat, mulai ulang Nessus Manager turunan dengan perintah berikut, tunggu 20 menit, lalu periksa status lagi:
knu rollout restart deployment vuln-managed-nessus-backend-app -n tenable-nessus-systemJika setelah 20 menit, pengelola Child Nessus masih dilaporkan tidak sehat, eskalasikan masalah dan sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
Sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
{pod="<pod_name>"}Sertakan konfigurasi Nessus Manager anak.
knu get cnm -A -o yaml
Pastikan tidak ada agen yang tidak sehat:
echo "Nodes with unhealthy agents:"\ $(knu get nessusagent -A -o yaml | yq '.items[] | select(.status.conditions[] | select(.type == "Heartbeat" and .status == "False")) | .spec.nodeRef')Untuk semua agen yang tercantum dalam daftar tidak sehat, tetapkan variabel
NESSUS_AGENT_NAMEdan jalankan perintah berikut untuk semuanya:NESSUS_AGENT_NAME= knu delete nessusagent ${NESSUS_AGENT_NAME} -n tenable-nessus-systemJika setelah 20 menit agen yang tidak sehat masih dilaporkan dalam daftar, lakukan hal berikut untuk setiap agen:
Periksa log pod
install-<node_name>di grafana dan jika ada log erroransible-playbook error: one or more host failed, buat koneksi SSH ke node bare metal menggunakan PLATAUTH-G0001.Setelah membuat koneksi SSH ke node bare metal, pindahkan
/etc/yum.repos.dke/etc/ yum.repos.d.back(untuk menghapus yum repos conf secara efektif).
Jika setelah 20 menit agen yang tidak sehat masih dilaporkan dalam daftar, eskalasikan masalah dan sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana.
Sertakan informasi berikut setelah menjalankan kueri yang diberikan dari UI Grafana:
{pod="<pod_name>"}Sertakan status agen Nessus:
knu get nessusagent/${NESSUS_AGENT_NAME} -n tenable-nessus-system -o yamlSertakan konfigurasi agen Nessus:
knu get nessusagentconfig/nessus-agent-config -n tenable-nessus-system -o yaml
33.9. Menginstal Tenable.sc
Bagian ini berisi langkah-langkah untuk menginstal atau mengupgrade VM Tenable.sc yang ada dalam organisasi IT Operations Center.
33.9.1. Prasyarat
Perlu akses
- Untuk arsitektur org v1:
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-rootdi cluster admin root.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster admin root.
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-org-legacydi cluster admin gdchservices.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster admin gdchservices.
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-system-legacydi cluster sistem gdchservices.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster sistem gdchservices.
- Ikuti IAM-R0005:
- Untuk arsitektur organisasi v2:
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-rootdi cluster admin root.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster admin root.
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-infra-mpdi cluster gdchservices-management.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster gdchservices-management.
- Ikuti IAM-R0005:
- Dapatkan peran cluster
clusterrole/tenable-nessus-admin-infra-cpdi cluster gdchservices-infra.
- Dapatkan peran cluster
- Ikuti IAM-R0004:
- Buat KUBECONFIG untuk cluster gdchservices-infra.
- Ikuti IAM-R0005:
- Untuk arsitektur org v1:
33.9.2. Menetapkan variabel lingkungan
Lakukan langkah-langkah berikut untuk menetapkan variabel lingkungan yang diperlukan:
Tentukan variabel lingkungan
ROOT_ADMIN_CLUSTER_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster admin yang dibuat sebagai prasyarat:ROOT_ADMIN_CLUSTER_KUBECONFIG=Tentukan alias untuk perintah kubectl cluster admin root di terminal saat ini:
alias kra='kubectl --kubeconfig ${ROOT_ADMIN_CLUSTER_KUBECONFIG:?}'Tentukan variabel lingkungan untuk kubeconfig bidang pengelolaan org gdchservices:
Untuk arsitektur org v1: Tentukan variabel lingkungan
ORG_ADMIN_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster admin gdchservices yang dibuat sebagai prasyarat:ORG_ADMIN_KUBECONFIG=Untuk arsitektur org v2: Tentukan variabel lingkungan
ORG_MGMT_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster pengelolaan gdchservices yang dibuat sebagai prasyarat:ORG_MGMT_KUBECONFIG=
Buat alias untuk perintah kubectl menggunakan kubeconfig di atas:
Untuk arsitektur org v1: Tentukan alias untuk perintah kubectl cluster admin gdchservices di terminal saat ini:
alias kna='kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}'Untuk arsitektur org v2: Tentukan alias untuk perintah kubectl cluster admin gdchservices di terminal saat ini:
alias kna='kubectl --kubeconfig ${ORG_MGMT_KUBECONFIG:?}'
Tentukan variabel lingkungan untuk kubeconfig bidang kontrol org gdchservices:
Untuk arsitektur org v1: Tentukan variabel lingkungan
ORG_SYSTEM_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster sistem gdchservices yang dibuat sebagai prasyarat:ORG_SYSTEM_KUBECONFIG=Untuk arsitektur org v2: Tentukan variabel lingkungan
ORG_INFRA_KUBECONFIGuntuk digunakan nanti di terminal saat ini. Ini harus berupa jalur absolut ke kubeconfig cluster gdchservices infra yang dibuat sebagai prasyarat:ORG_INFRA_KUBECONFIG=
Buat alias untuk perintah kubectl menggunakan kubeconfig di atas:
Untuk arsitektur org v1: Tentukan alias untuk perintah kubectl cluster sistem gdchservices di terminal saat ini:
alias knu='kubectl --kubeconfig ${ORG_SYSTEM_KUBECONFIG:?}'Untuk arsitektur org v2: Tentukan alias untuk perintah kubectl cluster infrastruktur gdchservices di terminal saat ini:
alias knu='kubectl --kubeconfig ${ORG_INFRA_KUBECONFIG:?}'
Tetapkan variabel
USERPROFILE:export USERPROFILE=$(wslpath $(cmd.exe /c "<nul set /p=%UserProfile%" 2>/dev/null))$USERPROFILEkini mengarah ke lokasi yang sama dengan$env:USERPROFILE.Tentukan nama organisasi tempat Tenable.sc di-deploy:
ORG=gdchservices
33.9.3. Bersiap untuk menginstal
Lakukan langkah-langkah berikut untuk menyiapkan organisasi.
Buat project
tenablesc-system.cat <<EOF | kna apply -n gpc-system -f - apiVersion: resourcemanager.gdc.goog/v1 kind: Project metadata: name: tenablesc-system labels: istio.io/rev: default networking.gdc.goog/enable-default-egress-allow-to-outside-the-org: "true" resourcemanager.gdc.goog/attach-all-user-clusters: "true" EOFSetelah dua menit, verifikasi bahwa namespace ada di cluster admin org dan sistem.
kna get namespace tenablesc-system -o yaml knu get namespace tenablesc-system -o yamlPerhatikan bahwa label project
resourcemanager.gdc.goog/attach-all-user-clusters: "true"menyebabkan namespace juga dibuat di semua cluster pengguna organisasi.Buat dan simpan kredensial pengguna Admin dan Manager Tenablesc sebagai secret Kubernetes.
cat <<EOF | knu apply -n tenablesc-system -f - apiVersion: v1 kind: Secret type: Opaque metadata: name: users data: adminpw: $(</dev/urandom tr -dc 'A-Za-z0-9~!@#$%^*+?' | head -c 25 | base64) managerpw: $(</dev/urandom tr -dc 'A-Za-z0-9~!@#$%^*+?' | head -c 25 | base64) EOF
33.9.4. Diagram penginstalan admin
Tetapkan variabel lingkungan berikut untuk mempersiapkan penginstalan:
URL_SUFFIX=$(kna get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}') ROOT_URL_SUFFIX=$(kra get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}') DEPLOY_NAME=tenablescTerapkan diagram helm admin.
Untuk arsitektur org v1:
helm upgrade --install \ tenablesc-admin ${USERPROFILE:?}/tenable-nessus/tenablesc-admin.tgz \ --namespace tenablesc-system \ --set urlSuffix=${URL_SUFFIX:?} \ --set deployName=${DEPLOY_NAME:?} \ --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}Untuk arsitektur organisasi v2:
Tetapkan
OCIT_NESSUS_MANAGER_PREFIXESsebagai daftar yang dipisahkan koma, seperti"{dc1-nessus1,dc1-nessus2}", yang menunjukkan awalan VM OCIT.Tetapkan
OCIT_NESSUS_URL_SUFFIXyang menunjukkan akhiran VM OCIT.Terapkan update helm untuk Bidang pengelolaan:
helm upgrade --install \ tenablesc-admin ${USERPROFILE:?}/tenable-nessus/tenablesc-infra-mp.tgz \ --namespace tenablesc-system \ --set urlSuffix=${URL_SUFFIX:?} \ --set ocitNessusManagerPrefixes=${OCIT_NESSUS_MANAGER_PREFIXES:?} \ --set deployName=${DEPLOY_NAME:?} \ --kubeconfig ${ORG_MGMT_KUBECONFIG:?}Terapkan update helm untuk bidang Infrastruktur:
helm upgrade --install \ tenablesc-admin ${USERPROFILE:?}/tenable-nessus/tenablesc-infra-cp.tgz \ --namespace tenablesc-system \ --set urlSuffix=${URL_SUFFIX:?} \ --set rootUrlSuffix=${ROOT_URL_SUFFIX:?} \ --set ocitUrlSuffix=${OCIT_NESSUS_URL_SUFFIX:?} \ --set ocitNessusManagerPrefixes=${OCIT_NESSUS_MANAGER_PREFIXES:?} \ --set deployName=${DEPLOY_NAME:?} \ --kubeconfig ${ORG_INFRA_KUBECONFIG:?}Terapkan kebijakan otorisasi Istio:
cat <<EOF | knu apply -f - apiVersion: security.istio.io/v1 kind: AuthorizationPolicy metadata: name: allow-nessus-terminated-traffic namespace: istio-system spec: rules: - from: - source: ipBlocks: - 0.0.0.0/0 to: - operation: hosts: - nessus-terminated.${URL_SUFFIX:?} selector: matchLabels: istio: management-ingress-gateway EOFBuat entri layanan:
cat <<EOF | knu apply -f - apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: nessus-svc-entry namespace: istio-system spec: hosts: - nessus.${ROOT_URL_SUFFIX:?} location: MESH_EXTERNAL ports: - name: https-port number: 443 protocol: TLS resolution: DNS EOFBuat pendaftaran DNS:
cat <<EOF | kna apply -n tenablesc-system -f - apiVersion: network.private.gdc.goog/v1alpha1 kind: DNSRegistration metadata: name: tenablesc-internal namespace: tenablesc-system spec: resolutionConfig: exposeToNetwork: VPC resolveTo: useDefaultIstioGateway: owningCluster: InfraCluster ingressLabel: infra vpcIdentifier: infra EOFSimpan FQDN dalam variabel lingkungan setelah menunggu selama lima menit:
TENABLE_SC_INTERNAL_FQDN=$(kna get dnsregistrations.network.private.gdc.goog -n tenablesc-system tenablesc-internal -o jsonpath='{.status.fqdn}')Patch layanan virtual dan gateway untuk menambahkan FQDN internal Tenable SC:
knu patch gateway tenablesc-gateway -n istio-system --type='json' \ -p='[{"op": "add", "path": "/spec/servers/0/hosts/0", "value": "'"${TENABLE_SC_INTERNAL_FQDN:?}"'"}]'knu patch virtualservice tenablesc-https-ingress-virtualsvc -n tenablesc-system --type='json' \ -p='[{"op": "add", "path": "/spec/hosts/0", "value": "'"${TENABLE_SC_INTERNAL_FQDN:?}"'"}]'Patch resource prober untuk menyelidiki endpoint yang benar:
kna patch probe tenablesc-probe -n tenablesc-system --type='json' \ -p='[{"op": "replace", "path": "/spec/probeJobs/0/targets/0", "value": "https://'"${TENABLE_SC_INTERNAL_FQDN:?}"'"}]'
Verifikasi deployment.
Tinjau output perintah berikut untuk mengonfirmasi bahwa deployment
tenablesc-adminberhasil:Untuk arsitektur org v1:
helm ls --namespace tenablesc-system --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}Untuk arsitektur organisasi v2:
helm ls --namespace tenablesc-system --kubeconfig ${ORG_MGMT_KUBECONFIG:?}
Pastikan layanan virtual ada.
Untuk arsitektur org v1:
kna get virtualservice -n tenablesc-systemUntuk arsitektur organisasi v2:
knu get virtualservice -n tenablesc-system
Pastikan entri DNS ada.
echo $(kna get dnsregistrations.network.private.gdc.goog -n tenablesc-system tenablesc -o jsonpath='{.status.fqdn}')Pastikan
AuditLoggingTargetsudah siap, yang diperkirakan akan memerlukan waktu beberapa menit.kna get auditloggingtarget/tenablesc-audit-logging-target -n tenablesc-system -o jsonpath='{ .status }' | jqError berikut mungkin terjadi:
Error: failed to copy secret to project: namespace "tenablesc-system" not found in cluster <user_cluster>Jika ya, namespace
tenablesc-systemharus dibuat di cluster yang ditentukan. Untuk melanjutkan, buat namespace, lalu buka bug meta untuk memicu penyelidikan terkait penyebab error ini. Sertakan outputtenablesc-systemProject describe dalam tiket.kna describe project tenablesc-systemError berikut mungkin terjadi:
Error from server (NotFound): auditloggingtargets.logging.private.gdc.goog "tenablesc-audit-logging-target" not foundJika ya, buat
AuditLoggingTargetyang tidak ada secara manual:cat <<EOF | kna apply -n tenablesc-system -f - apiVersion: logging.private.gdc.goog/v1alpha1 kind: AuditLoggingTarget metadata: name: "${DEPLOY_NAME:?}-audit-logging-target" spec: appNameLabel: "${DEPLOY_NAME:?}" hostNameLabel: host ingressGatewayPort: 0 logAccessLevel: io serviceName: "${DEPLOY_NAME:?}" timestampKey: time timestampkeyFormat: '%Y-%m-%dT%H:%M:%S' EOFSetelah lima menit, output yang diharapkan akan terlihat seperti berikut:
{ "certSecretName": "tenablesc-alog-client-tls", "conditions": [ { "lastTransitionTime": "2023-07-11T15:13:50Z", "message": "", "observedGeneration": 1, "reason": "ReconciliationCompleted", "status": "True", "type": "Ready" } ], "serverCertSecretName": "tenablesc-alog-server-tls", "syslogServerName": "tenablesc-alog-system.gdchservices.bert.sesame.street", "syslogServerPortNumber": 5140 }Setelah 10 menit, jika output status masih terlihat salah, berarti platform Observability mungkin tidak berfungsi dengan baik. Buka bug meta dengan informasi status yang tersedia untuk membantu proses debug.
33.9.5. Diagram penginstalan VM
Tetapkan variabel lingkungan berikut untuk mempersiapkan penginstalan:
TENABLESC_IMAGE_URL=$(kna get virtualmachineimages.virtualmachine.gdc.goog -n vm-system -o custom-columns=NAME:.metadata.name | grep nessus-tenable-sc | sort -r -k 1 | head -1) TENABLESC_BOOT_SIZE=50GUntuk arsitektur org v1:
ALT_NAME=tenablesc-audit-logging-target ALT_NS=tenablesc-system ALT_HOSTNAME=$(kna get auditloggingtarget/${ALT_NAME:?} -n ${ALT_NS:?} -o jsonpath='{ .status.syslogServerName }') ALT_PORT=$(kna get auditloggingtarget/${ALT_NAME:?} -n ${ALT_NS:?} -o jsonpath='{ .status.syslogServerPortNumber }') ALT_CERT_SECRET=$(kna get auditloggingtarget/${ALT_NAME:?} -n ${ALT_NS:?} -o jsonpath='{ .status.certSecretName }') ALT_CACERT=$(kna get secret/${ALT_CERT_SECRET:?} -n ${ALT_NS:?} -o jsonpath='{ .data.ca\.crt }') ALT_CERTFILE=$(kna get secret/${ALT_CERT_SECRET:?} -n ${ALT_NS:?} -o jsonpath='{ .data.tls\.crt }') ALT_KEYFILE=$(kna get secret/${ALT_CERT_SECRET:?} -n ${ALT_NS:?} -o jsonpath='{ .data.tls\.key }')Untuk arsitektur organisasi v2:
ALT_NAME=tenablesc-audit-logging-target ALT_NS=tenablesc-system ALT_HOSTNAME=$(kna get auditloggingtarget/${ALT_NAME:?} -n ${ALT_NS:?} -o jsonpath='{ .status.syslogServerName }') ALT_PORT=$(kna get auditloggingtarget/${ALT_NAME:?} -n ${ALT_NS:?} -o jsonpath='{ .status.syslogServerPortNumber }') ALT_CERT_SECRET=$(kna get auditloggingtarget/${ALT_NAME:?} -n ${ALT_NS:?} -o jsonpath='{ .status.certSecretName }') ALT_CACERT=$(knu get secret/${ALT_CERT_SECRET:?} -n ${ALT_NS:?} -o jsonpath='{ .data.ca\.crt }') ALT_CERTFILE=$(knu get secret/${ALT_CERT_SECRET:?} -n ${ALT_NS:?} -o jsonpath='{ .data.tls\.crt }') ALT_KEYFILE=$(knu get secret/${ALT_CERT_SECRET:?} -n ${ALT_NS:?} -o jsonpath='{ .data.tls\.key }')
Tetapkan jenis virtual machine:
Mendapatkan nama semua jenis virtual machine:
kna get virtualmachinetypes.virtualmachine.gdc.goog -n vm-systemPilih jenis virtual machine dengan kolom
Supportedsebagaitruedan simpan di variabel lingkungan. Lebih disukai:n2-standard-4-gdcdann3-standard-4-gdc.VIRTUAL_MACHINE_TYPE=
ProjectNetworkPolicydiperlukan agar log Tenable.sc dikirim ke instance Lokiinfra-obs.cat <<EOF | kna apply -f - apiVersion: networking.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: name: allow-tenablesc-system-ingress-traffic namespace: obs-system spec: ingress: - from: - projects: matchNames: - tenablesc-system policyType: Ingress subject: subjectType: UserWorkload EOFTerapkan diagram helm VM.
Untuk arsitektur org v1:
helm upgrade --install \ tenablesc-vms ${USERPROFILE:?}/tenable-nessus/tenablesc-vms.tgz \ --namespace tenablesc-system \ --set urlSuffix=${URL_SUFFIX:?} \ --set applicationServer.image=${TENABLESC_IMAGE_URL:?} \ --set applicationServer.bootSize=${TENABLESC_BOOT_SIZE:?} \ --set applicationServer.virtualMachineType=${VIRTUAL_MACHINE_TYPE:?} \ --set syslogaudit.host=${ALT_HOSTNAME:?} \ --set syslogaudit.port=${ALT_PORT:?} \ --set syslogaudit.caCert=${ALT_CACERT} \ --set syslogaudit.certFile=${ALT_CERTFILE} \ --set syslogaudit.keyFile=${ALT_KEYFILE} \ --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}Untuk arsitektur organisasi v2:
helm upgrade --install \ tenablesc-vms ${USERPROFILE:?}/tenable-nessus/tenablesc-vms.tgz \ --namespace tenablesc-system \ --set urlSuffix=${URL_SUFFIX:?} \ --set applicationServer.image=${TENABLESC_IMAGE_URL:?} \ --set applicationServer.bootSize=${TENABLESC_BOOT_SIZE:?} \ --set applicationServer.virtualMachineType=${VIRTUAL_MACHINE_TYPE:?} \ --set syslogaudit.host=${ALT_HOSTNAME:?} \ --set syslogaudit.port=${ALT_PORT:?} \ --set syslogaudit.caCert=${ALT_CACERT} \ --set syslogaudit.certFile=${ALT_CERTFILE} \ --set syslogaudit.keyFile=${ALT_KEYFILE} \ --kubeconfig ${ORG_MGMT_KUBECONFIG:?}
Saat menerapkan diagram helm, Anda mungkin mengalami masalah berikut:
Webhook gagal:
connect: connection refusedError: Internal error occurred: failed calling webhook "mvirtualmachines.vm.cluster.gke.io": failed to call webhook: Post "https://vm-manager-webhook.gpc-system.svc:443/mutate-vm-cluster-gke-io-v1alpha1-virtualmachine?timeout=10s": dial tcp 10.1.118.145:443: connect: connection refusedPerbaikan: Jalankan perintah upgrade helm lagi.
Verifikasi deployment. Tinjau output perintah berikut untuk mengonfirmasi bahwa deployment
tenablesc-vmberhasil:helm ls --namespace tenablesc-system --kubeconfig ${ORG_ADMIN_KUBECONFIG:?}Tunggu hingga Tenablesc mulai berjalan.
Periksa status mesin virtual:
kna get virtualmachines.virtualmachine.gdc.goog -n tenablesc-systemContoh output yang menunjukkan bahwa VM masih dalam proses penyediaan:
NAME STATUS AGE tenablesc-as1 Pending 55sContoh output yang menunjukkan bahwa VM sedang berjalan:
NAME STATUS AGE tenablesc-as1 Running 8m25sJika VM tidak berjalan setelah 60 menit, tinjau peristiwa namespace untuk menemukan error yang tidak biasa.
knu get -n tenablesc-system events -o wideKumpulkan peringatan dan error penting, lalu laporkan dengan metabug.
VirtualServicedanDestinationRulediperlukan untuk mengakses UI Tenable.sc.Untuk arsitektur org v1: Tidak ada perubahan yang diperlukan.
Untuk arsitektur organisasi v2:
Tetapkan nama layanan sebagai variabel lingkungan untuk digunakan nanti:
TENABLE_SC_SERVICE=$(knu get service -n tenablesc-system | awk '($1 ~ /^g-svc-/) && ($0 ~ /443/) {print $1}'s)Edit CR
VirtualServicedanDestinationRule:knu patch virtualservice tenablesc-https-ingress-virtualsvc -n tenablesc-system --type merge --patch '{"spec": {"http": [{"route": [{"destination": {"host":"'"${TENABLE_SC_SERVICE:?}"'.tenablesc-system.svc.cluster.local"}}]}]}}' knu patch destinationrule tls-encrypt-tenablesc-https-ingress -n tenablesc-system --type merge --patch '{"spec":{"host":"'"${TENABLE_SC_SERVICE:?}"'.tenablesc-system.svc.cluster.local"}}'
Pastikan DNS diselesaikan ke IP.
TENABLE_SC_HOST=$(kna get dnsregistrations.network.private.gdc.goog -n tenablesc-system tenablesc -o jsonpath='{.status.fqdn}') dig +noall +answer ${TENABLE_SC_HOST:?}Verifikasi layanan diselesaikan melalui DNS.
Hasil yang diharapkan adalah kode respons 200 dan beberapa output HTML.
curl -kv https://${TENABLE_SC_HOST:?}
33.9.6. Menyiapkan Kredensial SSH VM Tenablesc
Lakukan langkah-langkah berikut untuk menyiapkan SSH guna mengakses VM Tenable.
Buat kunci SSH.
Kunci SSH ini hanya akan digunakan sementara untuk mengakses VM.
rm /tmp/tenablesc ssh-keygen -t rsa -b 4096 -f /tmp/tenablesc -N ""Tetapkan variabel lingkungan berikut.
export VM_PUBLIC_KEY=$(cat /tmp/tenablesc.pub) export VM_NAME=tenablesc-as1Buat
VirtualMachineRequestsementara (24 jam).VirtualMachineRequestdigunakan untuk menginstal sertifikat SSH yang dibuat di VM.kna delete VirtualMachineAccessRequest ${VM_NAME:?}-ar -n tenablesc-system --ignore-not-found=true cat <<EOF | kna apply -n tenablesc-system -f - apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineAccessRequest metadata: name: ${VM_NAME:?}-ar spec: ssh: key: | ${VM_PUBLIC_KEY:?} ttl: 24h user: alice vm: ${VM_NAME:?} EOFEkspor IP SSH VM sebagai variabel lingkungan lokal.
INGRESS_IP=$(kna get vmexternalaccess tenablesc-as1 -n tenablesc-system -o jsonpath='{.status.ingressIP}') echo "VM SSH IP: ${INGRESS_IP:?}"Uji apakah koneksi SSH berfungsi:
ssh -i /tmp/tenablesc -o "StrictHostKeyChecking no" alice@${INGRESS_IP:?} whoamiOutput yang diharapkan adalah
alice, yang merupakan nama pengguna SSH.Jika koneksi SSH kehabisan waktu, berarti kebijakan ingress tidak ada. Buat kebijakan ingress dengan perintah berikut, lalu coba lagi.
Buat kebijakan ingress:
kna create -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: name: allow-external-traffic-vm namespace: tenablesc-system spec: ingress: - from: - ipBlock: cidr: 0.0.0.0/0 policyType: Ingress subject: subjectType: UserWorkload EOFSediakan pod
iotoolsdi namespacetenablesc-system:cat << EOF | knu apply -n tenablesc-system -f - apiVersion: v1 kind: Pod metadata: name: iotools namespace: tenablesc-system spec: containers: - name: iotools image: gcr.io/private-cloud-staging/operation-tools:latest command: ["sleep","infinity"] volumeMounts: - name: log-volume mountPath: /var/log volumes: - name: log-volume emptyDir: {} EOFTransfer kunci pribadi ke pod
iotools:Transfer kunci pribadi ke pod
iotools:knu -n tenablesc-system cp /tmp/tenablesc iotools:/tmp/tenablesc
33.9.7. Menginstal sertifikat layanan web
Ikuti langkah-langkah berikut untuk menginstal sertifikat layanan web Tenablesc.
Ekspor alamat IP SSH VM sebagai variabel lingkungan lokal:
INGRESS_IP=$(knu get virtualmachine tenablesc-as1 -n tenablesc-system -o json | jq -r '.status.network.interfaces[0].ipAddresses[0] | split("/")[0]') echo "VM SSH IP: ${INGRESS_IP:?}"Siapkan sertifikat dan kunci server web.
Perintah berikut akan menginstal sertifikat dan kunci TLS yang akan digunakan untuk menayangkan UI Tenable.
Tetapkan nama Sertifikat TLS
TLS_SECRET_NAME=nessus-tlsSimpan sertifikat
nessus-tlssecara lokal:knu get secret ${TLS_SECRET_NAME:?} -n tenable-nessus-system -o yaml > nessus-tls.yamlSalin sertifikat
nessus-tlske podiotools:knu -n tenablesc-system cp nessus-tls.yaml iotools:/tmp/nessus-tls.yamlSiapkan Sertifikat TLS.
knu get -n tenable-nessus-system secret ${TLS_SECRET_NAME:?} -o jsonpath='{ .data.tls\.crt }' | base64 -d | knu -n tenablesc-system exec -i iotools -- /bin/bash -c "ssh -i /tmp/tenablesc -o \"StrictHostKeyChecking no\" \"alice@${INGRESS_IP}\" \"cat - > ~/SecurityCenter.crt\""Siapkan kunci pribadi TLS.
knu get -n tenable-nessus-system secret ${TLS_SECRET_NAME:?} -o jsonpath='{ .data.tls\.key }' | base64 -d | knu -n tenablesc-system exec -i iotools -- /bin/bash -c "ssh -i /tmp/tenablesc -o \"StrictHostKeyChecking no\" \"alice@${INGRESS_IP}\" \"cat - > ~/SecurityCenter.key\""Siapkan Sertifikat CA TLS.
knu get -n tenable-nessus-system secret ${TLS_SECRET_NAME:?} -o jsonpath='{ .data.ca\.crt }' | base64 -d | knu -n tenablesc-system exec -i iotools -- /bin/bash -c "ssh -i /tmp/tenablesc -o \"StrictHostKeyChecking no\" \"alice@${INGRESS_IP}\" \"cat - > ~/SecurityCenterCA.crt\""
Siapkan skrip penginstalan sertifikat.
Simpan kode berikut ke
/tmp/tenable-sc-install-web-tls.sh.cat >> /tmp/tenable-sc-install-web-tls.sh << EOF #!/bin/bash # Install server cert sudo mv ~/SecurityCenter.crt /opt/sc/support/conf/SecurityCenter.crt sudo mv ~/SecurityCenter.key /opt/sc/support/conf/SecurityCenter.key sudo chown tns:tns /opt/sc/support/conf/SecurityCenter.crt sudo chown tns:tns /opt/sc/support/conf/SecurityCenter.key sudo chmod 640 /opt/sc/support/conf/SecurityCenter.crt sudo chmod 640 /opt/sc/support/conf/SecurityCenter.key # Install custom CA cert sudo /opt/sc/support/bin/php /opt/sc/src/tools/installCA.php ~/SecurityCenterCA.crt # append root ext ca to sys log ca cat ~/SecurityCenterCA.crt | sudo tee -a /etc/fluent-bit/syslog-ca.crt # Restart Tenable.sc sudo systemctl restart SecurityCenter # Restart fluent-bit sudo systemctl restart fluent-bit EOFSalin skrip ke pod
iotools:knu -n tenablesc-system cp /tmp/tenable-sc-install-web-tls.sh iotools:/tmp/tenable-sc-install-web-tls.shInstal sertifikat dan kunci server web.
Jalankan
install-web-tls.shdi VM Tenable.sc.knu -n tenablesc-system exec -i iotools -- /bin/bash -c "ssh -i /tmp/tenablesc alice@${INGRESS_IP:?} 'bash -s' < /tmp/tenable-sc-install-web-tls.sh"Layanan Tenablesc kini menggunakan sertifikat dan kunci TLS yang sesuai.
33.9.8. Mengaktifkan penerusan log di Tenablesc
Ikuti NES-R0002 untuk login ke UI Tenablesc.
Di panel navigasi, buka Sistem > Konfigurasi.
Di halaman Configurations, klik Miscellaneous.
Buka bagian Syslog:
- Aktifkan Aktifkan penerusan.
- Tetapkan Fasilitas ke pengguna.
- Di bagian Tingkat keparahan, pilih Pilih Semua.
Klik Submit untuk menyimpan konfigurasi.
33.9.9. Mengaktifkan konektivitas jaringan OIC ke GDC
Selesaikan langkah-langkah berikut untuk VM nessus1 dan nessus2:
Siapkan variabel lingkungan berikut:
SITE_ID= OIC_DNS_SUFFIX= NESSUS_SUFFIX= GDC_SERVICES_ORG_URL_SUFFIX=$(kna get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')Publikasikan konfigurasi ke bidang pengelolaan layanan GDC:
cat <<EOF | kubectl --kubeconfig ${ORG_INFRA_KUBECONFIG:?} apply -f - apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: root-infra-ingress-gateway-https-dr-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: host: ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} trafficPolicy: portLevelSettings: - port: number: 8834 tls: mode: SIMPLE sni: ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} --- apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: infra-egress-gateway-nessus-dr-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: host: infra-egress-gateway.istio-system.svc.cluster.local subsets: - name: nessus-egress-${SITE_ID:?}-${NESSUS_SUFFIX:?} trafficPolicy: loadBalancer: simple: ROUND_ROBIN portLevelSettings: - port: number: 443 tls: credentialName: nessus-tls mode: SIMPLE sni: ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} --- apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: nessus-egress-gateway-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: selector: istio: infra-egress-gateway servers: - hosts: - ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} port: name: https-port number: 443 protocol: HTTPS tls: cipherSuites: - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 credentialName: nessus-tls mode: SIMPLE --- apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: nessus-terminated-gateway-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: selector: istio: management-ingress-gateway servers: - hosts: - ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${GDC_SERVICES_ORG_URL_SUFFIX:?} port: name: https-port number: 443 protocol: HTTPS tls: cipherSuites: - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 credentialName: nessus-tls mode: SIMPLE --- apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: nessus-svc-entry-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: hosts: - ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} location: MESH_EXTERNAL ports: - name: https-port number: 8834 protocol: TLS resolution: DNS --- apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: nessus-admin-virtual-service-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: gateways: - istio-system/nessus-terminated-gateway-${SITE_ID:?}-${NESSUS_SUFFIX:?} hosts: - ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${GDC_SERVICES_ORG_URL_SUFFIX:?} http: - rewrite: authority: ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} route: - destination: host: infra-egress-gateway.istio-system.svc.cluster.local port: number: 443 subset: nessus-egress-${SITE_ID:?}-${NESSUS_SUFFIX:?} --- apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: nessus-egress-virtual-service-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: gateways: - istio-system/nessus-egress-gateway-${SITE_ID:?}-${NESSUS_SUFFIX:?} hosts: - ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} http: - match: - uri: prefix: / route: - destination: host: ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${OIC_DNS_SUFFIX:?} port: number: 8834 --- apiVersion: security.istio.io/v1 kind: AuthorizationPolicy metadata: name: mgmt-infra-egress-access-${SITE_ID:?}-${NESSUS_SUFFIX:?} namespace: istio-system spec: rules: - from: - source: ipBlocks: - 0.0.0.0/0 to: - operation: hosts: - ${SITE_ID:?}-${NESSUS_SUFFIX:?}.${GDC_SERVICES_ORG_URL_SUFFIX:?} selector: matchLabels: istio: management-ingress-gateway EOFPublikasikan konfigurasi ke bidang kontrol GDC:
cat <<EOF | kubectl --kubeconfig ${ORG_MGMT_KUBECONFIG:?} apply -f - apiVersion: network.private.gdc.goog/v1alpha1 kind: DNSRegistration metadata: name: ${SITE_ID:?}-${NESSUS_SUFFIX:?}-customer-internal namespace: tenablesc-system spec: fqdnPrefix: ${SITE_ID:?}-${NESSUS_SUFFIX:?} resolutionConfig: exposeToNetwork: VPC resolveTo: useDefaultIstioGateway: ingressLabel: admin owningCluster: InfraCluster vpcIdentifier: default EOF
33.9.10. Pembersihan
Hapus direktori Nessus sementara.
rm -rf /tmp/nessus
33.9.11. Pengaktifan lisensi
Bagian ini memberikan detail tentang cara menerapkan lisensi Tenablesc.
Buka UI web Tenablesc menggunakan URL berikut:
TENABLE_SC_HOST=$(kna get dnsregistrations.network.private.gdc.goog -n tenablesc-system tenablesc -o jsonpath='{.status.fqdn}') echo "Navigate to https://${TENABLE_SC_HOST:?}"Sebelum lisensi diterapkan, UI menampilkan wizard penyiapan.
Jika UI menampilkan perintah login, berarti lisensi telah diterapkan dan langkah-langkah yang tersisa di bagian ini harus dilewati.
Klik Berikutnya.
Upload file lisensi Tenablesc
SecurityCenter-<version>-<number>IPs-<uid>.key.Potensi masalah:
Error Activating License File. License Is Invalid. No Valid License Found.:Error ini berarti file lisensi yang diberikan tidak valid. Cari tahu kemungkinan penyebab berikut:
Nama host salah
Nama host yang salah ditetapkan di halaman Produk Tenabe.com untuk lisensi ini. Periksa apakah nama host lisensi di halaman Produk Tenable.com adalah
tenablesc-as1. Jika nama host tidak cocok: setel ketenablesc-as1, download lisensi baru, dan gunakan file lisensi baru.Format file salah
File lisensi mungkin telah diubah selama transfer: Mirip dengan file praaktivasi Nessus, file lisensi ini tidak dapat diubah selama dalam proses transfer. File persis yang didownload dari halaman Produk Tenable.com harus diupload ke UI Tenable. Anda dapat memeriksa kembali apakah file dimodifikasi dengan membandingkan SHA file sebelum dan sesudah ditransfer.
File lisensi salah
Pastikan Anda menggunakan
Tenable.scfile lisensi yang diperoleh dari halaman Produk Tenable.com. Konten file harus mirip dengan kunci PEM.
Jika lisensi masih tidak berfungsi, buka metabug dengan tim VULN dan sertakan langkah-langkah pemecahan masalah yang telah dicoba sejauh ini.
Muat ulang halaman. Jika Anda melihat layar login, berarti lisensi berhasil diterapkan.
Tenablesc kini telah sepenuhnya di-bootstrap. Langkah-langkah lebih lanjut untuk mengonfigurasi dan menggunakan Tenablesc tersedia dalam manual operator, yang diharapkan akan diselesaikan nanti setelah bootstrap.
33.9.12. Opsional: Uninstal
Bagian ini berisi perintah untuk menghapus deployment Tenable.sc.
Lakukan langkah-langkah berikut untuk menghapus instalasi diagram Helm dari cluster:
Uninstal diagram Helm dari cluster infrastruktur org:
helm uninstall --namespace tenablesc-system tenablesc-system --kubeconfig ${ORG_INFRA_KUBECONFIG:?}Uninstal diagram Helm dari server Management API:
helm uninstall --namespace tenablesc-system tenablesc-admin --kubeconfig ${ORG_MGMT_KUBECONFIG:?}Uninstal diagram Helm untuk VM Tenable SC dari server API pengelolaan:
VIRTUAL_MACHINE_NAME=$(knu get virtualmachine -n tenablesc-system -o custom-columns=NAME:.metadata.name | sort -r -k 1 | head -1) kna patch virtualmachines.virtualmachine.gdc.goog ${VIRTUAL_MACHINE_NAME:?} -n tenablesc-system --type merge --patch '{"spec":{"runningState":"Stopped"}}' helm uninstall tenablesc-vms -n tenablesc-system --kubeconfig ${ORG_MGMT_KUBECONFIG:?}
33.9.13. Penyiapan Tenable.SC
Ikuti NES-G0001 - set up Tenable.SC untuk menyiapkan Tenable.sc.
33.10. Memvalidasi deployment Nessus
Bagian ini menjelaskan langkah-langkah untuk memvalidasi bahwa pengelola dan agen Nessus berjalan dan ditautkan bersama seperti yang diharapkan serta memberikan langkah-langkah untuk memperbaiki potensi masalah umum.
Bagian ini dimaksudkan untuk dijalankan di akhir penginstalan, tetapi sebaiknya juga jalankan langkah-langkah validasi ini sebelum melakukan pemindaian. Langkah-langkah untuk melakukan pemindaian tercakup dalam panduan operator.
Sebelum memulai, ikuti Setel Variabel Lingkungan untuk menyiapkan akses
ke cluster admin root dan tentukan alias command line kra.
33.10.1. Memvalidasi pengelompokan
Cara utama untuk memvalidasi bahwa Nessus Manager dan agen ditautkan bersama adalah melalui UI Nessus Manager utama. Di UI, turunan Nessus harus tercantum dalam grup cluster default pengelompokan agen, dan semua agen Nessus harus tercantum dalam grup agen default.
Dapatkan DNS untuk UI Nessus Manager utama:
echo Nessus Manager UI: https://$(kra get dnsregistration \ -n tenable-nessus-system nessus -o jsonpath='{.status.fqdn}')Buka browser internet dan buka link dari langkah-langkah sebelumnya. Tindakan ini akan mengarahkan Anda ke UI Nessus Manager utama.
Login ke UI Nessus Manager dengan nama pengguna
admindan sandi defaultadmin.Jika terjadi masalah autentikasi saat login, ikuti NES-T0004 untuk mengganti kredensial Nessus dan coba login lagi.
Klik Setelan di bagian atas halaman.
Di halaman Setelan, tinjau informasi Plugin. Jika nilai untuk Plugin Set tidak ditentukan, ikuti NES-T0001 untuk menerapkan kembali plugin set terbaru ke Nessus Manager utama.
Klik Sensor di bagian atas halaman, lalu klik Pengelompokan Agen.
Klik Default Agent Group untuk melihat semua node terdaftar.
Jika grup kosong atau node (instance Nessus turunan) untuk organisasi mana pun tidak ada, instance Nessus turunan harus didaftarkan ulang.