CIS 安全基准-网络访问控制

Posted 三成讲技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CIS 安全基准-网络访问控制相关的知识,希望对你有一定的参考价值。

• 网络策略应用场景
• 网络策略概述
• 网络访问控制5个案例

网络访问控制:应用场景

默认情况下,Kubernetes 集群网络没任何网络限制,Pod 可以与任何其他 Pod 通信,在某些场景下就需要进行网络控制,
减少网络攻击面,提高安全性,这就会用到网络策略。
网络策略(Network Policy):是一个K8s资源,用于限制Pod出入流量,提供Pod级别和Namespace级别网络访问控制。
网络策略的应用场景:
• 应用程序间的访问控制,例如项目A不能访问项目B的Pod
• 开发环境命名空间不能访问测试环境命名空间Pod
• 当Pod暴露到外部时,需要做Pod白名单
• 多租户网络环境隔离

网络访问控制:网络策略概述

网络访问控制:网络策略概述

网络访问控制案例

案例1:拒绝命名空间下所有Pod入、出站流量

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: test
spec:
podSelector:  # 匹配本命名空间所有pod
policyTypes: 
- Ingress
- Egress
# ingress和egress没有指定规则,则不允许任何流量进出pod

案例2:拒绝其他命名空间Pod访问

需求:test命名空间下所有pod可以互相访问,也可以访问其他
命名空间Pod,但其他命名空间不能访问test命名空间Pod。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-namespaces 
namespace: test
spec:
podSelector:  
policyTypes:
- Ingress
ingress:
- from:
- podSelector:  # 匹配本命名空间所有pod

案例3:允许其他命名空间Pod访问指定应用

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-namespaces 
namespace: test
spec:
podSelector: 
matchLabels:
app: web
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:  # 匹配所有命名空间的pod

案例4:同一个命名空间下应用之间限制访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: app-to-app
namespace: test
spec:
podSelector:
matchLabels:
run: web
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
run: client1
ports:
- protocol: TCP
port: 80

案例5:只允许指定命名空间中的应用访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: dev-web
namespace: dev
spec:
podSelector:
matchLabels:
env: dev
policyTypes:
- Ingress
ingress:
# 满足允许prod命名空间中的pod访问
- from:
- namespaceSelector:
matchLabels:
env: prod
# 允许pod标签为app=client1的pod访问,所有命名空间
- from:
- namespaceSelector: 
podSelector:
matchLabels:
app: client1

遵循CIS Docker Benchmarks规范的开源巡检脚本(内附PDF下载)

CIS是什么?

CISCenter for Internet Security (CIS) 为安全基准计划提供了定义明确、公正、基于一致性的行业最佳实践来帮助组织评估和增强其安全性

Docker Bench Security

Docker Bench for Security是一个开源的脚本。它是基于CIS Docker Benchmark v1.3.1规范的,用于自动化巡检在生产环境中运行Docker容器的数十种常见的最佳实践的脚本。

通过调用tests目录的以下脚本进行巡检, 具体的巡检的内容可以参考的脚本的内容。

1_host_configuration.sh
2_docker_daemon_configuration.sh
3_docker_daemon_configuration_files.sh
4_container_images.sh
5_container_runtime.sh
6_docker_security_operations.sh
7_docker_swarm_configuration.sh
8_docker_enterprise_configuration.sh
99_community_checks.sh

在docker-bench-security中可以通过修改functions中的脚本选择检查的项,也可以通过命令行选项排除不需要检查的项,下面看下支持的命令行选项.

命令选项

docker-bench-security

-b       可选   Do not print colors 不打印颜色
-h           可选   Print this help message 打印帮助信息
-l FILE  可选   Log output in FILE, inside container if run using docker 日志输出文件,如果使用docker运行,在容器内部
-u USERS 可选   Comma delimited list of trusted docker user(s) 以逗号分隔的受信任docker用户列表
-c CHECK 可选   Comma delimited list of specific check(s) id 以逗号分隔的指定检查id列表
-e CHECK 可选   Comma delimited list of specific check(s) id to exclude 要排除的以逗号分隔的检查id列表
-i INCLUDE 可选 Comma delimited list of patterns within a container or image name to check 以逗号分隔的容器或图像名称中的模式列表
-x EXCLUDE 可选 Comma delimited list of patterns within a container or image name to exclude from check 容器或图像名称中要排除的以逗号分隔的模式列表
-n LIMIT   可选 In JSON output, when reporting lists of items (containers, images, etc.), limit the number of reported items to LIMIT. Default 0 (no limit).
 在JSON输出中,当报告项目列表(容器,图像等)时,限制报告项目的数量为LIMIT。默认0(无限制)。
-p PRINT   可选 Disable the printing of remediation measures. Default: print remediation measures. 禁用打印补救措施。默认值:打印补救措施。

每个CIS巡检项在脚本中是以check_<section>_<number>格式命名的. 如果要排除某项检查可以使用

sh docker-bench-security.sh -e check_2_2 # 表示检查所有,除了check_2_2(2.2 Ensure the logging level is set to \'info\')

也可以只检查某项

sh docker-bench-security.sh -c check_2_2

使用很简单。

构建镜像

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .

下面是在Mac上执行一次巡检的Demo.

Docker Desktop for Mac

docker run --rm --net host --pid host --userns host --cap-add audit_control \\
    -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \\
    -v /var/lib:/var/lib:ro \\
    -v /var/run/docker.sock:/var/run/docker.sock:ro \\
    -v `pwd`:/usr/local/bin/log/ \\
    --label docker_bench_security \\
    docker/docker-bench-security -t devops.v1
# ------------------------------------------------------------------------------
# Docker Bench for Security v1.3.4
#
# Docker, Inc. (c) 2015-
#
# Checks for dozens of common best-practices around deploying Docker containers in production.
# Inspired by the CIS Docker Community Edition Benchmark v1.1.0.
# ------------------------------------------------------------------------------

Initializing Thu Sep  2 04:55:59 UTC 2021

Looking for image devops.v1

[INFO] 1 - Host Configuration
[WARN] 1.1  - Ensure a separate partition for containers has been created
[NOTE] 1.2  - Ensure the container host has been Hardened
....[省略省略过多内容]
[PASS] 7.10  - Ensure management plane traffic has been separated from data plane traffic (Swarm mode not enabled)

[INFO] Checks: 105
[INFO] Score: 7

以上是关于CIS 安全基准-网络访问控制的主要内容,如果未能解决你的问题,请参考以下文章

互联网安全中心(CIS,Center for Internet Security)20项安全控制(CIS Controls)

防火墙基础之安全防护和访问控制无线网络部署

安全组与网络ACL

网络安全——服务端安全(注入攻击认证与会话管理和访问控制访问控制加密算法与随机数Web框架安全应用层拒绝服务攻击DDOS等)

网络安全服务的内容有哪些?

等级保护----1网络安全等级保护一级安全测评要求