Khối IP vĩnh viễn sau khi n thử lại bằng fail2ban


38

Tôi có một fail2ban được cấu hình như dưới đây:

  • chặn ip sau 3 lần thất bại
  • giải phóng IP sau khi hết thời gian 300 giây

Điều này hoạt động hoàn hảo và tôi muốn giữ nó theo cách này để người dùng hợp lệ có cơ hội thử lại đăng nhập sau khi hết thời gian. Bây giờ, tôi muốn thực hiện quy tắc trong đó nếu phát hiện cùng một IP là tấn công và bị chặn, bỏ chặn 5 lần, chặn IP vĩnh viễn và không bao giờ bỏ chặn nữa. Điều này có thể đạt được với fail2ban một mình hay tôi cần phải viết kịch bản của riêng mình để làm điều đó?

Tôi đang làm điều này trong centos.


2
Đó là một ý tưởng khá ngớ ngẩn - bạn càng thêm nhiều quy tắc vào iptables thì nó càng chậm.
symcbean

14
Đánh giá cao bình luận của bạn nhưng những gì tôi cần là một câu trả lời và không phải là một gợi ý. Dù sao cũng cảm ơn bạn.
BTR N Nikol

5
Đôi khi, câu trả lời đúng cho "làm thế nào để tôi làm X" là "không làm X".
ceejayoz

Câu trả lời:


32

Trước 0.11, không có tính năng mặc định hoặc cài đặt nào trong fail2ban để đạt được điều này. Nhưng bắt đầu với phiên bản 0.11 sắp tới, thời gian cấm được tự động tính toán và tăng theo cấp số nhân với mỗi lần vi phạm mới, về lâu dài, sẽ có nghĩa là một khối vĩnh viễn ít nhiều.

Cho đến lúc đó, cách tiếp cận tốt nhất của bạn có lẽ là thiết lập fail2ban để theo dõi tệp nhật ký của chính nó . Đây là một quá trình gồm hai bước ...

Bước 1

Chúng tôi có thể cần tạo bộ lọc để kiểm tra BAN trong tệp nhật ký (tệp nhật ký của fail2ban)

Bước 2

Chúng ta cần xác định nhà tù , tương tự như sau ...

[fail2ban]
đã bật = đúng
bộ lọc = fail2ban
hành động = iptables-allports [name = fail2ban]
logpath = /path/to/fail2ban.log
# thời gian tìm: 1 ngày
thời gian tìm kiếm = 86400
# thời gian: 1 năm
thời gian làm việc = 31536000

Về mặt kỹ thuật, nó không phải là một khối vĩnh viễn , mà chỉ là các khối trong một năm (mà chúng ta cũng có thể tăng lên).

Dù sao, đối với câu hỏi của bạn (Điều này có thể đạt được chỉ với fail2ban hay tôi cần phải viết kịch bản của riêng mình để làm điều đó?) ... viết kịch bản riêng có thể hoạt động tốt. Thiết lập tập lệnh để trích xuất các IP bị cấm thường xuyên và sau đó đưa chúng vào /etc/hosts.denylà những gì tôi khuyên dùng.


1
Thêm vào câu trả lời tuyệt vời này ... Tùy thuộc vào cách ghi nhật ký và MaxAuthTries được định cấu hình sshd_config, điều này có khả năng chỉ chặn 3 lần đăng nhập thất bại cho "phiên" sshd - không cung cấp 3 lần đăng nhập thất bại. Ví dụ: theo mặc định, kẻ tấn công có thể thử ['pass1', 'pass2', 'pass3'] trong một phiên duy nhất trước khi sshd ngắt kết nối. Tùy thuộc vào cách sshd được đặt thành nhật ký, điều này có thể xuất hiện dưới dạng 1, 2 hoặc 3 lần thử thành fail2ban.
Jonathan Vanasco

5
Hiện tại có bộ lọc recidive fail2ban cho điều đó.
Guillermo Prandi

Bạn có ý nghĩa gì khi phát hành 0.11 sắp tới ? Gần đây nhất có vẻ là 10.3.1: github.com/fail2ban/fail2ban/release
user5950

Tôi hy vọng bạn có nghĩa là 0.10.3.1 . Bạn có thể theo dõi tiến trình của "0.11" tại github.com/fail2ban/fail2ban/tree/0.11 . Về cơ bản, nó chưa được phát hành!
Pothi Kalimuthu

29

Tôi tin rằng nếu bạn đặt bantime = -1trong phần cấu hình đó, nó là một khối vĩnh viễn.


2
Thật vậy, đặt bantimethành bất kỳ giá trị âm nào là lệnh cấm vĩnh viễn (kể từ Fail2Ban phiên bản 0.6.1 (2006/03/16))
voretaq7 21/03/13

3
thêm -1 vào cài đặt khiến fail2ban không phản hồi
Erdem Ece

13

Phil Hagen đã viết một bài viết tuyệt vời về chủ đề này. " Vĩnh viễn cấm người phạm tội lặp lại với fail2ban ".

Gợi ý của anh ta giống như Pothi nhưng cung cấp hướng dẫn từng bước.

Cái này bao gồm:

  • danh sách cấm riêng biệt bằng tù (ip.blocklist.ssh, ip.blocklist.xxx)
  • cấm liệt kê tự động tải nếu khởi động lại dịch vụ (ưu điểm chính của phương pháp này)
  • thông báo email nếu repeater tham gia.

6

Để mở rộng câu trả lời của Chin, điều này khá đơn giản. Chỉ cần chỉnh sửa 2 cài đặt /etc/fail2ban/jail.localđể phù hợp với sở thích của bạn.

 # ban time in seconds. Use -1 for forever. Example is 1 week.
 bantime  = 604800
 # number of failures before banning
 maxretry = 5

4

fail2ban đã có một nhà tù để cấm tái phạm. Nếu bạn xem /etc/fail2ban/jail.conf, bạn sẽ tìm thấy:

# Jail for more extended banning of persistent abusers
# !!! WARNING !!!
#   Make sure that your loglevel specified in fail2ban.conf/.local
#   is not at DEBUG level -- which might then cause fail2ban to fall into
#   an infinite loop constantly feeding itself with non-informative lines
[recidive]

enabled  = false
filter   = recidive
logpath  = /var/log/fail2ban.log
action   = iptables-allports[name=recidive]
           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime  = 604800  ; 1 week
findtime = 86400   ; 1 day
maxretry = 5

Làm thế nào để thêm vào jail.local?

[recidive]
enabled  = true
bantime  = 31536000  ; 1 year
findtime = 18144000  ; 1 month
maxretry = 2

Để kiểm tra bạn loglevel bạn có thể làm : fail2ban-client get loglevel.

  • đặt loglevel MYLEVEL : đặt mức ghi nhật ký thành MYLEVEL. Cấp độ: TIÊU CHUẨN, LRI, CẢNH BÁO, THÔNG BÁO, THÔNG TIN, DEBUG
  • Thêm lệnh trên wiki .

Với phiên bản cũ của fail2ban, bạn có thể gặp lỗi này .


0

Truy cập vim, mở /etc/fail2ban/jail.conf

và chỉ sửa đổi sau fail2ban service restart:

# "bantime" is the number of seconds that a host is banned.
bantime  = ***1296000***

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = ***60000***

# "maxretry" is the number of failures before a host get banned.
maxretry = ***3***
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.