Sunucunuzun Güvenliğini Sağlamak için Fail2ban Kullanımı

Günümüzün dijital ortamında sunucunuzu kötü niyetli saldırılardan korumak çok önemlidir. Sağlam bir günlük ayrıştırma uygulaması olan Fail2ban, VPS örneğinize otomatik saldırıların işaretleri için sistem günlüklerini izleyen uyanık bir koruyucu görevi görür.

Bu eğitimde, sunucunuzun savunmasını güçlendirmek için Fail2ban’ın yeteneklerinden yararlanma konusunda bilgi edineceksiniz.

Fail2ban Nasıl Çalışır?

Fail2ban seçtiğiniz parametreleri kullanarak bir tehlikeye atma girişimini tespit edip bulduğunda, saldırının kaynaklandığı IP adresini engellemek için iptables’a yeni bir kural ekleyecektir. Bu kısıtlama belirli bir süre boyunca veya uzun vadeli olarak yürürlükte kalacaktır. Fail2ban yapılandırmanızı, saldırılar gerçekleştiğinde e-posta yoluyla bilgilendirilmenizi sağlayacak şekilde de ayarlayabilirsiniz.

Fail2ban esas olarak SSH saldırılarına odaklanmak için tasarlanmış olsa da, günlük dosyalarını kullanan ve potansiyel olarak tehlikeye girme riski taşıyan herhangi bir hizmete uyacak şekilde Fail2ban yapılandırmasını da deneyebilirsiniz. Özellikle WordPress güvenliği için Fail2ban’dan yararlanmak isteyenler, WordPress Kurulumlarınızı Fail2ban ile Koruma hakkındaki bu kılavuza göz atabilir.

  • Fail2ban Kurulumu: Adım Adım Açıklamalar
  • Fail2ban Yapılandırma Süreci
  • Fail2ban Filtreleri ile Sunucuların Güvenliğini Sağlama
  • Fail2ban İstemcisi Nasıl Kullanılır
  • Kilitlenme Kurtarmayı Anlama
  • Plesk ve Fail2ban Birlikte Nasıl Çalışır?
Server Management & Monitoring

Fail2ban Kurulumu – Adım Adım Açıklamalar

CentOS 7 üzerinde kurulum

  1. Sisteminizin gerektiği gibi güncellendiğinden emin olun ve EPEL deposu kurulumunu başlatın:
  2. Yum update && yum install epel-release
  3. Fail2Ban kurulumu ile devam edin:
  4. Yum install fail2ban
  5. E-posta desteği almak istiyorsanız, Sendmail kurulumuna başlayın. Ancak dikkat edin: Fail2Ban’den yararlanmak istiyorsanız Sendmail zorunlu değildir:
  6. Yum install sendmail
  7. Fail2ban’ı başlatın ve etkinleştirin (ayrıca Sendmail’i de kullanmak istiyorsanız):
  8. Systemctl start fail2ban
  9. Systemctl fail2ban’ı etkinleştir
  10. Systemctl sendmail’i başlat
  11. Systemctl sendmail’i etkinleştir

Lütfen dikkat edin:

Şu hatayla karşılaşırsanız: /var/run/fail2ban dizini yok /var/run/fail2ban/fail2ban.sock soket dosyasını içermek için, bunun yerine dizini manuel bir işlemle ayarlamanız gerekir:

mkdir /var/run/fail2ban

Debian üzerinde kurulum

  1. Sisteminizin güncellendiğini ve hazır olduğunu onaylayın:
  2. apt-get update && apt-get upgrade -y
  3. Fail2ban kurulumu ile devam edin:
  4. apt-get install fail2ban

Şimdi, hizmet otomatik olarak başlayacaktır.

  1. (İsteğe bağlı adım) E-posta desteği için Sendmail kurulumunu başlatın:
  2. apt-get install sendmail-bin sendmail

Lütfen dikkat edin:

Mevcut yinelemesinde, Debian Jessie’deki Sendmail, sendmail-bin yüklemesinin bir sonucu olarak bir dizi hatayı (aşağıya bakınız) tetiklediği bilinen bir upstream hatası içerir. Kurulum tamamlanmadan önce kısa bir süre için duraklayacaktır. Hatalar:

Creating /etc/mail/sendmail.cf...

ERROR: FEATURE() should be before MAILER() MAILER('local') must appear after FEATURE('always_add_domain')

ERROR: FEATURE() should be before MAILER() MAILER('local') must appear after FEATURE('allmasquerade')

