{"id":1625,"date":"2025-11-10T18:15:02","date_gmt":"2025-11-10T15:15:02","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/wordpress-guvenlik-sertlestirme-kontrol-listesi-dosya-izinleri-salt-keys-xml-rpc-ufw-fail2ban-nasil-tatli-tatli-kurulur\/"},"modified":"2025-11-10T18:15:02","modified_gmt":"2025-11-10T15:15:02","slug":"wordpress-guvenlik-sertlestirme-kontrol-listesi-dosya-izinleri-salt-keys-xml-rpc-ufw-fail2ban-nasil-tatli-tatli-kurulur","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/wordpress-guvenlik-sertlestirme-kontrol-listesi-dosya-izinleri-salt-keys-xml-rpc-ufw-fail2ban-nasil-tatli-tatli-kurulur\/","title":{"rendered":"WordPress G\u00fcvenlik Sertle\u015ftirme Kontrol Listesi: Dosya \u0130zinleri, Salt Keys, XML-RPC, UFW\/Fail2ban Nas\u0131l Tatl\u0131 Tatl\u0131 Kurulur?"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Ofiste_Bir_Alarm_wp-login_ve_Kahve_Guvenligi_Neden_Simdi_Konusmaliyiz\"><span class=\"toc_number toc_depth_1\">1<\/span> Ofiste Bir Alarm, wp-login ve Kahve: G\u00fcvenli\u011fi Neden \u015eimdi Konu\u015fmal\u0131y\u0131z?<\/a><\/li><li><a href=\"#Dosya_Izinleri_Neden_Bu_Kadar_Onemli_Kucuk_Bir_Rakam_Buyuk_Bir_Huzur\"><span class=\"toc_number toc_depth_1\">2<\/span> Dosya \u0130zinleri Neden Bu Kadar \u00d6nemli? K\u00fc\u00e7\u00fck Bir Rakam, B\u00fcy\u00fck Bir Huzur<\/a><ul><li><a href=\"#Gorunmeyeni_Duzeltmek_777_Gibi_Cazibeli_Yanlislar\"><span class=\"toc_number toc_depth_2\">2.1<\/span> G\u00f6r\u00fcnmeyeni D\u00fczeltmek: \u201c777\u201d Gibi Cazibeli Yanl\u0131\u015flar<\/a><\/li><li><a href=\"#Adim_Adim_Duzeltme_Kirmadan_Dokmeyelim\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Ad\u0131m Ad\u0131m D\u00fczeltme: K\u0131rmadan, D\u00f6kmeyelim<\/a><\/li><\/ul><\/li><li><a href=\"#Salt_Keys_ve_wp-config_Oturumlari_Taze_Tut_Anahtari_Tekillestir\"><span class=\"toc_number toc_depth_1\">3<\/span> Salt Keys ve wp-config: Oturumlar\u0131 Taze Tut, Anahtar\u0131 Tekille\u015ftir<\/a><ul><li><a href=\"#Salt_Keys_Nedir_Neden_Umursayalim\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Salt Keys Nedir, Neden Umursayal\u0131m?<\/a><\/li><li><a href=\"#wp-configte_Kucuk_Ama_Etkili_Dokunuslar\"><span class=\"toc_number toc_depth_2\">3.2<\/span> wp-config\u2019te K\u00fc\u00e7\u00fck Ama Etkili Dokunu\u015flar<\/a><\/li><\/ul><\/li><li><a href=\"#XML-RPC_Tamamen_Kapatmali_miyiz_Sadece_Daraltmali_miyiz\"><span class=\"toc_number toc_depth_1\">4<\/span> XML-RPC: Tamamen Kapatmal\u0131 m\u0131y\u0131z, Sadece Daraltmal\u0131 m\u0131y\u0131z?<\/a><ul><li><a href=\"#Kapiyi_Taniyalim_XML-RPC_Ne_Ise_Yarar\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Kap\u0131y\u0131 Tan\u0131yal\u0131m: XML-RPC Ne \u0130\u015fe Yarar?<\/a><\/li><li><a href=\"#Nasil_Daraltir_ya_da_Kapatiriz\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Nas\u0131l Daralt\u0131r ya da Kapat\u0131r\u0131z?<\/a><\/li><\/ul><\/li><li><a href=\"#UFW_ve_Fail2ban_Sehir_Kapilarini_Devriye_Saatlerini_Guzelce_Ayarlayalim\"><span class=\"toc_number toc_depth_1\">5<\/span> UFW ve Fail2ban: \u015eehir Kap\u0131lar\u0131n\u0131, Devriye Saatlerini G\u00fczelce Ayarlayal\u0131m<\/a><ul><li><a href=\"#UFW_ile_Trafigi_Sakinlestirmek\"><span class=\"toc_number toc_depth_2\">5.1<\/span> UFW ile Trafi\u011fi Sakinle\u015ftirmek<\/a><\/li><li><a href=\"#Fail2ban_ile_Kotu_Niyete_Hizli_Refleks\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Fail2ban ile K\u00f6t\u00fc Niyete H\u0131zl\u0131 Refleks<\/a><\/li><\/ul><\/li><li><a href=\"#Gunluk_Bakim_Kucuk_Ritueller_ve_Izleme_Guvenlik_Bir_Seferlik_Degil\"><span class=\"toc_number toc_depth_1\">6<\/span> G\u00fcnl\u00fck Bak\u0131m, K\u00fc\u00e7\u00fck Rit\u00fceller ve \u0130zleme: G\u00fcvenlik Bir Seferlik De\u011fil<\/a><ul><li><a href=\"#Guncellemeler_Az_Eklenti_ve_Temiz_Kullanicilar\"><span class=\"toc_number toc_depth_2\">6.1<\/span> G\u00fcncellemeler, Az Eklenti ve Temiz Kullan\u0131c\u0131lar<\/a><\/li><li><a href=\"#Loglari_Dinlemek_ve_Kucuk_Alarmlar_Kurmak\"><span class=\"toc_number toc_depth_2\">6.2<\/span> Loglar\u0131 Dinlemek ve K\u00fc\u00e7\u00fck Alarmlar Kurmak<\/a><\/li><\/ul><\/li><li><a href=\"#Kapanis_Kapilari_Saglamlastir_Rutinini_Kur_Rahat_Uyu\"><span class=\"toc_number toc_depth_1\">7<\/span> Kapan\u0131\u015f: Kap\u0131lar\u0131 Sa\u011flamla\u015ft\u0131r, Rutinini Kur, Rahat Uyu<\/a><\/li><\/ul><\/div>\n<h2 id=\"section-1\"><span id=\"Ofiste_Bir_Alarm_wp-login_ve_Kahve_Guvenligi_Neden_Simdi_Konusmaliyiz\">Ofiste Bir Alarm, wp-login ve Kahve: G\u00fcvenli\u011fi Neden \u015eimdi Konu\u015fmal\u0131y\u0131z?<\/span><\/h2>\n<p>Hi\u00e7 b\u00f6yle oldu mu? Sabah kahveyi yeni koymu\u015fsun, bir bildirim d\u00fc\u015f\u00fcyor: Sunucuda ola\u011fan d\u0131\u015f\u0131 trafik. Logu a\u00e7\u0131nca bak\u0131yorsun, ayn\u0131 IP\u2019ler dakikalarca <strong>wp-login.php<\/strong> ve <strong>xmlrpc.php<\/strong> kap\u0131s\u0131na vuruyor. Tam o s\u0131rada, ekibin i\u00e7erik\u00e7isinden bir mesaj geliyor: \u201cSite biraz yava\u015flad\u0131 sanki?\u201d O an anl\u0131yorsun, g\u00fcvenlik sadece sald\u0131r\u0131y\u0131 engellemek de\u011fil, performans\u0131 ve i\u00e7 huzuru da korumak. Benim i\u00e7in de \u00f6yle olmu\u015ftu; ilk kez Fail2ban\u2019\u0131n o tatl\u0131 \u201cban\u201d mesaj\u0131n\u0131 g\u00f6rd\u00fc\u011f\u00fcm g\u00fcn, kahvem bir t\u0131k daha lezzetli geldi.<\/p>\n<p>Bug\u00fcn sana, hepimize nefes ald\u0131ran pratik bir <strong>WordPress g\u00fcvenlik sertle\u015ftirme kontrol listesi<\/strong> anlataca\u011f\u0131m. Dosya izinlerinden ba\u015flay\u0131p <strong>Salt Keys<\/strong> ile oturumlar\u0131 sa\u011flamla\u015ft\u0131raca\u011f\u0131z, <strong>XML-RPC<\/strong> kap\u0131s\u0131n\u0131 gerekti\u011fi kadar aralayaca\u011f\u0131z, sonra da sunucu taraf\u0131nda <strong>UFW<\/strong> ve <strong>Fail2ban<\/strong> ile kap\u0131n\u0131n kilidini iki kere kontrol edece\u011fiz. Mesela \u015f\u00f6yle d\u00fc\u015f\u00fcn: Ev kap\u0131n sa\u011flam, anahtar\u0131n tekil, posta kutun gereksiz davetiyelerden ar\u0131nm\u0131\u015f ve apartman giri\u015finde bir kamera var. \u0130\u015fte bu d\u00f6rd\u00fc, WordPress evimizin huzur re\u00e7etesi.<\/p>\n<p>Yaz\u0131 boyunca \u201c\u015funu kapatal\u0131m\u201d deyip ge\u00e7meyece\u011fiz; neden yapt\u0131\u011f\u0131m\u0131z\u0131, neleri etkiledi\u011fini, ne zaman esneklik gerekti\u011fini konu\u015faca\u011f\u0131z. Arada k\u00fc\u00e7\u00fck hikayeler, arada komut \u00f6rnekleri\u2026 \u00c7ok teknik dile bo\u011fmadan, samimi bir yolculuk. Haz\u0131rsan, dizini k\u0131ral\u0131m; \u00f6nce dosya izinlerinden ba\u015flayal\u0131m.<\/p>\n<h2 id=\"section-2\"><span id=\"Dosya_Izinleri_Neden_Bu_Kadar_Onemli_Kucuk_Bir_Rakam_Buyuk_Bir_Huzur\">Dosya \u0130zinleri Neden Bu Kadar \u00d6nemli? K\u00fc\u00e7\u00fck Bir Rakam, B\u00fcy\u00fck Bir Huzur<\/span><\/h2>\n<h3><span id=\"Gorunmeyeni_Duzeltmek_777_Gibi_Cazibeli_Yanlislar\">G\u00f6r\u00fcnmeyeni D\u00fczeltmek: \u201c777\u201d Gibi Cazibeli Yanl\u0131\u015flar<\/span><\/h3>\n<p>Bir projemde, \u201cdosya y\u00fcklenmiyor\u201d pani\u011fiyle kar\u015f\u0131la\u015f\u0131p birinin \u201cge\u00e7ici olarak 777 verelim\u201d dedi\u011fini duymu\u015ftum. O an, h\u0131zla \u00e7\u00f6z\u00fclm\u00fc\u015f gibi g\u00f6r\u00fcnen sorun asl\u0131nda davetiye \u00e7\u0131kar\u0131yordu. \u00c7\u00fcnk\u00fc 777 demek, herkesin her \u015feyi yapabilmesi demek. \u0130yi niyetle a\u00e7\u0131lan bir kap\u0131, istemeden s\u00fcrekli a\u00e7\u0131k kalabiliyor. Sonra da ufak bir tema dosyas\u0131 \u00fczerinden \u015f\u00fcpheli bir ekleme, ard\u0131 gelmeyen uykusuz bir geceye d\u00f6n\u00fc\u015f\u00fcyor.<\/p>\n<p>WordPress\u2019te dosya izinlerini \u015f\u00f6yle d\u00fc\u015f\u00fcnmek iyi geliyor: Sahibi g\u00fcvende, grup gerekti\u011fi kadar, di\u011ferleri ise sadece bakabilsin. Yani klas\u00f6rler genelde <strong>755<\/strong>, dosyalar <strong>644<\/strong> olmal\u0131. <strong>wp-config.php<\/strong> gibi hassas dosyalar ise daha s\u0131k\u0131; genellikle <strong>600<\/strong> ya da <strong>640<\/strong> i\u015fini g\u00f6r\u00fcr. Bunlar ezber de\u011fil, bir t\u00fcr iyi ya\u015fam al\u0131\u015fkanl\u0131\u011f\u0131.<\/p>\n<h3><span id=\"Adim_Adim_Duzeltme_Kirmadan_Dokmeyelim\">Ad\u0131m Ad\u0131m D\u00fczeltme: K\u0131rmadan, D\u00f6kmeyelim<\/span><\/h3>\n<p>\u00d6nce kullan\u0131c\u0131 ve grup sahipli\u011fini do\u011fru ki\u015fiye verelim. \u00c7al\u0131\u015ft\u0131\u011f\u0131n da\u011f\u0131t\u0131ma g\u00f6re web sunucusu kullan\u0131c\u0131s\u0131 <strong>www-data<\/strong>, <strong>nginx<\/strong> ya da <strong>apache<\/strong> olabilir. K\u00f6k dizinde (\u00f6rn. <em>\/var\/www\/site<\/em>) \u015fu komut i\u015fi toparlar:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">sudo chown -R www-data:www-data \/var\/www\/site\n<\/code><\/pre>\n<p>Sonra klas\u00f6r ve dosya izinlerini d\u00fczenleyelim. \u015eu ikili, kar\u0131\u015f\u0131kl\u0131\u011f\u0131 tatl\u0131 bir \u015fekilde toplar:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">find \/var\/www\/site -type d -exec chmod 755 {} ;\nfind \/var\/www\/site -type f -exec chmod 644 {} ;\n<\/code><\/pre>\n<p>Ve <strong>wp-config.php<\/strong> i\u00e7in \u00f6zel bir dokunu\u015f:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">chmod 600 \/var\/www\/site\/wp-config.php\n<\/code><\/pre>\n<p>\u201cPeki ya g\u00fcncelleme yaparken izin hatas\u0131 al\u0131rsam?\u201d dersen, \u00f6nce <strong>owner<\/strong> ve <strong>group<\/strong> meselelerini netle\u015ftir. Genelde en b\u00fcy\u00fck kar\u0131\u015f\u0131kl\u0131k burada oluyor. Bir de \u015funu unutma: Dosya d\u00fczenlemeyi WordPress panelinden kapatmak, k\u0131r\u0131lgan bir kap\u0131y\u0131 daha sa\u011flamla\u015ft\u0131r\u0131r. <strong>wp-config.php<\/strong>\u2019ye \u015fu sat\u0131r\u0131 eklemek yeterli:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">define('DISALLOW_FILE_EDIT', true);\n<\/code><\/pre>\n<p>Bu ayar geli\u015ftiriciye \u201cde\u011fi\u015fiklikleri versiyon kontrol\u00fcnde yapal\u0131m\u201d der, k\u00f6t\u00fc niyetli birine de kontrol panelinden do\u011frudan dosya kar\u0131\u015ft\u0131rma \u015fans\u0131 vermez. Hem g\u00fcvenlik, hem d\u00fczen duygusu.<\/p>\n<h2 id=\"section-3\"><span id=\"Salt_Keys_ve_wp-config_Oturumlari_Taze_Tut_Anahtari_Tekillestir\">Salt Keys ve wp-config: Oturumlar\u0131 Taze Tut, Anahtar\u0131 Tekille\u015ftir<\/span><\/h2>\n<h3><span id=\"Salt_Keys_Nedir_Neden_Umursayalim\">Salt Keys Nedir, Neden Umursayal\u0131m?<\/span><\/h3>\n<p>Salt Keys, WordPress\u2019in \u00e7erezi ve oturumlar\u0131n\u0131 \u015fifrelerken kulland\u0131\u011f\u0131 g\u00fc\u00e7l\u00fc anahtarlar. Mesela bir sitenin admin bilgisi herhangi bir \u015fekilde s\u0131zsa bile, sa\u011flam Salt anahtarlar\u0131 sald\u0131rgan\u0131n i\u015fini epey zorla\u015ft\u0131r\u0131r. Bir proje devrald\u0131\u011f\u0131mda ilk bakt\u0131\u011f\u0131m \u015feylerden biri bu dosyan\u0131n taze olup olmad\u0131\u011f\u0131d\u0131r. Bazen y\u0131llard\u0131r el de\u011fmemi\u015f, bazen de \u00fcretim ortam\u0131na ta\u015f\u0131n\u0131rken rastgele bir de\u011fere b\u0131rak\u0131lm\u0131\u015f olur.<\/p>\n<p>Yenilemek basit. WordPress\u2019in resmi <a href=\"https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/\" rel=\"nofollow noopener\" target=\"_blank\">salt anahtarlar\u0131 \u00fcreticisi<\/a> bir t\u0131kla yeni anahtarlar verir. \u00d6ncesinde bir yedek al, sonra <strong>wp-config.php<\/strong> i\u00e7indeki mevcut SALT ve KEY sat\u0131rlar\u0131n\u0131 yeni \u00fcretilenlerle de\u011fi\u015ftir. Kaydedince mevcut oturumlar d\u00fc\u015fer; bu iyi bir \u015fey. \u00c7\u00fcnk\u00fc herkes yeniden giri\u015f yapar ve art\u0131k yeni anahtarlarla korunur.<\/p>\n<h3><span id=\"wp-configte_Kucuk_Ama_Etkili_Dokunuslar\">wp-config\u2019te K\u00fc\u00e7\u00fck Ama Etkili Dokunu\u015flar<\/span><\/h3>\n<p>Salt Keys\u2019i tazeledikten sonra, birka\u00e7 k\u00fc\u00e7\u00fck ayar daha g\u00fcvenlik duvar\u0131n\u0131 \u00f6rer. Mesela y\u00f6netim panelinde SSL\u2019i zorlamak:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">define('FORCE_SSL_ADMIN', true);\n<\/code><\/pre>\n<p>Bir de dosya d\u00fczenlemeyi zaten kapatm\u0131\u015ft\u0131k. Dilersen eklenti ve tema kurulumlar\u0131n\u0131 da kontrol alt\u0131nda tutabilirsin. Burada sihir, panodan kontrol edilen k\u0131r\u0131lgan noktalar\u0131 d\u0131\u015far\u0131dan d\u00fczenlenen, takip edilebilir bir ak\u0131\u015fa \u00e7evirmek. Kendi deneyimimde, bu yakla\u015f\u0131m g\u00fcncellemeleri daha g\u00fcvenli k\u0131ld\u0131\u011f\u0131 gibi, ekip i\u00e7inde kim neyi ne zaman de\u011fi\u015ftirdi sorusunu da netle\u015ftiriyor.<\/p>\n<p>Son bir ipucu: <strong>wp-config.php<\/strong> dosyas\u0131n\u0131 web k\u00f6k\u00fcn\u00fcn bir \u00fcst\u00fcne ta\u015f\u0131may\u0131 d\u00fc\u015f\u00fcnebilirsin. WordPress bunu destekliyor ve direkt web \u00fczerinden eri\u015filemeyen bir yerde tutmak i\u00e7ini rahatlatabilir. Yine de bu de\u011fi\u015fikli\u011fi yapt\u0131ktan sonra g\u00fcncellemelerde g\u00f6z\u00fcn\u00fc a\u00e7\u0131k tut; al\u0131\u015fkanl\u0131klar de\u011fi\u015fince ufak p\u00fcr\u00fczler \u00e7\u0131kabilir.<\/p>\n<h2 id=\"section-4\"><span id=\"XML-RPC_Tamamen_Kapatmali_miyiz_Sadece_Daraltmali_miyiz\">XML-RPC: Tamamen Kapatmal\u0131 m\u0131y\u0131z, Sadece Daraltmal\u0131 m\u0131y\u0131z?<\/span><\/h2>\n<h3><span id=\"Kapiyi_Taniyalim_XML-RPC_Ne_Ise_Yarar\">Kap\u0131y\u0131 Tan\u0131yal\u0131m: XML-RPC Ne \u0130\u015fe Yarar?<\/span><\/h3>\n<p>XML-RPC, eski ama baz\u0131 ara\u00e7lar\u0131n h\u00e2l\u00e2 kulland\u0131\u011f\u0131 bir kanal. Mobil uygulama ile giri\u015f yapmak, baz\u0131 entegrasyonlar ya da pingback gibi \u00f6zellikler buradan akar. Sorun \u015fu: Sald\u0131rganlar da bu kap\u0131y\u0131 sever. \u00c7\u00fcnk\u00fc tek bir istekle birden fazla parola denemesine yol a\u00e7abilen y\u00f6ntemler var; bu da kaba kuvvet denemelerini kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Mesela \u015f\u00f6yle d\u00fc\u015f\u00fcn: Herkesin ge\u00e7ti\u011fi bir apartman giri\u015fin var. Kap\u0131y\u0131 komple kaynakla kapat\u0131rsan, kuryen de giremez. Ama ak\u0131ll\u0131 bir interkom koyarsan, tan\u0131d\u0131\u011fa a\u00e7\u0131l\u0131r, tan\u0131mayana direnirsin. XML-RPC\u2019de de ayn\u0131s\u0131. E\u011fer hi\u00e7 kullanm\u0131yorsan, kapat gitsin. Kullan\u0131yorsan, s\u0131k\u0131 bir denetim ve <strong>rate limit<\/strong> ile koru.<\/p>\n<h3><span id=\"Nasil_Daraltir_ya_da_Kapatiriz\">Nas\u0131l Daralt\u0131r ya da Kapat\u0131r\u0131z?<\/span><\/h3>\n<p>Apache i\u00e7in basit bir kapama \u00f6rne\u011fi, k\u00f6k dizindeki .htaccess dosyas\u0131na eklenebilir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">&lt;Files xmlrpc.php&gt;\n    Order allow,deny\n    Deny from all\n&lt;\/Files&gt;\n<\/code><\/pre>\n<p>Nginx taraf\u0131nda lokasyon seviyesinde bir engelleme yap\u0131labilir:<\/p>\n<pre class=\"language-nginx line-numbers\"><code class=\"language-nginx\">location = \/xmlrpc.php {\n    deny all;\n}\n<\/code><\/pre>\n<p>\u201cAma Jetpack veya mobil uygulama kullan\u0131yorum\u201d diyenler i\u00e7in durum farkl\u0131. O zaman tamamen kapatmak yerine belli IP\u2019lere izin verip, kalan\u0131n\u0131 engellemek daha mant\u0131kl\u0131 olur. Ayr\u0131ca <strong>Fail2ban<\/strong> ile kombine bir koruma, hem denemeleri s\u0131n\u0131rlar hem de agresif IP\u2019leri k\u0131sa s\u00fcrede d\u0131\u015far\u0131da b\u0131rak\u0131r. Bu konuda pratik bir yolculuk i\u00e7in \u015fu rehber ho\u015funa gidebilir: <a href=\"https:\/\/www.dchost.com\/blog\/nginx-rate-limiting-ve-fail2ban-ile-wp%e2%80%91login-php-ve-xml%e2%80%91rpc-brute%e2%80%91force-saldirilarini-nasil-saksiya-alirsin\/\">Nginx rate limiting ve Fail2ban ile wp-login.php ve XML-RPC sald\u0131r\u0131lar\u0131n\u0131 saks\u0131ya alma<\/a>.<\/p>\n<p>Bir not daha: Pingback\u2019leri kapatmak \u00e7o\u011fu blog i\u00e7in sorun yaratmaz ama sald\u0131r\u0131 y\u00fczeyini k\u00fc\u00e7\u00fclt\u00fcr. Yaz\u0131 ayarlar\u0131nda yorum ve ping se\u00e7eneklerini g\u00f6zden ge\u00e7irmek, hem moderasyonu hem de g\u00fcvenli\u011fi rahatlat\u0131r.<\/p>\n<h2 id=\"section-5\"><span id=\"UFW_ve_Fail2ban_Sehir_Kapilarini_Devriye_Saatlerini_Guzelce_Ayarlayalim\">UFW ve Fail2ban: \u015eehir Kap\u0131lar\u0131n\u0131, Devriye Saatlerini G\u00fczelce Ayarlayal\u0131m<\/span><\/h2>\n<h3><span id=\"UFW_ile_Trafigi_Sakinlestirmek\">UFW ile Trafi\u011fi Sakinle\u015ftirmek<\/span><\/h3>\n<p>UFW\u2019yi, \u015fehir giri\u015flerindeki bariyerler gibi d\u00fc\u015f\u00fcn. Varsay\u0131lan olarak \u201ci\u00e7eri geli\u015flere kapal\u0131, d\u0131\u015far\u0131 gidi\u015flere a\u00e7\u0131k\u201d yakla\u015f\u0131m\u0131 i\u015fimizi g\u00f6r\u00fcr. Sonra sadece ihtiyac\u0131n olan kap\u0131lar\u0131 a\u00e7ars\u0131n. Ben genelde \u015fu ak\u0131\u015fla ilerliyorum:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">sudo ufw default deny incoming\nsudo ufw default allow outgoing\n\n# Temel servisler\nsudo ufw allow 80\/tcp\nsudo ufw allow 443\/tcp\n\n# SSH i\u00e7in ya sabit bir port ya da s\u0131n\u0131rlama\nsudo ufw limit 22\/tcp\n\nsudo ufw enable\nsudo ufw status verbose\n<\/code><\/pre>\n<p>\u201climit\u201d ifadesi, k\u0131sa s\u00fcrede \u00e7ok ba\u011flant\u0131 denemesi olursa h\u0131z keser. SSH i\u00e7in minik bir nefes. E\u011fer y\u00f6netimi belirli IP\u2019lerden yap\u0131yorsan, 22\u2019yi herkese a\u00e7\u0131k b\u0131rakmak yerine sadece kendi IP aral\u0131\u011f\u0131na a\u00e7. Unutma, netlik iyidir ama a\u015f\u0131r\u0131 kat\u0131l\u0131k g\u00fcnl\u00fck i\u015fini de zorla\u015ft\u0131rabilir. Denge kural\u0131 burada da ge\u00e7erli.<\/p>\n<h3><span id=\"Fail2ban_ile_Kotu_Niyete_Hizli_Refleks\">Fail2ban ile K\u00f6t\u00fc Niyete H\u0131zl\u0131 Refleks<\/span><\/h3>\n<p>Fail2ban, loglara bakar ve \u201cBu hareket k\u00f6t\u00fcye i\u015faret\u201d dedi\u011fi anda IP\u2019yi banlar. En \u00e7ok sevdi\u011fim y\u00f6n\u00fc, bariz sald\u0131r\u0131lar\u0131 dakikalar i\u00e7inde etkisiz hale getirmesi. Kurulum sonras\u0131 iki dosya akl\u0131mda: <em>\/etc\/fail2ban\/jail.local<\/em> ve filtre tan\u0131mlar\u0131. Basit bir SSH korumas\u0131 i\u00e7in \u015funa benzer bir yap\u0131 i\u015f g\u00f6r\u00fcr:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">[sshd]\nenabled = true\nport = ssh\nfilter = sshd\nlogpath = \/var\/log\/auth.log\nmaxretry = 5\nfindtime = 10m\nbantime = 1h\n<\/code><\/pre>\n<p>WordPress i\u00e7inse web sunucunun loglar\u0131na bakar\u0131z. Nginx \u00f6rne\u011fi verelim; <em>access.log<\/em> ve <em>error.log<\/em> i\u00e7indeki <strong>wp-login.php<\/strong> ve <strong>xmlrpc.php<\/strong> ba\u015far\u0131s\u0131z denemeleri yakalayacak bir filtre ve <em>jail<\/em> kural\u0131 tatl\u0131 i\u015fler. Her yap\u0131n\u0131n log format\u0131 farkl\u0131 olabilir, o y\u00fczden \u00fcretime ge\u00e7meden k\u00fc\u00e7\u00fck bir test turu yap. Ayr\u0131nt\u0131lar ve farkl\u0131 senaryolar i\u00e7in <a href=\"https:\/\/www.fail2ban.org\/wiki\/index.php\/Main_Page\" rel=\"nofollow noopener\" target=\"_blank\">Fail2ban proje belgeleri<\/a> iyi bir pusula.<\/p>\n<p>Burada k\u00fc\u00e7\u00fck bir ki\u015fisel not: \u0130lk kez agresif denemeleri banlad\u0131\u011f\u0131nda, CPU grafi\u011finin nas\u0131l sakinle\u015fti\u011fine \u015fahit olmak hakikaten iyi hissettiriyor. Performans g\u00fcvenli\u011fin kuzeni; birini iyile\u015ftirdi\u011finde di\u011feri de rahatl\u0131yor.<\/p>\n<h2 id=\"section-6\"><span id=\"Gunluk_Bakim_Kucuk_Ritueller_ve_Izleme_Guvenlik_Bir_Seferlik_Degil\">G\u00fcnl\u00fck Bak\u0131m, K\u00fc\u00e7\u00fck Rit\u00fceller ve \u0130zleme: G\u00fcvenlik Bir Seferlik De\u011fil<\/span><\/h2>\n<h3><span id=\"Guncellemeler_Az_Eklenti_ve_Temiz_Kullanicilar\">G\u00fcncellemeler, Az Eklenti ve Temiz Kullan\u0131c\u0131lar<\/span><\/h3>\n<p>G\u00fcvenlik sadece duvar \u00f6rmek de\u011fil; evi d\u00fczenli havaland\u0131rmak. \u00c7ekirde\u011fi, temalar\u0131 ve eklentileri makul aral\u0131klarla g\u00fcncelle. \u201cG\u00fcncelleyeyim de k\u0131r\u0131l\u0131rsa ne olacak\u201d endi\u015fesini de anl\u0131yorum. Bunun i\u00e7in k\u00fc\u00e7\u00fck bir \u00f6nlem i\u015f g\u00f6r\u00fcyor: \u00d6nemli g\u00fcncellemelerden \u00f6nce dosya ve veritaban\u0131 yede\u011fi al, hatta m\u00fcmk\u00fcnse bir staging ortam\u0131nda dene. \u00c7at\u0131r \u00e7utur karma\u015fadan \u00e7ok \u015fey kurtar\u0131yor.<\/p>\n<p>Eklenti say\u0131s\u0131n\u0131 makul tutmak, sald\u0131r\u0131 y\u00fczeyini k\u00fc\u00e7\u00fclt\u00fcr. Kullanmad\u0131\u011f\u0131n eklentiyi devre d\u0131\u015f\u0131 b\u0131rakmak yetmez; kald\u0131r. Kullan\u0131c\u0131 taraf\u0131nda da iki fakt\u00f6rl\u00fc do\u011frulama sunan eklentiler i\u015fini kolayla\u015ft\u0131r\u0131r. \u015eifreler yerine <strong>U2F\/FIDO2<\/strong> gibi fiziksel anahtarlar da g\u00f6n\u00fcl rahatl\u0131\u011f\u0131 sa\u011flar; bu yolculu\u011fa merak\u0131n varsa, sunucu giri\u015fleri a\u00e7\u0131s\u0131ndan benzer bir yakla\u015f\u0131m\u0131 <a href=\"https:\/\/www.dchost.com\/blog\/vpste-ssh-guvenligi-nasil-saglamlasir-fido2-anahtarlari-ssh-ca-ve-rotasyonun-sicacik-yolculugu\/\">VPS\u2019te SSH g\u00fcvenli\u011fi ve FIDO2 anahtarlar\u0131<\/a> yaz\u0131s\u0131nda uzun uzun konu\u015fmu\u015ftuk.<\/p>\n<h3><span id=\"Loglari_Dinlemek_ve_Kucuk_Alarmlar_Kurmak\">Loglar\u0131 Dinlemek ve K\u00fc\u00e7\u00fck Alarmlar Kurmak<\/span><\/h3>\n<p>Loglar\u0131 okumak, evin nabz\u0131n\u0131 tutmak gibi. Nginx\/Apache, PHP-FPM ve WordPress loglar\u0131 bir araya gelince resim netle\u015fir. Bariz olmayan ama tekrarlayan hatalar, s\u0131k s\u0131k 403\/404 veren noktalar, yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir eklentinin ipu\u00e7lar\u0131\u2026 Hepsi orada. K\u00fc\u00e7\u00fck bir alarm, gece yar\u0131s\u0131 telefonunu \u00e7ald\u0131rmaz ama sabah ilk kahveden \u00f6nce bak\u0131p rahatlaman\u0131 sa\u011flar.<\/p>\n<p>\u00dczerine bir de basit bir uptime izleme ve cevap s\u00fcresi \u00f6l\u00e7\u00fcm\u00fc ekledi\u011finde, performans d\u00fc\u015f\u00fc\u015flerini g\u00fcvenlikle ili\u015fkilendirmen kolayla\u015f\u0131r. G\u00fcvenlik zay\u0131flay\u0131nca performans da s\u0131zlan\u0131r; ikisini birlikte izlemek g\u00fczel bir al\u0131\u015fkanl\u0131k. WordPress\u2019in resmi g\u00f6z\u00fcnden \u00f6nerileri g\u00f6zden ge\u00e7irmek istersen, <a href=\"https:\/\/wordpress.org\/support\/article\/hardening-wordpress\/\" rel=\"nofollow noopener\" target=\"_blank\">WordPress\u2019in resmi sertle\u015ftirme rehberi<\/a> faydal\u0131 bir hat\u0131rlatma listesi sunar.<\/p>\n<h2 id=\"section-7\"><span id=\"Kapanis_Kapilari_Saglamlastir_Rutinini_Kur_Rahat_Uyu\">Kapan\u0131\u015f: Kap\u0131lar\u0131 Sa\u011flamla\u015ft\u0131r, Rutinini Kur, Rahat Uyu<\/span><\/h2>\n<p>\u015e\u00f6yle ba\u011flayal\u0131m: <strong>Dosya izinleri<\/strong> d\u00fczg\u00fcn olunca, k\u00f6t\u00fc niyetli bir dokunu\u015fun tutunaca\u011f\u0131 dal azal\u0131yor. <strong>Salt Keys<\/strong> taze ve d\u00fczenliyse, s\u0131zm\u0131\u015f bir oturum bile h\u0131zla ge\u00e7ersizle\u015fiyor. <strong>XML-RPC<\/strong>\u2019yi kapatmak ya da daraltmak, gereksiz kap\u0131lar\u0131 kapat\u0131p gerekli olanlara interkom takmak gibi; se\u00e7ici bir huzur. <strong>UFW<\/strong> ve <strong>Fail2ban<\/strong> ise d\u0131\u015far\u0131daki g\u00fcr\u00fclt\u00fcy\u00fc i\u00e7eri ta\u015f\u0131madan s\u00fckuneti koruyor.<\/p>\n<p>Pratik \u00f6nerim \u015fu: Bug\u00fcn bir saatini ay\u0131r, dosya izinlerini ve <strong>wp-config.php<\/strong> ayarlar\u0131n\u0131 g\u00f6zden ge\u00e7ir. Sonra XML-RPC durumunu de\u011ferlendirmeye al; kullanm\u0131yorsan kapat, kullan\u0131yorsan s\u0131n\u0131rland\u0131r. Akabinde UFW\u2019yi devreye al, Fail2ban ile en az\u0131ndan SSH ve wp-login i\u00e7in temel kurallar\u0131 etkinle\u015ftir. Son olarak k\u00fc\u00e7\u00fck bir log al\u0131\u015fkanl\u0131\u011f\u0131 edin: Her g\u00fcn birka\u00e7 dakikal\u0131k bir kontrol, geceleri daha rahat uyutuyor.<\/p>\n<p>Umar\u0131m bu k\u00fc\u00e7\u00fck yolculuk \u00e7antana yeni birka\u00e7 anahtar atm\u0131\u015ft\u0131r. Tak\u0131ld\u0131\u011f\u0131n bir yer olursa, notlar\u0131n\u0131 topla; birlikte bakar\u0131z. Bir dahaki yaz\u0131da belki de performansla g\u00fcvenli\u011fin o tatl\u0131 kesi\u015fiminde bulu\u015furuz. \u015eimdilik kap\u0131 kilitleri yerinde, anahtarlar cebinde kals\u0131n.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Ofiste Bir Alarm, wp-login ve Kahve: G\u00fcvenli\u011fi Neden \u015eimdi Konu\u015fmal\u0131y\u0131z?2 Dosya \u0130zinleri Neden Bu Kadar \u00d6nemli? K\u00fc\u00e7\u00fck Bir Rakam, B\u00fcy\u00fck Bir Huzur2.1 G\u00f6r\u00fcnmeyeni D\u00fczeltmek: \u201c777\u201d Gibi Cazibeli Yanl\u0131\u015flar2.2 Ad\u0131m Ad\u0131m D\u00fczeltme: K\u0131rmadan, D\u00f6kmeyelim3 Salt Keys ve wp-config: Oturumlar\u0131 Taze Tut, Anahtar\u0131 Tekille\u015ftir3.1 Salt Keys Nedir, Neden Umursayal\u0131m?3.2 wp-config\u2019te K\u00fc\u00e7\u00fck Ama Etkili Dokunu\u015flar4 XML-RPC: Tamamen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1626,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-1625","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=1625"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1625\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/1626"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=1625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=1625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=1625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}