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. Cài đặt CrowdSec trên hệ điều hành Linux.
Bước 1 – Cài đặt.
Mình đang hướng dẫn đối với hệ điều hành Ubuntu, nếu các bạn sử dụng hệ điều hành Linux khác có thể tham khảo https://docs.crowdsec.net/docs/next/getting_started/install_crowdsec
.
Sử dụng Script để cập nhật danh sách gói.
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
Cài đặt Crowdsec bằng APT.
apt install crowdsec -y
Bước 2 (Tuỳ chọn) – Thêm các dịch vụ cần giám sát.
Bạn có thể chạy lệnh để config bổ sung các dịch vụ cần giám sát.
/usr/share/crowdsec/wizard.sh -c
Lựa chọn danh sách các dịch vụ để theo dõi bằng CrowdSec và bạn có thể chọn các dịch vụ mà bạn muốn CrowdSec theo dõi. Trong đó, ssh
và linux
là 2 loại dịch vụ được hệ thống tự động phát hiện và gợi ý cho bạn.
Phần tiếp theo là nơi cho phép bạn lựa chọn thêm các dịch vụ mà bạn cần theo dõi.
Thông báo dưới đang thông báo rằng để đảm bảo an toàn cho hệ thống, người dùng đã cài đặt một parser có tên là ‘crowdsecurity/whitelists’. Parser này được sử dụng để ngăn chặn áp dụng các địa chỉ Private IP vào bộ lọc. Thông báo cũng cho biết bạn có quyền loại bỏ parser này bất cứ lúc nào bạn muốn.
Parsers là các thành phần được sử dụng để phân tích log và trích xuất thông tin cần thiết để phát hiện các hành vi đáng ngờ. Whitelists là một danh sách các mục được miễn cấm, tức là danh sách các IP, địa chỉ, tên người dùng, hoặc các yếu tố khác mà CrowdSec sẽ bỏ qua và không áp dụng các biện pháp bảo mật lên chúng. Trong trường hợp này, parser ‘crowdsecurity/whitelists’ được sử dụng để đảm bảo rằng các private IP tư sẽ không bị cấm hay bị ảnh hưởng bởi các biện pháp bảo mật của CrowdSec.
Thông báo dưới cho phép bạn biết về sự tồn tại và tác dụng của parser ‘crowdsecurity/whitelists’, cũng như cho phép bạn tự do quyết định liệu bạn muốn giữ parser này hay gỡ bỏ nó khỏi hệ thống của bạn.
Thông báo này giải thích rằng CrowdSec sẽ không chặn bất kỳ địa chỉ IP nào. Nếu bạn muốn chặn những địa chỉ IP này, bạn cần sử dụng một thành phần gọi là “bouncer”. Bạn có thể tìm thấy các bouncer trên trang web https://hub.crowdsec.net/browse/#bouncers.
Bouncer là một thành phần hoạt động cùng với CrowdSec để thực hiện các biện pháp bảo mật cụ thể như chặn địa chỉ IP hoặc hạn chế truy cập. Các bouncer là các ứng dụng hoặc cơ chế có thể được cấu hình để thực hiện các tác vụ như tạm thời cấm truy cập của một IP, chuyển hướng yêu cầu, ghi log, và nhiều tùy chọn khác.
Xác định các log files mà CrowdSec sẽ sử dụng để phân tích và phát hiện các hoạt động liên quan đến dịch vụ SSH. Cụ thể, thông báo này liên quan đến việc chọn các log files SSH mà bạn muốn CrowdSec theo dõi để phát hiện các tấn công hoặc hành vi đáng ngờ.
Dưới đây là phân tích chi tiết của thông báo:
- Log files to process for ssh: Đây là phần chứa danh sách các file logs liên quan đến dịch vụ SSH mà bạn có thể chọn để CrowdSec phân tích.
- Detected logfiles for ssh, uncheck to ignore: Đây là mô tả cho phần danh sách các log files SSH được phát hiện. Bạn có thể thấy danh sách các file logs được hiển thị dưới dạng các mục trong danh sách.
- [*] /var/log/auth.log: Đây là một ví dụ về một log files SSH được phát hiện. Trong trường hợp này,
/var/log/auth.log
được liệt kê và đã được chọn (được đánh dấu bằng[*]
). Điều này có nghĩa rằng bạn đang chọn để CrowdSec theo dõi file logs này để phân tích hoạt động SSH.
Các file logs thường chứa thông tin về các hoạt động diễn ra trên hệ thống, chẳng hạn như các đăng nhập, đăng xuất, tác vụ quản trị, và nhiều hoạt động khác. CrowdSec sẽ sử dụng các parsers để phân tích các dòng log từ các log files này và xác định các hoạt động đáng ngờ hoặc tấn công liên quan đến dịch vụ SSH.
Thông báo này tương tự như trên nhưng lần này của của service Linux.
Khởi động service và bật tính năng tự khởi động theo OS lên.
sudo systemctl start crowdsec
sudo systemctl enable crowdsec
Kiểm tra lại trạng thái của crowdsec
bằng lệnh systemctl status crowdsec
.
$ sudo systemctl status crowdsec
● crowdsec.service - Crowdsec agent
Loaded: loaded (/lib/systemd/system/crowdsec.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-08-18 08:21:52 UTC; 28min ago
Main PID: 1199 (crowdsec)
Tasks: 11 (limit: 4662)
Memory: 86.2M
CGroup: /system.slice/crowdsec.service
├─1199 /usr/bin/crowdsec -c /etc/crowdsec/config.yaml
└─1220 journalctl --follow -n 0 _SYSTEMD_UNIT=nginx.service
Aug 18 08:21:45 docker-swam-1 systemd[1]: Starting Crowdsec agent...
Aug 18 08:21:52 docker-swam-1 systemd[1]: Started Crowdsec agent.
3. Cài đặt Bouncer.
Như đã nói ở trên CrowdSec sẽ không chặn bất kỳ địa chỉ IP nào. Nếu bạn muốn chặn những địa chỉ IP này, bạn cần sử dụng một thành phần gọi là “bouncer”.
Bouncer là một thành phần hoạt động cùng với CrowdSec để thực hiện các biện pháp bảo mật cụ thể như chặn địa chỉ IP hoặc hạn chế truy cập. Các bouncer là các ứng dụng hoặc cơ chế có thể được cấu hình để thực hiện các tác vụ như tạm thời cấm truy cập của một IP, chuyển hướng yêu cầu, ghi log, và nhiều tùy chọn khác.
crowdsec-firewall-bouncer-iptables
là một bouncer dành riêng cho CrowdSec, được thiết kế để làm việc với hệ thống firewall dựa trên iptables trên Linux.
Cụ thể, bouncer này được sử dụng để thực hiện các hành động quyết định được tạo ra bởi CrowdSec. Ví dụ, nếu bạn có một quyết định để chặn một địa chỉ IP cụ thể, crowdsec-firewall-bouncer-iptables
sẽ tạo và quản lý các rules trên iptables để chặn lưu lượng từ IP đó, ngăn nó truy cập vào hệ thống của bạn.
Các bouncer giúp CrowdSec thực hiện các quyết định bảo mật bằng cách tương tác trực tiếp với firewall hoặc hệ thống bảo mật của bạn, giúp tự động hóa việc áp dụng các biện pháp bảo mật dựa trên sự phát hiện của CrowdSec.
Lưu ý rằng bạn cần phải cấu hình crowdsec-firewall-bouncer-iptables
một cách chính xác để nó hoạt động đúng cách với hệ thống iptables của bạn và phải cài đặt nó cùng với CrowdSec để sử dụng được các tính năng của nó.
Chạy lệnh apt install crowdsec-firewall-bouncer-iptables
để cài đặt crowdsec-firewall-bouncer-iptables
.
apt install crowdsec-firewall-bouncer-iptables -y
Khởi động service và bật tính năng tự khởi động theo OS lên.
systemctl start crowdsec-firewall-bouncer.service
systemctl enable crowdsec-firewall-bouncer.service
Kiểm tra lại trạng thái của crowdsec-firewall-bouncer
bằng lệnh systemctl status crowdsec-firewall-bouncer.service
.
● crowdsec-firewall-bouncer.service - The firewall bouncer for CrowdSec
Loaded: loaded (/etc/systemd/system/crowdsec-firewall-bouncer.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-08-18 08:21:54 UTC; 19min ago
Main PID: 1228 (crowdsec-firewa)
Tasks: 10 (limit: 4662)
Memory: 18.5M
CGroup: /system.slice/crowdsec-firewall-bouncer.service
└─1228 /usr/bin/crowdsec-firewall-bouncer -c /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
Aug 18 08:21:52 docker-swam-1 systemd[1]: Starting The firewall bouncer for CrowdSec...
Aug 18 08:21:52 docker-swam-1 crowdsec-firewall-bouncer[1221]: time="2023-08-18T08:21:52Z" level=info msg="crowdsec-firewall-bouncer v0.0.27-debian-pragmatic-8d09f19d69e92a63e63888794af3a57c6ade3489"
Aug 18 08:21:52 docker-swam-1 crowdsec-firewall-bouncer[1228]: time="2023-08-18T08:21:52Z" level=info msg="crowdsec-firewall-bouncer v0.0.27-debian-pragmatic-8d09f19d69e92a63e63888794af3a57c6ade3489"
Aug 18 08:21:54 docker-swam-1 systemd[1]: Started The firewall bouncer for CrowdSec
Xem các port listen của CrowdSec.
$ netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 17110/crowdsec
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 660/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3616/sshd: /usr/sbi
tcp 0 0 127.0.0.1:6060 0.0.0.0:* LISTEN 17110/crowdsec
tcp6 0 0 :::22 :::* LISTEN 3616/sshd: /usr/sbi