Fedora üzerinde kurulum

  1. Devam etmeden önce sisteminizin güncellendiğinden emin olun:
  2. Dnf güncelleme
  3. Fail2ban kurulumunu başlatın:
  4. Dnf install fail2ban
  5. (İsteğe bağlı adım) E-posta desteğini tercih ediyorsanız Sendmail kurulum adımıyla devam edebilirsiniz:
  6. Dnf install sendmail
  7. Fail2ban’ı başlatın ve etkinleştirin (uygun gördüğünüz şekilde Sendmail ile birlikte):
  8. Systemctl start fail2ban
  9. Systemctl fail2ban’ı etkinleştir
  10. Systemctl sendmail’i başlat
  11. Systemctl sendmail’i etkinleştir

Ubuntu üzerinde kurulum

  1. Sisteminizin güncellendiğini kontrol edin:
  2. apt-get update && apt-get upgrade -y
  3. Fail2ban kurulumu ile devam edin:
  4. apt-get install fail2ban

Hizmetin otomatik olarak başlayacağını göreceksiniz.

  1. (İsteğe bağlı adım) E-posta desteği istiyorsanız Sendmail’i yükleyin:
  2. apt-get install sendmail
  3. Güvenlik duvarını etkinleştirmeye devam etmeden önce UFW üzerinden SSH erişimi verin:
  4. ufw allow ssh
  5. ufw enable

Fail2ban Yapılandırma Süreci

Bu eğitimin bundan sonraki bölümünde, fail2ban.local ve jail.local dosyalarını kullanan popüler Fail2ban yapılandırmalarını inceleyen bir dizi örnek bulacaksınız. Fail2ban, .local dosyaları herhangi bir ayarı geçersiz kılmadan önce başlangıçta .conf yapılandırma dosyalarını okuyacaktır.

Sonuç olarak, herhangi bir yapılandırma ayarlaması .conf dosyaları etkilenmeden kalırken .local dosyalarında gerçekleştirilme eğilimindedir.

Fail2ban.local Nasıl Yapılandırılır

  1. fail2ban.conf varsayılan yapılandırma profilini taşır ve bu standart ayarlar iyi bir çalışma düzeni sunar. Ancak, herhangi bir düzenleme yapmayı tercih ederseniz, bunu ayrı bir dosyada (fail2ban.local) yapmalısınız. Bu fail2ban.conf dosyasını geçersiz kılacaktır. fail2ban.conf dosyasının bir kopyasını fail2ban.local olarak yeniden adlandırdığınızdan emin olun.
  2. cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
  3. Bu noktadan sonra, fail2ban.local içinde bulunan tanımları kurmak istediğiniz yapılandırmayla uyumlu hale getirmek için ayarlamayı seçebilirsiniz. Aşağıdaki değerleri değiştirebilirsiniz:
    • loglevel: Fail2ban günlükleri tarafından sağlanan ayrıntı düzeyini şu şekilde ayarlayabilirsiniz: 1 (hata), 2 (uyar), 3 (bilgi) veya 4 (hata ayıklama).
    • logtarget: Bu, eylemleri tanımlanmış bir dosyada günlüğe kaydeder (/var/log/fail2ban.log varsayılan değeri tüm günlüğü bu dosyaya ekler). Öte yandan, değeri şu şekilde düzenleyebilirsiniz:
      • STDOUT: herhangi bir veri çıktısı
      • STDERR: herhangi bir hata çıktısı
      • SYSLOG: mesaj tabanlı günlük kaydı
      • DOSYA: bir dosyaya çıktı
    • soket: Soket dosyasının konumu.
    • pidfile: PID dosyasının konumu.

Fail2ban Arka Uç Nasıl Yapılandırılır

  1. Varsayılan olarak, jail.conf dosyası Debian ve Ubuntu için SSH için Fail2ban’ı etkinleştirir, ancak CentOS için etkinleştirmez. Alternatif protokoller ve yapılandırmalar (FTP, HTTP vb. gibi) yorumlanacaktır. İsterseniz bunu ayarlayabilirsiniz. Düzenleme için bir jail.local oluşturmanız gerekecektir:
  2. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  3. Fedora mı yoksa CentOS mu kullanıyorsunuz? jail.local dosyasındaki arka uç seçeneğini auto’dan systemd’ye değiştirmeniz gerekecektir. Ancak, her ikisi de systemd kullanabilmesine rağmen Debian 8 veya Ubuntu 16.04’te buna gerek olmadığını unutmayın.

File: /etc/fail2ban/jail.local

# "backend" specifies the backend used to get files modification.

# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".

# This option can be overridden in each jail as well.

. . .

backend = systemd

Lütfen dikkat edin:

Arka uç yapılandırması otomatik olarak ayarlandığında, Fail2ban önce pyinotify kullanarak günlük dosyalarını izleyecektir. Bundan sonra, Fail2ban gamin’i deneyecektir. Ancak, ikisi de mevcut değilse, bir sonraki denemeyi bir yoklama algoritması seçecektir.

