Как удалить заголовок сервера из развернутых приложений Kubernetes

#kubernetes #kubernetes-ingress #nginx-ingress

#kubernetes #kubernetes-вход #nginx-вход

Вопрос:

Я задаю этот вопрос в стиле вопроса, а затем отвечаю.

Если вы создаете свои объекты Ingress для диаграмм Helm или обычных развертываний «kubectl apply», после развертывания в вашем кластере вы можете увидеть заголовок сервера в своих ответах. Это рассматривается как проблема безопасности. Он не должен присутствовать.

введите описание изображения здесь

Возможно, у вас нет контроля над вашим кластером или входными контроллерами. Как вы можете удалить соответствующий заголовок?

Комментарии:

1. В последнем выпуске NGINX Ingress Helm Chart от Bitnami server_tokens по умолчанию тоже отключены!

Ответ №1:

Возможно, у вас нет контроля над вашим кластером или входными контроллерами, но у вас есть контроль над вашими входными манифестами.

В каждом из ваших файлов манифеста Ingress (возможно, внутри ваших диаграмм Helm) вы можете обновить свои определения Ingress.

 apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Release.Name}}-{{ .Values.baseName }}-ingress-spa
  namespace: {{ .Values.global.config.namespace }}
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/configuration-snippet: |
          more_clear_headers "Server";    
spec:
  tls:
  - hosts:
  

Ключевая часть:

 nginx.ingress.kubernetes.io/configuration-snippet: |
          more_clear_headers "Server";
  

Это дает указание nginx очистить заголовок сервера. После повторного развертывания вашего приложения теперь вы должны увидеть:

введите описание изображения здесь

И вуаля, заголовок сервера исчез.

Ответ №2:

Вы можете сделать это для всего входного контроллера nginx в конфигурационной карте настроек:

серверные токены: «false»