Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Remediasi EKS temuan Perlindungan
Amazon GuardDuty menghasilkan temuan yang menunjukkan potensi masalah keamanan Kubernetes saat EKS Perlindungan diaktifkan untuk akun Anda. Untuk informasi selengkapnya, lihat Perlindungan 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 ada jenis temuan EKS Perlindungan yang dihasilkan secara diharapkan, Anda dapat mempertimbangkan Aturan penindasan di GuardDuty untuk menambahkan untuk mencegah peringatan di masa mendatang.
Berbagai jenis serangan dan masalah konfigurasi dapat memicu temuan GuardDuty EKS Perlindungan. 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 EKS Pengguna Amazon.
Masalah konfigurasi potensial
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:
-
Temuan apa pun yang berakhir di SuccessfulAnonymousAccess
Memulihkan pengguna Kubernetes yang berpotensi dikompromikan
GuardDuty Temuan dapat menunjukkan pengguna Kubernetes yang disusupi ketika pengguna yang diidentifikasi dalam temuan telah melakukan tindakan yang tidak terduga. API Anda dapat mengidentifikasi pengguna di bagian detail pengguna Kubernetes dari detail temuan di konsol, atau di resource.kubernetesDetails.kubernetesUserDetails
temuan. JSON Detail pengguna ini mencakupuser name
,uid
, dan grup Kubernetes yang menjadi milik pengguna.
Jika pengguna mengakses beban kerja menggunakan IAM entitas, Anda dapat menggunakan Access Key details
bagian tersebut untuk mengidentifikasi detail IAM peran atau pengguna. Lihat jenis pengguna berikut dan panduan remediasinya.
catatan
Anda dapat menggunakan Amazon Detective untuk menyelidiki lebih lanjut IAM peran 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 IAM identitas yang membuat cluster. Jenis pengguna ini diidentifikasi oleh nama pengguna
kubernetes-admin
. -
Untuk mencabut akses admin Kubernetes bawaan:
-
Identifikasi
userType
dariAccess Key details
bagian.-
Jika Peran
userType
is dan peran tersebut termasuk dalam peran EC2 instance:-
Identifikasi contoh itu kemudian ikuti instruksi diMemperbaiki instans Amazon yang berpotensi dikompromikan EC2.
-
-
Jika
userType
adalah Pengguna, atau Peran yang diasumsikan oleh pengguna:-
Putar tombol akses pengguna tersebut.
-
Putar rahasia apa pun yang dapat diakses pengguna.
-
Tinjau informasi di My Akun AWS dapat dikompromikan
untuk rincian lebih lanjut.
-
-
-
- OIDCpengguna yang diautentikasi — Pengguna diberikan akses melalui OIDC penyedia. Biasanya OIDC pengguna memiliki alamat email sebagai nama pengguna. Anda dapat memeriksa apakah cluster Anda menggunakan OIDC perintah berikut:
aws eks list-identity-provider-configs --cluster-name
your-cluster-name
-
Untuk mencabut akses pengguna yang OIDC diautentikasi:
-
Putar kredensi pengguna tersebut di penyedia. OIDC
-
Putar rahasia apa pun yang dapat diakses pengguna.
-
- AWS-Auth ConfigMap defined user — IAM Pengguna yang diberikan akses melalui AWS-auth. ConfigMap Untuk informasi selengkapnya, lihat Mengelola pengguna atau IAM peran 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
-
Gunakan perintah berikut untuk membuka ConfigMap.
kubectl edit configmaps aws-auth --namespace kube-system
-
Identifikasi peran atau entri pengguna di bawah mapUsersbagian mapRolesatau 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 -
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
-
Jika
userType
adalah Pengguna, atau Peran yang diasumsikan oleh pengguna:-
Putar tombol akses pengguna tersebut.
-
Putar rahasia apa pun yang dapat diakses pengguna.
-
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:
-
Putar kredenal akun layanan.
-
Tinjau panduan untuk kompromi pod di bagian berikut.
-
Memperbaiki 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 dalamresource.kubernetesDetails.kubernetesWorkloadDetails
bagian ini adalah pod, temuan tersebut mengidentifikasi satu pod. Field name adalahname
dari pod dannamespace
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 dalamresource.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 EKS terbaik Amazon
Untuk memulihkan pod yang berpotensi dikompromikan:
-
Identifikasi kerentanan yang mengganggu pod.
-
Terapkan perbaikan untuk kerentanan itu dan mulai pod pengganti baru.
-
Hapus pod yang rentan.
Untuk informasi selengkapnya, lihat Menerapkan ulang pod atau sumber daya beban kerja yang dikompromikan
.
Jika node pekerja telah diberi IAM peran yang memungkinkan Pod mendapatkan akses ke AWS sumber daya lain, hapus peran tersebut dari instance untuk mencegah kerusakan lebih lanjut dari serangan tersebut. Demikian pula, jika Pod telah diberi IAM peran, evaluasi apakah Anda dapat menghapus IAM kebijakan 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:
-
Berhenti menggunakan gambar segera dan hapus dari repositori gambar Anda.
-
Identifikasi semua pod menggunakan gambar yang berpotensi dikompromikan.
Untuk informasi selengkapnya, lihat Mengidentifikasi pod dengan image container dan node pekerja yang berpotensi rentan atau dikompromikan
. -
Isolasi pod yang berpotensi dikompromikan, putar kredensialnya, dan kumpulkan data untuk dianalisis. Untuk informasi selengkapnya, lihat panduan praktik EKS terbaik Amazon
. -
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 Kubernetes. API
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:
-
Isolasi pod, putar kredensialnya, dan kumpulkan data untuk analisis forensik.
Untuk informasi selengkapnya, lihat panduan praktik EKS terbaik Amazon
. -
Identifikasi akun layanan yang digunakan oleh semua pod yang berjalan pada node yang berpotensi dikompromikan. Tinjau izin mereka dan putar akun layanan jika diperlukan.
-
Hentikan node yang berpotensi dikompromikan.