이 문서에서는 CIS Ubuntu 벤치마크로 Google Distributed Cloud의 규정 준수 수준을 설명합니다.
벤치마크 액세스
CIS Ubuntu 벤치마크는 CIS 웹사이트에서 제공됩니다.
구성 프로필
CIS Ubuntu 벤치마크 문서에서 구성 프로필에 대한 정보를 읽을 수 있습니다. Google Distributed Cloud에서 사용되는 Ubuntu 이미지는 수준 2 - 서버 프로필을 충족하도록 강화되었습니다.
Google Distributed Cloud 평가
Google은 다음 값을 사용하여 Google Distributed Cloud에서 Ubuntu 권장 수준 상태를 지정합니다.
상태 | 설명 |
---|---|
통과 | 벤치마크 권장 수준을 준수합니다. |
실패 | 벤치마크 권장 수준을 준수하지 않습니다. |
동등 제어 | 벤치마크 권장 수준의 조항을 정확하게 준수하지 않지만 Google Distributed Cloud의 다른 메커니즘에서 동등한 보안 제어를 제공합니다. |
환경에 따라 다름 | Google Distributed Cloud는 벤치마크 권장 수준과 관련된 항목을 구성하지 않습니다. 구성에 따라 환경이 권장 수준을 준수하는지가 결정됩니다. |
Google Distributed Cloud의 상태
Google Distributed Cloud에서 사용되는 Ubuntu 이미지는 CIS 수준 2 - 서버 프로필을 충족하도록 강화되었습니다. 다음 표에서는 Google Distributed Cloud 구성요소가 특정 권장 수준을 통과하지 못한 이유에 대한 근거를 제공합니다.
Google Distributed Cloud 1.29
출시 예정.Google Distributed Cloud 1.28
버전
이 섹션에서는 다음 버전에 대해 설명합니다.
Google Distributed Cloud 버전 | Ubuntu 버전 | CIS Ubuntu 벤치마크 버전 | CIS 수준 |
---|---|---|---|
1.28 | 22.04 LTS | v1.0.0 | 수준 2 서버 |
Google Distributed Cloud의 상태
Google Distributed Cloud에서 사용되는 Ubuntu 이미지는 CIS 수준 2 - 서버 프로필을 충족하도록 강화되었습니다. 다음 표에서는 Google Distributed Cloud 구성요소가 특정 권장 수준을 통과하지 못한 이유에 대한 근거를 제공합니다.
# | 권장사항 | 상태 | 사유 | 영향을 받는 구성요소 |
---|---|---|---|---|
1.1.2.1 | /tmp가 별도의 파티션에 있는지 확인 | 실패 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.3.1 | /var이 별도의 파티션에 있는지 확인 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.4.1 | /var/tmp가 별도의 파티션에 있는지 확인 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.5.1 | /var/log가 별도의 파티션에 있는지 확인 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.6.1 | var/log/audit가 별도의 파티션에 있는지 확인 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.7.1 | /home이 별도의 파티션에 있는지 확인 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.4.1 | grub2에서 부팅 로더 비밀번호 설정 | 환경에 따라 다름 | 루트 비밀번호가 Ubuntu 클라우드 이미지에 설정되지 않습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.4.3 | 단일 사용자 모드에 필요한 인증 확인 | 환경에 따라 다름 | 루트 비밀번호가 Ubuntu 클라우드 이미지에 설정되지 않습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
2.3.6 | rpcbind 패키지 제거 | 실패 | rpcbind는 Canonical 클라우드 이미지에 설치되지만 기본적으로 사용 설정되지 않습니다. 설치되지 않아야 하기 때문에 규칙이 실패합니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
3.3.7 | 모든 IPv4 인터페이스에서 역방향 경로 필터링을 사용하도록 커널 매개변수 사용 설정 | 환경에 따라 다름 | 클러스터 부하 분산을 제공하려면 비동기 라우팅 및 역방향 경로 원본이 필요합니다. | 비관리자 마스터 노드, Seesaw |
3.5.2.6 | 루프백 트래픽을 위한 nftables 구성 설정 | 해결되지 않음 | Anthos 네트워크가 이 규칙의 영향을 받습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
3.5.2.8 | nftables 기본 거부 방화벽 정책 확인 | 환경에 따라 다름 | Google Distributed Cloud는 적절한 방화벽 보호가 적용된 비공개 네트워크에 배포하는 것이 좋습니다. 여기에서 필요한 방화벽 규칙을 찾을 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
4.2.3 | 로그 파일의 권한 확인 | 실패 | 이 특정 테스트는 여러 서비스에서 한 그룹이 로그 파일을 작성하도록 요구할 수 있으므로 너무 제한적이고 비현실적입니다. 이 항목은 이후 벤치마크에서 삭제될 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
5.2.18 | 사용자의 SSH 액세스 제한 | 환경에 따라 다름 | 기본적으로 구성되지 않습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
5.3.4 | 권한 에스컬레이션을 위해 사용자가 재인증 - sudo | 환경에 따라 다름 | 기본적으로 구성되지 않습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
5.5.1.2 | 비밀번호 최대 기간 설정 | 동등 제어 | Google Distributed Cloud용 VM은 사용자 로그인을 위해 비밀번호 대신 SSH 키를 사용합니다. | 모든 클러스터 노드 |
6.1.10 | 사용자가 모든 파일을 소유하고 있는지 확인 | 실패 | 권한이 기본값으로 남아 있습니다. | 모든 클러스터 노드 |
Google Distributed Cloud 1.16
버전
이 섹션에서는 다음 버전에 대해 설명합니다.
Google Distributed Cloud 버전 | Ubuntu 버전 | CIS Ubuntu 벤치마크 버전 | CIS 수준 |
---|---|---|---|
1.16 | 20.04 LTS | v1.0.0 | 수준 2 서버 |
Google Distributed Cloud의 상태
Google Distributed Cloud에서 사용되는 Ubuntu 이미지는 CIS 수준 2 - 서버 프로필을 충족하도록 강화되었습니다. 다음 표에서는 Google Distributed Cloud 구성요소가 특정 권장 수준을 통과하지 못한 이유에 대한 근거를 제공합니다.
# | 권장사항 | 점수 있음/점수 없음 | 상태 | 사유 | 영향을 받는 구성요소 |
---|---|---|---|---|---|
1.1.2 | /tmp가 구성되었는지 확인 | 점수 있음 | 실패 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.10 | /var에 대해 별개의 파티션이 있는지 확인 | 점수 있음 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.11 | /var/tmp에 대해 별개의 파티션이 있는지 확인 | 점수 있음 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.15 | /var/log에 대해 별개의 파티션이 있는지 확인 | 점수 있음 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.16 | /var/log/audit에 대해 별개의 파티션이 있는지 확인 | 점수 있음 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.17 | /home에 대해 별개의 파티션이 있는지 확인 | 점수 있음 | 해결되지 않음 | 현재 Canonical에 클라우드 이미지 파티션을 수정할 계획이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.1.22 | 고정 비트가 공개 쓰기 가능한 디렉터리에 설정되었는지 확인 | 점수 있음 | 실패 | Anthos 및 해당 서비스의 기능이 간섭받을 수 있으며 기본적으로 사용 설정되지 않음 | 모든 클러스터 노드, 관리자 워크스테이션 |
1.5.1 | 부트로더 구성에 대한 권한이 구성되었는지 확인 | 점수 있음 | 실패 | 권한이 기본값으로 남아 있습니다. | 모든 클러스터 노드, Seesaw |
1.5.2 | 부트로더 비밀번호가 설정되었는지 확인 | 점수 있음 | 환경에 따라 다름 | 루트 비밀번호가 Ubuntu 클라우드 이미지에 설정되지 않습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
1.5.3 | 단일 사용자 모드에 필요한 인증 확인 | 점수 있음 | 환경에 따라 다름 | 루트 비밀번호가 Ubuntu 클라우드 이미지에 설정되지 않습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
2.3.6 | RPC가 설치되지 않았는지 확인 | 점수 있음 | 실패 | rpcbind는 Canonical 클라우드 이미지에 설치되지만 기본적으로 사용 설정되지 않습니다. 설치되지 않아야 하기 때문에 규칙이 실패합니다. | 모든 클러스터 노드 |
3.2.2 | IP 전달이 중지되었는지 확인 | 점수 있음 | 실패 | Kubernetes(GKE)가 올바르게 작동하고 트래픽을 라우팅하려면 IP 전달이 필요함 | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
3.2.7 | 역방향 경로 필터링이 사용 설정되었는지 확인 | 점수 있음 | 환경에 따라 다름 | 클러스터 부하 분산을 제공하려면 비동기 라우팅 및 역방향 경로 원본이 필요함 | Seesaw |
3.5.3.2.1 | 기본 거부 방화벽 정책 확인 | 점수 있음 | 환경에 따라 다름 | Google Distributed Cloud는 적절한 방화벽 보호가 적용된 비공개 네트워크에 배포하는 것이 좋습니다. 여기에서 필요한 방화벽 규칙을 찾을 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
3.5.3.2.2 | 루프백 트래픽이 구성되었는지 확인 | 점수 있음 | 환경에 따라 다름 | 루프백 인터페이스 사용은 사용되는 부하 분산 기능에 따라 제한됩니다. | Seesaw |
3.5.3.2.4 | 모든 열린 포트에 방화벽 규칙이 있는지 확인 | 점수 없음 | 환경에 따라 다름 | Google Distributed Cloud는 적절한 방화벽 보호가 적용된 비공개 네트워크에 배포하는 것이 좋습니다. 여기에서 필요한 방화벽 규칙을 찾을 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
3.5.3.3.1 | IPv6 기본 거부 방화벽 정책 확인 | 점수 있음 | 환경에 따라 다름 | Google Distributed Cloud는 적절한 방화벽 보호가 적용된 비공개 네트워크에 배포하는 것이 좋습니다. 여기에서 필요한 방화벽 규칙을 찾을 수 있습니다. 또한 Anthos에는 GA 지원 시 IPv6에 대한 요구사항이 없습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
3.5.3.3.2 | IPv6 루프백 트래픽이 구성되었는지 확인 | 점수 있음 | 환경에 따라 다름 | Anthos에는 GA 지원 시 IPv6에 대한 요구사항이 없습니다. | 관리자 컨트롤 플레인, Seesaw |
4.1.1.3 | 감사 전에 시작되는 프로세스에 대한 감사가 사용 설정되었는지 확인 | 점수 있음 | 실패 | 빌드 프로세스의 알려진 문제는 이를 실패라고 플래그를 지정하지만 잘못된 정보로 간주해야 합니다. 이 문제는 이후에 해결될 예정입니다. | 모든 클러스터 노드, Seesaw |
4.1.11 | 권한이 있는 명령어 사용이 수집되는지 확인 | 점수 있음 | 실패 | 일부 바이너리가 런타임에 설치되므로 런타임 수정이 필요합니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
4.2.1.5 | 로그를 원격 로그 호스트에 전송하도록 rsyslog가 구성되었는지 확인 | 점수 있음 | 환경에 따라 다름 | Google Distributed Cloud는 현재 시스템 서비스에서 모든 저널링 로그를 수집합니다. 'k8s_node'에서 이러한 로그를 볼 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
4.2.3 | 모든 로그 파일에 대한 권한이 구성되었는지 확인 | 점수 있음 | 실패 | 이 특정 테스트는 여러 서비스에서 한 그룹이 로그 파일을 작성하도록 요구할 수 있으므로 너무 제한적이고 비현실적입니다. 이 항목은 이후 벤치마크에서 삭제될 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
4.4 | logrotate가 적합한 권한을 할당하는지 확인 | 점수 있음 | 실패 | 이 규칙을 준수하면 현재 로깅 기능에 영향을 줄 수 있음 | 모든 클러스터 노드, Seesaw |
5.2.18 | SSH 액세스가 제한되었는지 확인 | 점수 있음 | 환경에 따라 다름 | 기본적으로 구성되지 않습니다. 특정 요구사항에 맞게 구성될 수 있습니다. | 모든 클러스터 노드, 관리자 워크스테이션, Seesaw |
5.2.20 | SSH AllowTcpForwarding이 사용 중지되어 있는지 확인 | 점수 있음 | 실패 | 이 규칙을 준수하면 현재 SSH 터널 기능에 영향을 줄 수 있음 | 모든 클러스터 노드 |
5.4.1.1 | 비밀번호 만료가 365일 이하인지 확인 | 점수 있음 | 동등 제어 | Google Distributed Cloud용 VM은 사용자 로그인을 위해 비밀번호 대신 SSH 키를 사용합니다. | 모든 클러스터 노드 |
6.1.10 | 공개 쓰기 가능한 파일이 없는지 확인 | 점수 있음 | 실패 | 권한이 기본값으로 남아 있습니다. | 모든 클러스터 노드 |
6.1.11 | 소유하지 않은 파일이나 디렉터리가 없는지 확인 | 점수 있음 | 실패 | 권한이 기본값으로 남아 있습니다. | 모든 클러스터 노드 |
6.1.12 | 그룹화되지 않은 파일이나 디렉터리가 없는지 확인 | 점수 있음 | 실패 | 권한이 기본값으로 남아 있습니다. | 모든 클러스터 노드 |
6.2.7 | 사용자의 dot 파일이 그룹 또는 공개 쓰기 가능한 파일이 아닌지 확인 | 점수 있음 | 실패 | Ubuntu의 기본 설정은 호환성으로 인해 dot 파일 그룹 권한을 허용함 | 관리 워크스테이션 |
AIDE 크론 작업 구성
AIDE는 CIS L1 서버 벤치마크 1.4 Filesystem Integrity Checking
규정 준수를 보장하는 파일 무결성 확인 도구입니다. Google Distributed Cloud에서 AIDE 프로세스가 높은 리소스 사용 문제를 일으켰습니다.
리소스 문제를 방지하기 위해 노드의 AIDE 프로세스는 기본적으로 중지되어 있습니다. 이는 CIS L1 서버 벤치마크 1.4.2를 준수하는 데 영향을 미칩니다. Ensure
filesystem integrity is regularly checked.
AIDE 크론 작업을 실행하도록 선택하려면 다음 단계를 완료하여 AIDE를 다시 사용 설정합니다.
DaemonSet를 만듭니다.
DaemonSet의 매니페스트는 다음과 같습니다.
apiVersion: apps/v1 kind: DaemonSet metadata: name: enable-aide-pool1 spec: selector: matchLabels: app: enable-aide-pool1 template: metadata: labels: app: enable-aide-pool1 spec: hostIPC: true hostPID: true nodeSelector: cloud.google.com/gke-nodepool: pool-1 containers: - name: update-audit-rule image: ubuntu command: ["chroot", "/host", "bash", "-c"] args: - | set -x while true; do # change daily cronjob schedule minute=30;hour=5 sed -E "s/([0-9]+ [0-9]+)(.*run-parts --report \/etc\/cron.daily.*)/$minute $hour\2/g" -i /etc/crontab # enable aide chmod 755 /etc/cron.daily/aide sleep 3600 done volumeMounts: - name: host mountPath: /host securityContext: privileged: true volumes: - name: host hostPath: path: /
위의 매니페스트에서 각 항목은 다음과 같습니다.
AIDE 크론 작업은 nodeSelector
cloud.google.com/gke-nodepool: pool-1
에 지정된 대로pool-1
노드 풀에서만 실행됩니다.nodeSelector
필드 아래에 풀을 지정하여 AIDE 프로세스를 원하는 만큼의 노드 풀에서 실행하도록 구성할 수 있습니다. 여러 노드 풀에서 동일한 크론 작업 일정을 실행하려면nodeSelector
필드를 삭제합니다. 하지만 호스트 리소스 정체를 방지하려면 별도의 일정을 유지하는 것이 좋습니다.크론 작업은
minute=30;hour=5
구성에 지정된 대로 오전 5시 30분에 매일 실행되도록 예약되어 있습니다. 필요에 따라 AIDE 크론 작업에 다른 일정을 구성할 수 있습니다.
enable-aide.yaml
파일에 매니페스트를 복사하고 DaemonSet를 만듭니다.kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f enable-aide.yaml
여기서 USER_CLUSTER_KUBECONFIG는 사용자 클러스터의 kubeconfig 파일 경로입니다.