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.