CrowdSec là một hệ thống bảo mật nguồn mở được sử dụng để phát hiện và phòng ngừa các cuộc tấn công mạng. Nó sử dụng một tập hợp các tài liệu kiến thức, gọi là “Collections,” để theo dõi các hoạt động bất thường trên mạng bằng cách quan sát các cổng (ports) và giao thức mạng. Dưới đây là một số cổng cơ bản và một số giao thức mà CrowdSec sử dụng để phát hiện các cuộc tấn công:
- Port 22 – SSH: SSH (Secure Shell) là một giao thức để thiết lập kết nối mạng an toàn. Port 22 thường được sử dụng cho các dịch vụ SSH. CrowdSec có thể theo dõi các hoạt động đối với cổng này để phát hiện các cuộc tấn công SSH brute-force hoặc các cuộc tấn công khác liên quan đến SSH.
- Port 80 và 443 – HTTP và HTTPS: CrowdSec có thể kiểm tra các truy cập vào các trang web thông qua các cổng HTTP (80) và HTTPS (443) để phát hiện các cuộc tấn công web, chẳng hạn như SQL injection hoặc cross-site scripting (XSS) attacks.
- Port 3389 – RDP: Remote Desktop Protocol (RDP) là một giao thức được sử dụng để kết nối và điều khiển máy tính từ xa. Cổng 3389 thường được sử dụng cho RDP. CrowdSec có thể theo dõi các nỗ lực không hợp pháp để truy cập vào máy chủ RDP từ xa.
- Port 21 – FTP: File Transfer Protocol (FTP) là một giao thức được sử dụng để truyền tệp qua mạng. Port 21 thường được sử dụng cho dịch vụ FTP. CrowdSec có thể kiểm tra các hoạt động FTP để phát hiện các cuộc tấn công liên quan đến FTP.
- Port 25 – SMTP: Simple Mail Transfer Protocol (SMTP) là giao thức dùng để gửi thư điện tử qua mạng. Port 25 thường được sử dụng cho các dịch vụ email. CrowdSec có thể theo dõi hoạt động trên cổng này để phát hiện các cuộc tấn công email, chẳng hạn như spam hoặc phishing.
- Port 1433 – SQL Server: Cổng 1433 thường được sử dụng cho Microsoft SQL Server. CrowdSec có thể kiểm tra các truy cập vào cổng này để phát hiện các cuộc tấn công vào hệ thống cơ sở dữ liệu SQL Server.
Nhớ rằng CrowdSec không chỉ theo dõi các cổng này mà còn sử dụng các quy tắc và mẫu để phát hiện các hoạt động bất thường hoặc tấn công mạng. Các quy tắc và mẫu này được xác định trong các tài liệu kiến thức (Collections) của CrowdSec và có thể được cập nhật để phản ánh các mối đe dọa mới.
Ngoài ra nó còn có 2 port 6060 và 8080 thường được sử dụng để mục đích khác nhau trong hệ thống CrowdSec:
- Port 6060: Đây là cổng mà CrowdSec Agent sử dụng để lắng nghe và thu thập các metric và thông tin về hiệu suất. Prometheus, một hệ thống giám sát và thu thập metric phổ biến, sẽ kết nối đến cổng này để thu thập dữ liệu metric từ CrowdSec Agent. Thông qua Prometheus, bạn có thể theo dõi và giám sát hiệu suất của CrowdSec, thực hiện các truy vấn metric và tạo biểu đồ hiển thị trạng thái của hệ thống.
- Port 8080: Đây là cổng mà Pi (CrowdSec’s Processing Unit) sử dụng để cung cấp API và giao diện để quản lý và tương tác với CrowdSec. Bạn có thể sử dụng cổng 8080 để thực hiện các hoạt động quản lý như thêm/sửa/xóa parsers, scenarios, collections và thực hiện các tác vụ quản lý khác liên quan đến CrowdSec. Điều này cũng là nơi bạn có thể tương tác với CrowdSec Dashboard.
Khi bạn thấy CrowdSec đang “listen” trên địa chỉ IP là 127.0.0.1 (localhost), điều này có nghĩa rằng CrowdSec Agent đang lắng nghe trên giao diện mạng cục bộ và chỉ chấp nhận kết nối từ máy tính của nó. Điều này có thể là một thiết lập mặc định để đảm bảo tính bảo mật.
$ netstat -tlnp | grep crowdsec
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:6060 0.0.0.0:* LISTEN 16319/crowdsec
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 16319/crowdsec
Để cho phép CrowdSec Agent lắng nghe các kết nối từ máy CrowdSec quản lý (hoặc từ các máy khác trong mạng), bạn cần chỉnh sửa tệp cấu hình của CrowdSec Agent. Thường, tệp cấu hình này có tên là
./etc/crowdsec/config.yaml
Bạn hãy vào file /etc/crowdsec/config.yaml
tìm phần cấu hình của CrowdSec Agent để đảm bảo rằng nó đang lắng nghe trên địa chỉ IP mạng, thay vì localhost (127.0.0.1).
Đảm bảo rằng phần này trong tệp cấu hình được cấu hình để lắng nghe trên IP của máy bạn, chẳng hạn như:
listen_uri: 127.0.0.1:8080 -> listen_uri: 0.0.0.0:8080
listen_addr: 127.0.0.1 -> listen_addr: 0.0.0.0
Trong đó, ip: 0.0.0.0
có nghĩa là lắng nghe tất cả các IP (tuy nhiên do mình lab nên mình để 0.0.0.0, nếu hệ thống thật bạn nên chỉ đích danh IP sẽ được kết nối nhé). Điều này cho phép máy CrowdSec quản lý hoặc các máy khác trong mạng kết nối đến CrowdSec Agent.
File /etc/crowdsec/config.yaml
sau khi chỉnh sửa sẽ có nội dụng như dưới.
common:
daemonize: true
log_media: file
log_level: info
log_dir: /var/log/
log_max_size: 20
compress_logs: true
log_max_files: 10
working_dir: .
config_paths:
config_dir: /etc/crowdsec/
data_dir: /var/lib/crowdsec/data/
simulation_path: /etc/crowdsec/simulation.yaml
hub_dir: /etc/crowdsec/hub/
index_path: /etc/crowdsec/hub/.index.json
notification_dir: /etc/crowdsec/notifications/
plugin_dir: /usr/lib/crowdsec/plugins/
crowdsec_service:
#console_context_path: /etc/crowdsec/console/context.yaml
acquisition_path: /etc/crowdsec/acquis.yaml
acquisition_dir: /etc/crowdsec/acquis.d
parser_routines: 1
cscli:
output: human
color: auto
db_config:
log_level: info
type: sqlite
db_path: /var/lib/crowdsec/data/crowdsec.db
#max_open_conns: 100
#user:
#password:
#db_name:
#host:
#port:
flush:
max_items: 5000
max_age: 7d
plugin_config:
user: nobody # plugin process would be ran on behalf of this user
group: nogroup # plugin process would be ran on behalf of this group
api:
client:
insecure_skip_verify: false
credentials_path: /etc/crowdsec/local_api_credentials.yaml
server:
log_level: info
listen_uri: 0.0.0.0:8080
profiles_path: /etc/crowdsec/profiles.yaml
console_path: /etc/crowdsec/console.yaml
online_client: # Central API credentials (to push signals and receive bad IPs)
credentials_path: /etc/crowdsec/online_api_credentials.yaml
trusted_ips: # IP ranges, or IPs which can have admin API access
- 127.0.0.1
- ::1
# tls:
# cert_file: /etc/crowdsec/ssl/cert.pem
# key_file: /etc/crowdsec/ssl/key.pem
prometheus:
enabled: true
level: full
listen_addr: 0.0.0.0
listen_port: 6060
Lưu và đóng file cấu hình. Khởi động lại CrowdSec Agent để áp dụng thay đổi:
sudo systemctl restart crowdsec
Sau khi bạn thực hiện các bước này, CrowdSec Agent sẽ lắng nghe, cho phép tất cả các IP truy cập vào và cho phép máy CrowdSec quản lý hoặc các máy khác trong mạng kết nối và gửi log và dữ liệu đến nó. Điều này giúp bạn theo dõi và phân tích log từ nhiều nguồn khác nhau từ máy chủ của bạn.
$ netstat -tlnp | grep crowdsec
tcp6 0 0 :::6060 :::* LISTEN 18541/crowdsec
tcp6 0 0 :::8080 :::* LISTEN 18541/crowdsec