Dalam pencarian saya untuk memblokir phpMyAdmin
upaya login gagal yang berlebihan dengan fail2ban
, saya telah membuat skrip yang mencatat upaya yang gagal untuk file:/var/log/phpmyadmin_auth.log
Log khusus
Format /var/log/phpmyadmin_auth.log
file adalah:
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
Filter khusus
[Definition]
# Count all bans in the logfile
failregex = phpMyadmin login failed with username: .*; ip: <HOST>;
Penjara phpMyAdmin
[phpmyadmin]
enabled = true
port = http,https
filter = phpmyadmin
action = sendmail-whois[name=HTTP]
logpath = /var/log/phpmyadmin_auth.log
maxretry = 6
The fail2ban
log berisi:
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
Ketika saya menerbitkan:
sudo service fail2ban restart
fail2ban
email yang ingin saya sampaikan ssh
telah dimulai kembali, tetapi saya tidak menerima email semacam itu tentang phpmyadmin
penjara saya . Login gagal berulang phpMyAdmin
tidak menyebabkan email dikirim.
Apakah saya melewatkan beberapa pengaturan kritis? Apakah ekspresi reguler filter saya salah?
Perbarui: menambahkan perubahan dari instalasi default
Dimulai dengan fail2ban
instalasi yang bersih :
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ubah alamat email menjadi milik saya, tindakan ke:
action = %(action_mwl)s
Tambahkan yang berikut ke jail.local
[phpmyadmin]
enabled = true
port = http,https
filter = phpmyadmin
action = sendmail-whois[name=HTTP]
logpath = /var/log/phpmyadmin_auth.log
maxretry = 4
Tambahkan yang berikut ke /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 =
Mengulang kembali fail2ban
sudo service fail2ban restart
PS: Saya suka telur
sumber
Jawaban:
Itu bagus tapi mengapa tidak menggunakan fungsi apache untuk login gagal login?
Tambahkan baris ini ke Apache Config Anda (yaitu: /etc/apache2/conf.d/phpmyadmin.conf) di Bagian VirtualHost yang sesuai:
Kemudian buat filter fail2ban:
/etc/fail2ban/filter.d/phpmyadmin.conf
Sekarang tambahkan jail ke /etc/fail2ban/jail.local
Mulai ulang apache dan fail2ban:
dan Anda selesai, tidak perlu skrip php seterusnya ..
sumber
jail.conf
, buat salinannyajail.local
Anda harus mengubah skrip Anda untuk memasukkan stempel waktu dalam file log. Tanpa ini, fail2ban tidak akan berfungsi
gunakan
fail2ban-regex /var/log/phpmyadmin_auth.log /etc/fail2ban/filter.d/phpmyadmin.conf
untuk memverifikasi regex Anda terlebih dahulu.Saya dapat memulai fail2ban dengan sukses menggunakan konfigurasi asli Anda (sebelum jail.local)
Setelah regex yang benar ada, Anda dapat menggunakan audit untuk melihat apakah file Anda diakses atau tidak oleh fail2ban.
Saya menggunakan
auditctl -w /var/log/phpmyadmin_auth.log -p warx -k phpmyadmin_fail2ban
sumber