Memediasi temuan Pemantauan Log Audit EKS - Amazon GuardDuty

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memediasi temuan Pemantauan Log Audit EKS

Amazon GuardDuty menghasilkan temuan yang menunjukkan potensi masalah keamanan Kubernetes saat Pemantauan Log Audit EKS diaktifkan untuk akun Anda. Untuk informasi selengkapnya, lihat Pemantauan Log Audit EKS. Bagian berikut menjelaskan langkah-langkah perbaikan yang disarankan untuk skenario ini. Tindakan remediasi khusus dijelaskan dalam entri untuk jenis temuan spesifik tersebut. Anda dapat mengakses informasi selengkapnya tentang tipe temuan dengan memilihnya dari tabel Tipe temuan aktif.

Jika salah satu jenis temuan Pemantauan Log Audit EKS dihasilkan secara diharapkan, Anda dapat mempertimbangkan Aturan penekanan untuk menambahkan untuk mencegah peringatan di masa mendatang.

Berbagai jenis serangan dan masalah konfigurasi dapat memicu temuan GuardDuty Kubernetes. Panduan ini membantu Anda mengidentifikasi akar penyebab GuardDuty temuan terhadap cluster Anda dan menguraikan panduan remediasi yang tepat. Berikut ini adalah akar penyebab utama yang mengarah pada temuan GuardDuty Kubernetes:

catatan

Sebelum Kubernetes versi 1.14, system:unauthenticated grup ini dikaitkan dengan dan secara default. system:discovery system:basic-user ClusterRoles Ini memungkinkan akses yang tidak diinginkan dari pengguna anonim. Pembaruan klaster tidak mencabut izin ini, yang berarti bahwa meskipun Anda telah memperbarui klaster Anda ke versi 1.14 atau yang lebih baru, izin ini mungkin masih ada. Kami menyarankan Anda untuk memisahkan izin ini dari grup. system:unauthenticated

Untuk informasi selengkapnya tentang menghapus izin ini, lihat Praktik terbaik keamanan untuk Amazon EKS di Panduan Pengguna Amazon EKS.

Potensi masalah konfigurasi

Jika temuan menunjukkan masalah konfigurasi, lihat bagian remediasi dari temuan tersebut untuk panduan penyelesaian masalah tertentu. Untuk informasi selengkapnya, lihat jenis temuan berikut yang menunjukkan masalah konfigurasi:

Memulihkan pengguna Kubernetes yang berpotensi dikompromikan

GuardDuty Temuan dapat menunjukkan pengguna Kubernetes yang disusupi ketika pengguna yang diidentifikasi dalam temuan tersebut telah melakukan tindakan API yang tidak terduga. Anda dapat mengidentifikasi pengguna di bagian detail pengguna Kubernetes dari detail temuan di konsol, atau di temuan resources.eksClusterDetails.kubernetesDetails.kubernetesUserDetails JSON. Detail pengguna ini mencakupuser name,uid, dan grup Kubernetes yang menjadi milik pengguna.

Jika pengguna mengakses beban kerja menggunakan entitas IAM, Anda dapat menggunakan Access Key details bagian tersebut untuk mengidentifikasi detail peran IAM atau pengguna. Lihat jenis pengguna berikut dan panduan remediasinya.

catatan

Anda dapat menggunakan Amazon Detective untuk menyelidiki lebih lanjut peran IAM atau pengguna yang diidentifikasi dalam temuan tersebut. Saat melihat detail temuan di GuardDuty konsol, pilih Selidiki di Detektif. Kemudian pilih AWS pengguna atau peran dari item yang terdaftar untuk menyelidikinya di Detektif.

Admin Kubernetes bawaan — Pengguna default yang ditetapkan oleh Amazon EKS ke identitas IAM yang membuat cluster. Jenis pengguna ini diidentifikasi oleh nama penggunakubernetes-admin.

Untuk mencabut akses admin Kubernetes bawaan:

Pengguna yang diautentikasi OIDC — Pengguna diberikan akses melalui penyedia OIDC. Biasanya pengguna OIDC memiliki alamat email sebagai nama pengguna. Anda dapat memeriksa apakah cluster Anda menggunakan OIDC dengan perintah berikut: aws eks list-identity-provider-configs --cluster-name your-cluster-name

