在kubernetes集群中暴露邮件或ssh honeypot

时间:2020-03-12 21:55:44

标签: kubernetes kubernetes-ingress

我正在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上进行连接,并实际上允许连接通过蜜罐呢?

我能忽略一些明显的东西吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可能会在kubectl get service输出中看到节点端口?这是一条红鲱鱼,最终的LB端口仍将按要求设置为25。您可以在云提供商的系统中确认这一点。节点端口是云LB与内部网络之间的中间中继。

答案 1 :(得分:1)

正如@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

如您所见,它正在按设计工作。请让我知道这个答案是否对您有帮助。