Varsayılan olarak, CentOS 7’de hiçbir jail etkin değildir. Örneğin, SSH daemon jail’i etkinleştirerek devam etmek istiyorsanız, jail.local dosyasındaki bu satırları kaldırmalısınız:

File: /etc/fail2ban/jail.local

[sshd]

enabled = true

Fail2ban jail.local Nasıl Yapılandırılır

Fail2ban’da bulunan ayarlara aşina olmak ister misiniz? jail.local dosyanızı açarak başlayın ve mevcut yapılandırmaları bulun:

File: /etc/fail2ban/jail.local

[DEFAULT]

ignoreip = 127.0.0.1/8

bantime = 600

findtime = 600

maxretry = 3

backend = auto

usedns = warn

destemail = root@localhost

sendername = Fail2Ban

banaction = iptables-multiport

mta = sendmail

protocol = tcp

chain = INPUT

action_ = %(banaction)...

action_mw = %(banaction)...

protocol="%(protocol)s"...

action_mwl = %(banaction)s...

Bir örnek düşünelim. Usedns ayarını hayır olarak değiştirirseniz, Fail2ban yasaklarını uygulamak için ters DNS kullanmayacaktır. Bunun yerine IP adresini yasaklayacaktır. Uyar olarak ayarladığınızda, Fail2ban ana bilgisayar adını bulmak için bir ters arama yapacak ve bir yasaklama başlatmak için bunu kullanacaktır.

Zincir ayarı neyle ilgilidir? Yasaklama eylemlerinde atlamaların eklenebileceği iptables kuralları aralığı. Bu, varsayılan olarak INPUT zincirine ayarlanmıştır. Eğer iptables zincirleri hakkında daha fazla bilgi edinmek istiyorsanız, kapsamlı iptables nedir kaynağımıza göz atabilirsiniz.

Fail2ban Zincir Trafik Düşüşü Nasıl Yapılandırılır

Fail2ban kurallarınıza bakmak istiyorsanız, iptables’ın -line-numbers seçeneğini kullanın.

iptables -L f2b-sshd -v -n --line-numbers

Benzer bir çıktı görmeniz gerekir:

Chain fail2ban-SSH (1 references)

num pkts bayt hedef prot opt giriş çıkış kaynak hedef

1 19 2332 DROP all -- * * 192.0.0.0 0.0.0.0/0

2 16 1704 DROP all -- * * 192.0.0.1 0.0.0.0/0

3 15 980 DROP all -- * * 192.0.0.2 0.0.0.0/0

4 6 360 DROP all -- * * 192.0.0.3 0.0.0.0/0

5 8504 581K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

İsterseniz, belirli bir IP adresine uygulanan bir kuralı kaldırmak için iptables -D chain rulenum komutunu kullanabilirsiniz. rulenum’u num sütununda bulunan ilgili IP adresi kural numarası ile değiştirin. Örneğin, 192.0.0.1 IP adresini bu komutu vererek kaldırabilirsiniz:

iptables -D fail2ban-SSH 2

Yasaklama Süresi ve Yeniden Deneme Miktarı Nasıl Yapılandırılır Fail2Ban

Bir yasağın koşullarını ve süresini yapılandırmak için bantime, findtime ve maxretry değerlerini ayarlayın:

File: /etc/fail2ban/jail.local

“bantime” bir ana bilgisayarın yasaklı olduğu saniye sayısıdır.

bantime = 600

Bir ana bilgisayar son "findtime" sırasında "maxretry" üretmişse yasaklanır

# seconds.

findtime = 600

maxretry = 3

  • bulma zamanı: Bu, bir yasaklama uygulanmadan önce oturum açma denemeleri arasında ne kadar zaman geçeceği ile ilgilidir. Örnek olarak, Fail2ban’ın dört (4) başarısız oturum açma denemesinin ardından bir IP’yi yasaklayacak şekilde ayarlandığını varsayalım. Bu dört deneme, 10 dakikalık önceden tanımlanmış bulma süresi sınırı içinde gerçekleşmelidir ve bulma süresi değeri belirli bir saniye sayısı olmalıdır.
  • maxretry: Belirli bir yasağın haklı olup olmayacağını belirlemek için Fail2ban findtime ve maxretry kullanır. Deneme sayısı maxretry’de ayarlanan sınırdan fazla olur ve findtime zaman sınırı içinde kalırsa, Fail2ban bir bant ayarlayacaktır. Varsayılan değer 3 olarak ayarlanmıştır.
  • bantime: Bu, bir IP’nin yasaklanacağı süre (saniye cinsinden) için geçerlidir ve negatif bir sayıya ayarlanırsa bu kalıcı olacaktır. Varsayılan değer 600’dür, bu da bir IP’yi 10 dakika süren bir süre için yasaklar.

