Cả hai công cụ đều đọc nhật ký và cấm địa chỉ, và thoạt nhìn CrowdSec giống một Fail2ban với mã nguồn mới hơn. Khác biệt giữa chúng cơ bản hơn thế, và nó không nằm ở tuổi của mã mà ở chỗ quyết định chặn đến từ đâu.
Chúng được dựng thế nào
Fail2ban là một tiến trình duy nhất đọc nhật ký, đếm số lần khớp biểu thức chính quy và gọi lệnh của tường lửa. Mọi quyết định đều được đưa ra trên máy của bạn từ các bộ đếm của chính bạn. Chẳng có gì được gửi đi đâu, không có phụ thuộc, và cấu hình là các tệp văn bản.
CrowdSec được chia làm hai phần, và đó là điều chính cần hiểu trước khi cài. Bản thân agent chỉ phát hiện: nó phân tích nhật ký, áp dụng các kịch bản và ghi quyết định vào cơ sở dữ liệu của mình. Quyết định được thi hành bởi một chương trình riêng là bouncer. Và nếu không cài bouncer thì CrowdSec vẫn chạy, vẫn hiển thị alert, vẫn giữ danh sách quyết định — và chẳng chặn gì cả.
Đây là nỗi thất vọng phổ biến nhất trong lần làm quen đầu tiên: công cụ đã cài, các cuộc tấn công đều thấy được, và lưu lượng vẫn chảy y hệt như trước.
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list
Lệnh cuối này phải hiển thị ít nhất một mục đã đăng ký. Danh sách rỗng nghĩa là không có việc chặn nào.
Khác biệt thứ hai: danh tiếng chung
Fail2ban chỉ biết chuyện gì đã xảy ra ở chỗ bạn. Một địa chỉ hôm qua dành cả ngày đột nhập một trăm máy chủ khác vẫn sạch trong mắt nó cho tới khi gõ cửa nhà bạn — và năm lần thử đầu tiên của nó là miễn phí.
CrowdSec gửi tín hiệu về những gì đã kích hoạt tới một mạng chung và nhận lại danh sách các địa chỉ đã thấy trên máy chủ của người khác. Hiệu quả thực tế: một phần đáng kể của việc dò mật khẩu bị cắt ngay cả trước lần thử đầu tiên. Và điều đó đặc biệt quan trọng trước các cuộc tấn công phân tán — hàng nghìn địa chỉ, mỗi cái một lần thử, nơi các bộ đếm cục bộ bất lực theo định nghĩa.
Và đây là điều cần biết trước: việc trao đổi diễn ra theo cả hai chiều. Thứ rời khỏi máy chủ của bạn là các địa chỉ vi phạm và loại kịch bản đã kích hoạt. Hoàn toàn có thể chạy thuần cục bộ — không đăng ký với console đám mây — nhưng khi đó danh sách chung cũng không còn khả dụng với bạn, và lợi thế chính biến mất. Đó là một lựa chọn có ý thức chứ không phải chi tiết cấu hình.
Các lệnh hằng ngày
sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25
metrics trả lời câu hỏi liệu nhật ký có được đọc hay không: nếu số dòng đã phân tích bằng không thì bộ sưu tập cho máy chủ web của bạn chưa được cài hoặc đường dẫn nhật ký sai. Đó là trường hợp «đã cài và không hoạt động» phổ biến thứ hai.
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
Tài nguyên
CrowdSec được viết bằng Go và giữ trạng thái của nó trong cơ sở dữ liệu. Mức dùng bộ nhớ vào khoảng một trăm megabyte, cộng thêm bouncer. Trên máy chủ có một gigabyte bộ nhớ thì điều đó cảm nhận được; từ hai trở lên thì không. Fail2ban nhẹ hơn, và làm ít hơn.
Có nên dùng cả hai
Chúng không xung đột: một cái ghi quy tắc của nó vào tường lửa và cái kia ghi quy tắc của mình, còn việc cấm cùng một địa chỉ hai lần chẳng hại ai. Cách phân chia hợp lý trông như thế này.
CrowdSec đảm nhận lưu lượng đại trà: dò mật khẩu SSH, quét máy chủ web, và các địa chỉ xấu đã biết từ danh sách chung. Còn Fail2ban ở lại nơi bạn có nhật ký riêng theo định dạng riêng, mà viết một biểu thức chính quy còn dễ hơn viết một kịch bản — một ứng dụng tự làm, một dịch vụ hiếm, một biểu mẫu đăng nhập đặc thù.
Và nếu phải chọn một, tiêu chí là thế này: trên máy chủ có trang web bị dò dẫm liên tục, CrowdSec cho nhiều hơn nhờ danh sách chung. Nhưng trên máy chủ chỉ mình bạn với tới qua SSH bằng khóa thì khác biệt giữa chúng là nhỏ — phần lớn công việc ở đó đã hoàn tất bằng việc tắt mật khẩu.
Một giới hạn chung
Chẳng cái nào bảo vệ trước một lỗi của ứng dụng. Cả hai đều làm việc với tần suất yêu cầu và danh tiếng địa chỉ, còn một yêu cầu khai thác lỗ hổng của một plugin ngay từ lần thử đầu tiên từ một địa chỉ sạch sẽ đi lướt qua cả hai. Đó là việc của các công cụ khác — WAF ở mức yêu cầu và các bản cập nhật kịp thời. Việc chặn địa chỉ loại bỏ nền nhiễu, chứ không phải nguyên nhân.
Và giá trị thực tiễn của cả hai phụ thuộc vào việc có ai nhìn vào kết quả hay không. Số quyết định tăng lên, một kịch bản lần đầu kích hoạt, sự thay đổi của các quốc gia mà các lần thử đến từ đó — đó chính là thông tin mà vì nó công cụ đã được cài. Trên một trang thì nó trông ra sao — xem ở demo bên dưới.