mirror of
https://github.com/aquasecurity/kube-bench.git
synced 2025-02-22 20:42:08 +00:00
Add fixes in master TCs and docs
This commit is contained in:
parent
3bce117071
commit
1ae58e3e97
@ -220,20 +220,15 @@ groups:
|
|||||||
# For CNI multus
|
# For CNI multus
|
||||||
# Get the pod name in the openshift-multus namespace
|
# Get the pod name in the openshift-multus namespace
|
||||||
POD_NAME=$(oc get pods -n openshift-multus -l app=multus --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
POD_NAME=$(oc get pods -n openshift-multus -l app=multus --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
||||||
|
if [ -n "$POD_NAME" ]; then
|
||||||
if [ -z "$POD_NAME" ]; then
|
|
||||||
echo "No matching pods found on the current node."
|
|
||||||
else
|
|
||||||
# Execute the stat command
|
# Execute the stat command
|
||||||
oc exec -n openshift-multus "$POD_NAME" -- /bin/bash -c "stat -c \"$i %n permissions=%a\" /host/etc/cni/net.d/*.conf"; 2>/dev/null
|
oc exec -n openshift-multus "$POD_NAME" -- /bin/bash -c "stat -c \"$i %n permissions=%a\" /host/etc/cni/net.d/*.conf" 2>/dev/null
|
||||||
oc exec -n openshift-multus "$POD_NAME" -- /bin/bash -c "stat -c \"$i %n permissions=%a\" /host/var/run/multus/cni/net.d/*.conf"; 2>/dev/null
|
oc exec -n openshift-multus "$POD_NAME" -- /bin/bash -c "stat -c \"$i %n permissions=%a\" /host/var/run/multus/cni/net.d/*.conf" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For SDN pods
|
# For SDN pods
|
||||||
POD_NAME=$(oc get pods -n openshift-sdn -l app=sdn --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
POD_NAME=$(oc get pods -n openshift-sdn -l app=sdn --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
||||||
|
if [ -n "$POD_NAME" ]; then
|
||||||
if [ -z "$POD_NAME" ]; then
|
|
||||||
echo "No matching pods found on the current node."
|
|
||||||
else
|
|
||||||
# Execute the stat command
|
# Execute the stat command
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /var/lib/cni/networks/openshift-sdn -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /var/lib/cni/networks/openshift-sdn -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openshift-sdn -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openshift-sdn -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
||||||
@ -241,10 +236,7 @@ groups:
|
|||||||
|
|
||||||
# For OVS pods
|
# For OVS pods
|
||||||
POD_NAME=$(oc get pods -n openshift-sdn -l app=ovs --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
POD_NAME=$(oc get pods -n openshift-sdn -l app=ovs --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
||||||
|
if [ -n "$POD_NAME" ]; then
|
||||||
if [ -z "$POD_NAME" ]; then
|
|
||||||
echo "No matching pods found on the current node."
|
|
||||||
else
|
|
||||||
# Execute the stat command
|
# Execute the stat command
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openvswitch -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openvswitch -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /etc/openvswitch -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /etc/openvswitch -type f -exec stat -c "$i %n permissions=%a" {} \; 2>/dev/null
|
||||||
@ -266,33 +258,27 @@ groups:
|
|||||||
audit: |
|
audit: |
|
||||||
# Get the node name where the pod is running
|
# Get the node name where the pod is running
|
||||||
NODE_NAME=$(oc get pod "$HOSTNAME" -o=jsonpath='{.spec.nodeName}')
|
NODE_NAME=$(oc get pod "$HOSTNAME" -o=jsonpath='{.spec.nodeName}')
|
||||||
|
|
||||||
# For CNI multus
|
# For CNI multus
|
||||||
# Get the pod name in the openshift-multus namespace
|
# Get the pod name in the openshift-multus namespace
|
||||||
POD_NAME=$(oc get pods -n openshift-multus -l app=multus --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
POD_NAME=$(oc get pods -n openshift-multus -l app=multus --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
||||||
|
if [ -n "$POD_NAME" ]; then
|
||||||
if [ -z "$POD_NAME" ]; then
|
|
||||||
echo "No matching pods found on the current node."
|
|
||||||
else
|
|
||||||
# Execute the stat command
|
# Execute the stat command
|
||||||
oc exec -n openshift-multus "$POD_NAME" -- /bin/bash -c "stat -c '$i %n %U:%G' /host/etc/cni/net.d/*.conf" 2>/dev/null
|
oc exec -n openshift-multus "$POD_NAME" -- /bin/bash -c "stat -c '$i %n %U:%G' /host/etc/cni/net.d/*.conf" 2>/dev/null
|
||||||
oc exec -n openshift-multus $i -- /bin/bash -c "stat -c '$i %n %U:%G' /host/var/run/multus/cni/net.d/*.conf" 2>/dev/null
|
oc exec -n openshift-multus $i -- /bin/bash -c "stat -c '$i %n %U:%G' /host/var/run/multus/cni/net.d/*.conf" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For SDN pods
|
# For SDN pods
|
||||||
POD_NAME=$(oc get pods -n openshift-sdn -l app=sdn --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
POD_NAME=$(oc get pods -n openshift-sdn -l app=sdn --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
||||||
|
if [ -n "$POD_NAME" ]; then
|
||||||
if [ -z "$POD_NAME" ]; then
|
|
||||||
echo "No matching pods found on the current node."
|
|
||||||
else
|
|
||||||
# Execute the stat command
|
# Execute the stat command
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /var/lib/cni/networks/openshift-sdn -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /var/lib/cni/networks/openshift-sdn -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openshift-sdn -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openshift-sdn -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For OVS pods in 4.5
|
# For OVS pods in 4.5
|
||||||
POD_NAME=$(oc get pods -n openshift-sdn -l app=ovs --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
POD_NAME=$(oc get pods -n openshift-sdn -l app=ovs --field-selector spec.nodeName="$NODE_NAME" -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
|
||||||
|
if [ -n "$POD_NAME" ]; then
|
||||||
if [ -z "$POD_NAME" ]; then
|
|
||||||
echo "No matching pods found on the current node."
|
|
||||||
else
|
|
||||||
# Execute the stat command
|
# Execute the stat command
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openvswitch -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /var/run/openvswitch -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
||||||
oc exec -n openshift-sdn "$POD_NAME" -- find /etc/openvswitch -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
oc exec -n openshift-sdn "$POD_NAME" -- find /etc/openvswitch -type f -exec stat -c "$i %n %U:%G" {} \; 2>/dev/null
|
||||||
@ -613,9 +599,9 @@ groups:
|
|||||||
text: "Ensure that the --token-auth-file parameter is not set (Manual)"
|
text: "Ensure that the --token-auth-file parameter is not set (Manual)"
|
||||||
audit: |
|
audit: |
|
||||||
# Verify that the token-auth-file flag is not present
|
# Verify that the token-auth-file flag is not present
|
||||||
oc get configmap config -n openshift-kube-apiserver -ojson | jq -r '.data["config.yaml"]' | jq '.apiServerArguments'
|
oc get configmap config -n openshift-kube-apiserver -ojson | jq -r '.data["config.yaml"]' | jq '.apiServerArguments' | grep --color "token-auth-file"
|
||||||
oc get configmap config -n openshift-apiserver -ojson | jq -r '.data["config.yaml"]' | jq '.apiServerArguments'
|
oc get configmap config -n openshift-apiserver -ojson | jq -r '.data["config.yaml"]' | jq '.apiServerArguments' | grep --color "token-auth-file"
|
||||||
oc get kubeapiservers.operator.openshift.io cluster -o json | jq '.spec.observedConfig.apiServerArguments'
|
oc get kubeapiservers.operator.openshift.io cluster -o json | jq '.spec.observedConfig.apiServerArguments' | grep --color "token-auth-file"
|
||||||
#Verify that the authentication operator is running
|
#Verify that the authentication operator is running
|
||||||
oc get clusteroperator authentication | awk '$3 != "AVAILABLE" { if ($3){print "available=true"}else{print "available=false"} }'
|
oc get clusteroperator authentication | awk '$3 != "AVAILABLE" { if ($3){print "available=true"}else{print "available=false"} }'
|
||||||
tests:
|
tests:
|
||||||
@ -639,8 +625,8 @@ groups:
|
|||||||
tests:
|
tests:
|
||||||
bin_op: and
|
bin_op: and
|
||||||
test_items:
|
test_items:
|
||||||
- flag: "/etc/kubernetes/static-pod-resources/secrets/kubelet-client/tls.crt"
|
- flag: "/etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/kubelet-client/tls.crt"
|
||||||
- flag: "/etc/kubernetes/static-pod-resources/secrets/kubelet-client/tls.key"
|
- flag: "/etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/kubelet-client/tls.key"
|
||||||
remediation: |
|
remediation: |
|
||||||
No remediation is required.
|
No remediation is required.
|
||||||
OpenShift platform components use X.509 certificates for authentication.
|
OpenShift platform components use X.509 certificates for authentication.
|
||||||
@ -655,8 +641,8 @@ groups:
|
|||||||
tests:
|
tests:
|
||||||
bin_op: and
|
bin_op: and
|
||||||
test_items:
|
test_items:
|
||||||
- flag: "/etc/kubernetes/static-pod-resources/secrets/kubelet-client/tls.crt"
|
- flag: "/etc/kubernetes/static-pod-certs/secrets/kubelet-client/tls.crt"
|
||||||
- flag: "/etc/kubernetes/static-pod-resources/secrets/kubelet-client/tls.key"
|
- flag: "/etc/kubernetes/static-pod-certs/secrets/kubelet-client/tls.key"
|
||||||
remediation: |
|
remediation: |
|
||||||
No remediation is required.
|
No remediation is required.
|
||||||
OpenShift platform components use X.509 certificates for authentication.
|
OpenShift platform components use X.509 certificates for authentication.
|
||||||
@ -681,13 +667,11 @@ groups:
|
|||||||
- id: 1.2.7
|
- id: 1.2.7
|
||||||
text: "Ensure that the --authorization-mode argument is not set to AlwaysAllow (Manual)"
|
text: "Ensure that the --authorization-mode argument is not set to AlwaysAllow (Manual)"
|
||||||
audit: |
|
audit: |
|
||||||
oc get configmap config -n openshift-kube-apiserver -ojson | jq -r '.data["config.yaml"]' | jq '.apiServerArguments'
|
oc get configmap config -n openshift-kube-apiserver -ojson | jq -r '.data["config.yaml"]' | jq -r '.apiServerArguments."authorization-mode"[]'
|
||||||
tests:
|
tests:
|
||||||
test_items:
|
test_items:
|
||||||
- path: "{.authorization-mode}"
|
- flag: "AlwaysAllow"
|
||||||
compare:
|
set: false
|
||||||
op: nothave
|
|
||||||
value: "AlwaysAllow"
|
|
||||||
remediation: |
|
remediation: |
|
||||||
None. RBAC is always on and the OpenShift API server does not use the values assigned to the flag authorization-mode.
|
None. RBAC is always on and the OpenShift API server does not use the values assigned to the flag authorization-mode.
|
||||||
scored: false
|
scored: false
|
||||||
@ -695,13 +679,10 @@ groups:
|
|||||||
- id: 1.2.8
|
- id: 1.2.8
|
||||||
text: "Verify that RBAC is enabled (Manual)"
|
text: "Verify that RBAC is enabled (Manual)"
|
||||||
audit: |
|
audit: |
|
||||||
oc get configmap config -n openshift-kube-apiserver -ojson | jq -r '.data["config.yaml"]' | jq '.apiServerArguments'
|
oc get configmap config -n openshift-kube-apiserver -ojson | jq -r '.data["config.yaml"]' | jq -r '.apiServerArguments."authorization-mode"[]'
|
||||||
tests:
|
tests:
|
||||||
test_items:
|
test_items:
|
||||||
- path: "{.authorization-mode}"
|
- flag: "RBAC"
|
||||||
compare:
|
|
||||||
op: has
|
|
||||||
value: "RBAC"
|
|
||||||
remediation: |
|
remediation: |
|
||||||
None. It is not possible to disable RBAC.
|
None. It is not possible to disable RBAC.
|
||||||
scored: false
|
scored: false
|
||||||
@ -824,17 +805,20 @@ groups:
|
|||||||
- id: 1.2.18
|
- id: 1.2.18
|
||||||
text: "Ensure that the --secure-port argument is not set to 0 (Manual)"
|
text: "Ensure that the --secure-port argument is not set to 0 (Manual)"
|
||||||
audit: |
|
audit: |
|
||||||
oc get kubeapiservers.operator.openshift.io cluster -o json | jq '.spec.observedConfig.servingInfo.bindAddress'
|
echo bindAddress=$(oc get kubeapiservers.operator.openshift.io cluster -o json | jq '.spec.observedConfig.servingInfo.bindAddress')
|
||||||
# Should return only 6443
|
# Should return only 6443
|
||||||
echo ports=`oc get pods -n openshift-kube-apiserver -l app=openshift-kube-apiserver -o jsonpath='{.items[*].spec.containers[?(@.name=="kube-apiserver")].ports[*].containerPort}'`
|
echo ports=$(oc get pods -n openshift-kube-apiserver -l app=openshift-kube-apiserver -o jsonpath='{.items[*].spec.containers[?(@.name=="kube-apiserver")].ports[*].containerPort}')
|
||||||
tests:
|
tests:
|
||||||
bin_op: and
|
bin_op: and
|
||||||
test_items:
|
test_items:
|
||||||
- flag: '"bindAddress": "0.0.0.0:6443"'
|
- flag: 'bindAddress'
|
||||||
|
compare:
|
||||||
|
op: eq
|
||||||
|
value: '"0.0.0.0:6443"'
|
||||||
- flag: "ports"
|
- flag: "ports"
|
||||||
compare:
|
compare:
|
||||||
op: regex
|
op: eq
|
||||||
value: '\s*(?:6443\s*){1,}$'
|
value: '6443'
|
||||||
remediation: |
|
remediation: |
|
||||||
None required. By default, the openshift-kube-apiserver is served over HTTPS with authentication and authorization;
|
None required. By default, the openshift-kube-apiserver is served over HTTPS with authentication and authorization;
|
||||||
the secure API endpoint is bound to 0.0.0.0:6443.
|
the secure API endpoint is bound to 0.0.0.0:6443.
|
||||||
@ -884,15 +868,15 @@ groups:
|
|||||||
oc rsh -n openshift-apiserver $POD ls /var/log/openshift-apiserver/audit.log 2>/dev/null
|
oc rsh -n openshift-apiserver $POD ls /var/log/openshift-apiserver/audit.log 2>/dev/null
|
||||||
# Should return 0
|
# Should return 0
|
||||||
echo apiserver_exit_code=$?
|
echo apiserver_exit_code=$?
|
||||||
use_multiple_values: true
|
|
||||||
tests:
|
tests:
|
||||||
bin_op: or
|
bin_op: and
|
||||||
test_items:
|
test_items:
|
||||||
- flag: "/var/log/kube-apiserver/audit.log"
|
- flag: "/var/log/kube-apiserver/audit.log"
|
||||||
- flag: "/var/log/openshift-apiserver/audit.log"
|
- flag: "/var/log/kube-apiserver/audit.log" # This is needed for second printing in ls command.
|
||||||
- flag: "kube_apiserver_exit_code=0"
|
- flag: "kube_apiserver_exit_code=0"
|
||||||
|
- flag: "/var/log/openshift-apiserver/audit.log"
|
||||||
|
- flag: "/var/log/openshift-apiserver/audit.log" # This is needed for second printing in ls command.
|
||||||
- flag: "apiserver_exit_code=0"
|
- flag: "apiserver_exit_code=0"
|
||||||
- flag: "null"
|
|
||||||
remediation: |
|
remediation: |
|
||||||
None required. This is managed by the cluster apiserver operator. By default, auditing is enabled.
|
None required. This is managed by the cluster apiserver operator. By default, auditing is enabled.
|
||||||
scored: false
|
scored: false
|
||||||
|
@ -27,8 +27,8 @@ Some defined by other hardenening guides.
|
|||||||
| CIS | [ACK 1.0.0](https://workbench.cisecurity.org/benchmarks/6467) | ack-1.0 | ACK |
|
| CIS | [ACK 1.0.0](https://workbench.cisecurity.org/benchmarks/6467) | ack-1.0 | ACK |
|
||||||
| CIS | [AKS 1.0.0](https://workbench.cisecurity.org/benchmarks/6347) | aks-1.0 | AKS |
|
| CIS | [AKS 1.0.0](https://workbench.cisecurity.org/benchmarks/6347) | aks-1.0 | AKS |
|
||||||
| RHEL | RedHat OpenShift hardening guide | rh-0.7 | OCP 3.10-3.11 |
|
| RHEL | RedHat OpenShift hardening guide | rh-0.7 | OCP 3.10-3.11 |
|
||||||
| CIS | [OCP4 1.1.0](https://workbench.cisecurity.org/benchmarks/6778) | rh-1.0 | OCP 4.1-15 |
|
| CIS | [OCP4 1.1.0](https://workbench.cisecurity.org/benchmarks/6778) | rh-1.0 | OCP 4.1-4.14 |
|
||||||
| CIS | [OCP4 1.6.0](https://workbench.cisecurity.org/benchmarks/16094) | rh-1.6 | OCP 4.16- |
|
| CIS | [OCP4 1.6.0](https://workbench.cisecurity.org/benchmarks/16094) | rh-1.6 | OCP 4.15- |
|
||||||
| CIS | [1.6.0-k3s](https://docs.rancher.cn/docs/k3s/security/self-assessment/_index) | cis-1.6-k3s | k3s v1.16-v1.24 |
|
| CIS | [1.6.0-k3s](https://docs.rancher.cn/docs/k3s/security/self-assessment/_index) | cis-1.6-k3s | k3s v1.16-v1.24 |
|
||||||
| DISA | [Kubernetes Ver 1, Rel 6](https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Kubernetes_V1R6_STIG.zip) | eks-stig-kubernetes-v1r6 | EKS |
|
| DISA | [Kubernetes Ver 1, Rel 6](https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Kubernetes_V1R6_STIG.zip) | eks-stig-kubernetes-v1r6 | EKS |
|
||||||
| CIS | [TKGI 1.2.53](https://network.pivotal.io/products/p-compliance-scanner#/releases/1248397) | tkgi-1.2.53 | vmware |
|
| CIS | [TKGI 1.2.53](https://network.pivotal.io/products/p-compliance-scanner#/releases/1248397) | tkgi-1.2.53 | vmware |
|
||||||
|
@ -134,8 +134,8 @@ docker push <AWS_ACCT_NUMBER>.dkr.ecr.<AWS_REGION>.amazonaws.com/k8s/kube-bench:
|
|||||||
| OpenShift Hardening Guide | kube-bench config |
|
| OpenShift Hardening Guide | kube-bench config |
|
||||||
|---------------------------|-------------------|
|
|---------------------------|-------------------|
|
||||||
| ocp-3.10 + | rh-0.7 |
|
| ocp-3.10 + | rh-0.7 |
|
||||||
| ocp-4.1-4.15 | rh-1.0 |
|
| ocp-4.1-4.14 | rh-1.0 |
|
||||||
| ocp-4.16 + | rh-1.6 |
|
| ocp-4.15 + | rh-1.6 |
|
||||||
|
|
||||||
kube-bench includes a set of test files for Red Hat's OpenShift hardening guide for OCP 3.10 and 4.1. To run this you will need to specify `--benchmark rh-07`, or `--version ocp-3.10` or,`--version ocp-4.5` or `--benchmark rh-1.0`
|
kube-bench includes a set of test files for Red Hat's OpenShift hardening guide for OCP 3.10 and 4.1. To run this you will need to specify `--benchmark rh-07`, or `--version ocp-3.10` or,`--version ocp-4.5` or `--benchmark rh-1.0`
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user