Điểm:0

Fail2ban regex không hoạt động

lá cờ cn

Tôi muốn chặn bất kỳ yêu cầu nhận nào đối với /.git, /wp-login,/remote/login/, vì vậy tôi đã tạo bộ lọc sau bao gồm cả các yêu cầu khác.

 badagents = 360Spider|ZmEu|Auto Spider 1.0|zgrab/[0-9]*\.[0-9a-zA-Z]*|Wget\(.*\)|MauiBot.*|AspiegelBot.*|SemrushBot.* |PHP/.*

failregex = ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD).*HTTP.*(?:%(badagents)s)"$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /+wp-login\.php.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /.git/HEAD.*$
        ^.+?:\d+ <HOST> -.*"GET /.git/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /wp-login/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /.git/objects/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) //.git/objects/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /remote/login/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /wp/wp-includes/.*$
        ^.+?:\d+ <HOST> -.*"GET /wp/wp-includes/.*$
        ^.+?:\d+ <HOST> -.*"GET /wp/wp-login.php/.*$
        ^.+?:\d+ <HOST> -.*"GET /test/wp-includes/.*$
        ^.+?:\d+ <HOST> -.*"GET /config/getuser/.*$

Tôi cũng đã đính kèm cái này vào Jail.local của mình với

[cấm một lần]
đã bật = đúng
cổng = http, https
logpath = /var/log/nginx/access.log
              /var/log/nginx/prod_test.log
bộ lọc = lệnh cấm một lần
bantime = 300
thử nghiệm tối đa = 1
thời gian tìm thấy = 10

Tôi đã kiểm tra điều này bằng cách thử truy cập /.git trên url hơn 10 lần nhưng vẫn không bị cấm. Tại sao điều này thất bại. Tôi tin rằng vấn đề nằm ở failregex, tôi cần thêm thứ tự bổ sung nào để fail2ban hoạt động?

Nhật ký mẫu trông như thế này

3.17.11.219 - - [05/Oct/2021:12:33:15 +0000] "NHẬN //.git/objects/a5/920b6c86cc2d972bde9578c0a5d848dff67354 HTTP/1.1" 301 178 "-" "curl/7.61.1"
lá cờ cn
Trước tiên, hãy tạo tệp nhật ký mẫu bao gồm các mục bạn muốn kích hoạt lệnh cấm, sau đó sử dụng lệnh `fail2ban-regex` để kiểm tra reg-ex của bạn. Thật khó để giúp đỡ nếu không có mẫu nhật ký để so sánh với những gì bạn có ở đây.
Geoff avatar
lá cờ cn
Tôi đã bao gồm một nhật ký mẫu
Điểm:0
lá cờ il

Nhân tiện, regex của bạn (thực sự "dễ bị tổn thương") đang bắt đầu bằng ^.+?:\d+ <HOST> -, có nghĩa là: tìm địa chỉ IP (hoặc tên máy chủ) sau khi đôi khi khớp dấu hai chấm, ít nhất 1 chữ số và dấu cách.
Nhưng đường dây của bạn đang bắt đầu bằng IP.

Vì vậy, biểu thức chính quy của bạn hoàn toàn không khớp với định dạng nhật ký của bạn.

Failregex chính xác (và ít "dễ bị tổn thương") sẽ giống như thế này:

^<ADDR> \S+ \S+ (?:\[\] )?"[A-Z]+ /\S*(?<=/)(?:\.git|wp-login|remote/login)\b[ ^"]*"\s+

nhưng tốt hơn hết là cấm chúng thông qua máy chủ web (phản hồi với 403), sau đó tìm mọi yêu cầu bị lỗi với nội dung như:

^<ADDR> \S+ \S+ (?:\[\] )?"[A-Z]+ /[^"]*"\s+(?!401)[45]\d\d

Đă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.