Saturday, January 18, 2025

[CrowdSec] – Phần 4 -Triển khai CrowdSec trên Kubernetes bằng Helm

-

1. CrowdSec là gì?

CrowdSec là một hệ thống bảo mật phân tán mã nguồn mở được phát triển để bảo vệ các hệ thống và ứng dụng khỏi các cuộc tấn công trực tuyến và các hành vi độc hại. Nó hoạt động bằng cách phân tích dữ liệu đăng nhập và lưu lượng mạng để nhận biết các hoạt động đáng ngờ hoặc có hại, sau đó thực hiện các biện pháp bảo mật để ngăn chặn hoặc đối phó với các mối đe dọa này.

2. Triển khai CrowdSec trên Kubernetes Cluster.

Thêm repo mới vào Helm.

$ helm repo add crowdsec https://crowdsecurity.github.io/helm-charts
"crowdsec" has been added to your repositories

Sau khi thêm repo mới bạn phải update lại repo.

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "crowdsec" chart repository
...Successfully got an update from the "longhorn" chart repository
...Successfully got an update from the "nginx-stable" chart repository
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈

Hãy tạo một namespace để cô lập nó với các ứng dụng khác.

$ kubectl create ns crowdsec
namespace/crowdsec created

Tạo thư mục làm việc cho dự án này và di chuyển vào thư mục vừa tạo.

mkdir -p /home/crowsec
cd /home/crowsec

Tải mã nguồn dự án này về.

helm fetch crowdsec/crowdsec

Kiểm tra xem dự án đã tải về thành công chưa.

$ ls . | grep *.tgz
crowdsec-0.9.7.tgz

Giải nén nó và di chuyển vào thư mục vừa giải nén.

tar -xzvf crowdsec-0.9.7.tgz
cd crowdsec

Sao chép file value.yaml ra một file mới và đặt tên cho nó là crowdsec-values.yaml.

cp values.yaml crowdsec-values.yaml

Hãy vào file crowdsec-values.yaml và chỉnh sửa một số thông tin quan trọng như dưới.

tls:
  bouncer:
    reflector:
      namespaces: "crowdsec"
  agent:
    reflector:
      namespaces: "crowdsec"

storageClassName: "longhorn"
size: 50Gi

lapi:
  ingress:
    enabled: true
    ingressClassName: "nginx"
    host: "api-crowdsec.hoanghd.com"

  dashboard:
    enabled: true
    ingress:
      enabled: true
      ingressClassName: "nginx"
      host: "dashboard-crowdsec.hoanghd.com"

agent:
  acquisition:
    - namespace: "crowdsec"
      podName: "ingress-nginx-controller-"
      program: "nginx"

Sử dụng công cụ Helm để triển khai ứng dụng CrowdSec trong môi trường Kubernetes. Dưới đây là giải thích chi tiết về từng phần của lệnh này:

  • helm install crowdsec: Đây là cú pháp để sử dụng Helm để bắt đầu quá trình triển khai. “crowdsec” ở đây là tên mà bạn muốn gán cho phiên bản triển khai của ứng dụng.
  • –set persistence.storageClass=longhorn: Đây là tùy chọn để cấu hình StorageClass cho việc lưu trữ dữ liệu của ứng dụng CrowdSec là “longhorn”.
  • –set crowdsec.replica.persistence.storageClass=longhorn: Đây là tùy chọn để cấu hình StorageClass cho việc lưu trữ dữ liệu cho các bản sao (replica) của ứng dụng CrowdSec là “longhorn”.
  • –set volumePermissions.enabled=true: Đây là tùy chọn để bật cấp quyền truy cập vào file và thư mục lưu trữ cho ứng dụng CrowdSec. Điều này có thể liên quan đến việc đảm bảo ứng dụng có thể thao tác với dữ liệu lưu trữ.
  • –namespace=crowdsec: Đây là tùy chọn để chỉ định namespace trong Kubernetes mà ứng dụng CrowdSec sẽ được triển khai vào. Namespace giúp tách biệt và quản lý tốt hơn các thành phần trong môi trường Kubernetes.
  • –values /home/crowsec/crowdsec/crowdsec-values.yaml: Đây là tùy chọn để chỉ định file YAML chứa các giá trị cấu hình cho quá trình triển khai. File này được đặt tại đường dẫn /home/crowsec/crowdsec/crowdsec-values.yaml.
  • crowdsec/crowdsec: Đây là tên của Helm chart mà bạn muốn triển khai. “crowdsec/crowdsec” chỉ đề cập đến gói chart trong Helm repository có tên là “crowdsec”.
helm install crowdsec \
  --set persistence.storageClass=longhorn \
  --set crowdsec.replica.persistence.storageClass=longhorn \
  --set volumePermissions.enabled=true \
  --namespace=crowdsec \
  --values /home/crowsec/crowdsec/crowdsec-values.yaml \
  crowdsec/crowdsec

Nếu thành công bạn sẽ nhận được output như dưới.

