网络规则
策略:网络规则
SUSE® Security 会自动从您在发现模式下运行的应用程序中创建网络规则。您也可以在任何模式下手动添加它们,包括发现、监控或保护模式。可以通过 CLI 或 REST API 添加或编辑规则。
SUSE® Security 使用声明性策略,该策略由管理允许和拒绝的应用程序层连接的规则组成。SUSE® Security 不仅根据 IP 地址和端口进行分析和保护,还通过确定基于应用协议的实际网络行为进行分析和保护。这使得 SUSE® Security 能够自动保护任何新的应用容器,无论其 IP 地址和端口如何。
网络规则指定您的应用程序的允许或拒绝行为。这些规则确定了您的服务的正常连接行为以及什么构成违规。您可以自动删除 ‘learned’ 规则,也可以向您的策略中添加新规则。
|
网络规则按照它们在列表中出现的顺序执行,从上到下。要重新排序规则,请选择您想要移动的规则,然后您会看到一个“移动到”框出现在顶部,您可以将所选规则移动到指定规则之前或之后的位置。 |
|
如果您编辑(添加、删除、修改)规则,您的更改在您点击顶部的保存按钮之前不会生效。如果您在未部署更改的情况下退出此页面,您的更改将会丢失。 |
添加新规则
使用 ‘+’ 添加规则,可以在右侧列中的另一个规则下方,或使用右下角的按钮。
-
ID
(可选)输入一个数字。网络规则最初按从低到高的顺序排列,但可以通过拖放在列表中更改规则顺序。
-
寄件人
指定连接将来自的组。开始输入,SUSE® Security 将匹配任何先前发现的组,以及任何新定义的组。
-
为
指定这些连接被允许或拒绝的目标组。
-
应用程序
输入应用程序以 SUSE® Security 允许或拒绝。 SUSE® Security 理解深层应用行为,并将分析有效负载以确定应用协议。协议包括 HTTP、HTTPS、SSL、SSH、DNS、DNCP、NTP、TFTP、ECHO、RTSP、SIP、MySQL、Redis、Zookeeper、Cassandra、MongoDB、PostgresSQL、Kafka、Couchbase、ActiveMQ、ElasticSearch、RabbitMQ、Radius、VoltDB、Consul、Syslog、Etcd、Spark、Apache、Nginx、Jetty、NodeJS、Oracle、MSSQL、Memcached 和 gRPC。
要选择任意/所有,请留此字段为空。
-
端口
如果有特定端口需要限制此规则,请在此输入。对于 ICMP 流量,请输入 icmp。
要选择任意/所有,请留此字段为空。
-
拒绝/允许
指示此规则是允许此类型的连接,还是拒绝它。
如果选择拒绝,SUSE® Security 将在监控模式下将其记录为违规,并在保护模式下阻止它。如果没有规则与之匹配,默认操作是拒绝连接(仅在监控模式下记录违规)。
|
如有更改,请务必点击“部署”或“更新”! |
出口控制:允许连接到其他网络上的受信任内部服务
自定义规则的一个常见用例是允许容器服务连接到 SUSE® Security 管理集群网络之外的网络。在许多情况下,由于 SUSE® Security 不识别此网络,它将将其分类为 ‘External’ 网络,即使它是内部网络。
要允许容器连接到其他内部网络上的服务,首先创建一个组,然后为其创建一个规则。
-
创建一个组。在策略 → 组中,单击以添加新组。为组命名(例如,内部),然后指定组的标准。例如,指定内部服务的DNS名称、IP地址或地址范围。保存新组。
-
创建规则。在策略 → 规则中,点击添加新规则。选择表示连接来源的容器组,然后选择目标组(例如内部)。您可以通过特定协议或端口进一步细化规则,或者留空。确保选择器设置为允许(绿色)。
请务必点击部署以保存新规则。
最后,检查规则列表以确保新规则的顺序和优先级符合预期。规则是从上到下应用的。
基于 X-FORWARDED-FOR 的入站 IP 策略
在 Kubernetes 集群中,应用程序可以通过 NodePort、LoadBalancer 或 Ingress 服务暴露到集群外部。这些服务通常在对数据包进行源 NAT(SNAT)时替换源 IP。由于原始源 IP 被伪装,这会阻止 SUSE® Security 识别连接实际上来自 "外部"。
为了保留原始源IP地址,用户需要在外部负载均衡器或Ingress控制器的 'spec' 部分中,将以下行添加到暴露的服务。(参考: https://kubernetes.io/docs/tutorials/services/source-ip/))
"externalTrafficPolicy":"Local"
许多 LoadBalancer 服务和 Ingress 控制器的实现会将 X-FORWARDED-FOR 行添加到 HTTP 请求头中,以将真实源 IP 传达给后端应用程序。该产品可以识别这一组 HTTP 头,识别原始源 IP 并根据该 IP 强制执行策略。
这一改进在某些设置中产生了一些意想不到的问题。如果上述行已添加到暴露的服务中,并且 SUSE® Security 网络策略以期望网络连接来自内部代理/Ingress 服务的方式创建,因为我们现在识别连接来自集群的 “外部”,正常的应用流量可能会触发警报或被阻止,如果应用程序处于 “保护” 模式。
可以使用开关来禁用此功能。禁用它会告诉 SUSE® Security 不要使用 X-FORWARDED-FOR 头识别连接来自 “外部”。默认情况下,此功能是启用的,并且在策略强制执行中使用 X-FORWARDED-FOR 头部。要禁用它,请转到“设置” → “配置”,并禁用“基于 X-Forwarded-For 的策略匹配”设置。
Istio ServiceEntry 目标的特殊策略强制执行
在版本 5.1.0 中,为通过 Istio 声明的 ServiceEntry 目标的 Pod 添加了出站网络策略强制执行功能。通常,ServiceEntry 定义了如何将通过 DNS 名称引用的外部服务解析为目标 IP。在 v5.1 之前,SUSE® Security 无法检测和强制执行对 ServiceEntry 的连接规则,因此所有连接都被归类为外部。在 5.1 中,可以对特定的 ServiceEntry 目标强制执行规则。如果不存在允许规则,将报告隐式违规的新可见流量。这些规则可以在发现模式下学习和自动创建。要允许此流量,您可以将组置于发现模式,或创建一个包含目标地址(或 DNS 名称)的自定义组,并为该目标添加新的网络规则以允许流量。
分离模式网络保护
容器组可以在与网络规则不同的模式下具有进程/文件规则,如 这里 所述。
内置网络威胁检测
SUSE® Security 自动检测某些网络攻击,无论保护模式如何。在发现和监控模式下,这些威胁会触发警报,并可以在“通知” → “安全事件”中找到。在保护模式下,这些威胁会触发警报并被阻止。响应规则也可以根据威胁检测创建。
请注意,可以通过 WAF 规则部分配置自定义网络威胁检测。
SUSE® Security 包括以下威胁检测:
-
Apache Struts RCE攻击
-
密码溢出攻击
-
检测HTTP负内容长度缓冲区溢出
-
检测MySQL访问拒绝
-
检测SSH版本1、2或3
-
检测SSL TLS v1.0、v1.1(需要环境变量启用)
-
DNS缓冲区溢出攻击
-
DNS洪水DDOS攻击
-
DNS空类型攻击
-
DNS隧道攻击
-
DNS区域传输攻击
-
HTTP Slowloris DDOS攻击
-
HTTP走私攻击
-
ICMP洪水攻击
-
ICMP隧道攻击
-
IP Teardrop攻击
-
Kubernetes 中间人攻击(CVE-2020-8554)
-
PING 死亡攻击
-
SQL 注入攻击
-
SSL 心脏滴血攻击
-
SYN泛洪攻击
-
TCP 小窗口攻击
-
TCP 分裂握手攻击
-
TCP 小 MSS 攻击