Fail2Ban: đã bị cấm?


17

Tôi có Fail2Ban đang chạy trên Máy chủ Centos của mình. (Cấu hình bên dưới)

Trong var / log / message của tôi, tôi nhận thấy một điều thực sự kỳ lạ:

Jun 19 12:09:32 localhost fail2ban.actions: INFO   [postfix] 114.43.245.205 already banned

Tôi đã cấu hình Fail2Ban để thêm IP bị cấm vào iptables.

Nhà tù của tôi

[postfix]

enabled  = true
filter   = postfix
action   = iptables
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/maillog
bantime  = 43200
maxretry = 2

Postfix.conf của tôi:

[INCLUDES]

before = common.conf

[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
            reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
            reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
            reject: RCPT from (.*)\[<HOST>\]: (.*)@yahoo.com.tw
ignoreregex =

Câu hỏi của tôi là làm thế nào bất cứ ai đã bị chặn iptablesvẫn kết nối với máy chủ?


Bạn có thể thêm đầu ra iptables -L -nvcho câu hỏi của bạn?
Ladadadada

Câu trả lời:


14

Nhà tù tái phạm được đề nghị trong câu trả lời khác ở đây đã không khắc phục vấn đề cho tôi. Cuối cùng tôi đã sửa cái này, tuy nhiên, đây là phương pháp của tôi trong trường hợp nó giúp được người khác.

Fail2ban chỉ chặn TCP theo mặc định. Ít nhất với thiết lập của tôi, tôi nhận thấy thông báo "đã bị cấm" xuất hiện khi các bot quay lại để thử cổng bị chặn qua UDP.

Để khắc phục sự cố này, hãy báo cho Fail2ban chặn cổng trên tất cả các giao thức thay vì chỉ TCP. Bạn sẽ cần thực hiện thay đổi này trong /etc/fail2ban/jail.conf và trong phần [Ban đầu] của mọi hành động bạn đang sử dụng tại /etc/fail2ban/action.d/ .

Thay đổi cai nay đi:

# Default protocol
protocol = tcp

Đến:

# Default protocol
protocol = all

Tiếp theo, tôi đã vô hiệu hóa các yêu cầu tiếng vang ICMP để các IP bị chặn không có cách nào đánh vào máy chủ:

  1. nano /etc/sysctl.conf
  2. Thêm hai dòng sau:

    net.ipv4.icmp_echo_ignore_all = 1  
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  3. Thoát và lưu tệp.
  4. Chạy sysctl -p để thay đổi có hiệu lực.

Sau đó, chạy fail2ban-client tải lại và bạn sẽ không thấy các tin nhắn "đã bị cấm" này nữa trừ khi bạn bị spam bởi một IP có một vài lần truy cập trước khi khối có hiệu lực.

Ngoài ra, điều quan trọng là chặn tất cả các cổng cho mọi người vi phạm thay vì cổng mà họ đang cố truy cập bằng cách sử dụng hành động iptables-allports trong mỗi Nhà tù. Mặt khác, họ có thể kích hoạt một Nhà tù khác và kết thúc là "đã bị cấm" trong nhật ký.


3
đối với tôi nó không rõ ràng lắm ... trong /etc/fail2ban/jail.localmột số bộ lọc của tôi có action = iptables-multiport[name=apache-myadmin, port="http,https", protocol=tcp]và một số thì không, tôi có nên thay đổi tất cả những bộ lọc đó không? Tôi có nên thay đổi một cái gì đó trong /etc/fail2ban/filter.d?
NineCattoRules 10/03/2016

1
xin lỗi, nhưng giao thức = tất cả đều không hoạt động, báo lỗi!
Patrik Laszlo

1
"iptables v1.6.2: đa nhu cầu -p tcp', -p udp ', -p udplite', -p sctp' hoặc` -p dccp '"
Patrik Laszlo

ok, đối với tôi, vấn đề là lệnh cấm đã hoạt động, nhưng kẻ tấn công đã sử dụng các kết nối liên tục nên lệnh cấm không có hiệu lực ngay lập tức, vì nó vẫn được kết nối và không có kết nối mới, cách duy nhất để làm khi nó đã xảy ra khởi động lại máy chủ thư
Patrik Laszlo

3

Nếu bạn nhìn vào đầu ra của iptables-save, bạn sẽ thấy các fail2banchuỗi được thiết lập để họ đánh giá các gói theo quy tắc được xác định bởi các bộ lọc, ví dụ:

:fail2ban-ssh - [0:0]
-A INPUT -p tcp -A INPUT -p tcp -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN

Lưu lượng truy cập vẫn đến máy chủ trước khi các quy tắc định tuyến khác được áp dụng và lưu lượng bị từ chối. fail2banvẫn thấy lưu lượng truy cập ban đầu này và đó là lý do tại sao bạn thấy các thông báo "đã bị cấm". Hơn nữa, có một bộ lọc đặc biệt cho người tái phạm ( /etc/fail2ban/filter.d/recidive.conf):

# Fail2Ban filter for repeat bans
#
# This filter monitors the fail2ban log file, and enables you to add long
# time bans for ip addresses that get banned by fail2ban multiple times.
#
# Reasons to use this: block very persistent attackers for a longer time,
# stop receiving email notifications about the same attacker over and
# over again.
#
# This jail is only useful if you set the 'findtime' and 'bantime' parameters
# in jail.conf to a higher value than the other jails. Also, this jail has its
# drawbacks, namely in that it works only with iptables, or if you use a
# different blocking mechanism for this jail versus others (e.g. hostsdeny
# for most jails, and shorewall for this one).

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = fail2ban\.server\.actions

# The name of the jail that this filter is used for. In jail.conf, name the
# jail using this filter 'recidive', or change this line!
_jailname = recidive

failregex = ^(%(__prefix_line)s| %(_daemon)s%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$

[Init]

journalmatch = _SYSTEMD_UNIT=fail2ban.service PRIORITY=4

# Author: Tom Hendrikx, modifications by Amir Caspi

1

Điều này sẽ xảy ra nếu địa chỉ IP bạn đang cấm không thực sự là địa chỉ IP của máy khách đang kết nối với máy chủ. Ví dụ: nếu máy chủ của bạn tình cờ đứng sau bộ cân bằng tải hoặc proxy.

Tôi đã mất khá nhiều thời gian để tìm ra điều này gần đây. Cá trích đỏ là các bản ghi được cấu hình để chụp X-Forwarded-Forđịa chỉ IP, thay vì địa chỉ nguồn thực, trong trường hợp của tôi là bộ cân bằng tải.

Trong trường hợp này fail2ban không giúp được gì nhiều, vì việc cấm IP vi phạm cuối cùng sẽ chặn tất cả lưu lượng.


Vì vậy, những hành động thay thế bạn đã thực hiện?
Hassan Baig

@HassanBaig - không có. Fail2ban không thể làm bất cứ điều gì nếu nó hoạt động đằng sau bộ cân bằng tải hoặc proxy ngược.
Dale Anderson

Hmm, bạn sẽ dùng biện pháp nào để chống lại DoS phân tán xảy ra ở lớp ứng dụng, giả sử lũ HTTP GET?
Hassan Baig

1
@HassanBaig Nói chuyện với nhà cung cấp dịch vụ lưu trữ của bạn. Có thể bạn không phải là người duy nhất gặp phải vấn đề tương tự trên hệ thống của họ.
Dale Anderson

0

Tôi muốn đóng góp vấn đề và giải pháp của riêng tôi với các tin nhắn "đã bị cấm". Như bạn đã viết, tôi đã có hàng trăm người trong số họ trong vòng vài phút trong khi kẻ tấn công đáng lẽ đã bị cấm.

Trước khi tôi bắt đầu, đây là hệ thống của tôi:

  • Plesk 12
  • Trung tâm 7
  • Plesk-Module đã cài đặt, vận hành và định cấu hình fail2ban cho tôi

Khi tôi cài đặt OpenVPN trên máy chủ gốc của mình, tôi đã chuyển tường lửa thành iptables. Điều đó có thể đã gây ra vấn đề này cho tôi, nhưng ngoài ra, hệ thống của tôi hầu như chưa được xử lý và được cài đặt khá mới (Strato rooterver gợi ý cài đặt hình ảnh).

Nếu bạn gặp vấn đề này, vui lòng kiểm tra /etc/fail2ban/jail.d/00-firewalld.conf để biết một dòng giống như thế này:

banaction = firewallcmd-ipset

Từ lúc tôi nhận xét rằng, lưu tệp và khởi động lại fail2ban.service, mọi thứ đều ổn với fail2ban. Không có thêm tin nhắn

Tôi không phải là một chuyên gia nhưng hy vọng sẽ cung cấp cho bạn câu trả lời đúng. Nếu điều đó làm việc cho bạn, xin vui lòng cho tôi biết!


0

Câu hỏi của tôi là làm thế nào bất cứ ai đã bị chặn trong iptables vẫn có thể kết nối với máy chủ?

Nó chỉ kết nối với máy chủ một lần, nhưng trong một kết nối đó, nó đã cố gắng gửi nhiều email đến các hộp thư không có khả năng tồn tại (như info@domain.com, sales@domain.com, tech@domain.com, v.v.)

Bạn đã định cấu hình bộ lọc postfix của mình để cấm những lần thử đó để IP sẽ bị cấm sau khi X thử. Máy khách có thể đã bị ngắt kết nối với postfix, nhưng vì postfix có thể chưa xử lý xong tất cả email của nó, fail2ban có thể phát hiện một nỗ lực khác từ cùng một máy khách khi postfix xử lý thư của nó và do đó bạn nhận được địa chỉ thư đã bị cấm. Đó là vì cách hàng đợi postfix hoạt động.


0

Câu hỏi của tôi là làm thế nào bất cứ ai đã bị chặn trong iptables vẫn có thể kết nối với máy chủ?

Câu hỏi hay không thể tin được. Tôi đã tìm kiếm xung quanh nếu quy tắc tường lửa của tôi không hoạt động, nhưng iptables --list-ruleschính xác phù hợp với một máy chủ sản xuất khác đang hoạt động fail2ban.

Giải pháp hữu ích là thêm cổng 8080 vào các cổng bị chặn, vì tôi vẫn đang truy cập trang đăng nhập qua các cổng phát triển.

Vì vậy, cách khắc phục trong tình huống của tôi là sự cố này là một sự thích ứng khá đơn giản của tôi jail.local:

[JIRA-LOGIN-tcp]
  enabled = true
  port = http,https,8080
  protocol = tcp
  filter = JIRA-LOGIN-ERROR
  logpath = /var/atlassian/application-data/jira/log/atlassian-jira-security.log
  bantime = 600
  maxretry = 1

0

xem /unix//a/525798/22315

có lẽ bạn đang thiếu cổng 587 từ dòng "port =" và bạn có thể kiểm tra tệp cấu hình postfix hoặc thực hiện "lsof -i: 587" để tìm hiểu trực tiếp, nếu postfix đã được cấu hình để mở cổng đó.

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.