NAME: crowdsec
LAST DEPLOYED: Fri Aug 18 02:08:14 2023
NAMESPACE: crowdsec
STATUS: deployed
REVISION: 1
NOTES:
Thank you for installing crowdsec.

## Local API URL
http://api-crowdsec.hoanghd.com


## Dashboard information

You can access to the dashboard using :
http://dashboard-crowdsec.hoanghd.com
    

The default credentials are : 
login : crowdsec@crowdsec.net
password : !!Cr0wdS3c_M3t4b4s3??

Please update the password when you connect to metabase for the first time.

Xác nhận rằng các dịch vụ đã sẵn sàng.

$ kubectl get pod,svc,ingress,pv,pvc -n crowdsec
NAME                                 READY   STATUS    RESTARTS   AGE
pod/crowdsec-agent-24lzk             1/1     Running   0          48m
pod/crowdsec-agent-45j6q             1/1     Running   0          48m
pod/crowdsec-agent-gqw9x             1/1     Running   0          48m
pod/crowdsec-agent-gw9jd             1/1     Running   0          48m
pod/crowdsec-agent-svxzr             1/1     Running   0          48m
pod/crowdsec-lapi-55b77f597d-4dtbn   2/2     Running   0          48m

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/crowdsec-service   ClusterIP   10.102.55.123   <none>        8080/TCP,3000/TCP   48m

NAME                                           CLASS   HOSTS                            ADDRESS          PORTS   AGE
ingress.networking.k8s.io/crowdsec-dashboard   nginx   dashboard-crowdsec.hoanghd.com   192.168.13.221   80      48m
ingress.networking.k8s.io/crowdsec-lapi        nginx   api-crowdsec.hoanghd.com         192.168.13.221   80      48m

NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                    STORAGECLASS   REASON   AGE
persistentvolume/pvc-1a48197a-16bc-48de-a8b5-733754331550   100Gi      RWO            Delete           Bound    devops-tools-master/jenkins-pv-claim     longhorn                44d
persistentvolume/pvc-3121a890-df7a-4928-b41f-17024fb7df29   10Gi       RWO            Delete           Bound    wiki-hoanghd/website-mysql-pvc           longhorn                44d
persistentvolume/pvc-3bda4320-e917-462f-85d9-f144edfd5621   100Gi      RWO            Delete           Bound    redis/redis-data-redis-test-replicas-0   longhorn                16h
persistentvolume/pvc-3fc21d5b-b3e8-49eb-aa82-dc40c1ccbfef   100Gi      RWO            Delete           Bound    devops-tools-slave/jenkins-pv-claim      longhorn                44d
persistentvolume/pvc-41b76936-814e-4656-beba-2963e91754a9   50Gi       RWO            Delete           Bound    crowdsec/crowdsec-db-pvc                 longhorn                48m
persistentvolume/pvc-6001eab0-493e-4182-be42-6afc5891fb8d   10Gi       RWO            Delete           Bound    matbao/website-mysql-pvc                 longhorn                44d
persistentvolume/pvc-b41d891f-38a6-455d-a7f3-b649b5fa367c   50Gi       RWO            Delete           Bound    matbao/website-wp-pvc                    longhorn                44d
persistentvolume/pvc-b895c850-092c-40f0-a307-e12fbcfe6e23   50Gi       RWO            Delete           Bound    wiki-hoanghd/website-wp-pvc              longhorn                44d
persistentvolume/pvc-becabec6-6145-4e23-9206-b48cfd4af954   100Gi      RWO            Delete           Bound    redis/redis-data-redis-test-replicas-2   longhorn                16h
persistentvolume/pvc-cbe5eda4-13f5-4028-9067-dd1a130252cc   50Gi       RWO            Delete           Bound    redis/redis-data-redis-test-master-0     longhorn                16h
persistentvolume/pvc-cc545b9c-de09-4d7d-8654-0d7d66f92618   50Gi       RWO            Delete           Bound    crowdsec/crowdsec-config-pvc             longhorn                48m
persistentvolume/pvc-e331a959-a2a0-49f6-a625-3e564b99c060   100Gi      RWO            Delete           Bound    redis/redis-data-redis-test-replicas-1   longhorn                16h

NAME                                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/crowdsec-config-pvc   Bound    pvc-cc545b9c-de09-4d7d-8654-0d7d66f92618   50Gi       RWO            longhorn       48m
persistentvolumeclaim/crowdsec-db-pvc       Bound    pvc-41b76936-814e-4656-beba-2963e91754a9   50Gi       RWO            longhorn       48m

Mình sử dụng Longhorn storage và nó cũng đã sẵn sàng.

Cuối cùng bạn hãy sử dụng trình duyệt và login vào http://dashboard-crowdsec.hoanghd.com để thưởng thức kết quả.

Thông tin login bạn nhìn vào đoạn output ở trên nhé.

Ví dụ 1 của 1 Dashboard.

Tạm thời như vậy, cách sử dụng mình sẽ viết sau.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories