Bộ lọc fail2ban tùy chỉnh cho các nỗ lực bruteforce của phpMyadmin


9

Trong nhiệm vụ của tôi để chặn các phpMyAdminlần đăng nhập thất bại quá mức với fail2ban, tôi đã tạo một tập lệnh ghi nhật ký các lần thử thất bại vào một tệp:/var/log/phpmyadmin_auth.log


Nhật ký tùy chỉnh

Định dạng của /var/log/phpmyadmin_auth.logtệp là:

phpMyadmin login failed with username: root; ip: 192.168.1.50; url: http://somedomain.com/phpmyadmin/index.php
phpMyadmin login failed with username: ; ip: 192.168.1.50; url: http://192.168.1.48/phpmyadmin/index.php

Bộ lọc tùy chỉnh

[Definition]

# Count all bans in the logfile
failregex = phpMyadmin login failed with username: .*; ip: <HOST>;

Nhà tù phpMyAdmin

[phpmyadmin]

enabled  = true
port    = http,https
filter   = phpmyadmin
action   = sendmail-whois[name=HTTP]
logpath  = /var/log/phpmyadmin_auth.log
maxretry = 6

Các fail2banbản ghi có chứa:

2012-10-04 10:52:22,756 fail2ban.server : INFO   Stopping all jails
2012-10-04 10:52:23,091 fail2ban.jail   : INFO   Jail 'ssh-iptables' stopped
2012-10-04 10:52:23,866 fail2ban.jail   : INFO   Jail 'fail2ban' stopped
2012-10-04 10:52:23,994 fail2ban.jail   : INFO   Jail 'ssh' stopped
2012-10-04 10:52:23,994 fail2ban.server : INFO   Exiting Fail2ban
2012-10-04 10:52:24,253 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.6
2012-10-04 10:52:24,253 fail2ban.jail   : INFO   Creating new jail 'ssh'
2012-10-04 10:52:24,253 fail2ban.jail   : INFO   Jail 'ssh' uses poller
2012-10-04 10:52:24,260 fail2ban.filter : INFO   Added logfile = /var/log/auth.log
2012-10-04 10:52:24,260 fail2ban.filter : INFO   Set maxRetry = 6
2012-10-04 10:52:24,261 fail2ban.filter : INFO   Set findtime = 600
2012-10-04 10:52:24,261 fail2ban.actions: INFO   Set banTime = 600
2012-10-04 10:52:24,279 fail2ban.jail   : INFO   Creating new jail 'ssh-iptables'
2012-10-04 10:52:24,279 fail2ban.jail   : INFO   Jail 'ssh-iptables' uses poller
2012-10-04 10:52:24,279 fail2ban.filter : INFO   Added logfile = /var/log/auth.log
2012-10-04 10:52:24,280 fail2ban.filter : INFO   Set maxRetry = 5
2012-10-04 10:52:24,280 fail2ban.filter : INFO   Set findtime = 600
2012-10-04 10:52:24,280 fail2ban.actions: INFO   Set banTime = 600
2012-10-04 10:52:24,287 fail2ban.jail   : INFO   Creating new jail 'fail2ban'
2012-10-04 10:52:24,287 fail2ban.jail   : INFO   Jail 'fail2ban' uses poller
2012-10-04 10:52:24,287 fail2ban.filter : INFO   Added logfile = /var/log/fail2ban.log
2012-10-04 10:52:24,287 fail2ban.filter : INFO   Set maxRetry = 3
2012-10-04 10:52:24,288 fail2ban.filter : INFO   Set findtime = 604800
2012-10-04 10:52:24,288 fail2ban.actions: INFO   Set banTime = 604800
2012-10-04 10:52:24,292 fail2ban.jail   : INFO   Jail 'ssh' started
2012-10-04 10:52:24,293 fail2ban.jail   : INFO   Jail 'ssh-iptables' started
2012-10-04 10:52:24,297 fail2ban.jail   : INFO   Jail 'fail2ban' started

Khi tôi phát hành:

sudo service fail2ban restart

fail2banemail tôi nói sshđã khởi động lại, nhưng tôi không nhận được email nào như vậy về phpmyadminnhà tù của tôi . Lặp đi lặp lại đăng nhập thất bại để phpMyAdminkhông gửi email.

Tôi đã bỏ lỡ một số thiết lập quan trọng? Là biểu thức chính quy của bộ lọc của tôi sai?


Cập nhật: thêm các thay đổi từ cài đặt mặc định

Bắt đầu với một fail2bancài đặt sạch :

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Thay đổi địa chỉ email thành của riêng tôi, hành động thành:

action = %(action_mwl)s

Nối các mục sau vào jail.local

[phpmyadmin]

enabled  = true
port     = http,https
filter   = phpmyadmin
action   = sendmail-whois[name=HTTP]
logpath  = /var/log/phpmyadmin_auth.log
maxretry = 4

Thêm vào đây /etc/fail2ban/filter.d/phpmyadmin.conf

# phpmyadmin configuration file
#
# Author: Michael Robinson
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

# Count all bans in the logfile
failregex = phpMyadmin login failed with username: .*; ip: <HOST>;

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#

# Ignore our own bans, to keep our counts exact.
# In your config, name your jail 'fail2ban', or change this line!
ignoreregex =

Khởi động lại fail2ban

sudo service fail2ban restart

Tái bút: Tôi thích trứng


1
Có vẻ như nó không chọn nhà tù mới của bạn trong cấu hình. Vui lòng xác định chính xác những tập tin bạn đã thay đổi.
mgorven

