在 kubernetes 集群中暴露邮件或 ssh 蜜罐
exposing mail or ssh honeypot in kubernetes cluster
我正在 Kubernetes 集群中试验 SMTP (mailoney) 和 SSH 蜜罐,以暴露给大坏蛋 WWW。我似乎无法弄清楚如何让它工作,因为我最近才开始了解 Kubernetes。
我现在有一些配置,例如我的 mailoney.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mailoney
spec:
selector:
matchLabels:
app: mailoney
template:
metadata:
labels:
app: mailoney
spec:
containers:
- name: mailoney
image: dtagdevsec/mailoney:2006
ports:
- containerPort: 25
和服务配置:
apiVersion: v1
kind: Service
metadata:
name: ingress-mailoney
labels:
name: mailoney
spec:
type: LoadBalancer
ports:
- name: smtp
port: 25
targetPort: 25
protocol: TCP
selector:
name: mailoney
但是当配置负载均衡器时,它会在端口 >30000 上公开服务,我知道这是 Kubernetes 的默认行为。但是我如何准确地配置负载均衡器以分别允许端口 25 和 22 上的连接并实际允许连接到蜜罐?
我是否忽略了一些非常明显的东西?
感谢任何帮助。
您可能在 kubectl get service
输出中看到了节点端口?这是一个转移注意力的问题,最终的 LB 端口仍将按照要求为 25。您可以在您的云提供商的系统中确认这一点。节点端口是云端LB与内网的中间中继。
正如@coderanger 提到的,您的云提供商将处理所有事情并使原始端口可用。
阅读您的服务清单我可以注意到您的选择器是错误的,它应该指向 app: mailoney
而不是 name:
。我测试了它,它使用了正确的选择器。
清单应如下所示:
apiVersion: v1
kind: Service
metadata:
name: ingress-mailoney
labels:
name: mailoney
spec:
type: LoadBalancer
ports:
- name: smtp
port: 25
targetPort: 25
protocol: TCP
selector:
app: mailoney
将其更改为 app: mailoney
后,我得到以下结果:
$ kubectl get service ingress-mailoney -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
ingress-mailoney LoadBalancer 10.31.250.51 104.197.119.16 25:30601/TCP 44m app=mailoney
$ telnet 104.197.119.16 25
Trying 104.197.119.16...
Connected to 104.197.119.16.
Escape character is '^]'.
220 mailrelay.local ESMTP Exim 4.81 #1 Thu, 29 Jul 2010 05:13:48 -0700
如您所见,它正在按设计运行。如果这个答案对您有帮助,请告诉我。
我正在 Kubernetes 集群中试验 SMTP (mailoney) 和 SSH 蜜罐,以暴露给大坏蛋 WWW。我似乎无法弄清楚如何让它工作,因为我最近才开始了解 Kubernetes。
我现在有一些配置,例如我的 mailoney.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mailoney
spec:
selector:
matchLabels:
app: mailoney
template:
metadata:
labels:
app: mailoney
spec:
containers:
- name: mailoney
image: dtagdevsec/mailoney:2006
ports:
- containerPort: 25
和服务配置:
apiVersion: v1
kind: Service
metadata:
name: ingress-mailoney
labels:
name: mailoney
spec:
type: LoadBalancer
ports:
- name: smtp
port: 25
targetPort: 25
protocol: TCP
selector:
name: mailoney
但是当配置负载均衡器时,它会在端口 >30000 上公开服务,我知道这是 Kubernetes 的默认行为。但是我如何准确地配置负载均衡器以分别允许端口 25 和 22 上的连接并实际允许连接到蜜罐?
我是否忽略了一些非常明显的东西?
感谢任何帮助。
您可能在 kubectl get service
输出中看到了节点端口?这是一个转移注意力的问题,最终的 LB 端口仍将按照要求为 25。您可以在您的云提供商的系统中确认这一点。节点端口是云端LB与内网的中间中继。
正如@coderanger 提到的,您的云提供商将处理所有事情并使原始端口可用。
阅读您的服务清单我可以注意到您的选择器是错误的,它应该指向 app: mailoney
而不是 name:
。我测试了它,它使用了正确的选择器。
清单应如下所示:
apiVersion: v1
kind: Service
metadata:
name: ingress-mailoney
labels:
name: mailoney
spec:
type: LoadBalancer
ports:
- name: smtp
port: 25
targetPort: 25
protocol: TCP
selector:
app: mailoney
将其更改为 app: mailoney
后,我得到以下结果:
$ kubectl get service ingress-mailoney -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
ingress-mailoney LoadBalancer 10.31.250.51 104.197.119.16 25:30601/TCP 44m app=mailoney
$ telnet 104.197.119.16 25
Trying 104.197.119.16...
Connected to 104.197.119.16.
Escape character is '^]'.
220 mailrelay.local ESMTP Exim 4.81 #1 Thu, 29 Jul 2010 05:13:48 -0700
如您所见,它正在按设计运行。如果这个答案对您有帮助,请告诉我。