Điểm:0

Fail2ban trên CentOS 7 với lệnh cấm Traefik do Docker hỗ trợ OK mà không cần bổ sung quy tắc iptables

lá cờ fr

Tôi đã thiết lập một phiên bản Traefik do công cụ Docker chạy ở chế độ Swarm với cấu hình "cổ điển" (xem bên dưới, để cho ngắn gọn, tôi chỉ đặt các phần [với tôi] có liên quan. Hãy hỏi thêm chi tiết nếu bạn cần như vậy).

Fail2Ban đã được cài đặt, cũng như tường lửa (bản phân phối CentOS). Cho đến nay, tôi đã đặt cấu hình bộ lọc/nhà tù đơn giản, chủ yếu để chặn DOS và bruteforce, bằng cách xem nhật ký truy cập Traefik.

Vấn đề của tôi: khi tôi thử với Nikto hoặc thủy, tôi có thể thấy IP đang dùng thử của mình đã bị đưa vào danh sách đen:

# fail2ban-client status symfony-auth
Trạng thái của nhà tù: symfony-auth
|- Bộ lọc
| |- Hiện tại bị lỗi :3
| |- Tổng số không thành công: 906
| ` - Danh sách tệp: /var/log/traefik/access.log
` - Hành động
   |- Đang bị cấm: 1
   |- Tổng số bị cấm: 2
   ` - Danh sách IP bị cấm: 37.19.218.169

Nhưng không có gì thay đổi trên phần quy tắc iptables và tôi có thể thấy IP đã cho không bị chặn.Hơn nữa, nếu tôi cố điều hướng trên trang web từ IP bị cấm, tôi có thể làm điều đó, mặc dù nó bị cấm.

Tôi phải nói thêm rằng tôi có Tệp 00-firewalld.conf, với các hướng dẫn mặc định liên quan đến các hành động cho bản phân phối này:

# mèo /etc/fail2ban/jail.d/00-firewalld.conf
# Tệp này là một phần của gói fail2ban-firewalld để định cấu hình việc sử dụng
# hành động tường lửa là hành động mặc định. Bạn có thể loại bỏ gói này
# (cùng với gói meta fail2ban trống) nếu bạn không sử dụng tường lửa
[MẶC ĐỊNH]
banaction = tường lửacmd-rich-rules[actiontype=<multiport>]
banaction_allports = tường lửacmd-rich-rules[actiontype=<allports>]
phụ trợ = systemd

Cuối cùng, tôi không có bất kỳ chênh lệch múi giờ nào, chẳng hạn như đã nêu đây.

# đuôi /var/log/tin nhắn
12 Thg7 13:28:05 ....
# timedatectl
               Giờ địa phương: Thứ Hai 2021-07-12 13:30:18 UTC
           Giờ quốc tế: Thứ Hai 2021-07-12 13:30:18 UTC
                 Thời gian RTC: Thứ Hai 2021-07-12 13:30:13
                Múi giờ: UTC (UTC, +0000)
Đồng hồ hệ thống được đồng bộ hóa: có
              Dịch vụ NTP: đang hoạt động
          RTC ở TZ địa phương: không


Vậy tại sao IP bị cấm của tôi vẫn có thể truy cập trang web mục tiêu? Cảm ơn bạn đã dẫn và khai sáng.

Đoạn trích

Traefik docker-compose.yml

phần đăng nhập

phiên bản: "3.3"

dịch vụ:
  proxy ngược:
    hình ảnh: "traefik:v2.4"
    chỉ huy:
      # Đăng nhập cấu hình
      #- "--log.level=DEBUG"
      - "--log.filepath=/var/log/traefik/traefik.log"
      - "--accesslog.filepath=/var/log/traefik/access.log"
     

phần khối lượng :

    #...
    khối lượng:
      # Để duy trì chứng chỉ
      - chứng chỉ traefik:/letsencrypt
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - /var/log/traefik:/var/log/traefik/
    #...

Fail2Ban

bộ lọc của tôi

/etc/fail2ban/filter.d/my_filter.conf

[Sự định nghĩa]
failregex = ^<HOST>.*"(GET|POST|HEAD).*" (404|444|403|400|301) .*$
bỏ quaregex =

nhà tù của tôi

[nhà tù của tôi]
 đã bật = đúng
 cổng = http, https
 bộ lọc = my_filter
 logpath = /var/log/traefik/access.log
 thử lại tối đa = 10

trạng thái khách hàng

# fail2ban-tình trạng máy khách
Trạng thái
|- Số tù: 2
` - Danh sách tù: sshd, my_jail
Điểm:1
lá cờ il