@mgorven Tôi đã cập nhật câu hỏi của mình với tổng quan toàn diện về những gì tôi đã thay đổi
Michael Robinson

Đây có phải là những lần thử đăng nhập thực tế vào phiên bản phpmyadmin của bạn hay chúng chỉ đơn giản là các trình quét tìm kiếm phpmyadmin?
Scott Pack

Tôi tin rằng họ là người đến sau
Michael Robinson

Câu trả lời:


8

Điều đó tốt nhưng tại sao không sử dụng chức năng apache để đăng nhập đăng nhập thất bại?

Thêm các dòng này vào Cấu hình Apache của bạn (ví dụ: /etc/apache2/conf.d/phpmyadmin.conf) trong Phần Virtualhost theo:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined
CustomLog /var/log/apache2/phpmyadmin_access.log pma_combined

Sau đó tạo bộ lọc fail2ban:

/etc/fail2ban/filter.d/phpmyadmin.conf

[Definition]
denied = mysql-denied|allow-denied|root-denied|empty-denied
failregex = ^<HOST> -.*(?:%(denied)s)$
ignoreregex =

Bây giờ thêm tù vào /etc/fail2ban/jail.local

[phpmyadmin]
enabled = true
port = http,https
filter = phpmyadmin
logpath = /var/log/apache2/phpmyadmin_access.log

Khởi động lại apache và fail2ban:

service  apache2 reload
service fail2ban reload

và bạn đã hoàn tất, không cần tập lệnh php, v.v.


3
Vui lòng không chỉnh sửa trực tiếp jail.conf, thay vào đó hãy tạo một bản saojail.local
NineCattoRules

Bạn nói đúng @Simone, tôi đã sửa đổi câu trả lời của mình, cảm ơn
spacebiker

Tôi đang có một vấn đề với giải pháp. Xin vui lòng xem: serverfault.com/questions/815396/...

2
  1. Bạn nên thay đổi tập lệnh của mình để đưa dấu thời gian vào tệp nhật ký. Không có cái này, fail2ban sẽ không hoạt động

  2. sử dụng fail2ban-regex /var/log/phpmyadmin_auth.log /etc/fail2ban/filter.d/phpmyadmin.confđể xác minh regex của bạn đầu tiên.

  3. Tôi có thể bắt đầu fail2ban thành công bằng cách sử dụng cấu hình ban đầu của bạn (trước jail.local)

    Oct  7 00:42:07 hostname yum: Installed: python-inotify-0.9.1-1.el5.noarch 
    Oct  7 00:42:08 hostname yum: Installed: fail2ban-0.8.4-29.el5.noarch
    Oct  7 00:42:10 hostname yum: Installed: phpMyAdmin-2.11.11.3-2.el5.noarch
    Oct  7 01:01:03 hostname fail2ban.server : INFO   Changed logging target to SYSLOG for Fail2ban v0.8.4
    Oct  7 01:01:03 hostname fail2ban.jail   : INFO   Creating new jail 'phpmyadmin'
    Oct  7 01:01:03 hostname fail2ban.jail   : INFO   Jail 'phpmyadmin' uses Gamin
    Oct  7 01:01:03 hostname fail2ban.filter : INFO   Set maxRetry = 2
    Oct  7 01:01:03 hostname fail2ban.filter : INFO   Set findtime = 600
    Oct  7 01:01:03 hostname fail2ban.actions: INFO   Set banTime = 600
    Oct  7 01:01:03 hostname fail2ban.jail   : INFO   Creating new jail 'ssh-iptables'
    Oct  7 01:01:03 hostname fail2ban.jail   : INFO   Jail 'ssh-iptables' uses Gamin
    Oct  7 01:01:03 hostname fail2ban.filter : INFO   Added logfile = /var/log/secure
    Oct  7 01:01:03 hostname fail2ban.filter : INFO   Set maxRetry = 5
    Oct  7 01:01:03 hostname fail2ban.filter : INFO   Set findtime = 600
    Oct  7 01:01:03 hostname fail2ban.actions: INFO   Set banTime = 600
    Oct  7 01:01:03 hostname fail2ban.jail   : INFO   Jail 'phpmyadmin' started
    Oct  7 01:01:03 hostname fail2ban.jail   : INFO   Jail 'ssh-iptables' started
    Oct  7 01:10:54 hostname fail2ban.jail   : INFO   Jail 'phpmyadmin' stopped
    Oct  7 01:10:55 hostname fail2ban.jail   : INFO   Jail 'ssh-iptables' stopped
    Oct  7 01:10:55 hostname fail2ban.server : INFO   Exiting Fail2ban
    Oct  7 01:10:56 hostname fail2ban.server : INFO   Changed logging target to SYSLOG for Fail2ban v0.8.4
    Oct  7 01:10:56 hostname fail2ban.jail   : INFO   Creating new jail 'phpmyadmin'
    Oct  7 01:10:56 hostname fail2ban.jail   : INFO   Jail 'phpmyadmin' uses Gamin
    Oct  7 01:10:56 hostname fail2ban.filter : INFO   Added logfile = /var/log/phpmyadmin_auth.log
    
  4. Khi regex chính xác được đặt đúng chỗ, bạn có thể sử dụng kiểm toán để xem liệu tệp của bạn có được truy cập hay không bởi fail2ban.

Tôi đã sử dụng auditctl -w /var/log/phpmyadmin_auth.log -p warx -k phpmyadmin_fail2ban


Tôi đang gặp một vấn đề với các giải pháp, vui lòng xem: serverfault.com/questions/815396/...
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.