Untuk mencabut akses pengguna yang diautentikasi OIDC:

  1. Putar kredensi pengguna tersebut di penyedia OIDC.

  2. Putar rahasia apa pun yang dapat diakses pengguna.

AWS-Auth ConfigMap defined user — Pengguna IAM yang diberikan akses melalui -auth. AWSConfigMap Untuk informasi selengkapnya, lihat Mengelola pengguna atau peran IAM untuk klaster Anda di panduan pengguna &EKS;. Anda dapat meninjau izin mereka menggunakan perintah berikut: kubectl edit configmaps aws-auth --namespace kube-system

Untuk mencabut akses pengguna: AWS ConfigMap

  1. Gunakan perintah berikut untuk membuka ConfigMap.

    kubectl edit configmaps aws-auth --namespace kube-system
  2. Identifikasi peran atau entri pengguna di bagian MapRoles atau MapUsers dengan nama pengguna yang sama seperti yang dilaporkan di bagian detail pengguna Kubernetes pada temuan Anda. GuardDuty Lihat contoh berikut, di mana pengguna admin telah diidentifikasi dalam sebuah temuan.

    apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::444455556666:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF user name: system:node:EC2_PrivateDNSName groups: - system:bootstrappers - system:nodes mapUsers: | - userarn: arn:aws:iam::123456789012:user/admin username: admin groups: - system:masters - userarn: arn:aws:iam::111122223333:user/ops-user username: ops-user groups: - system:masters
  3. Hapus pengguna itu dari ConfigMap. Lihat contoh berikut di mana pengguna admin telah dihapus.

    apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes mapUsers: | - userarn: arn:aws:iam::111122223333:user/ops-user username: ops-user groups: - system:masters
  4. Jika userType adalah Pengguna, atau Peran yang diasumsikan oleh pengguna:

    1. Putar tombol akses pengguna tersebut.

    2. Putar rahasia apa pun yang dapat diakses pengguna.

    3. Meninjau informasi di AWS Akun saya dapat dikompromikan untuk rincian lebih lanjut.

Jika temuan tidak memiliki resource.accessKeyDetails bagian, pengguna adalah akun layanan Kubernetes.

Akun layanan — Akun layanan menyediakan identitas untuk pod dan dapat diidentifikasi dengan nama pengguna dengan format berikut:system:serviceaccount:namespace:service_account_name.

Untuk mencabut akses ke akun layanan:

  1. Putar kredenal akun layanan.

  2. Tinjau panduan untuk kompromi pod di bagian berikut.

Remediasi pod Kubernetes yang berpotensi dikompromikan

Saat GuardDuty menentukan detail pod atau sumber daya beban kerja di dalam resource.kubernetesDetails.kubernetesWorkloadDetails bagian tersebut, pod atau sumber daya beban kerja tersebut berpotensi dikompromikan. Sebuah GuardDuty temuan dapat menunjukkan bahwa satu pod telah dikompromikan atau bahwa beberapa pod telah dikompromikan melalui sumber daya tingkat yang lebih tinggi. Lihat skenario kompromi berikut untuk panduan tentang cara mengidentifikasi pod atau pod yang telah disusupi.

Kompromi pod tunggal

Jika type bidang di dalam resource.kubernetesDetails.kubernetesWorkloadDetails bagian ini adalah pod, temuan tersebut mengidentifikasi satu pod. Field name adalah name dari pod dan namespace field adalah namespace-nya.

Untuk informasi tentang mengidentifikasi node pekerja yang menjalankan pod, lihat Mengidentifikasi pod yang menyinggung dan node pekerja.

Pod dikompromikan melalui sumber daya beban kerja

Jika type bidang di dalam resource.kubernetesDetails.kubernetesWorkloadDetails bagian mengidentifikasi Sumber Daya Beban Kerja, seperti aDeployment, kemungkinan semua pod dalam sumber daya beban kerja tersebut telah dikompromikan.

Untuk informasi tentang mengidentifikasi semua Pod dari sumber daya beban kerja dan node yang dijalankannya, lihat Mengidentifikasi Pod yang menyinggung dan node pekerja menggunakan nama beban kerja.

Pod dikompromikan melalui akun layanan

