Fail2ban İle MySQL Brute Force Saldırılarını Engelleme

Fail2ban İle MySQL Brute Force Saldırılarını Engelleme

Merhabalar,

Daha önce Brute Force Saldırısı Nedir ? Nasıl Önlem Alınır ? adlı yazımda Brute Force Saldırıları hakkında bilgi vermiştim ve gerekli birkaç önlemi anlatmıştım.

Bu yazımda ise MySQL yani veritabanımıza yapılan bir brute force saldırısını engellemeyi anlatacağım. Bunu biz  apache’nin fail2ban modülünü kullanacağız.

MySQL Brute Force Saldırılarını Engelleme

Fail2ban ile MySQL’le yapılan Brute Force Saldırılarını engellemek için aşağıda ki adımları sırasıyla takip ediniz.

1.İlk olarak my.cnf içinde MySQL Error Log kayıtlarını aktif edelim.

log_warnings = 2
log_error = /var/log/mysql/error.log
/etc/init.d/mysql restart

2. Daha sonra Fail2Ban için mysql.conf adında bir filtre oluşturuyoruz.

vim /etc/fail2ban/filter.d/mysql.conf

ve oluşturduğumuz bu dosyanın içine aşağıda ki kodları yazın ve dosyayı kaydedin.

[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 “” can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
failregex = Access denied for user ‘.*’@'<HOST>’
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

3. vim /etc/fail2ban/jail.conf  dosyasını açalım ve bu dosyanın içerisine aşağıda satırları ekleyip, dosyayı kaydedin.

[mysql]
enabled = true
port = 6033
filter = mysql
logpath = /var/log/mysql/error.log
maxretry = 1

4. Fail2ban için oluşturduğumuz filtrenin doğru çalışıp, çalışmadığını kontrol edelim.

fail2ban-regex /var/log/mysql/error.log /etc/fail2ban/filter.d/mysql.conf

Bu kodu çalıştırdığınızda aşağıdaki hataya benzer bir hata alırsanız /usr/share/fail2ban/server/datedetector.py   dosyasına aşağıda ki satırları ekleme yapmalıyız.

Hata Mesajı:

Found a match for ‘150813 15:32:54 [Warning] Access denied for user ‘root’@’10.9.5.55’ (using password: YES)
‘ but no valid date/time found for ‘150813 15:32:54 [Warning] Access denied for user ‘root’@’10.9.5.55‘ (using password: YES)
‘. Please contact the author in order to get support for this format

Hata alınırsa vim /usr/share/fail2ban/server/datedetector.py  dosyasını açın ve finally: adlı satırı bulun ve aşağıda ki satırları ekleyin.

# MySQL date detector
template = DateStrptime()
template.setName(“YearMonthDay Hour:Minute:Second”)
template.setRegex(“\d{2}\d{2}\d{2} {1,2}\d{1,2}:\d{2}:\d{2}”)
template.setPattern(“%y%m%d %H:%M:%S”)
self.__templates.append(template)

Kodları doğru şekilde eklediyseniz  tekrar Fail2ban için oluşturduğumuz filtremizi kontrol ediyoruz.

fail2ban-regex /var/log/mysql/error.log /etc/fail2ban/filter.d/mysql.conf

Herhangi bir hata almadıysanız aşağıda ki gibi bir mesaj gelecektir konsol ekranınıza.

Success, the total number of match is 46

Bütün bu işlemler SSH ekranında gerçekleştirdik. PuTTy programı yardımıyla yukarıda ki işlemleri gerçekleştirebilirsiniz. Bu yöntem ile MySQL sunucumuza yapılabilecek olan Brute Force Saldırıları engellenmiş oldu.

Bir önceki yazım olan Brute Force Saldırısı Nedir ? Nasıl Önlem Alınır ? başlıklı yazımda Brute Force, Brute Force Nedir ? ve Brute Force Saldırısı Nasıl Önlenebilir ? hakkında bilgiler verilmektedir.