Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation

This commit is contained in:
Translator
2025-12-17 10:13:17 +00:00
parent a3b8d27c11
commit a9a8abc6b6
2 changed files with 167 additions and 63 deletions
@@ -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`
Um atacante com qualquer uma dessas permissões pode **criar ou modificar uma lifecycle policy para excluir todas as imagens no repositório** e então **excluir todo o repositório ECR**. Isso resultaria na perda de todas as imagens de container armazenadas no repositório.
Um atacante com quaisquer dessas permissões pode **criar ou modificar uma política de ciclo de vida para excluir todas as imagens do repositório** e então **excluir todo o repositório ECR**. Isso resultaria na perda de todas as imagens de contêiner armazenadas no repositório.
```bash
# Create a JSON file with the malicious lifecycle policy
echo '{
@@ -90,9 +90,9 @@ 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 PullThrough Cache (PTC)
### Exfiltrate credenciais de registry upstream do ECR PullThrough Cache (PTC)
Se o ECR PullThrough Cache estiver configurado para registries upstream autenticados (Docker Hub, GHCR, ACR, etc.), as credenciais upstream são armazenadas no AWS Secrets Manager com um prefixo de nome previsível: `ecr-pullthroughcache/`. Operadores às vezes concedem aos administradores do ECR amplo acesso de leitura ao Secrets Manager, permitindo a exfiltração de credenciais e seu reuso fora da AWS.
Se o ECR PullThrough Cache estiver configurado para registries upstream autenticados (Docker Hub, GHCR, ACR, etc.), as credenciais upstream são armazenadas no AWS Secrets Manager com um prefixo de nome previsível: `ecr-pullthroughcache/`. Operadores às vezes concedem aos administradores do ECR acesso amplo de leitura ao Secrets Manager, permitindo exfiltration de credenciais e reutilização fora da AWS.
Requisitos
- secretsmanager:ListSecrets
@@ -119,20 +119,20 @@ Opcional: validar leaked creds contra o upstream (login somente leitura)
echo "$DOCKERHUB_PASSWORD" | docker login --username "$DOCKERHUB_USERNAME" --password-stdin registry-1.docker.io
```
Impacto
- A leitura dessas entradas do Secrets Manager fornece credenciais reutilizáveis do registry upstream (nome de usuário/senha ou token), que podem ser abusadas fora da AWS para baixar imagens privadas ou acessar repositórios adicionais dependendo das permissões upstream.
- A leitura dessas entradas do Secrets Manager fornece credenciais reutilizáveis do registry upstream (nome de usuário/senha ou token), que podem ser abusadas fora da AWS para puxar imagens privadas ou acessar repositórios adicionais dependendo das permissões upstream.
### Furtividade em nível de registro: desativar ou rebaixar a verificação via `ecr:PutRegistryScanningConfiguration`
### Registry-level stealth: disable or downgrade scanning via `ecr:PutRegistryScanningConfiguration`
Um atacante com permissões de ECR em nível de registro pode silenciosamente reduzir ou desativar a verificação automática de vulnerabilidades para TODOS os repositórios definindo a configuração de scanning do registro para BASIC sem qualquer regra de scan-on-push. Isso impede que novos envios de imagens sejam verificados automaticamente, ocultando imagens vulneráveis ou maliciosas.
Um atacante com permissões de ECR a nível de registry pode reduzir silenciosamente ou desabilitar o scanning automático de vulnerabilidades para TODOS os repositórios ao configurar a registry scanning configuration como BASIC sem quaisquer regras de scan-on-push. Isso impede que novos pushes de imagens sejam escaneados automaticamente, ocultando imagens vulneráveis ou maliciosas.
Requisitos
Requirements
- ecr:PutRegistryScanningConfiguration
- ecr:GetRegistryScanningConfiguration
- ecr:PutImageScanningConfiguration (opcional, por-repositório)
- ecr:DescribeImages, ecr:DescribeImageScanFindings (verificação)
- ecr:PutImageScanningConfiguration (optional, perrepo)
- ecr:DescribeImages, ecr:DescribeImageScanFindings (verification)
Rebaixamento do registro para manual (sem varreduras automáticas)
Registry-wide downgrade to manual (no auto scans)
```bash
REGION=us-east-1
# Read current config (save to restore later)
@@ -144,7 +144,7 @@ aws ecr put-registry-scanning-configuration \
--scan-type BASIC \
--rules '[]'
```
Teste com um repo e uma imagem
Testar com um repo e image
```bash
acct=$(aws sts get-caller-identity --query Account --output text)
repo=ht-scan-stealth
@@ -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
```
Não recebi o conteúdo do arquivo README.md. Por favor cole aqui o texto (markdown) que deseja que eu traduza para português — sem ele não consigo efetuar a tradução.
Opcional: degradar ainda mais no escopo do repositório
```bash
# Disable scan-on-push for a specific repository
aws ecr put-image-scanning-configuration \
@@ -168,21 +168,21 @@ aws ecr put-image-scanning-configuration \
--image-scanning-configuration scanOnPush=false
```
Impacto
- Novos pushes de imagens em todo o registro não são escaneados automaticamente, reduzindo a visibilidade de conteúdo vulnerável ou malicioso e atrasando a detecção até que um scan manual seja iniciado.
- Novos envios de imagem em todo o registro não são escaneados automaticamente, reduzindo a visibilidade de conteúdo vulnerável ou malicioso e atrasando a detecção até que um scan manual seja iniciado.
### Rebaixamento do motor de varredura em todo o registro via `ecr:PutAccountSetting` (AWS_NATIVE -> CLAIR)
### Rebaixamento do mecanismo de scanning em todo o registro via `ecr:PutAccountSetting` (AWS_NATIVE -> CLAIR)
Reduza a qualidade da detecção de vulnerabilidades em todo o registro ao trocar o motor de scan BASIC do padrão AWS_NATIVE para o motor legado CLAIR. Isso não desabilita o scanning, mas pode alterar materialmente os resultados/cobertura. Combine com uma configuração de scanning de registro BASIC sem regras para tornar os scans somente manuais.
Reduza a qualidade da detecção de vulnerabilidades em todo o registro ao trocar o mecanismo de scan BASIC do padrão AWS_NATIVE para o engine legado CLAIR. Isso não desativa o scanning, mas pode alterar materialmente os resultados/cobertura. Combine com uma configuração de scanning do registro BASIC sem regras para tornar os scans apenas manuais.
Requisitos
- `ecr:PutAccountSetting`, `ecr:GetAccountSetting`
- (Opcional) `ecr:PutRegistryScanningConfiguration`, `ecr:GetRegistryScanningConfiguration`
Impacto
- Configuração do registro `BASIC_SCAN_TYPE_VERSION` definida como `CLAIR`, de modo que scans BASIC subsequentes rodem com o motor rebaixado. CloudTrail registra a chamada de API `PutAccountSetting`.
- Configuração do registro `BASIC_SCAN_TYPE_VERSION` definida como `CLAIR`, de modo que os scans BASIC subsequentes sejam executados com o engine rebaixado. CloudTrail registra a chamada de API `PutAccountSetting`.
Passos
Etapas
```bash
REGION=us-east-1
@@ -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
```
### Escanear imagens do ECR em busca de vulnerabilidades
```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}}
@@ -1,4 +1,4 @@
# Endurecimento do Kubernetes
# Kubernetes Hardening
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,7 +6,7 @@
### [Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance)
Ele realiza **várias verificações de conformidade no cluster Kubernetes**. Inclui suporte para CIS, National Security Agency (NSA) e para o relatório técnico de Cybersecurity da Cybersecurity and Infrastructure Security Agency (CISA) sobre hardening do Kubernetes.
Realiza **várias verificações de conformidade no cluster Kubernetes**. Inclui suporte para CIS, National Security Agency (NSA) e o relatório técnico da Cybersecurity and Infrastructure Security Agency (CISA) sobre Kubernetes hardening.
```bash
# Install Steampipe
brew install turbot/tap/powerpipe
@@ -27,19 +27,19 @@ powerpipe server
```
### [**Kubescape**](https://github.com/armosec/kubescape)
[**Kubescape**](https://github.com/armosec/kubescape) é uma ferramenta K8s de código aberto que fornece um único painel K8s multi-cloud, incluindo análise de risco, compliance de segurança, visualizador de RBAC e varredura de vulnerabilidades em imagens. Kubescape escaneia clusters K8s, arquivos YAML e HELM charts, detectando misconfigurações de acordo com múltiplos frameworks (como o [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/)), vulnerabilidades de software e violações de RBAC (role-based-access-control) em estágios iniciais do pipeline CI/CD, calcula a pontuação de risco instantaneamente e mostra tendências de risco ao longo do tempo.
[**Kubescape**](https://github.com/armosec/kubescape) é uma ferramenta open-source para K8s que fornece um painel unificado multi-cloud, incluindo análise de risco, conformidade de segurança, visualizador de RBAC e varredura de vulnerabilidades em imagens. Kubescape escaneia clusters K8s, arquivos YAML e charts HELM, detectando misconfigurações de acordo com múltiplos frameworks (como o [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/)), vulnerabilidades de software e violações de RBAC (role-based-access-control) nas fases iniciais da pipeline CI/CD, calcula a pontuação de risco instantaneamente e mostra tendências de risco ao longo do tempo.
```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) é uma utilidade que escaneia clusters Kubernetes ao vivo e **relata problemas potenciais com recursos e configurações implantadas**. Ele sanitiza seu cluster com base no que está implantado e não no que está no disco. Ao escanear seu cluster, detecta misconfigurações e ajuda a garantir que as melhores práticas estejam em vigor, evitando dores de cabeça futuras. Tem como objetivo reduzir a \_over_load que se enfrenta ao operar um cluster Kubernetes em ambiente real. Além disso, se seu cluster empregar um metric-server, ele relata potenciais alocações de recursos em excesso/falta e tenta alertar caso seu cluster fique sem capacidade.
[**Popeye**](https://github.com/derailed/popeye) é uma utilidade que analisa clusters Kubernetes em execução e **relata potenciais problemas com recursos e configurações implantadas**. Ele sanitiza seu cluster com base no que está implantado e não no que está em disco. Ao escanear seu cluster, detecta configurações incorretas e ajuda a garantir que as melhores práticas estejam em vigor, prevenindo dores de cabeça futuras. Visa reduzir a sobrecarga cognitiva que se enfrenta ao operar um cluster Kubernetes em produção. Além disso, se seu cluster empregar um metric-server, ele relata possíveis alocações excessivas/insuficientes de recursos e tenta avisar caso seu cluster fique sem capacidade.
### [**Kube-bench**](https://github.com/aquasecurity/kube-bench)
A ferramenta [**kube-bench**](https://github.com/aquasecurity/kube-bench) é uma ferramenta que verifica se o Kubernetes está implantado de forma segura executando as verificações documentadas no [**CIS Kubernetes Benchmark**].\
Você pode escolher:
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/).\
You can choose to:
- 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
@@ -48,28 +48,28 @@ Você pode escolher:
### [**Kubeaudit**](https://github.com/Shopify/kubeaudit)
**[DEPRECATED]** A ferramenta [**kubeaudit**](https://github.com/Shopify/kubeaudit) é uma ferramenta de linha de comando e um pacote Go para **auditar clusters Kubernetes** por várias preocupações diferentes.
**[DEPRECATED]** The tool [**kubeaudit**](https://github.com/Shopify/kubeaudit) is a command line tool and a Go package to **audit Kubernetes clusters** for various different security concerns.
Kubeaudit pode detectar se está sendo executado dentro de um container em um cluster. Se sim, ele tentará auditar todos os recursos Kubernetes nesse cluster:
Kubeaudit can detect if it is running within a container in a cluster. If so, it will try to audit all Kubernetes resources in that cluster:
```
kubeaudit all
```
Esta ferramenta também possui o argumento `autofix` para **corrigir automaticamente os problemas detectados.**
Esta ferramenta também tem o argumento `autofix` para **corrigir automaticamente problemas detectados.**
### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter)
**[DEPRECADO]** A ferramenta [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) procura por vulnerabilidades de segurança em clusters Kubernetes. A ferramenta foi desenvolvida para aumentar a conscientização e a visibilidade sobre problemas de segurança em ambientes Kubernetes.
**[OBSOLETO]** A ferramenta [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) procura por vulnerabilidades de segurança em clusters Kubernetes. A ferramenta foi desenvolvida para aumentar a conscientização e a visibilidade sobre problemas de segurança em ambientes Kubernetes.
```bash
kube-hunter --remote some.node.com
```
### [Trivy](https://github.com/aquasecurity/trivy)
[Trivy](https://github.com/aquasecurity/trivy) possui scanners que procuram por problemas de segurança, e alvos onde ele pode encontrar esses problemas:
[Trivy](https://github.com/aquasecurity/trivy) possui scanners que procuram por problemas de segurança e alvos onde pode encontrar essas questões:
- Imagem de Container
- Imagem de contêiner
- Sistema de arquivos
- Repositório Git (remoto)
- Imagem de Máquina Virtual
- Imagem de máquina virtual
- Kubernetes
@@ -77,7 +77,7 @@ kube-hunter --remote some.node.com
**[Parece descontinuado]**
[**Kubei**](https://github.com/Erezf-p/kubei) é uma ferramenta de scanning de vulnerabilidades e CIS Docker benchmark que permite aos usuários obter uma avaliação de risco precisa e imediata de seus clusters kubernetes. Kubei escaneia todas as imagens que estão sendo usadas em um cluster Kubernetes, incluindo imagens de pods de aplicação e pods do sistema.
[**Kubei**](https://github.com/Erezf-p/kubei) é uma ferramenta de escaneamento de vulnerabilidades e CIS Docker benchmark que permite aos usuários obter uma avaliação de risco precisa e imediata de seus clusters do Kubernetes. Kubei escaneia todas as imagens que estão sendo usadas em um cluster Kubernetes, incluindo imagens de pods de aplicação e pods do sistema.
### [**KubiScan**](https://github.com/cyberark/KubiScan)
@@ -85,29 +85,29 @@ kube-hunter --remote some.node.com
### [Managed Kubernetes Auditing Toolkit](https://github.com/DataDog/managed-kubernetes-auditing-toolkit)
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) é uma ferramenta construída para testar outros tipos de verificações de alto risco em comparação com as outras ferramentas. Ela possui principalmente 3 modos diferentes:
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) é uma ferramenta construída para testar outros tipos de verificações de alto risco comparada com as outras ferramentas. Ela possui principalmente 3 modos diferentes:
- **`find-role-relationships`**: Que encontrará quais AWS roles estão sendo executadas em quais pods
- **`find-secrets`**: Que tenta identificar Secrets em recursos K8s, como Pods, ConfigMaps e Secrets.
- **`test-imds-access`**: Que tentará executar pods e acessar o metadata v1 e v2. AVISO: Isto executará um pod no cluster; tenha muito cuidado, pois talvez você não queira fazer isso!
- **`find-secrets`**: Que tenta identificar segredos em recursos K8s como Pods, ConfigMaps e Secrets.
- **`test-imds-access`**: Que tentará executar pods e tentar acessar o metadata v1 e v2. AVISO: Isto irá executar um pod no cluster; tenha muito cuidado porque talvez você não queira fazer isso!
## **Auditar código IaC**
### [**KICS**](https://github.com/Checkmarx/kics)
[**KICS**](https://github.com/Checkmarx/kics) encontra vulnerabilidades de segurança, problemas de conformidade e más configurações de infraestrutura nas seguintes soluções de Infraestrutura como Código: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, e especificações OpenAPI 3.0
[**KICS**](https://github.com/Checkmarx/kics) encontra **vulnerabilidades de segurança**, problemas de conformidade e configurações incorretas de infraestrutura nas seguintes **soluções de Infrastructure as Code**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM e especificações OpenAPI 3.0
### [**Checkov**](https://github.com/bridgecrewio/checkov)
[**Checkov**](https://github.com/bridgecrewio/checkov) é uma ferramenta de análise estática de código para infraestrutura como código.
Ele escaneia infraestrutura de nuvem provisionada usando [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) ou [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) e detecta más configurações de segurança e conformidade usando varredura baseada em grafo.
Ele escaneia infraestrutura em nuvem provisionada usando [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) ou [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) e detecta configurações incorretas de segurança e conformidade usando análise baseada em grafo.
### [**Kube-score**](https://github.com/zegl/kube-score)
[**kube-score**](https://github.com/zegl/kube-score) é uma ferramenta que realiza análise estática de código das definições de objetos do seu Kubernetes.
[**kube-score**](https://github.com/zegl/kube-score) é uma ferramenta que realiza análise estática de código das suas definições de objetos do Kubernetes.
To install:
Para instalar:
| Distribution | Command / Link |
| --------------------------------------------------- | --------------------------------------------------------------------------------------- |
@@ -116,7 +116,7 @@ To install:
| Homebrew (macOS and Linux) | `brew install kube-score` |
| [Krew](https://krew.sigs.k8s.io/) (macOS and Linux) | `kubectl krew install score` |
## Ferramentas para analisar arquivos YAML & Helm Charts
## Tools to analyze YAML files & Helm Charts
### [**Kube-linter**](https://github.com/stackrox/kube-linter)
```bash
@@ -162,9 +162,81 @@ helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kubesec scan -
```
## Escanear problemas de dependência
### Escanear imagens
```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
```
### Escanear 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."
```
## Dicas
### Kubernetes PodSecurityContext and SecurityContext
### Kubernetes PodSecurityContext e SecurityContext
Você pode configurar o **contexto de segurança dos Pods** (com _PodSecurityContext_) e dos **containers** que serão executados (com _SecurityContext_). Para mais informações leia:
@@ -174,25 +246,25 @@ kubernetes-securitycontext-s.md
### Endurecimento da API do Kubernetes
É muito importante **proteger o acesso ao Kubernetes Api Server**, pois um ator malicioso com privilégios suficientes poderia abusar dele e causar muitos danos ao ambiente.
É importante proteger tanto o **acesso** (**whitelist** as origens que podem acessar o API Server e negar qualquer outra conexão) quanto a [**autenticação**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (seguindo o princípio do **mínimo** **privilégio**). E definitivamente **nunca** **permita** **requisições** **anônimas**.
É muito importante **proteger o acesso ao Kubernetes Api Server** pois um ator malicioso com privilégios suficientes pode abusar dele e danificar o ambiente de várias formas.
É importante proteger tanto o **acesso** (**whitelist** origens para acessar o API Server e negar qualquer outra conexão) quanto a [**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (seguindo o princípio do **menor** **privilégio**). E definitivamente **nunca** **permitir** **requisições** **anônimas**.
Processo comum de requisição:
**Processo comum de requisição:**
User or K8s ServiceAccount > Authentication > Authorization > Admission Control.
**Dicas**:
- Feche portas.
- Evite acesso anônimo.
- NodeRestriction; Sem acesso de nós específicos à API.
- Fechar portas.
- Evitar acesso anônimo.
- NodeRestriction; negar acesso de determinados nós à API.
- [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction)
- Basicamente previne que kubelets adicionem/removam/atualizem labels com o prefixo node-restriction.kubernetes.io/. Esse prefixo de label é reservado para administradores rotularem seus objetos Node para fins de isolamento de workload, e os kubelets não poderão modificar labels com esse prefixo.
- Basicamente impede que kubelets adicionem/removam/atualizem labels com o prefixo node-restriction.kubernetes.io/. Esse prefixo de label é reservado para administradores rotularem seus objetos Node para fins de isolamento de workloads, e kubelets não serão autorizados a modificar labels com esse prefixo.
- E também, permite que kubelets adicionem/removam/atualizem esses labels e prefixos de label.
- Assegure, com labels, o isolamento seguro das workloads.
- Evite que pods específicos tenham acesso à API.
- Evite a exposição do ApiServer à Internet.
- Evite acesso não autorizado via RBAC.
- Proteja a porta do ApiServer com firewall e whitelist de IPs.
- Garanta, com labels, o isolamento seguro de workloads.
- Evitar que pods específicos acessem a API.
- Evitar exposição do ApiServer na internet.
- Evitar acesso não autorizado via RBAC.
- Proteja a porta do ApiServer com firewall e IP whitelisting.
### Endurecimento do SecurityContext
@@ -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/)
### Endurecimento Geral
### Endurecimento geral
Você deve atualizar seu ambiente Kubernetes com a frequência necessária para ter:
- Dependências atualizadas.
- Correções de bugs e de segurança.
[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): A cada 3 meses há um novo minor release -- 1.20.3 = 1(Major).20(Minor).3(patch)
[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): A cada 3 meses há um novo lançamento minor -- 1.20.3 = 1(Major).20(Minor).3(patch)
**A melhor forma de atualizar um Kubernetes Cluster é (a partir de** [**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):**
**A melhor maneira de atualizar um Kubernetes Cluster é (a partir de** [**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):**
- Atualize os componentes do Master Node seguindo esta sequência:
- etcd (all instances).
- kube-apiserver (all control plane hosts).
- etcd (todas as instâncias).
- kube-apiserver (todos os hosts do plano de controle).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, if you use one.
- Atualize os componentes dos Worker Nodes como kube-proxy, kubelet.
- cloud controller manager, se você usar um.
- Atualize os componentes dos Worker Nodes, como kube-proxy e kubelet.
## Kubernetes monitoring & security:
## Monitoramento e segurança do Kubernetes:
- Kyverno Policy Engine
- Cilium Tetragon - eBPF-based Security Observability and Runtime Enforcement
- Network Security Policies
- Falco - Runtime security monitoring & detection
- Cilium Tetragon - Observabilidade de segurança baseada em eBPF e aplicação em tempo de execução
- Políticas de Segurança de Rede
- Falco - monitoramento e detecção de segurança em tempo de execução
{{#include ../../../banners/hacktricks-training.md}}