From aa324ef1d5cf9b24ddd640caaa757c210e5a7085 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sat, 25 Nov 2023 13:33:03 +0000 Subject: [PATCH] add nginx ignress bouncer to ingress controller [ci skip] --- main.tf | 8 ++- modules/kubernetes/crowdsec/main.tf | 1 - modules/kubernetes/main.tf | 12 +++- modules/kubernetes/nginx-ingress/main.tf | 72 +++++++++++++++++++++++ terraform.tfvars | Bin 24416 -> 24796 bytes 5 files changed, 88 insertions(+), 5 deletions(-) diff --git a/main.tf b/main.tf index f3b97f5d..1eaa3909 100644 --- a/main.tf +++ b/main.tf @@ -59,6 +59,9 @@ variable "finance_app_gocardless_secret_id" {} variable "headscale_config" {} variable "immich_postgresql_password" {} variable "ingress_honeypotapikey" {} +variable "ingress_crowdsec_api_key" {} +variable "ingress_crowdsec_captcha_secret_key" {} +variable "ingress_crowdsec_captcha_site_key" {} variable "vaultwarden_smtp_password" {} variable "resume_database_url" {} variable "resume_redis_url" {} @@ -289,7 +292,10 @@ module "kubernetes_cluster" { immich_postgresql_password = var.immich_postgresql_password - ingress_honeypotapikey = var.ingress_honeypotapikey + ingress_honeypotapikey = var.ingress_honeypotapikey + ingress_crowdsec_api_key = var.ingress_crowdsec_api_key + ingress_crowdsec_captcha_secret_key = var.ingress_crowdsec_captcha_secret_key + ingress_crowdsec_captcha_site_key = var.ingress_crowdsec_captcha_site_key vaultwarden_smtp_password = var.vaultwarden_smtp_password diff --git a/modules/kubernetes/crowdsec/main.tf b/modules/kubernetes/crowdsec/main.tf index 2dc0dafb..37cf9d29 100644 --- a/modules/kubernetes/crowdsec/main.tf +++ b/modules/kubernetes/crowdsec/main.tf @@ -66,7 +66,6 @@ resource "helm_release" "crowdsec" { chart = "crowdsec" values = [templatefile("${path.module}/values.yaml", {})] - # values = [templatefile("${path.module}/rowdsec-ingress-bouncer.yaml", {})] } # resource "kubernetes_ingress_v1" "metabase" { diff --git a/modules/kubernetes/main.tf b/modules/kubernetes/main.tf index 4cc99f90..95f9dffa 100644 --- a/modules/kubernetes/main.tf +++ b/modules/kubernetes/main.tf @@ -46,6 +46,9 @@ variable "finance_app_gocardless_secret_id" {} variable "headscale_config" {} variable "immich_postgresql_password" {} variable "ingress_honeypotapikey" {} +variable "ingress_crowdsec_api_key" {} +variable "ingress_crowdsec_captcha_secret_key" {} +variable "ingress_crowdsec_captcha_site_key" {} variable "vaultwarden_smtp_password" {} variable "resume_database_url" {} variable "resume_redis_url" {} @@ -76,7 +79,7 @@ module "dbaas" { tls_secret_name = var.tls_secret_name dbaas_root_password = var.dbaas_root_password postgresql_root_password = var.dbaas_postgresql_root_password - pgadmin_password = var.dbaas_pgadmin_password + pgadmin_password = var.dbaas_pgadmin_password } module "descheduler" { @@ -350,8 +353,11 @@ module "immich" { } module "nginx-ingress" { - source = "./nginx-ingress" - honeypotapikey = var.ingress_honeypotapikey + source = "./nginx-ingress" + honeypotapikey = var.ingress_honeypotapikey + crowdsec_api_key = var.ingress_crowdsec_api_key + crowdsec_captcha_secret_key = var.ingress_crowdsec_captcha_secret_key + crowdsec_captcha_site_key = var.ingress_crowdsec_captcha_site_key } module "crowdsec" { diff --git a/modules/kubernetes/nginx-ingress/main.tf b/modules/kubernetes/nginx-ingress/main.tf index fa103bd4..960469e7 100644 --- a/modules/kubernetes/nginx-ingress/main.tf +++ b/modules/kubernetes/nginx-ingress/main.tf @@ -9,6 +9,9 @@ variable "honeypotapikey" { default = null } +variable "crowdsec_api_key" {} +variable "crowdsec_captcha_secret_key" {} +variable "crowdsec_captcha_site_key" {} resource "kubernetes_namespace" "ingress_nginx" { metadata { name = "ingress-nginx" @@ -322,6 +325,12 @@ resource "kubernetes_config_map" "ingress_nginx_controller" { setvar:tx.block_harvester_ip=1,\ setvar:tx.block_spammer_ip=1" EOT + plugins = "crowdsec" + lua-shared-dicts = "crowdsec_cache: 50m" + server-snippet : <<-EOT + lua_ssl_trusted_certificate "/etc/ssl/certs/ca-certificates.crt"; # Captcha + resolver local=on ipv6=off; + EOT } } resource "kubernetes_service" "ingress_nginx_controller" { @@ -430,10 +439,73 @@ resource "kubernetes_deployment" "ingress_nginx_controller" { # name = "modsecurity" # } # } + + ## Crowdsec + init_container { + name = "init-clone-crowdsec-bouncer" + image = "crowdsecurity/lua-bouncer-plugin" + env { + name = "API_URL" + value = "http://crowdsec-service.crowdsec.svc.cluster.local:8080" + } + env { + name = "API_KEY" + value = var.crowdsec_api_key + } + env { + name = "CAPTCHA_PROVIDER" + value = "recaptcha" + } + env { + name = "BOUNCING_ON_TYPE" + value = "all" + } + env { + name = "SECRET_KEY" + value = var.crowdsec_captcha_secret_key + } + env { + name = "SITE_KEY" + value = var.crowdsec_captcha_site_key + } + + env { + name = "DISABLE_RUN" + value = "true" + } + env { + name = "BAN_TEMPLATE_PATH" + value = "/etc/nginx/lua/plugins/crowdsec/templates/ban.html" + } + env { + name = "CAPTCHA_TEMPLATE_PATH" + value = "/etc/nginx/lua/plugins/crowdsec/templates/captcha.html" + } + env { + name = "BOUNCER_CONFIG" + value = "/crowdsec/crowdsec-bouncer.conf" + } + command = ["sh", "-c", "sh /docker_start.sh; mkdir -p /lua_plugins/crowdsec/; cp -r /crowdsec /lua_plugins/; chown -R 101:101 /lua_plugins/"] + volume_mount { + name = "crowdsec" + mount_path = "/lua_plugins" + } + } + # Share bouncer config + volume { + name = "crowdsec" + empty_dir { + } + } container { name = "controller" image = "registry.k8s.io/ingress-nginx/controller:v1.8.2@sha256:74834d3d25b336b62cabeb8bf7f1d788706e2cf1cfd64022de4137ade8881ff2" args = ["/nginx-ingress-controller", "--election-id=ingress-nginx-leader", "--controller-class=k8s.io/ingress-nginx", "--ingress-class=nginx", "--configmap=$(POD_NAMESPACE)/ingress-nginx-controller", "--validating-webhook=:8443", "--validating-webhook-certificate=/usr/local/certificates/cert", "--validating-webhook-key=/usr/local/certificates/key"] + volume_mount { + name = "crowdsec" + mount_path = "/etc/nginx/lua/plugins/crowdsec" + sub_path = "crowdsec" + } port { name = "http" container_port = 80 diff --git a/terraform.tfvars b/terraform.tfvars index 2c93c45377f35fef537edc8a25dbbd4920110ce3..4ef1fd4c3f68127c1e74ac177c1ef0007151b254 100644 GIT binary patch literal 24796 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 H(Fz?)9!cZG literal 24416 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%0ANK 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