{"id":38822,"date":"2026-02-08T14:40:58","date_gmt":"2026-02-08T11:40:58","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38822"},"modified":"2026-02-08T14:40:58","modified_gmt":"2026-02-08T11:40:58","slug":"apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/","title":{"rendered":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma"},"content":{"rendered":"<p><body><\/p>\n<h2>Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, sunucu g\u00fcvenli\u011fi herhangi bir \u00e7evrimi\u00e7i varl\u0131k i\u00e7in hayati \u00f6neme sahiptir. \u00d6zellikle Apache gibi yayg\u0131n olarak kullan\u0131lan web sunucular\u0131, s\u00fcrekli olarak k\u00f6t\u00fc niyetli sald\u0131r\u0131lar\u0131n hedefi haline gelmektedir. Brute-force sald\u0131r\u0131lar\u0131, DDoS giri\u015fimleri ve \u00e7e\u015fitli web tabanl\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131, sunucular\u0131n performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir, hizmet kesintilerine neden olabilir ve hatta hassas verilerin ele ge\u00e7irilmesine yol a\u00e7abilir. Bu t\u00fcr tehditlere kar\u015f\u0131 proaktif bir savunma mekanizmas\u0131 olu\u015fturmak, sistem y\u00f6neticilerinin ba\u015fl\u0131ca sorumluluklar\u0131ndan biridir.<\/p>\n<p>Bu teknik makale, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde \u00e7al\u0131\u015fan bir Apache web sunucusunu, pop\u00fcler bir sald\u0131r\u0131 \u00f6nleme arac\u0131 olan Fail2Ban ile nas\u0131l koruyaca\u011f\u0131n\u0131z\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde a\u00e7\u0131klamaktad\u0131r. Ubuntu 14.04, uzun s\u00fcreli destek (LTS) sa\u011flayan bir s\u00fcr\u00fcm olmas\u0131na ra\u011fmen, g\u00fcvenlik g\u00fcncellemeleri a\u00e7\u0131s\u0131ndan g\u00fcncel s\u00fcr\u00fcmler kadar aktif olmayabilir. Bu nedenle, Fail2Ban gibi ek g\u00fcvenlik katmanlar\u0131 bu t\u00fcr sistemler i\u00e7in daha da kritik hale gelmektedir. Fail2Ban, sunucu log dosyalar\u0131n\u0131 izleyerek belirli say\u0131da ba\u015far\u0131s\u0131z oturum a\u00e7ma veya \u015f\u00fcpheli aktivite denemesi yapan IP adreslerini otomatik olarak yasaklayarak sunucunuzu korur.<\/p>\n<p>Bu rehberde, Fail2Ban&#8217;\u0131n temel kurulumundan ba\u015flayarak, Apache ile entegrasyonu i\u00e7in gerekli yap\u0131land\u0131rmalar\u0131, \u00f6zel filtreler olu\u015fturmay\u0131, eylem mekanizmalar\u0131n\u0131 ve sisteminizi nas\u0131l izleyece\u011finizi ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Amac\u0131m\u0131z, sunucunuzun g\u00fcvenli\u011fini art\u0131r\u0131rken, hizmetlerinizi kesintisiz bir \u015fekilde sunmaya devam etmenizi sa\u011flayacak kapsaml\u0131 bir \u00e7\u00f6z\u00fcm sunmakt\u0131r.<\/p>\n<h3>Neden Fail2Ban ve Neden Apache \u0130\u00e7in?<\/h3>\n<p>Siber sald\u0131r\u0131lar, genellikle otomatik botlar ve script&#8217;ler arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. Bu botlar, zay\u0131f parolalar\u0131 denemek, bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 taramak veya kaynaklar\u0131 t\u00fcketmek amac\u0131yla s\u00fcrekli olarak sunuculara istek g\u00f6nderirler. Fail2Ban, bu t\u00fcr otomatik sald\u0131r\u0131lara kar\u015f\u0131 olduk\u00e7a etkili bir savunma mekanizmas\u0131 sunar.<\/p>\n<h4>Brute-Force Sald\u0131r\u0131lar\u0131 ve DDoS<\/h4>\n<p><strong>Brute-Force Sald\u0131r\u0131lar\u0131:<\/strong> \u00d6zellikle SSH, FTP veya web uygulamalar\u0131n\u0131n giri\u015f panelleri gibi kimlik do\u011frulama gerektiren hizmetlerde, sald\u0131rganlar binlerce farkl\u0131 kullan\u0131c\u0131 ad\u0131 ve parola kombinasyonunu deneyerek sisteme s\u0131zmaya \u00e7al\u0131\u015f\u0131r. Fail2Ban, belirli bir zaman dilimi i\u00e7inde \u00e7ok say\u0131da ba\u015far\u0131s\u0131z oturum a\u00e7ma denemesi yapan IP adreslerini tespit ederek bunlar\u0131 ge\u00e7ici veya kal\u0131c\u0131 olarak yasaklar.<\/p>\n<p><strong>DDoS (Da\u011f\u0131t\u0131k Hizmet Engelleme) Giri\u015fimleri:<\/strong> Tam te\u015fekk\u00fcll\u00fc bir DDoS koruma \u00e7\u00f6z\u00fcm\u00fc olmasa da, Fail2Ban belirli t\u00fcrdeki d\u00fc\u015f\u00fck seviyeli DDoS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 bir miktar koruma sa\u011flayabilir. \u00d6zellikle tek bir IP adresinden veya s\u0131n\u0131rl\u0131 say\u0131da IP adresinden gelen yo\u011fun ve tekrarlayan istekleri engelleyerek, sunucunun a\u015f\u0131r\u0131 y\u00fcklenmesini bir \u00f6l\u00e7\u00fcde \u00f6nleyebilir.<\/p>\n<h4>Fail2Ban&#8217;\u0131n \u00c7al\u0131\u015fma Prensibi<\/h4>\n<p>Fail2Ban, sunucunuzdaki \u00e7e\u015fitli hizmetlerin (Apache, SSH, Postfix vb.) log dosyalar\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak tarar. \u00d6nceden tan\u0131mlanm\u0131\u015f &#8220;filtreler&#8221; (regular expressions &#8211; regex) kullanarak, bu loglarda k\u00f6t\u00fc niyetli aktivite g\u00f6steren desenleri arar. Bir IP adresi, belirli bir zaman dilimi i\u00e7inde (<code>findtime<\/code>) belirli bir e\u015fi\u011fi (<code>maxretry<\/code>) a\u015fan say\u0131da k\u00f6t\u00fc niyetli aktivite g\u00f6sterdi\u011finde, Fail2Ban bu IP adresini yasaklar. Yasaklama s\u00fcresi (<code>bantime<\/code>) sona erdi\u011finde, IP adresi otomatik olarak yasakl\u0131 listesinden \u00e7\u0131kar\u0131l\u0131r.<\/p>\n<h4>Apache&#8217;nin Zafiyetleri<\/h4>\n<p>Apache web sunucusu, d\u00fcnya genelinde en \u00e7ok kullan\u0131lan web sunucular\u0131ndan biridir ve bu pop\u00fclaritesi nedeniyle s\u0131k\u00e7a sald\u0131r\u0131lar\u0131n hedefi olur. Apache&#8217;ye y\u00f6nelik yayg\u0131n sald\u0131r\u0131 t\u00fcrleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Kimlik Do\u011frulama Sald\u0131r\u0131lar\u0131:<\/strong> Apache&#8217;nin <code>.htaccess<\/code> dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla uygulanan temel veya \u00f6zet kimlik do\u011frulama mekanizmalar\u0131, brute-force sald\u0131r\u0131lar\u0131na kar\u015f\u0131 savunmas\u0131z olabilir.<\/li>\n<li><strong>Web Uygulama Zafiyetleri:<\/strong> Apache \u00fczerinde \u00e7al\u0131\u015fan PHP, Python gibi dillerde yaz\u0131lm\u0131\u015f web uygulamalar\u0131ndaki SQL Enjeksiyonu, XSS (Cross-Site Scripting) gibi zafiyetler, Fail2Ban&#8217;\u0131n do\u011frudan hedefi olmasa da, bu t\u00fcr sald\u0131r\u0131lar\u0131n deneme giri\u015fimleri Apache loglar\u0131nda iz b\u0131rakabilir ve Fail2Ban taraf\u0131ndan alg\u0131lanabilir.<\/li>\n<li><strong>Dizin Taramas\u0131 ve Bilgi S\u0131zd\u0131rma:<\/strong> Sald\u0131rganlar, sunucudaki dizin yap\u0131lar\u0131n\u0131 veya hassas dosyalar\u0131 bulmak i\u00e7in otomatik taray\u0131c\u0131lar kullanabilir. Bu t\u00fcr taramalar genellikle HTTP 404 (Bulunamad\u0131) veya di\u011fer hata kodlar\u0131yla sonu\u00e7lan\u0131r ve Apache loglar\u0131nda kay\u0131t alt\u0131na al\u0131n\u0131r. Fail2Ban, bu t\u00fcr tekrarlayan tarama giri\u015fimlerini tespit edebilir.<\/li>\n<li><strong>Bot ve Crawler Sald\u0131r\u0131lar\u0131:<\/strong> K\u00f6t\u00fc niyetli botlar, sitenizin kaynaklar\u0131n\u0131 t\u00fcketmek, zay\u0131f noktalar\u0131 aramak veya istenmeyen i\u00e7erik g\u00f6ndermek i\u00e7in s\u00fcrekli isteklerde bulunabilir. Fail2Ban, belirli &#8220;User-Agent&#8221; ba\u015fl\u0131klar\u0131n\u0131 veya a\u015f\u0131r\u0131 istek oranlar\u0131n\u0131 filtreleyerek bu botlar\u0131 engelleyebilir.<\/li>\n<\/ul>\n<p>Fail2Ban, bu t\u00fcr senaryolarda Apache loglar\u0131n\u0131 analiz ederek, sunucunuzu bu tehditlere kar\u015f\u0131 koruyan ilk savunma hatlar\u0131ndan birini olu\u015fturur. Bu, \u00f6zellikle Apache&#8217;nin kendi yerle\u015fik sald\u0131r\u0131 \u00f6nleme mekanizmalar\u0131n\u0131n s\u0131n\u0131rl\u0131 oldu\u011fu durumlarda hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<h3>Ubuntu 14.04 \u00dczerine Fail2Ban Kurulumu<\/h3>\n<p>Fail2Ban&#8217;\u0131 Ubuntu 14.04 sisteminize kurmak olduk\u00e7a basittir. A\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip ederek kurulumu ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce, sisteminizin paket listelerini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, herhangi bir uyumluluk sorununu \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<pre><code>sudo apt-get update\nsudo apt-get upgrade<\/code><\/pre>\n<h4>Kurulum Komutlar\u0131<\/h4>\n<p>Paketler g\u00fcncellendikten sonra, Fail2Ban&#8217;\u0131 y\u00fcklemek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code>sudo apt-get install fail2ban<\/code><\/pre>\n<p>Kurulum s\u0131ras\u0131nda, Fail2Ban gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 otomatik olarak kuracakt\u0131r. Kurulum tamamland\u0131\u011f\u0131nda, Fail2Ban servisi genellikle otomatik olarak ba\u015flar.<\/p>\n<h4>Kurulum Sonras\u0131 Kontrol<\/h4>\n<p>Fail2Ban servisinin d\u00fczg\u00fcn bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code>sudo service fail2ban status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da &#8220;fail2ban is running&#8221; veya benzeri bir mesaj g\u00f6rmelisiniz. Ayr\u0131ca, Fail2Ban&#8217;\u0131n genel durumunu g\u00f6rmek i\u00e7in a\u015fa\u011f\u0131daki istemci komutunu da kullanabilirsiniz:<\/p>\n<pre><code>sudo fail2ban-client status<\/code><\/pre>\n<p>Bu komut, aktif olan &#8220;jail&#8221; (Fail2Ban&#8217;da koruma alt\u0131na al\u0131nan servisler) listesini g\u00f6sterecektir. Varsay\u0131lan olarak, SSH servisi i\u00e7in bir jail etkin olabilir.<\/p>\n<h3>Fail2Ban Temel Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Fail2Ban&#8217;\u0131n yap\u0131land\u0131rma dosyalar\u0131 <code>\/etc\/fail2ban\/<\/code> dizininde bulunur. En \u00f6nemli dosya <code>jail.conf<\/code>&#8216;tur. Ancak, bu dosyay\u0131 do\u011frudan d\u00fczenlemek yerine, <code>jail.local<\/code> ad\u0131nda yeni bir dosya olu\u015fturarak varsay\u0131lan ayarlar\u0131 ge\u00e7ersiz k\u0131lmak en iyi uygulamad\u0131r. Bu, Fail2Ban g\u00fcncellendi\u011finde yap\u0131land\u0131rma de\u011fi\u015fikliklerinizin kaybolmamas\u0131n\u0131 sa\u011flar.<\/p>\n<h4><code>jail.conf<\/code> ve <code>jail.local<\/code> Fark\u0131<\/h4>\n<ul>\n<li><strong><code>jail.conf<\/code>:<\/strong> Fail2Ban&#8217;\u0131n varsay\u0131lan yap\u0131land\u0131rma dosyas\u0131d\u0131r. Paket g\u00fcncellemeleri s\u0131ras\u0131nda bu dosya \u00fczerine yaz\u0131labilir.<\/li>\n<li><strong><code>jail.local<\/code>:<\/strong> Bu dosya, <code>jail.conf<\/code>&#8216;taki ayarlar\u0131 ge\u00e7ersiz k\u0131lmak i\u00e7in kullan\u0131l\u0131r. Fail2Ban, \u00f6nce <code>jail.conf<\/code>&#8216;u okur, ard\u0131ndan <code>jail.local<\/code>&#8216;\u0131 okur ve burada tan\u0131mlanan ayarlar\u0131 \u00f6ncelikli kabul eder. Bu, g\u00fcncellemelerden etkilenmeden kendi \u00f6zel ayarlar\u0131n\u0131z\u0131 koruman\u0131z\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h4><code>jail.local<\/code> Dosyas\u0131n\u0131 Olu\u015fturma<\/h4>\n<p><code>jail.local<\/code> dosyas\u0131n\u0131 olu\u015fturmak i\u00e7in, <code>jail.conf<\/code> dosyas\u0131n\u0131n bir kopyas\u0131n\u0131 al\u0131p ad\u0131n\u0131 de\u011fi\u015ftirebilir veya bo\u015f bir dosya olu\u015fturup temel ayarlar\u0131 ekleyebilirsiniz. Genellikle, sadece de\u011fi\u015ftirmek istedi\u011finiz ayarlar\u0131 i\u00e7eren bir <code>jail.local<\/code> dosyas\u0131 olu\u015fturmak yeterlidir.<\/p>\n<pre><code>sudo cp \/etc\/fail2ban\/jail.conf \/etc\/fail2ban\/jail.local<\/code><\/pre>\n<p>\u015eimdi <code>jail.local<\/code> dosyas\u0131n\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n:<\/p>\n<pre><code>sudo nano \/etc\/fail2ban\/jail.local<\/code><\/pre>\n<h4>Varsay\u0131lan Ayarlar (<code>bantime<\/code>, <code>findtime<\/code>, <code>maxretry<\/code>)<\/h4>\n<p><code>jail.local<\/code> dosyas\u0131nda, <code>[DEFAULT]<\/code> b\u00f6l\u00fcm\u00fcn\u00fcn alt\u0131nda Fail2Ban&#8217;\u0131n genel davran\u0131\u015f\u0131n\u0131 etkileyen birka\u00e7 \u00f6nemli parametre bulunur:<\/p>\n<ul>\n<li><strong><code>bantime<\/code>:<\/strong> Bir IP adresinin yasakl\u0131 kalaca\u011f\u0131 s\u00fcreyi saniye cinsinden belirtir. Varsay\u0131lan genellikle 600 saniye (10 dakika) veya daha fazlad\u0131r. Daha uzun yasaklama s\u00fcreleri, \u0131srarc\u0131 sald\u0131rganlar\u0131 cayd\u0131rmak i\u00e7in etkili olabilir, ancak yanl\u0131\u015fl\u0131kla yasaklanan me\u015fru kullan\u0131c\u0131lar i\u00e7in sorun yaratabilir.<\/li>\n<li><strong><code>findtime<\/code>:<\/strong> Bir IP adresinin yasaklanmas\u0131 i\u00e7in gerekli olan ba\u015far\u0131s\u0131z deneme say\u0131s\u0131n\u0131n (<code>maxretry<\/code>) ger\u00e7ekle\u015fti\u011fi zaman dilimini saniye cinsinden belirtir. Varsay\u0131lan genellikle 600 saniyedir.<\/li>\n<li><strong><code>maxretry<\/code>:<\/strong> Bir IP adresinin yasaklanmadan \u00f6nce yapabilece\u011fi maksimum ba\u015far\u0131s\u0131z deneme say\u0131s\u0131d\u0131r. Varsay\u0131lan genellikle 5&#8217;tir.<\/li>\n<\/ul>\n<p>\u00d6rnek <code>[DEFAULT]<\/code> yap\u0131land\u0131rmas\u0131:<\/p>\n<pre><code>[DEFAULT]\nignoreip = 127.0.0.1\/8 ::1\nbantime  = 1h\nfindtime = 10m\nmaxretry = 5\nbanaction = iptables-multiport\ndestemail = root@localhost\nsendername = Fail2Ban\nmta = sendmail<\/code><\/pre>\n<ul>\n<li><code>bantime = 1h<\/code> (1 saat)<\/li>\n<li><code>findtime = 10m<\/code> (10 dakika)<\/li>\n<li><code>maxretry = 5<\/code> (5 deneme)<\/li>\n<\/ul>\n<p>Bu ayarlar, 10 dakika i\u00e7inde 5 ba\u015far\u0131s\u0131z deneme yapan bir IP adresinin 1 saat boyunca yasaklanaca\u011f\u0131 anlam\u0131na gelir.<\/p>\n<h4>IP Beyaz Listesi (<code>ignoreip<\/code>)<\/h4>\n<p>Kendi IP adresinizi veya g\u00fcvenilir sunucular\u0131n IP adreslerini yanl\u0131\u015fl\u0131kla yasaklanmaktan korumak i\u00e7in <code>ignoreip<\/code> parametresini kullanmal\u0131s\u0131n\u0131z. Bu, \u00f6zellikle sunucunuza SSH \u00fczerinden s\u0131k\u00e7a eri\u015fiyorsan\u0131z veya belirli otomasyon ara\u00e7lar\u0131 kullan\u0131yorsan\u0131z \u00f6nemlidir.<\/p>\n<pre><code>ignoreip = 127.0.0.1\/8 ::1 192.168.1.0\/24 203.0.113.42<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, yerel d\u00f6ng\u00fc IP&#8217;leri, bir yerel a\u011f (CIDR format\u0131nda) ve belirli bir tek IP adresi beyaz listeye al\u0131nm\u0131\u015ft\u0131r. Kendi statik IP adresinizi buraya ekledi\u011finizden emin olun.<\/p>\n<p>De\u011fi\u015fiklikleri kaydettikten sonra Fail2Ban servisini yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code>sudo service fail2ban restart<\/code><\/pre>\n<h3>Apache Korumas\u0131 \u0130\u00e7in Fail2Ban Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Fail2Ban, Apache sunucusunu korumak i\u00e7in bir dizi \u00f6nceden tan\u0131mlanm\u0131\u015f &#8220;jail&#8221; ile birlikte gelir. Bu jail&#8217;ler, Apache&#8217;nin farkl\u0131 log dosyalar\u0131n\u0131 ve farkl\u0131 sald\u0131r\u0131 t\u00fcrlerini hedef al\u0131r. Bu b\u00f6l\u00fcmde, Apache i\u00e7in Fail2Ban&#8217;\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve hangi jail&#8217;leri etkinle\u015ftirebilece\u011finizi ele alaca\u011f\u0131z.<\/p>\n<h4>Apache Jails&#8217;i Etkinle\u015ftirme<\/h4>\n<p><code>\/etc\/fail2ban\/jail.local<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve Apache ile ilgili b\u00f6l\u00fcmleri bulun. Genellikle, bu b\u00f6l\u00fcmler <code># Apache<\/code> yorum sat\u0131r\u0131 alt\u0131nda grupland\u0131r\u0131lm\u0131\u015ft\u0131r. Bir jail&#8217;i etkinle\u015ftirmek i\u00e7in, ilgili b\u00f6l\u00fcm\u00fcn alt\u0131ndaki <code>enabled<\/code> parametresini <code>true<\/code> olarak ayarlaman\u0131z yeterlidir.<\/p>\n<h4><code>apache-auth<\/code> Jail&#8217;i<\/h4>\n<p>Bu jail, Apache&#8217;nin temel veya \u00f6zet kimlik do\u011frulama mekanizmalar\u0131na y\u00f6nelik brute-force sald\u0131r\u0131lar\u0131n\u0131 hedefler. Genellikle <code>\/var\/log\/apache2\/error.log<\/code> dosyas\u0131n\u0131 izler ve &#8220;Authentication failure&#8221; (Kimlik do\u011frulama hatas\u0131) gibi desenleri arar.<\/p>\n<pre><code>[apache-auth]\nenabled = true\nport    = http,https\nlogpath = %(apache_error_log)s<\/code><\/pre>\n<p>Not: <code>%(apache_error_log)s<\/code> de\u011fi\u015fkeni, <code>fail2ban.conf<\/code> veya <code>jail.conf<\/code> i\u00e7inde tan\u0131mlanm\u0131\u015f olan Apache hata logunun varsay\u0131lan yolunu kullan\u0131r. Ubuntu 14.04 i\u00e7in bu genellikle <code>\/var\/log\/apache2\/error.log<\/code>&#8216;dur.<\/p>\n<h4><code>apache-badbots<\/code> Jail&#8217;i<\/h4>\n<p>Bu jail, k\u00f6t\u00fc niyetli botlar\u0131 ve taray\u0131c\u0131lar\u0131 hedefler. Genellikle bilinen k\u00f6t\u00fc bot &#8220;User-Agent&#8221; ba\u015fl\u0131klar\u0131n\u0131 veya a\u015f\u0131r\u0131 tarama davran\u0131\u015flar\u0131n\u0131 arar. Bu jail, genellikle Apache eri\u015fim loglar\u0131n\u0131 (<code>access.log<\/code>) izler.<\/p>\n<pre><code>[apache-badbots]\nenabled = true\nport    = http,https\nlogpath = %(apache_access_log)s\nmaxretry = 2\nbantime = 48h<\/code><\/pre>\n<p>Burada <code>maxretry<\/code> ve <code>bantime<\/code> de\u011ferlerini kendi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ayarlayabilirsiniz. K\u00f6t\u00fc botlar i\u00e7in daha uzun yasaklama s\u00fcreleri mant\u0131kl\u0131 olabilir.<\/p>\n<h4><code>apache-noscript<\/code> Jail&#8217;i<\/h4>\n<p>Bu jail, sunucuda var olmayan veya y\u00fcr\u00fct\u00fclmemesi gereken script&#8217;leri (\u00f6rne\u011fin, <code>.php<\/code>, <code>.asp<\/code> dosyalar\u0131n\u0131) \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015fan istekleri tespit eder. Bu t\u00fcr istekler genellikle g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tarayan veya k\u00f6t\u00fc ama\u00e7l\u0131 kod y\u00fcklemeye \u00e7al\u0131\u015fan sald\u0131rganlardan gelir.<\/p>\n<pre><code>[apache-noscript]\nenabled = true\nport    = http,https\nlogpath = %(apache_error_log)s\nmaxretry = 3<\/code><\/pre>\n<h4><code>apache-overflows<\/code> Jail&#8217;i<\/h4>\n<p>Bu jail, Apache&#8217;nin tampon ta\u015fmas\u0131 (buffer overflow) veya benzeri istismar denemelerini tespit etmeye \u00e7al\u0131\u015f\u0131r. \u00c7ok uzun veya \u015f\u00fcpheli URL istekleri gibi desenleri arar.<\/p>\n<pre><code>[apache-overflows]\nenabled = true\nport    = http,https\nlogpath = %(apache_error_log)s\nmaxretry = 2<\/code><\/pre>\n<h4><code>apache-nohome<\/code> Jail&#8217;i (E\u011fer Uygulanabilirse)<\/h4>\n<p>Baz\u0131 Apache yap\u0131land\u0131rmalar\u0131nda, kullan\u0131c\u0131lar\u0131n ana dizinlerine eri\u015fim denemeleri i\u00e7in ayr\u0131 bir jail bulunabilir. E\u011fer bu t\u00fcr bir yap\u0131land\u0131rman\u0131z varsa, bu jail&#8217;i de etkinle\u015ftirebilirsiniz. Bu, genellikle <code>\/var\/log\/apache2\/error.log<\/code> dosyas\u0131n\u0131 izler.<\/p>\n<pre><code>[apache-nohome]\nenabled = true\nport    = http,https\nlogpath = %(apache_error_log)s<\/code><\/pre>\n<h4>Log Yolu Ayarlar\u0131 (<code>logpath<\/code>)<\/h4>\n<p>Varsay\u0131lan <code>logpath<\/code> de\u011ferleri genellikle Ubuntu i\u00e7in do\u011frudur. Ancak, \u00f6zel bir Apache yap\u0131land\u0131rman\u0131z varsa ve log dosyalar\u0131n\u0131z farkl\u0131 bir konumdaysa, <code>logpath<\/code> parametresini ilgili jail i\u00e7inde manuel olarak ayarlaman\u0131z gerekebilir:<\/p>\n<pre><code>logpath = \/var\/log\/apache2\/my_custom_access.log<\/code><\/pre>\n<p>T\u00fcm de\u011fi\u015fiklikleri <code>jail.local<\/code> dosyas\u0131na kaydettikten sonra, Fail2Ban servisini yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code>sudo service fail2ban restart<\/code><\/pre>\n<p>Yeniden ba\u015flatt\u0131ktan sonra, <code>fail2ban-client status<\/code> komutu ile yeni etkinle\u015ftirdi\u011finiz Apache jail&#8217;lerinin listede g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc kontrol edebilirsiniz.<\/p>\n<h3>Fail2Ban Jail Dosyalar\u0131n\u0131 Anlama<\/h3>\n<p>Fail2Ban&#8217;\u0131n g\u00fcc\u00fc, esnek yap\u0131land\u0131rma yeteneklerinde yatar. Bu esnekli\u011fi sa\u011flayan temel unsurlar, <code>jail.conf<\/code> (veya <code>jail.local<\/code>) dosyas\u0131ndaki <code>[DEFAULT]<\/code> ve <code>[JAIL_ADI]<\/code> b\u00f6l\u00fcmleridir. Bu b\u00f6l\u00fcmler, Fail2Ban&#8217;\u0131n nas\u0131l davranaca\u011f\u0131n\u0131 ve hangi hizmetleri nas\u0131l koruyaca\u011f\u0131n\u0131 tan\u0131mlar.<\/p>\n<h4><code>[DEFAULT]<\/code> B\u00f6l\u00fcm\u00fc<\/h4>\n<p>Bu b\u00f6l\u00fcm, t\u00fcm jail&#8217;ler i\u00e7in ge\u00e7erli olan genel ayarlar\u0131 i\u00e7erir. E\u011fer belirli bir jail&#8217;de \u00f6zel bir ayar tan\u0131mlanmazsa, <code>[DEFAULT]<\/code> b\u00f6l\u00fcm\u00fcndeki de\u011fer kullan\u0131l\u0131r. Daha \u00f6nce bahsedilen <code>ignoreip<\/code>, <code>bantime<\/code>, <code>findtime<\/code>, <code>maxretry<\/code> gibi parametreler burada tan\u0131mlan\u0131r. Ayr\u0131ca, yasaklama eylemi (<code>banaction<\/code>), e-posta bildirimleri i\u00e7in ayarlar (<code>destemail<\/code>, <code>sendername<\/code>, <code>mta<\/code>) da genellikle bu b\u00f6l\u00fcmde bulunur.<\/p>\n<p>\u00d6nemli <code>[DEFAULT]<\/code> parametreleri:<\/p>\n<ul>\n<li><code>ignoreip<\/code>: Beyaz listeye al\u0131nacak IP adresleri veya IP aral\u0131klar\u0131.<\/li>\n<li><code>bantime<\/code>: Yasaklama s\u00fcresi (saniye, dakika veya saat cinsinden).<\/li>\n<li><code>findtime<\/code>: Deneme s\u00fcresi (saniye, dakika veya saat cinsinden).<\/li>\n<li><code>maxretry<\/code>: Yasaklama \u00f6ncesi maksimum deneme say\u0131s\u0131.<\/li>\n<li><code>destemail<\/code>: Yasaklama bildirimi g\u00f6nderilecek e-posta adresi.<\/li>\n<li><code>sendername<\/code>: E-posta g\u00f6ndericisinin ad\u0131.<\/li>\n<li><code>mta<\/code>: E-posta g\u00f6ndermek i\u00e7in kullan\u0131lacak posta aktar\u0131m arac\u0131s\u0131 (\u00f6rne\u011fin, <code>sendmail<\/code>, <code>postfix<\/code>).<\/li>\n<li><code>action<\/code>: Yasaklama i\u015flemi i\u00e7in kullan\u0131lacak varsay\u0131lan eylem. Genellikle <code>%(action_)s<\/code> veya <code>%(action_mwl)s<\/code> gibi \u00f6nceden tan\u0131mlanm\u0131\u015f eylem setleri kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<h4><code>[JAIL_ADI]<\/code> B\u00f6l\u00fcmleri<\/h4>\n<p>Her bir <code>[JAIL_ADI]<\/code> b\u00f6l\u00fcm\u00fc, belirli bir hizmeti (\u00f6rne\u011fin, <code>[ssh]<\/code>, <code>[apache-auth]<\/code>) korumak i\u00e7in \u00f6zel kurallar tan\u0131mlar. Bu b\u00f6l\u00fcmde tan\u0131mlanan parametreler, <code>[DEFAULT]<\/code> b\u00f6l\u00fcm\u00fcndeki ayn\u0131 isimli parametreleri ge\u00e7ersiz k\u0131lar ve yaln\u0131zca o jail i\u00e7in ge\u00e7erli olur.<\/p>\n<p>Bir jail b\u00f6l\u00fcm\u00fcnde bulunabilecek temel parametreler:<\/p>\n<ul>\n<li><strong><code>enabled = true\/false<\/code>:<\/strong> Bu jail&#8217;in etkin olup olmad\u0131\u011f\u0131n\u0131 belirler. <code>true<\/code> olarak ayarland\u0131\u011f\u0131nda Fail2Ban bu jail&#8217;i izlemeye ba\u015flar.<\/li>\n<li><strong><code>port<\/code>:<\/strong> Korumal\u0131 hizmetin dinledi\u011fi port veya portlar. Birden fazla port i\u00e7in virg\u00fclle ayr\u0131lm\u0131\u015f liste kullan\u0131labilir (\u00f6rne\u011fin, <code>http,https<\/code> veya <code>22<\/code>).<\/li>\n<li><strong><code>filter<\/code>:<\/strong> Bu jail i\u00e7in kullan\u0131lacak filtre dosyas\u0131n\u0131n ad\u0131d\u0131r (uzant\u0131s\u0131z). Filtre dosyalar\u0131 <code>\/etc\/fail2ban\/filter.d\/<\/code> dizininde bulunur. \u00d6rne\u011fin, <code>filter = apache-auth<\/code> ise, Fail2Ban <code>\/etc\/fail2ban\/filter.d\/apache-auth.conf<\/code> dosyas\u0131n\u0131 kullan\u0131r. Bu dosya, loglarda hangi desenlerin aranaca\u011f\u0131n\u0131 tan\u0131mlayan regex kurallar\u0131n\u0131 i\u00e7erir.<\/li>\n<li><strong><code>logpath<\/code>:<\/strong> Bu jail taraf\u0131ndan izlenecek log dosyas\u0131n\u0131n tam yoludur. Birden fazla log dosyas\u0131 i\u00e7in yeni sat\u0131rlarda veya bo\u015flukla ayr\u0131lm\u0131\u015f liste kullan\u0131labilir.<\/li>\n<li><strong><code>maxretry<\/code>:<\/strong> Bu jail i\u00e7in \u00f6zel olarak ayarlanm\u0131\u015f maksimum deneme say\u0131s\u0131.<\/li>\n<li><strong><code>findtime<\/code>:<\/strong> Bu jail i\u00e7in \u00f6zel olarak ayarlanm\u0131\u015f deneme s\u00fcresi.<\/li>\n<li><strong><code>bantime<\/code>:<\/strong> Bu jail i\u00e7in \u00f6zel olarak ayarlanm\u0131\u015f yasaklama s\u00fcresi.<\/li>\n<li><strong><code>action<\/code>:<\/strong> Bu jail i\u00e7in \u00f6zel olarak ayarlanm\u0131\u015f yasaklama eylemi. Varsay\u0131lan eylemi ge\u00e7ersiz k\u0131lmak i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<p>\u00d6rnek <code>[apache-auth]<\/code> jail&#8217;i:<\/p>\n<pre><code>[apache-auth]\nenabled = true\nport    = http,https\nfilter  = apache-auth\nlogpath = \/var\/log\/apache2\/error.log\nmaxretry = 6\nbantime = 1h<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>apache-auth<\/code> jail&#8217;i etkinle\u015ftirilmi\u015f, HTTP ve HTTPS portlar\u0131n\u0131 hedeflemi\u015f, <code>apache-auth.conf<\/code> filtresini kullanm\u0131\u015f, Apache hata logunu izlemi\u015f ve varsay\u0131lan <code>maxretry<\/code> (5) ve <code>bantime<\/code> (10m) de\u011ferlerini ge\u00e7ersiz k\u0131larak kendi \u00f6zel de\u011ferlerini (6 deneme, 1 saat yasaklama) kullanm\u0131\u015ft\u0131r.<\/p>\n<p>Fail2Ban&#8217;\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in bu yap\u0131land\u0131rma dosyalar\u0131n\u0131 ve filtreleri incelemek, \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ayarlamalar yapman\u0131za olanak tan\u0131r.<\/p>\n<h3>Apache Log Dosyalar\u0131n\u0131 Anlama<\/h3>\n<p>Fail2Ban&#8217;\u0131n Apache&#8217;yi korumak i\u00e7in d\u00fczg\u00fcn \u00e7al\u0131\u015fabilmesi i\u00e7in, Apache&#8217;nin log dosyalar\u0131n\u0131 ve bunlar\u0131n i\u00e7eriklerini anlamak kritik \u00f6neme sahiptir. Fail2Ban, bu loglardaki belirli desenleri arayarak k\u00f6t\u00fc niyetli aktiviteleri tespit eder.<\/p>\n<h4><code>access.log<\/code><\/h4>\n<p>Apache&#8217;nin <code>access.log<\/code> dosyas\u0131, sunucuya gelen her ba\u015far\u0131l\u0131 veya ba\u015far\u0131s\u0131z iste\u011fi kaydeder. Bu log, kimin, ne zaman, hangi sayfaya, hangi taray\u0131c\u0131yla ve hangi sonu\u00e7la eri\u015fti\u011fi gibi bilgileri i\u00e7erir. Varsay\u0131lan konumu genellikle <code>\/var\/log\/apache2\/access.log<\/code>&#8216;dur.<\/p>\n<p>\u00d6rnek <code>access.log<\/code> girdisi (varsay\u0131lan &#8220;common&#8221; veya &#8220;combined&#8221; format\u0131nda):<\/p>\n<pre><code>192.168.1.10 - - [24\/Oct\/2023:10:30:00 +0300] \"GET \/index.html HTTP\/1.1\" 200 1234 \"-\" \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/118.0.0.0 Safari\/537.36\"\n203.0.113.50 - - [24\/Oct\/2023:10:30:05 +0300] \"GET \/admin\/login.php HTTP\/1.1\" 404 456 \"-\" \"BadBot\/1.0\"\n203.0.113.51 - - [24\/Oct\/2023:10:30:10 +0300] \"POST \/wp-login.php HTTP\/1.1\" 200 123 \"-\" \"Mozilla\/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident\/5.0)\"<\/code><\/pre>\n<p>Bu logdaki bilgiler:<\/p>\n<ul>\n<li><strong><code>192.168.1.10<\/code>:<\/strong> \u0130ste\u011fi yapan istemcinin IP adresi.<\/li>\n<li><strong><code>[24\/Oct\/2023:10:30:00 +0300]<\/code>:<\/strong> \u0130ste\u011fin zaman damgas\u0131.<\/li>\n<li><strong><code>\"GET \/index.html HTTP\/1.1\"<\/code>:<\/strong> HTTP metodu, istenen kaynak ve HTTP protokol versiyonu.<\/li>\n<li><strong><code>200<\/code>:<\/strong> HTTP durum kodu (200 OK, 404 Not Found, 500 Internal Server Error vb.). Fail2Ban i\u00e7in \u00f6zellikle 4xx ve 5xx hatalar\u0131 \u00f6nemlidir.<\/li>\n<li><strong><code>1234<\/code>:<\/strong> Yan\u0131t\u0131n boyutu (bayt cinsinden).<\/li>\n<li><strong><code>\"Mozilla\/5.0 ...\"<\/code>:<\/strong> \u0130stemcinin User-Agent (taray\u0131c\u0131 veya bot) bilgisi.<\/li>\n<\/ul>\n<p><code>apache-badbots<\/code> gibi jail&#8217;ler, <code>access.log<\/code>&#8216;daki belirli User-Agent&#8217;lar\u0131 veya \u00e7ok say\u0131da 404\/403 hatas\u0131 olu\u015fturan IP&#8217;leri tespit etmek i\u00e7in bu dosyay\u0131 kullan\u0131r.<\/p>\n<h4><code>error.log<\/code><\/h4>\n<p>Apache&#8217;nin <code>error.log<\/code> dosyas\u0131, sunucu taraf\u0131nda olu\u015fan hatalar\u0131, uyar\u0131lar\u0131 ve hata ay\u0131klama mesajlar\u0131n\u0131 kaydeder. Bu log, g\u00fcvenlik a\u00e7\u0131s\u0131ndan daha do\u011frudan g\u00f6stergeler i\u00e7erebilir. Varsay\u0131lan konumu genellikle <code>\/var\/log\/apache2\/error.log<\/code>&#8216;dur.<\/p>\n<p>\u00d6rnek <code>error.log<\/code> girdileri:<\/p>\n<pre><code>[Mon Oct 24 10:30:15 2023] [error] [client 203.0.113.60] client denied by server configuration: \/var\/www\/html\/secret_admin.php\n[Mon Oct 24 10:30:20 2023] [error] [client 203.0.113.61] Authorization required.\n[Mon Oct 24 10:30:25 2023] [error] [client 203.0.113.62] user 'admin' authentication failure for \"\/protected\/area\": Password Mismatch<\/code><\/pre>\n<p>Bu logdaki bilgiler:<\/p>\n<ul>\n<li><strong><code>[Mon Oct 24 10:30:15 2023]<\/code>:<\/strong> Hatan\u0131n zaman damgas\u0131.<\/li>\n<li><strong><code>[error]<\/code>:<\/strong> Hata seviyesi.<\/li>\n<li><strong><code>[client 203.0.113.60]<\/code>:<\/strong> Hatan\u0131n kaynakland\u0131\u011f\u0131 istemci IP adresi.<\/li>\n<li><strong><code>client denied by server configuration<\/code>:<\/strong> Sunucu yap\u0131land\u0131rmas\u0131 taraf\u0131ndan engellenen bir eri\u015fim denemesi.<\/li>\n<li><strong><code>Authorization required.<\/code> \/ <code>authentication failure<\/code>:<\/strong> Kimlik do\u011frulama ba\u015far\u0131s\u0131zl\u0131\u011f\u0131.<\/li>\n<\/ul>\n<p><code>apache-auth<\/code>, <code>apache-noscript<\/code>, <code>apache-overflows<\/code> gibi jail&#8217;ler, <code>error.log<\/code>&#8216;daki bu t\u00fcr girdileri izleyerek brute-force sald\u0131r\u0131lar\u0131n\u0131, yetkisiz eri\u015fim denemelerini ve di\u011fer k\u00f6t\u00fc niyetli faaliyetleri tespit eder.<\/p>\n<h4>\u00d6zel Log Dosyalar\u0131<\/h4>\n<p>Apache, sanal ana bilgisayarlar (Virtual Hosts) veya belirli uygulamalar i\u00e7in \u00f6zel log dosyalar\u0131 da yap\u0131land\u0131r\u0131labilir. E\u011fer sunucunuzda bu t\u00fcr \u00f6zel log dosyalar\u0131 varsa, Fail2Ban&#8217;\u0131n ilgili jail&#8217;lerinin <code>logpath<\/code> parametresini bu dosya yollar\u0131n\u0131 i\u00e7erecek \u015fekilde g\u00fcncellemeniz gerekecektir.<\/p>\n<p>\u00d6rne\u011fin, bir sanal ana bilgisayar\u0131n\u0131z\u0131n <code>error.log<\/code>&#8216;u <code>\/var\/log\/apache2\/vhost.example.com-error.log<\/code> ise, ilgili jail&#8217;in <code>logpath<\/code>&#8216;ini buna g\u00f6re ayarlamal\u0131s\u0131n\u0131z.<\/p>\n<p>Log dosyalar\u0131n\u0131n d\u00fczenli olarak incelenmesi, Fail2Ban&#8217;\u0131n ne kadar etkili \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlaman\u0131za ve gerekirse filtrelerinizi hassasla\u015ft\u0131rman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>\u00d6zel Apache Fail2Ban Kurallar\u0131 Olu\u015fturma<\/h3>\n<p>Fail2Ban, varsay\u0131lan filtreleriyle bir\u00e7ok yayg\u0131n sald\u0131r\u0131ya kar\u015f\u0131 koruma sa\u011flar. Ancak, bazen \u00f6zel sald\u0131r\u0131 desenlerini veya uygulaman\u0131za \u00f6zg\u00fc zafiyetleri hedeflemek i\u00e7in kendi \u00f6zel kurallar\u0131n\u0131z\u0131 olu\u015fturman\u0131z gerekebilir. Bu b\u00f6l\u00fcm, \u00f6zel bir Fail2Ban filtresi ve jail&#8217;i nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131klar.<\/p>\n<h4>Yeni Bir Filtre Dosyas\u0131 Olu\u015fturma (<code>\/etc\/fail2ban\/filter.d\/apache-custom.conf<\/code>)<\/h4>\n<p>\u00d6zel filtre dosyalar\u0131 <code>\/etc\/fail2ban\/filter.d\/<\/code> dizininde bulunur. Yeni bir filtre olu\u015fturmak i\u00e7in bu dizine bir <code>.conf<\/code> uzant\u0131l\u0131 dosya eklemelisiniz.<\/p>\n<pre><code>sudo nano \/etc\/fail2ban\/filter.d\/apache-custom.conf<\/code><\/pre>\n<p>Bu dosyan\u0131n i\u00e7eri\u011fi iki ana b\u00f6l\u00fcmden olu\u015fur: <code>[INCLUDES]<\/code> ve <code>[Definition]<\/code>.<\/p>\n<ul>\n<li><strong><code>[INCLUDES]<\/code>:<\/strong> Di\u011fer filtre dosyalar\u0131n\u0131 veya genel yap\u0131land\u0131rma dosyalar\u0131n\u0131 dahil etmek i\u00e7in kullan\u0131l\u0131r. Genellikle gerekli de\u011fildir, ancak karma\u015f\u0131k filtreler i\u00e7in faydal\u0131 olabilir.<\/li>\n<li><strong><code>[Definition]<\/code>:<\/strong> Filtrenin ana mant\u0131\u011f\u0131n\u0131 i\u00e7erir. Burada <code>failregex<\/code> ve iste\u011fe ba\u011fl\u0131 olarak <code>ignoreregex<\/code> tan\u0131mlan\u0131r.<\/li>\n<\/ul>\n<h4>Regex Tan\u0131mlama (<code>failregex<\/code>)<\/h4>\n<p><code>failregex<\/code> parametresi, Fail2Ban&#8217;\u0131n log dosyalar\u0131nda arayaca\u011f\u0131 d\u00fczenli ifade (regular expression) desenlerini i\u00e7erir. Bu desenler, k\u00f6t\u00fc niyetli aktiviteyi g\u00f6steren log girdilerini e\u015fle\u015ftirmelidir. Her bir <code>failregex<\/code> kural\u0131 ayr\u0131 bir sat\u0131rda tan\u0131mlan\u0131r.<\/p>\n<p>\u00d6rnek bir senaryo: Belirli bir URL&#8217;ye (\u00f6rne\u011fin, <code>\/wp-admin.php<\/code> gibi bir y\u00f6netim paneli giri\u015f sayfas\u0131) \u00e7ok say\u0131da ba\u015far\u0131s\u0131z eri\u015fim denemesini engellemek istiyorsunuz. Bu denemeler Apache <code>access.log<\/code>&#8216;unda 404 (Bulunamad\u0131) veya 403 (Yasak) hatalar\u0131 olarak g\u00f6r\u00fcnebilir.<\/p>\n<p>\u00d6rnek <code>apache-custom.conf<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code>[Definition]\nfailregex = ^<HOST> -.<em> \"GET \/wp-admin.php HTTP\/1\\..<\/em>\" (403|404)\n            ^<HOST> -.<em> \"POST \/wp-login.php HTTP\/1\\..<\/em>\" (200)<\/code><\/pre>\n<p>A\u00e7\u0131klama:<\/p>\n<ul>\n<li><code>^<\/code>: Sat\u0131r\u0131n ba\u015flang\u0131c\u0131.<\/li>\n<li><code><HOST><\/code>: Fail2Ban&#8217;\u0131n log girdisinden IP adresini \u00e7\u0131karmak i\u00e7in kulland\u0131\u011f\u0131 bir yer tutucudur. Fail2Ban, bu yer tutucuyu dinamik olarak uygun bir IP regex&#8217;i ile de\u011fi\u015ftirir.<\/li>\n<li><code>-.*<\/code>: IP adresinden sonra gelen herhangi bir karakter dizisi.<\/li>\n<li><code>\"GET \/wp-admin.php HTTP\/1\\..*\"<\/code>: Belirli bir GET iste\u011fi ve HTTP versiyonu. Burada <code>wp-admin.php<\/code> yerine kendi hedef URL&#8217;nizi yazmal\u0131s\u0131n\u0131z.<\/li>\n<li><code>(403|404)<\/code>: HTTP durum kodu olarak 403 veya 404 arar.<\/li>\n<li><code>\"POST \/wp-login.php HTTP\/1\\..*\" (200)<\/code>: WordPress giri\u015f sayfas\u0131na (wp-login.php) yap\u0131lan POST isteklerinin, ba\u015far\u0131l\u0131 bir HTTP 200 yan\u0131t\u0131 alsa bile, \u00e7ok say\u0131da tekrarlanmas\u0131 durumunda brute-force giri\u015fimi olabilece\u011fini varsayar. (Bu, baz\u0131 durumlarda yanl\u0131\u015f pozitiflere neden olabilece\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r.)<\/li>\n<\/ul>\n<h4><code>fail2ban-regex<\/code> ile Test Etme<\/h4>\n<p>Yeni olu\u015fturdu\u011funuz <code>failregex<\/code> kurallar\u0131n\u0131, canl\u0131ya almadan \u00f6nce test etmek \u00e7ok \u00f6nemlidir. <code>fail2ban-regex<\/code> arac\u0131, bir log dosyas\u0131 \u00fczerinde belirli bir filtreyi test etmenizi sa\u011flar ve ka\u00e7 tane e\u015fle\u015fme bulundu\u011funu g\u00f6sterir.<\/p>\n<pre><code>sudo fail2ban-regex \/var\/log\/apache2\/access.log \/etc\/fail2ban\/filter.d\/apache-custom.conf<\/code><\/pre>\n<p>Bu komut, <code>\/var\/log\/apache2\/access.log<\/code> dosyas\u0131n\u0131 <code>apache-custom.conf<\/code> filtresindeki kurallarla tarar. \u00c7\u0131kt\u0131, bulunan e\u015fle\u015fme say\u0131s\u0131n\u0131 ve hangi IP adreslerinin e\u015fle\u015fti\u011fini g\u00f6sterecektir. E\u011fer bekledi\u011finizden farkl\u0131 sonu\u00e7lar al\u0131rsan\u0131z, regex&#8217;inizi buna g\u00f6re ayarlayabilirsiniz.<\/p>\n<h4>\u00d6zel Jail Olu\u015fturma<\/h4>\n<p>Filtrenizi test edip do\u011frulad\u0131ktan sonra, bu filtreyi kullanacak yeni bir jail olu\u015fturmak i\u00e7in <code>jail.local<\/code> dosyas\u0131n\u0131 d\u00fczenleyin:<\/p>\n<pre><code>sudo nano \/etc\/fail2ban\/jail.local<\/code><\/pre>\n<p>Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki gibi yeni bir jail b\u00f6l\u00fcm\u00fc ekleyin:<\/p>\n<pre><code>[apache-custom]\nenabled = true\nport    = http,https\nfilter  = apache-custom\nlogpath = \/var\/log\/apache2\/access.log\nmaxretry = 5\nbantime = 30m<\/code><\/pre>\n<p>Burada:<\/p>\n<ul>\n<li><code>filter = apache-custom<\/code>: Yeni olu\u015fturdu\u011fumuz filtre dosyas\u0131n\u0131 kullanaca\u011f\u0131m\u0131z\u0131 belirtir.<\/li>\n<li><code>logpath<\/code>: Bu filtrenin hangi log dosyas\u0131n\u0131 izleyece\u011fini belirtir.<\/li>\n<li><code>maxretry<\/code> ve <code>bantime<\/code>: Bu jail i\u00e7in \u00f6zel yasaklama e\u015fi\u011fi ve s\u00fcresi.<\/li>\n<\/ul>\n<p>De\u011fi\u015fiklikleri kaydedin ve Fail2Ban servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code>sudo service fail2ban restart<\/code><\/pre>\n<p>Art\u0131k Fail2Ban, \u00f6zel olarak tan\u0131mlad\u0131\u011f\u0131n\u0131z desenlere g\u00f6re Apache loglar\u0131n\u0131 izleyecek ve k\u00f6t\u00fc niyetli IP adreslerini yasaklayacakt\u0131r.<\/p>\n<h3>Fail2Ban Eylemleri (Actions) ve Bildirimler (Notifications)<\/h3>\n<p>Fail2Ban, bir IP adresini tespit etti\u011finde ne yapaca\u011f\u0131n\u0131 belirlemek i\u00e7in &#8220;eylemler&#8221; (actions) kullan\u0131r. Varsay\u0131lan olarak, Fail2Ban iptables kullanarak IP adreslerini engeller. Ancak, e-posta bildirimleri gibi ek eylemler de yap\u0131land\u0131r\u0131labilir.<\/p>\n<h4>Varsay\u0131lan Eylemler (<code>action = %(action_)s<\/code>)<\/h4>\n<p>Fail2Ban, <code>\/etc\/fail2ban\/action.d\/<\/code> dizininde bir dizi \u00f6nceden tan\u0131mlanm\u0131\u015f eylem script&#8217;i ile birlikte gelir. <code>jail.local<\/code> dosyas\u0131ndaki <code>[DEFAULT]<\/code> veya <code>[JAIL_ADI]<\/code> b\u00f6l\u00fcmlerinde <code>action<\/code> parametresini ayarlayarak bu eylemleri kullanabilirsiniz.<\/p>\n<ul>\n<li><strong><code>action = %(action_)s<\/code>:<\/strong> Bu, varsay\u0131lan yasaklama eylemidir. Genellikle <code>iptables<\/code> kullanarak IP adresini engeller. Fail2Ban&#8217;\u0131n \u00e7o\u011fu kurulumunda bu yeterlidir.<\/li>\n<li><strong><code>action = %(action_mw)s<\/code>:<\/strong> Bu eylem, IP&#8217;yi yasaklar ve yasaklama hakk\u0131nda bir e-posta bildirimi g\u00f6nderir.<\/li>\n<li><strong><code>action = %(action_mwl)s<\/code>:<\/strong> Bu eylem, IP&#8217;yi yasaklar, yasaklama hakk\u0131nda e-posta bildirimi g\u00f6nderir ve ilgili log sat\u0131rlar\u0131n\u0131 da e-postaya dahil eder.<\/li>\n<\/ul>\n<h4>E-posta Bildirimleri \u0130\u00e7in Yap\u0131land\u0131rma (<code>action = %(action_mwl)s<\/code>)<\/h4>\n<p>E-posta bildirimlerini kullanmak istiyorsan\u0131z, <code>jail.local<\/code> dosyas\u0131ndaki <code>[DEFAULT]<\/code> b\u00f6l\u00fcm\u00fcnde a\u015fa\u011f\u0131daki parametreleri yap\u0131land\u0131rman\u0131z gerekir:<\/p>\n<pre><code>[DEFAULT]\n...\ndestemail = your_email@example.com  # Bildirimlerin g\u00f6nderilece\u011fi e-posta adresi\nsendername = Fail2Ban              # E-posta g\u00f6ndericisinin ad\u0131\nmta = sendmail                     # E-posta g\u00f6ndermek i\u00e7in kullan\u0131lacak MTA (Mail Transfer Agent)\naction = %(action_mwl)s            # Yasaklama ve loglar\u0131 i\u00e7eren e-posta bildirimi<\/code><\/pre>\n<p>Burada <code>destemail<\/code> adresini kendi e-posta adresinizle de\u011fi\u015ftirmeniz \u00f6nemlidir.<\/p>\n<h4><code>sendmail<\/code> veya <code>postfix<\/code> Kurulumu<\/h4>\n<p>Fail2Ban&#8217;\u0131n e-posta g\u00f6nderebilmesi i\u00e7in sunucunuzda bir MTA (Mail Transfer Agent) kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Ubuntu sistemlerinde genellikle <code>postfix<\/code> veya <code>sendmail<\/code> kullan\u0131l\u0131r. E\u011fer sunucunuzda zaten bir MTA kurulu de\u011filse, kurman\u0131z gerekebilir:<\/p>\n<pre><code>sudo apt-get install postfix<\/code><\/pre>\n<p>Kurulum s\u0131ras\u0131nda, &#8220;Internet Site&#8221; veya &#8220;Local Only&#8221; gibi se\u00e7enekler sunulabilir. Basit bildirimler i\u00e7in &#8220;Local Only&#8221; yeterli olabilir, ancak d\u0131\u015far\u0131ya e-posta g\u00f6ndermek istiyorsan\u0131z &#8220;Internet Site&#8221; se\u00e7ene\u011fini se\u00e7ip alan ad\u0131n\u0131z\u0131 yap\u0131land\u0131rman\u0131z gerekebilir. Bu, ayr\u0131 bir konu oldu\u011fu i\u00e7in burada detaylar\u0131na girilmeyecektir, ancak Fail2Ban&#8217;\u0131n e-posta g\u00f6ndermesi i\u00e7in bu ad\u0131m\u0131n gerekli oldu\u011funu unutmay\u0131n.<\/p>\n<h4>\u00d6zel Eylem Olu\u015fturma<\/h4>\n<p>Fail2Ban, \u00f6zel eylemler olu\u015fturman\u0131za da olanak tan\u0131r. Kendi \u00f6zel script&#8217;inizi yazarak, bir IP yasakland\u0131\u011f\u0131nda veya yasa\u011f\u0131 kald\u0131r\u0131ld\u0131\u011f\u0131nda belirli komutlar\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flayabilirsiniz. \u00d6zel eylem script&#8217;leri <code>\/etc\/fail2ban\/action.d\/<\/code> dizininde saklan\u0131r.<\/p>\n<p>\u00d6rnek olarak, bir IP yasakland\u0131\u011f\u0131nda harici bir g\u00fcvenlik duvar\u0131 API&#8217;sine istek g\u00f6nderen veya bir bildirim sistemine mesaj g\u00f6nderen bir script olu\u015fturabilirsiniz. \u00d6zel bir eylem dosyas\u0131 genellikle a\u015fa\u011f\u0131daki b\u00f6l\u00fcmleri i\u00e7erir:<\/p>\n<ul>\n<li><code>[Definition]<\/code>: Eylemin tan\u0131m\u0131n\u0131 i\u00e7erir.<\/li>\n<li><code>actionstart<\/code>: Fail2Ban servisi ba\u015flad\u0131\u011f\u0131nda \u00e7al\u0131\u015facak komutlar.<\/li>\n<li><code>actionstop<\/code>: Fail2Ban servisi durdu\u011funda \u00e7al\u0131\u015facak komutlar.<\/li>\n<li><code>actioncheck<\/code>: Bir IP yasaklanmadan \u00f6nce \u00e7al\u0131\u015facak komutlar (iste\u011fe ba\u011fl\u0131).<\/li>\n<li><code>actionban<\/code>: Bir IP yasakland\u0131\u011f\u0131nda \u00e7al\u0131\u015facak komutlar.<\/li>\n<li><code>actionunban<\/code>: Bir IP yasa\u011f\u0131 kald\u0131r\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015facak komutlar.<\/li>\n<\/ul>\n<p>\u00d6zel bir eylem olu\u015fturduktan sonra, bunu <code>jail.local<\/code> dosyan\u0131zdaki <code>action<\/code> parametresinde belirtebilirsiniz:<\/p>\n<pre><code>action = my_custom_action[name=apache-custom-ban]<\/code><\/pre>\n<p>Bu, Fail2Ban&#8217;\u0131n esnekli\u011fini g\u00f6sterir ve sunucunuzun \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re g\u00fcvenlik stratejinizi geni\u015fletmenize olanak tan\u0131r.<\/p>\n<h3>Fail2Ban&#8217;\u0131 Test Etme ve \u0130zleme<\/h3>\n<p>Fail2Ban&#8217;\u0131 kurup yap\u0131land\u0131rd\u0131ktan sonra, d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in test etmek ve s\u00fcrekli olarak izlemek \u00e7ok \u00f6nemlidir. Bu, olas\u0131 sorunlar\u0131 erken tespit etmenizi ve g\u00fcvenlik stratejinizi optimize etmenizi sa\u011flar.<\/p>\n<h4><code>fail2ban-client status<\/code><\/h4>\n<p>Bu komut, Fail2Ban servisinin genel durumunu ve etkin olan t\u00fcm jail&#8217;leri listeler. Ayr\u0131ca, her bir jail i\u00e7in yasaklanan IP adreslerinin say\u0131s\u0131n\u0131 da g\u00f6sterir.<\/p>\n<pre><code>sudo fail2ban-client status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code>Status\n|- Number of jail:      4\n<code>- Jail list:   ssh, apache-auth, apache-badbots, apache-custom<\/code><\/pre>\n<h4><\/code>fail2ban-client status <jailname><code><\/h4>\n<p>Belirli bir jail'in durumunu daha ayr\u0131nt\u0131l\u0131 g\u00f6rmek i\u00e7in, jail ad\u0131n\u0131 belirterek bu komutu kullanabilirsiniz:<\/p>\n<pre><code>sudo fail2ban-client status apache-auth<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code>Status for jail apache-auth\n|- Filter\n|  |- currently failed: 0\n|  |- total failed:     12\n|  <\/code>- file list:        \/var\/log\/apache2\/error.log\n<code>- Actions\n   |- currently banned: 2\n   |- total banned:     5\n   <\/code>- banned IP list:   203.0.113.10, 203.0.113.11<\/code><\/pre>\n<p>Bu \u00e7\u0131kt\u0131, <code>apache-auth<\/code> jail'inin ka\u00e7 IP adresini yasaklad\u0131\u011f\u0131n\u0131 (currently banned), toplam yasaklanan IP say\u0131s\u0131n\u0131 (total banned) ve \u015fu anda yasakl\u0131 olan IP adreslerini g\u00f6sterir. Ayr\u0131ca, filtre taraf\u0131ndan ka\u00e7 ba\u015far\u0131s\u0131z deneme tespit edildi\u011fini de g\u00f6rebilirsiniz.<\/p>\n<h4>Log Dosyalar\u0131n\u0131 \u0130zleme (<code>\/var\/log\/fail2ban.log<\/code>)<\/h4>\n<p>Fail2Ban'\u0131n kendi log dosyas\u0131 <code>\/var\/log\/fail2ban.log<\/code>'dur. Bu dosya, Fail2Ban servisinin ba\u015flang\u0131\u00e7\/duru\u015f olaylar\u0131n\u0131, jail'lerin etkinle\u015ftirilmesini, IP adreslerinin yasaklanmas\u0131n\u0131 ve yasaklar\u0131n\u0131n kald\u0131r\u0131lmas\u0131n\u0131 kaydeder. Bu log dosyas\u0131n\u0131 izlemek, Fail2Ban'\u0131n ger\u00e7ek zamanl\u0131 olarak nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<pre><code>sudo tail -f \/var\/log\/fail2ban.log<\/code><\/pre>\n<p>Bu komut, log dosyas\u0131n\u0131n sonunu s\u00fcrekli olarak ekrana basar. Bir IP adresi yasakland\u0131\u011f\u0131nda veya yasa\u011f\u0131 kald\u0131r\u0131ld\u0131\u011f\u0131nda burada ilgili girdileri g\u00f6receksiniz:<\/p>\n<pre><code>2023-10-24 10:45:01,234 fail2ban.actions: WARNING [apache-auth] Ban 203.0.113.10\n2023-10-24 10:55:01,234 fail2ban.actions: WARNING [apache-auth] Unban 203.0.113.10<\/code><\/pre>\n<h4>Test Sald\u0131r\u0131lar\u0131 Yapma (Dikkatli Bir \u015eekilde)<\/h4>\n<p>Fail2Ban'\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in, <em>g\u00fcvenli ve kontroll\u00fc bir ortamda<\/em> test sald\u0131r\u0131lar\u0131 yapabilirsiniz. \u00d6rne\u011fin, yasaklanmas\u0131n\u0131 bekledi\u011finiz bir IP adresinden (kendi beyaz listenizde olmayan bir IP) Apache'nin kimlik do\u011frulama gerektiren bir alan\u0131na veya bir y\u00f6netim paneli giri\u015f sayfas\u0131na birka\u00e7 kez yanl\u0131\u015f parola ile eri\u015fmeye \u00e7al\u0131\u015f\u0131n. <code>maxretry<\/code> say\u0131s\u0131n\u0131 a\u015ft\u0131\u011f\u0131n\u0131zda, Fail2Ban'\u0131n sizi yasaklad\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p><strong>UYARI:<\/strong> Test sald\u0131r\u0131lar\u0131n\u0131 kendi sunucunuz \u00fczerinde yaparken, kendinizi veya di\u011fer me\u015fru kullan\u0131c\u0131lar\u0131 yanl\u0131\u015fl\u0131kla yasaklamamaya dikkat edin. Kendi IP adresinizi <code>ignoreip<\/code> listesine eklemeyi unutmay\u0131n. M\u00fcmk\u00fcnse, bu t\u00fcr testleri bir geli\u015ftirme veya test ortam\u0131nda yap\u0131n.<\/p>\n<p>Test sald\u0131r\u0131s\u0131 sonras\u0131, <code>fail2ban-client status <jailname><\/code> komutu ile yasaklanan IP'nin listeye eklendi\u011fini ve <code>\/var\/log\/fail2ban.log<\/code> dosyas\u0131nda ilgili \"Ban\" girdisini kontrol edin.<\/p>\n","protected":false},"excerpt":{"rendered":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, sunucu g\u00fcvenli\u011fi herhangi bir \u00e7evrimi\u00e7i","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-38822","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma\" \/>\n<meta property=\"og:description\" content=\"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, sunucu g\u00fcvenli\u011fi herhangi bir \u00e7evrimi\u00e7i\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-08T11:40:58+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma\",\"datePublished\":\"2026-02-08T11:40:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\"},\"wordCount\":4122,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\",\"name\":\"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-08T11:40:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/","og_locale":"tr_TR","og_type":"article","og_title":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma","og_description":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, sunucu g\u00fcvenli\u011fi herhangi bir \u00e7evrimi\u00e7i","og_url":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-08T11:40:58+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma","datePublished":"2026-02-08T11:40:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/"},"wordCount":4122,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/","url":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/","name":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-08T11:40:58+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/apache-sunucusunu-ubuntu-14-04-uzerinde-fail2ban-ile-koruma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache Sunucusunu Ubuntu 14.04 \u00dczerinde Fail2Ban ile Koruma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38822"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38822\/revisions"}],"predecessor-version":[{"id":38823,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38822\/revisions\/38823"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}