Điểm:0

Backtesting Nhật ký lịch sử trong fail2ban

lá cờ tk

Cài đặt Tôi đang chạy apache trên máy chủ ubuntu. Tôi đã tạo quy tắc fail2ban cấm ip khi họ yêu cầu quá nhiều trang quá nhanh.

# Quy tắc Fail2ban
failregex = ^.*?(:80|:443) <HOST> - .* "(GET|POST|HEAD).*$
bỏ quaregex =.*(.ico|.jpg|.png|.gif|.js|.css|.woff|.mp4)

thời gian tìm thấy = 30
thử lại tối đa = 10

Ghi bàn:
Tôi muốn chạy nhật ký apache cũ theo quy tắc fail2ban mới này để tôi có thể xem liệu nó có cấm bất kỳ yêu cầu hợp pháp nào không.

Nỗ lực số 1 Tôi nghĩ rằng tôi có thể sử dụng fail2ban-regex để lấy danh sách những người dùng có khả năng bị cấm nhưng nó không có chức năng đó.

Cố gắng #2 Tôi nghĩ việc lặp lại nhật ký lịch sử vào nhật ký mà fail2ban hiện đang xem sẽ khiến chúng bị phân tích cú pháp. Sau khi khắc phục một sự cố treo máy nhỏ trong đó các dòng nhật ký có ngày cũ bị bỏ qua (đã khắc phục bằng cách thêm một năm vào chúng), fail2ban bắt đầu phân tích cú pháp chúng và cấm IP từ đó. Tuy nhiên, tôi chỉ cần nhìn vào IP bị cấm đầu tiên để thấy rằng nó đã sai. IP được đề cập chỉ thực hiện tổng cộng 10 yêu cầu và chúng không ở gần nhau theo thời gian. Tôi chỉ có thể cho rằng fail2ban không sử dụng dấu thời gian của dòng nhật ký để xác định tính hợp lệ khiến phương pháp thử nghiệm này bị phá sản.

# ví dụ tiếng vang
zcat other_vhosts_access.log.8.gz | sed -n 's/\/2022:/\/2032:/p' >> /var/log/apache2/fail2ban_test.log

Phần kết luận Với cả hai lần thử trước đây của tôi đều thất bại, tôi không thể nghĩ ra một cách lành mạnh nào để tiếp cận vấn đề này. Ai đó có thể đề xuất một cách để đạt được những gì tôi đang theo đuổi không? Hoặc cung cấp thông tin chi tiết về lý do tại sao giải pháp thứ hai của tôi không hiệu quả.

Điểm:0
lá cờ il

Nỗ lực số 1

trực tiếp nhìn thấy nó đã không thực sự, nhưng ...

Mặc dù các phiên bản mới nhất của fail2ban-regex hỗ trợ các tham số đầu ra, vì vậy bạn có thể thực hiện như sau:

fail2ban-client set "$jail" banip $(
   fail2ban-regex -o 'ip' /var/log/path/some.log some-filter | sắp xếp --unique | tr'\n' ' '
)

nó sẽ chỉ phù hợp nếu bạn tìm thấy bất kỳ IP nào bị lỗi bất kể số lượng / thời gian. Trong trường hợp của bạn, ít nhất nó sẽ vô nghĩa nếu không có thêm một số tiền xử lý.

Nỗ lực #2 Tôi nghĩ việc lặp lại nhật ký lịch sử vào nhật ký mà fail2ban hiện đang xem sẽ khiến chúng bị phân tích cú pháp.

Nó sẽ không hoạt động vì fail2ban sẽ không thực sự xem xét thời gian của thông báo một cách chính xác: nó sẽ quá cũ (nếu được ghi lại chưa sửa đổi) hoặc nó sẽ không chính xác (nếu bây giờ được ghi là thời điểm thất bại, vì bạn cần xem xét thử nghiệm tối đathời gian tìm kiếm trên thực tế sử dụng). Lưu ý đề cập rằng fail2ban sẽ tìm cách bây giờ - thời gian tìm thấy khi bắt đầu (vì các tin nhắn khác không thú vị với nó, vì quá lỗi thời), hãy xem https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-758036512.

Dù sao thì tại thời điểm này, khó có thể thực hiện được với các công cụ fail2bans có sẵn (ít nhất là trừ khi cơ sở "quét lại" này từ RFE ở trên được triển khai và phát hành).

Nhưng kể từ fail2ban (cũng như fail2ban-regex) là một mô-đun trong python, có thể có một bộ lọc từ lệnh cấm viết python vào một số nhật ký hoặc gửi chúng trực tiếp đến phiên bản fail2ban chính, xem https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-1039267423 cho ví dụ kịch bản như vậy.

Cũng lưu ý rằng bộ lọc của bạn cực kỳ dễ bị tổn thương và chậm, tốt hơn là viết lại nó chính xác nhất có thể, bằng cách nào đó như ở đây:

failregex = ^"<ADDR>" \S+ \S+ [^"]*"[A-Z]+ /(?:\S+/)*[^\.]*(?:\.(?!ico|jpg|png |gif|js|css|woff|mp4)\w+)? [^"]+"

Và cuối cùng nhưng không kém phần quan trọng, tại sao bạn lại cần điều đó? Nếu nhà tù có bộ lọc như vậy đang hoạt động và những trình thu thập thông tin như vậy quay trở lại, chúng sẽ bị cấm ngay khi chúng thực hiện thử nghiệm tối đa thất bại trong thời gian thời gian tìm kiếm, được định cấu hình cho nhà tù. Việc cấm phòng ngừa là không thực sự cần thiết và sẽ chỉ làm phiền hệ thống con bộ lọc mạng của bạn với rất nhiều IP (chúng có thể sẽ không bao giờ quay lại nữa).

lá cờ tk
Cảm ơn bạn, sebres. Tôi không thể yêu cầu một câu trả lời đầy đủ hơn. Tôi sẽ xem xét tập lệnh python đó. Cải tiến regex của bạn cũng được đánh giá rất cao. Vì lý do của tôi, tôi không cố gắng thực hiện lệnh cấm phòng ngừa mà thay vào đó cố gắng xác định các kết quả dương tính giả. Bằng cách chạy lại nhật ký cũ, tôi hy vọng tìm thấy các tình huống mà người dùng bị cấm sử dụng hợp pháp. Sau đó tôi sẽ sửa đổi failregex để chấp nhận chúng. Chạy backtest sẽ cung cấp kết quả nhanh hơn và chính xác hơn so với kiểm tra thủ công.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.