Fail2ban için ignoreip Nasıl Yapılandırılır

Yok saymak istediğiniz belirli IP’leri ignoreip satırına ekleyerek ekleyebilirsiniz. Bu, varsayılan olarak localhost’u yasaklamayacaktır. Tek bir IP adresinden sık sık yararlanma eğilimindeyseniz yoksayma listesini eklemek sizin yararınıza olabilir:

File: /etc/fail2ban/jail.local

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not

# ban a host which matches an address in this list. Several addresses can be

# defined using space separator.

ignoreip = 127.0.0.1/8 123.45.67.89

ignoreip: Bu ayarla, hangi IP adreslerinin Fail2ban kurallarından hariç tutulacağını tanımlayabilirsiniz. Yok saymak istediğiniz belirli IP’leri ignoreip yapılandırmasına eklemelisiniz (örneğe göre). Bu komut varsayılan olarak localhost’u bantlamaz. Düzenli olarak tek bir IP adresinden çalışıyorsanız, bu adresi ignore listesine eklemek isteyebilirsiniz.

IP’leri yalnızca belirli jail’ler için beyaz listeye almak mı istiyorsunuz? fail2ban-client komutunu kullanın. JAIL’i hapishanenizin adıyla ve 192.0.0.1’i beyaz listeye almak istediğiniz IP ile değiştirmeniz yeterlidir.

fail2ban-client set JAIL addignoreip 192.0.0.1

Fail2ban E-posta Uyarıları Nasıl Kurulur?

Bir şey Fail2ban’ı tetiklediğinde e-posta uyarıları almak isteyebilirsiniz. Bunu e-posta ayarlarını değiştirerek yapabilirsiniz:

  • destemail: E-postalarınızı almak istediğiniz adres.
  • sendername: E-postaya atfedilen ad.
  • gönderen: Fail2ban’ın e-postaları gönderdiği adres.

Lütfen dikkat edin:

Sendmail -t [email protected] komutunu çalıştırın, gönderenin altına ne yazacağınızı bilmiyorsanız [email protected] adresini e-posta adresinizle değiştirin. Gerekirse spam klasörleriyle birlikte e-postanıza bakın ve gönderen e-postasını kontrol edin. Yukarıdaki yapılandırma için bu adresi kullanabilirsiniz.

Ayrıca eylem ayarını da düzenlemeniz gerekmektedir. Bu, bant eşiği karşılandığında gerçekleştirilen eylemleri tanımlar. Varsayılan, %(action_)s, yalnızca kullanıcıyı yasaklar. (action_mw)s, kullanıcıyı yasaklar ve WhoIs raporunu içeren bir e-posta dağıtır. (action_mwl)s ile, bir yasaklama uygulanır ve WhoIs raporunu (ve günlük dosyasındaki ilgili satırları) içeren bir e-posta gönderilir. Bunu hapishaneye özgü olarak da ayarlayabilirsiniz.

Fail2ban banaction ve portları nasıl yapılandırılır

Yukarıdaki temel ayarlar adresinin dışında, jail.local ayrıca birden fazla yaygın hizmet (iptables ve SSH gibi) için çok sayıda hapishane yapılandırmasına sahiptir. Sadece SSH varsayılan olarak etkindir ve eylem, iptables güvenlik duvarı kurallarının değiştirilmesi yoluyla sorunlu ana bilgisayarı / IP adresini yasaklamaktır.

Standart hapishane yapılandırmasının şöyle görünmesini bekleyin:

File: /etc/fail2ban/jail.local

# Default banning action (e.g. iptables, iptables-new,

# iptables-multiport, shorewall, etc) It is used to define

# action_* variables. Can be overridden globally or per

# section within jail.local file

banaction = iptables-multiport

banaction_allports = iptables-allports

[ssh]

