ตัวกรอง fail2ban แบบกำหนดเองสำหรับความพยายามในการ phpMyadmin bruteforce


9

ในการค้นหาเพื่อป้องกันการphpMyAdminพยายามลงชื่อเข้าใช้ที่ล้มเหลวมากเกินไปfail2banฉันได้สร้างสคริปต์ที่บันทึกว่าการพยายามทำแฟ้มล้มเหลว:/var/log/phpmyadmin_auth.log


บันทึกที่กำหนดเอง

รูปแบบของ/var/log/phpmyadmin_auth.logไฟล์คือ:

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

ตัวกรองที่กำหนดเอง

[Definition]

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

phpMyAdmin คุก

[phpmyadmin]

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

fail2banบันทึกประกอบด้วย:

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

เมื่อฉันออก:

sudo service fail2ban restart

fail2banอีเมลที่ฉันจะบอกsshได้เริ่มต้นใหม่ แต่ฉันไม่ได้รับอีเมลเกี่ยวกับphpmyadminคุก การเข้าสู่ระบบล้มเหลวซ้ำแล้วซ้ำอีกจะphpMyAdminไม่ทำให้เกิดการส่งอีเมล

ฉันพลาดการตั้งค่าที่สำคัญบ้างไหม? การแสดงออกปกติของตัวกรองของฉันผิดหรือเปล่า?


อัปเดต: เพิ่มการเปลี่ยนแปลงจากการติดตั้งเริ่มต้น

เริ่มต้นด้วยการfail2banติดตั้งใหม่ทั้งหมด:

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

เปลี่ยนที่อยู่อีเมลเป็นของฉันเองดำเนินการเป็น:

action = %(action_mwl)s

ผนวกต่อไปนี้เพื่อ jail.local

[phpmyadmin]

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

เพิ่มรายการต่อไปนี้เพื่อ /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 =

เริ่มต้นใหม่ fail2ban

sudo service fail2ban restart

PS: ฉันชอบไข่


1
ดูเหมือนว่าไม่ได้เลือกคุกใหม่ของคุณในการกำหนดค่า โปรดระบุว่าคุณเปลี่ยนแปลงไฟล์ใด
mgorven

@mgorven ฉันได้ปรับปรุงคำถามของฉันกับภาพรวมของสิ่งที่ผมเปลี่ยน
ไมเคิลโรบินสัน

การล็อกอินจริงเหล่านี้พยายามอินสแตนซ์ phpmyadmin ของคุณหรือพวกเขาแค่สแกนเนอร์มองหา phpmyadmin?
Scott Pack

ฉันเชื่อว่ามันเป็นรุ่นหลัง
Michael Robinson

คำตอบ:


8

ไม่เป็นไร แต่ทำไมไม่ใช้ฟังก์ชัน apache เพื่อเข้าสู่ระบบล้มเหลวเข้าสู่ระบบ?

เพิ่มบรรทัดเหล่านี้ใน Apache Config ของคุณ (เช่น: /etc/apache2/conf.d/phpmyadmin.conf) ในส่วนของ VirtualHost ตาม:

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

จากนั้นสร้างตัวกรอง fail2ban:

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

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

ตอนนี้เพิ่มคุกให้ /etc/fail2ban/jail.local

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

รีสตาร์ท apache และ fail2ban:

service  apache2 reload
service fail2ban reload

และคุณก็ทำเสร็จแล้วไม่จำเป็นต้องใช้สคริปต์ PHP อื่น ๆ


3
โปรดอย่าแก้ไขโดยตรงjail.confสร้างสำเนาแทนjail.local
NineCattoRules

คุณถูก @Simone ฉันแก้ไขคำตอบของฉันขอบคุณ
spacebiker

ฉันมีปัญหากับวิธีแก้ปัญหา โปรดดู: serverfault.com/questions/815396/…

2
  1. คุณควรเปลี่ยนสคริปต์ของคุณเพื่อรวมการประทับเวลาในไฟล์บันทึก หากไม่มีสิ่งนี้ fail2ban จะไม่ทำงาน

  2. ใช้fail2ban-regex /var/log/phpmyadmin_auth.log /etc/fail2ban/filter.d/phpmyadmin.confเพื่อยืนยัน regex ของคุณก่อน

  3. ฉันสามารถเริ่ม fail2ban ได้สำเร็จโดยใช้การกำหนดค่าดั้งเดิมของคุณ (ก่อนหน้า 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. เมื่อมี regex ที่ถูกต้องแล้วคุณสามารถใช้การตรวจสอบเพื่อดูว่าไฟล์ของคุณถูกเข้าถึงหรือไม่โดย fail2ban

ฉันใช้ auditctl -w /var/log/phpmyadmin_auth.log -p warx -k phpmyadmin_fail2ban


ฉันมีปัญหากับวิธีแก้ไขโปรดดู: serverfault.com/questions/815396/…
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.