Vậy tại sao IP bị cấm của tôi vẫn có thể truy cập trang web mục tiêu?

Có thể có 3 lý do cho điều đó:

  1. của bạn tường lửa phụ trợ (iptables?) không phù hợp để xử lý việc này, xem https://github.com/fail2ban/fail2ban/issues/1609#issuecomment-303085942 (hoặc https://github.com/firewalld/firewalld/issues/44#issuecomment-408211978) để biết chi tiết. Trong thời gian ngắn, chương trình phụ trợ nftables mới của tường lửa có thể xử lý việc này đúng cách, vì vậy bạn có thể cần phải chuyển sang chương trình này hoặc ...
    Điều này cũng có thể dẫn chúng ta đến hai lý do tiếp theo (cái trước liên quan nhiều hơn cái sau):

  2. nếu hệ thống con mạng của bạn có một số quy tắc danh sách trắng (và tôi đoán vậy), chẳng hạn như quy tắc conntrack bỏ qua các kết nối đã được thiết lập trước chuỗi fail2ban, thì việc thêm quy tắc vào bảng fail2ban, từ chối IP, sẽ không ảnh hưởng đến quy tắc đã thiết lập này các kết nối (ví dụ: trong trường hợp duy trì hoạt động), thì chỉ các kết nối mới mới bị từ chối... trong trường hợp này, hãy đảm bảo từ chối kết nối trong máy chủ web sau khi xác thực không thành công hoặc sắp xếp lại các chuỗi (chuỗi fail2ban trước trắng- liệt kê các quy tắc) hoặc hủy kết nối bằng lệnh bổ sung trong hành động cấm, ví dụ. ss -K dst "[<ip>]" hoặc conntrack -D -s <ip>, v.v. Xem https://github.com/fail2ban/fail2ban/pull/3018/commits/8f6a8df3a45395620e434fd15b4ede694a1d00aa (hoặc https://github.com/fail2ban/fail2ban/commit/bbfff1828061514e48395a5dbc5c1f9f81625e82) đối với vấn đề tương tự với ufw;

  3. bởi vì nó được cập cảng, có lẽ bạn phải xác định chuỗi = DOCKER-NGƯỜI DÙNG hoặc tương tự, chỉ là hành động tường lửacmd-rich-quy tắc không phù hợp với điều đó (không có tham số chuỗi ở tất cả)... Sử dụng một hành động cấm khác (ví dụ: bộ lọc mạng gốc như iptables/ipset hoặc nftables) hỗ trợ điều đó.

Dù sao, bạn phải kiểm tra xem lưu lượng truy cập đến (bao gồm cả thiết lập) đến các chuỗi/bảng mà fail2ban tạo ra để cấm IP như thế nào, xem xét tất cả các chuỗi/bảng docker và tường lửa được xác định trước.
Ngoài ra, chỉ cần sử dụng các hành động cấm cho các hệ thống con bộ lọc mạng gốc như iptables+ipset hoặc nftables (ví dụ: với bảng mục tiêu thích hợp cho chuỗi fail2ban chẳng hạn DOCKER-NGƯỜI DÙNG thay vì ĐẦU VÀO).

lá cờ fr
Cảm ơn câu trả lời rất chi tiết của bạn. Vấn đề thực sự là vấn đề thứ ba của bạn, tôi hoàn toàn bỏ lỡ nhiều chuỗi liên quan đến Iptables. Việc thêm `chain = DOCKER-USER` khiến nó hoạt động mà không gặp vấn đề gì

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