enabled = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 6

  • yasaklama eylemi: Bu, eşik karşılandığında yapılması gereken eylemi tanımlar. Güvenlik duvarını firewalld kullanacak şekilde yapılandırdığınızda, değeri firewallcmd-ipset olarak ayarlayın. Güvenlik duvarını UFW kullanacak şekilde yapılandırırsanız, değer ufw olarak ayarlanmalıdır.
  • banaction_allports: Bu, her portta bir uzak IP’yi engelleyecektir. Güvenlik duvarını firewalld kullanacak şekilde yapılandırırsanız, değer firewallcmd-ipset olarak ayarlanmalıdır.
  • etkinleştirildi: Filtrenin etkinleştirilip etkinleştirilmeyeceğini belirleyin.
  • port: Bu, Fail2ban’ın hizmetle ilgili olarak başvurması gereken bağlantı noktasıdır. Varsayılan bağlantı noktasını kullanıyorsanız, hizmet adını buraya koyabilirsiniz. Ancak geleneksel olmayan bir bağlantı noktası seçerseniz, bunun yerine bağlantı noktası numarası olmalıdır. Örneğin SSH portunuzu 3775 olarak değiştirdiyseniz, ssh yerine bu numarayı yazmalısınız.
  • filter: Bu, /etc/fail2ban/filter.d dosyasında bulunan ve günlük dosyalarını doğru şekilde ayrıştırmak için kullanılan failregex bilgilerini içeren dosyanın adıdır. .conf son ekini eklemenize gerek yoktur.
  • logpath: Hizmetin günlük konumunu sağlar.
  • maxretry: Bu, tanımladığınız hizmet için global maksretriyi geçersiz kılar. Ayrıca findtime ve bantime da ekleyebilirsiniz.
  • eylem: Varsayılan eylem hapishane için uygun olmadığında bunu ekstra bir ayar olarak ekleyebilirsiniz. Diğerlerini action.d klasöründe bulabilirsiniz.

Lütfen dikkat edin:

Hapishaneleri jail.d dizini içinde ayrı .conf dosyaları olarak yapılandırmayı seçebilirsiniz. Ancak format aynı kalacaktır

Fail2ban Filtreleri ile Sunucuların Güvenliğini Sağlama

Şimdi, sisteminizin ilgili yapılandırma dosyalarında tanımlanan Fail2ban filtrelerini inceleyeceğiz.

Sisteminizin filtrelerini Fail2ban sürümünüze bağlı olarak /etc/fail2ban/jail.conf dosyasında veya /etc/fail2ban/jail.d/defaults-*.conf dosyasında göreceksiniz.

etc/fail2ban/jail.conf dosyanıza bakın ve ssh/sshd filtresini kontrol edin:

File: /etc/fail2ban/jail.conf

[ssh]

enabled = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 5

Fail2ban’ın 0.8’den daha yüksek bir sürümünü kullandığınızda, defaults

*onf ve jail.conf dosyalarınızı inceleyin.

Fail2ban’ın 0.8 veya daha yüksek bir sürümüne sahipseniz, jail.conf dosyanız aşağıdaki gibi görünecektir:

File: /etc/fail2ban/jail.conf

[sshd]

port = ssh

logpath = %(sshd_log)s

Daha sonra, eğer sisteminiz Fail2ban 0.8 veya ötesini kullanıyorsa, bu filtreleri içeren bir defaults-*.conf dosyasına sahip olacaktır:

File: /etc/fail2ban/jail.d/defaults-*.conf

[sshd]

enabled = true

maxretry = 3

Mevcut filtreleri test etmek istiyorsanız, örnek komutu çalıştırın ve logfile, failregex ve ignoreregex’i tercih ettiğiniz değerlerle değiştirin.

fail2ban-regex logfile failregex ignoreregex

Bu bölümün başındaki örnekleri kullanırsak, komut şu şekilde görünecektir:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Fail2ban filtrelerinizin birlikte çalışması gerekecektir:

  1. Çeşitli yazılımlar tarafından oluşturulan farklı günlük türleri
  2. Çeşitli konfigürasyonlar ve bir dizi işletim sistemi

Yukarıdakilerin yanı sıra, filtreleriniz günlük formatından da bağımsız olmalıdır. Ayrıca DDoS saldırılarına karşı korumalı olmalı ve gelecekte piyasaya sürülecek yazılımın diğer sürümleriyle uyumlu olmalıdır.

Ignoreregex Yapılandırmaları Nasıl Özelleştirilir

Failregex yapılandırmasında ayarlamalar yapmadan önce ignoreregex’in özelleştirilmesi gerekir. Fail2ban’ın hangi sunucu etkinliğinin normal kabul edildiğini ve neyin normal kabul edilmediğini anlaması gerekir.

Örneğin: ignoreregex’i bu programlar tarafından oluşturulan günlükleri filtrelemek için ayarlarsanız, sunucunuzda veya MySQL’de çalışan cron etkinliğini hariç tutabilirsiniz:

File: /etc/fail2ban/filter.d/sshd.conf

ignoreregex = : pam_unix\((cron|sshd):session\): session (open|clos)ed for user (daemon|munin|mysql|root)( by \(uid=0\))?$

: Successful su for (mysql) by root$

New session \d+ of user (mysql)\.$

Removed session \d+\.$

Her programın günlükleri için filtreleme yaptıktan sonra failregex’leri istediğiniz her şeyi engelleyecek şekilde değiştirmekte özgürsünüz.

Failregex’ler Nasıl Özelleştirilir