Jika GuardDuty temuan mengidentifikasi Akun Layanan di resource.kubernetesDetails.kubernetesUserDetails bagian tersebut, kemungkinan pod yang menggunakan akun layanan yang diidentifikasi akan disusupi. Nama pengguna yang dilaporkan oleh temuan adalah akun layanan jika memiliki format berikut:system:serviceaccount:namespace:service_account_name.

Untuk informasi tentang mengidentifikasi semua pod menggunakan akun layanan dan node yang dijalankannya, lihat Mengidentifikasi Pod yang menyinggung dan node pekerja menggunakan nama akun layanan.

Setelah Anda mengidentifikasi semua pod yang dikompromikan dan node tempat mereka berjalan, lihat panduan praktik terbaik Amazon EKS untuk mengisolasi pod, memutar kredensialnya, dan mengumpulkan data untuk analisis forensik.

Untuk memulihkan pod yang berpotensi dikompromikan:
  1. Identifikasi kerentanan yang mengganggu pod.

  2. Terapkan perbaikan untuk kerentanan itu dan mulai pod pengganti baru.

  3. Hapus pod yang rentan.

    Untuk informasi selengkapnya, lihat Menerapkan ulang pod atau sumber daya beban kerja yang dikompromikan.

Jika node pekerja telah diberi peran IAM yang memungkinkan Pod mendapatkan akses ke AWS sumber daya lain, hapus peran tersebut dari instance untuk mencegah kerusakan lebih lanjut dari serangan. Demikian pula, jika Pod telah diberi peran IAM, evaluasi apakah Anda dapat menghapus kebijakan IAM dari peran dengan aman tanpa memengaruhi beban kerja lainnya.

Memulihkan gambar kontainer yang berpotensi dikompromikan

Ketika sebuah GuardDuty temuan menunjukkan kompromi pod, gambar yang digunakan untuk meluncurkan pod berpotensi berbahaya atau dikompromikan. GuardDuty temuan mengidentifikasi gambar kontainer di dalam resource.kubernetesDetails.kubernetesWorkloadDetails.containers.image lapangan. Anda dapat menentukan apakah gambar tersebut berbahaya dengan memindai malware.

Untuk memulihkan gambar kontainer yang berpotensi dikompromikan:
  1. Berhenti menggunakan gambar segera dan hapus dari repositori gambar Anda.

  2. Identifikasi semua pod menggunakan gambar yang berpotensi dikompromikan.

    Untuk informasi selengkapnya, lihat Mengidentifikasi pod dengan image kontainer dan node pekerja yang berpotensi rentan atau dikompromikan.

  3. Isolasi pod yang berpotensi dikompromikan, putar kredensialnya, dan kumpulkan data untuk dianalisis. Untuk informasi selengkapnya, lihat panduan praktik terbaik Amazon EKS.

  4. Hapus semua pod menggunakan gambar yang berpotensi dikompromikan.

Remediasi node Kubernetes yang berpotensi dikompromikan

GuardDuty Temuan dapat menunjukkan kompromi node jika pengguna yang diidentifikasi dalam temuan mewakili identitas node atau jika temuan menunjukkan penggunaan wadah istimewa.

Identitas pengguna adalah node pekerja jika bidang nama pengguna memiliki format berikut:system:node:node name. Misalnya, system:node:ip-192-168-3-201.ec2.internal. Hal ini menunjukkan bahwa musuh telah memperoleh akses ke node dan menggunakan kredenal node untuk berbicara dengan titik akhir API Kubernetes.

Temuan menunjukkan penggunaan wadah istimewa jika satu atau lebih kontainer yang tercantum dalam temuan memiliki bidang resource.kubernetesDetails.kubernetesWorkloadDetails.containers.securityContext.privileged temuan yang disetel keTrue.

Untuk memulihkan node yang berpotensi dikompromikan:
  1. Isolasi pod, putar kredensialnya, dan kumpulkan data untuk analisis forensik.

    Untuk informasi selengkapnya, lihat panduan praktik terbaik Amazon EKS.

  2. Identifikasi akun layanan yang digunakan oleh semua pod yang berjalan pada node yang berpotensi dikompromikan. Tinjau izin mereka dan putar akun layanan jika diperlukan.

  3. Hentikan node yang berpotensi dikompromikan.