Fail2ban çok sayıda filtre içerir, ancak bunları daha fazla özelleştirmeyi veya kişisel ihtiyaçlarınıza göre kendi filtrelerinizi oluşturmayı tercih edebilirsiniz. Fail2ban, günlük dosyalarını ayrıştırmak, parola hatalarını ve izinsiz giriş girişimlerini aramak için düzenli ifadeler (regex) kullanır. Python’un regex uzantıları Fail2ban tarafından kullanılır.

Failregex’in nasıl çalıştığını öğrenmenin en etkili yolu nedir? Kendiniz bir tane yazın. CPU endişeleri nedeniyle Fail2ban’ın yoğun trafiğe sahip web sitelerinde WordPress’in access.log dosyasını izlemesine izin vermenizi önermesek de, herhangi bir failregex oluşturma hakkında bilgi edinmek için kullanabileceğiniz kolay anlaşılır bir günlük dosyası örneği verir.

Fail2ban Regex Yazma

  1. Web sitenizin access.log dosyasına gidin (genellikle /var/www/example.com/logs/access.log adresinde bulunur) ve başarısız bir giriş denemesini bulun. Bu şöyle görünecektir:

File: /var/www/example.com/logs/access.log

123.45.67.89 - - [01/Oct/2015:12:46:34 -0400] "POST /wp-login.php HTTP/1.1" 200 1906 "http://example.com/wp-login.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0"

Sadece 200’e kadar takip etmeniz gerekiyor:

File: /var/www/example.com/logs/access.log

123.45.67.89 - - [01/Oct/2015:12:46:34 -0400] "POST /wp-login.php HTTP/1.1" 200

  1. Başarısız denemenin geldiği IP adresi her zaman . olarak tanımlanacaktır. Sonrasındaki birkaç karakter asla değişmez ve bunları değişmez olarak girebilirsiniz:
  2. - - \[

‘den önceki \, köşeli parantezi harfi harfine okumanız gerektiğini belirtir.

  1. Sonraki bölümü (oturum açma girişiminin gerçekleştiği tarih) gruplanmış ifadeler olarak yazmak için regex ifadelerini kullanabilirsiniz. Yani, bu örneğe göre, ilk kısım (burada, 01) (\d{2}) olarak yazılabilir: Parantezler ifade grubunu oluşturur ve \d sayısal rakamları arar. Ancak {2}, ifadenin bir satırdaki bir çift rakamı aradığını belirtir (örneğin, 24, 25 vb.’de olduğu gibi tarih).

Bu noktaya kadar, sahip olacaksınız:

- - \[(\d{2})

Aşağıdaki ileri eğik çizgi, gerçek bir ileri eğik çizgi kullanılarak çağrılır. Bunu \w{3} izler: bu, üç alfa sayısal karakterden oluşan bir dizi arar (her durumda A-Z, 0-5 gibi). Bir sonraki ileri eğik çizgi de gerçek olacaktır:

- - \[(\d{2})/\w{3}/

Yıl bölümü de güne benzer şekilde yazılacaktır, ancak bir yakalama grubuna ve iki nokta üst üste ile birlikte arka arkaya dört karaktere ihtiyacınız yoktur:

- - \[(\d{2})/\w{3}/\d{4}:

  1. Sonraki dizi, zamanı temsil eden iki basamaklı sayılardan oluşur. Ayın gününü bir yakalama grubunda (parantez içinde) iki basamaklı bir sayı olarak tanımladığımız için, \1 ile geri referans alabiliyoruz. Bunun nedeni bunun ilk yakalama grubu olmasıdır. İki nokta üst üste yine değişmez olacaktır:
  2. - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1

Geri referansları kullanmamayı tercih ediyorsanız, bunu şu şekilde de yazabilirsiniz:

- - \[\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2}

  1. 0400 segmentini de yıl segmentine benzer şekilde, ekstra – harfi de dahil olmak üzere yazın: -\d{4}. Köşeli parantezi kapatmalı (önce ters eğik çizgi ile kaçarak) ve geri kalanını gerçek dizeyle bitirmelisiniz:
  2. - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1 -\d{4}\] "POST /wp-login.php HTTP/1.1" 200

Alternatively:

- - \[\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2} -\d{4}\] "POST /wp-login.php HTTP/1.1" 200

Failregex Nasıl Uygulanır

Artık failregex ayarlandığına göre, bir filtreye eklenmelidir:

  1. Go to Fail2ban’s filter.d directory:
  2. cd /etc/fail2ban/filter.d
  3. wordpress.conf adında bir dosya oluşturun ve ardından failregex’inizi ekleyin:

File: /etc/fail2ban/filter.d/wordpress.conf

# Fail2Ban filter for WordPress

[Definition]

failregex = - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1 -\d{4}\] "POST /wp-login.php HTTP/1.1" 200

ignoreregex =

Save and quit.

  1. Add a WordPress section to jail.local:

File: /etc/fail2ban/jail.local

[wordpress]

enabled = true

filter = wordpress

logpath = /var/www/html/andromeda/logs/access.log

port = 80,443

Bu, varsayılan yasaklama ve e-posta eylemini kullanır, ancak bir eylem = satırı eklerseniz ek eylemler tanımlayabilirsiniz.

Kaydedin ve çıkın. Fail2ban’ı yeniden başlatın.

Fail2ban İstemcisi Nasıl Kullanılır

Fail2ban size bir fail2ban-client komutu verir ve bunu Fail2ban’ı komut satırından çalıştırmak için kullanabilirsiniz:

fail2ban-client COMMAND

  • Başlat: Fail2ban sunucusunu ve jailleri başlatmak için.
  • yeniden yükle: Fail2ban yapılandırma dosyalarını yeniden yüklemek için.
  • reload JAIL: JAIL’i bir Fail2ban hapishanesinin adıyla değiştirmek için; bu, hapishanenin yeniden yüklenmesine neden olur.
  • stop: Sunucuyu sonlandırmak için.
  • durum: Sunucu durumunu görüntülemek ve hapishaneleri etkinleştirmek için.
  • status JAIL: Şu anda yasaklı olan IP’ler de dahil olmak üzere hapishane durumunu görüntülemek için.

Örneğin, Fail2Ban’ın çalışıp çalışmadığını ve SSHd jail’in etkinleştirilip etkinleştirilmediğini kontrol etmek istiyorsanız, şunu çalıştırırsınız:

fail2ban-client status

The output would be:

Status

Number of jail: 1

Jail list: sshd

You can find more on fail2ban-client commands in the Fail2ban wiki.

Kilitlenme Kurtarmayı Anlama

Fail2ban nedeniyle kendinizi vps örneğinizin dışında bıraktığınızı düşünün. Ancak endişelenmeyin: konsol erişimi yoluyla hala giriş yapabileceksiniz.

Buradan, Fail2ban’ın başka bir şey yerine IP’nizi engellediğinden emin olmak için güvenlik duvarı kurallarınızı kontrol edebilirsiniz. Bunu girerek yapabilirsiniz:

iptables -n -L

Look for your IP address in the source column of any Fail2ban chain (fail2ban or prefixed with fail2ban) to verify if the Fail2ban service is blocking you:

Chain f2b-sshd (1 references)

target prot opt source destination

REJECT all -- 203.0.113.0 0.0.0.0/0 reject-with icmp-e

IP adresinizi bir hapishaneden almak istiyorsanız, aşağıdaki komutu girebilirsiniz (ancak 203.0.113.0 ve jailname yerine yasağı kaldırmayı düşündüğünüz IP adresini ve hapishane adını yazın:

fail2ban-client set jailname unbanip 203.0.113.0

Lütfen dikkat edin:

Eğer hapishanenizin adını hatırlayamıyorsanız, tüm hapishaneleri aşağıdaki şekilde listeleyebilirsiniz:

fail2ban-client status

Herhangi bir noktada Fail2ban hizmetinizi kullanmayı bırakmak istediğinize karar verirseniz aşağıdakileri girebilirsiniz:

fail2ban-client stop

Ancak CentOS 7 ve Fedora’da, tamamen durdurmak ve devre dışı bırakmak için iki ek komut gereklidir:

systemctl stop fail2ban

systemctl disable fail2ban

Plesk ve Fail2ban Birlikte Nasıl Çalışır?

Bu bölümde, Plesk ve Fail2ban’ın birlikte nasıl çalıştığına bakacağız.

Fail2Ban, Plesk Obsidian’da varsayılan olarak etkindir: mevcut her hapishane açılacak ve Fail2Ban’ın varsayılan ayarları kullanılacaktır.

IP adresi yasaklama ( Fail2Ban ) yoluyla sunucunuzu kaba kuvvet saldırılarına karşı koruyabilirsiniz. Fail2Ban, günlük dosyalarını izlemek ve kimlik doğrulama başarısızlıklarına karşılık gelebilecek kalıpları tespit etmek, istismarları aramak ve şüpheli görünebilecek ek girişler için düzenli ifadeler kullanır.

Bu türdeki günlük girişleri sayılır ve sayıları önceden tanımlanmış bir değere ulaştığında, Fail2Ban bir bildirim e-postası yayınlar veya suç işleyen IP’yi belirli bir süre için yasaklar. Ancak yasaklama süresi sona erdiğinde IP adresinin yasağı otomatik olarak kaldırılır.

Bir dizi hapishane Fail2Ban mantığını belirler. Hapishane, belirli bir senaryoyla ilgili bir kural kümesidir. Hapishane ayarları, önceden ayarlanmış bir filtreye (günlük izleme için bir veya daha fazla düzenli ifade kümesi) göre bir saldırı tespit edildiğinde ne yapılacağını tanımlar.

Fail2Ban ayarlarını bu şekilde yapabilirsiniz:

  1. Araçlar ve Ayarlar > IP Adresi Yasaklama (Fail2Ban) (“Güvenlik” altında) bölümüne gidin.
  2. İnce ayar yapabileceğiniz “Ayarlar” sekmesine gidin:
    • IP adresi yasaklama süresi – bir IP adresinin yasaklandığı zaman aralığı (saniye cinsinden). Bu süre sona erdiğinde IP adresinin yasağı otomatik olarak kaldırılır.
    • Sonraki saldırıların tespiti için zaman aralığı – sistemin bir IP adresinden gelen başarısız oturum açma girişimlerinin ve ek istenmeyen davranışların miktarını sayacağı zaman aralığı (saniye cinsinden).
    • IP adresi yasaklanmadan önceki başarısızlık sayısı – IP adresine bağlı başarısız oturum açma girişimlerinin miktarı.
  3. Üzerine tıklayın OK .

Bu sınırlamaları ve özellikleri Plesk’teki Fail2Ban’da göreceksiniz:

  • Fail2Ban, IPv4 ve IPv6 adresleriyle yapılan saldırılara karşı savunma sağlar.
  • Fail2Ban, yeniden yapılandırılmadığı sürece tamamen IP’lere bağlıdır (ana bilgisayar adı aramaları olmadan).
  • Fail2Ban, davetsiz misafirleri IP adresleri üzerinden tanıdığı için dağıtılmış kaba kuvvet saldırılarına karşı koruma sağlayamaz.
  • Plesk’iniz bir VPS’ye kuruluysa, VPS iptables kayıt sınırı (numiptent) Fail2ban’ın çalışmasını etkileyebilir. Bu sınır aşıldığında Fail2Ban gerektiği gibi çalışmayı durduracaktır ve Fail2ban günlüğünde buna benzer bir satır bulacaksınız: fail2ban.actions.action: ERROR iptables -I fail2ban-plesk-proftpd 1 -s 12.34.56.78 -j REJECT –reject-with icmp-port-unreachable returned 100 Bu durumda, çözüm için VPS barındırma sağlayıcınızla iletişime geçmelisiniz.

Bir IP adresini engellemek istemiyorsanız:

  1. Araçlar ve Ayarlar > IP Adresi Yasaklama (Fail2 b an) > Güvenilir IP Adresleri > Güvenilir IP Ekle bölümüne gidin.
  2. Ardından, OK’a tıklamadan önce IP adresi alanına bir IP aralığı veya bir DNS ana bilgisayar adı ile birlikte bir IP adresi girin.

Araçlar ve Ayarlar > IP Adresi Yasaklama (Fail2 b an) > Günlükler sekmesine giderek Fail2ban günlük dosyalarına bakabilir (ve indirebilirsiniz).

Araçlar ve Ayarlar > IP Adresi Yasaklama (Fail2 b an) > Yasaklı IP Adresleri sekmesinden yasaklı IP adreslerine bakabilir, yasağı kaldırabilir veya güvenilir adres listenize ekleyebilirsiniz.

Asla yasaklanmasını istemediğiniz IP adresleri listenizi kontrol edebilir, Araçlar ve Ayarlar > IP Adresi Yasaklama (Fail2 b an) > Güvenilir IP Adresleri sekmesinden IP adreslerini bu listeye ekleyebilir/listeden çıkarabilirsiniz.

Plesk’te Fail2ban Yasaklama Süresini ve Yasaklamadan Önceki Deneme Sayısını Değiştirme hakkındaki bu makaleye de başvurmak isteyebilirsiniz.

Sonuç: Fail2ban ile Sağlam Sunucu Güvenliği Sağlama

Fail2ban, bu makale boyunca özetlendiği gibi otomatik tehditlere karşı bir kalkan görevi görür. Kurulum ve yapılandırma adımlarından failregex özelleştirme ve ban kurtarma gibi işlevlerini anlamaya kadar, sunucunuzu etkili bir şekilde güvence altına almanızı sağlamak için çeşitli yönleri ele aldık.

Fail2ban’ı uygulayarak, olası ihlallere karşı savunmanızı güçlendirecek ve sunucunuzun güvenliğini yönetme ve izleme konusunda içgörü kazanacaksınız. Bu eğitimdeki bilgilerle donanmış olarak, artık sunucunuzu otomatik saldırılara karşı korumak ve sorunsuz çalışmaya devam etmesini sağlamak için iyi bir donanıma sahipsiniz.

Yorum yapın