{"id":33199,"date":"2025-10-31T01:40:57","date_gmt":"2025-10-30T22:40:57","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=33199"},"modified":"2025-10-31T01:40:57","modified_gmt":"2025-10-30T22:40:57","slug":"apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/","title":{"rendered":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web uygulamalar\u0131 ve sunucular, hassas verileri bar\u0131nd\u0131rabilir ve kritik hizmetler sunabilir. Bu nedenle, bu kaynaklara eri\u015fimi k\u0131s\u0131tlamak ve yetkisiz eri\u015fimi engellemek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Apache HTTP Sunucusu, d\u00fcnya genelinde en yayg\u0131n kullan\u0131lan web sunucular\u0131ndan biridir ve g\u00fc\u00e7l\u00fc kimlik do\u011frulama mekanizmalar\u0131 sunar. Bu makalede, Ubuntu 18.04 i\u015fletim sistemi \u00fczerinde \u00e7al\u0131\u015fan bir Apache sunucusunda dizin veya belirli bir web i\u00e7eri\u011fi i\u00e7in \u015fifre kimlik do\u011frulaman\u0131n (Basic Authentication) nas\u0131l kurulaca\u011f\u0131n\u0131 ayr\u0131nt\u0131l\u0131 olarak ele alaca\u011f\u0131z. Bu y\u00f6ntem, genellikle k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli projeler, geli\u015ftirme ortamlar\u0131 veya belirli bir i\u00e7eri\u011fe sadece yetkili ki\u015filerin eri\u015fmesini sa\u011flamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Apache&#8217;nin temel kimlik do\u011frulama \u00f6zelli\u011fi, kullan\u0131c\u0131lardan bir kullan\u0131c\u0131 ad\u0131 ve \u015fifre girmesini isteyerek web i\u00e7eri\u011fini koruman\u0131n basit ama etkili bir yoludur. Bu \u015fifreler, sunucu taraf\u0131nda \u00f6zel bir dosyada (genellikle <code>.htpasswd<\/code>) saklan\u0131r ve her eri\u015fim denemesinde bu dosyadaki bilgilerle kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131r. Bu kurulum, web sitenizin y\u00f6netim panelleri, \u00f6zel belgeler veya test ortamlar\u0131 gibi belirli b\u00f6l\u00fcmlerini g\u00fcvence alt\u0131na almak i\u00e7in idealdir. Ubuntu 18.04, kararl\u0131 ve yayg\u0131n bir sunucu i\u015fletim sistemi oldu\u011fu i\u00e7in, bu ad\u0131mlar bir\u00e7ok Apache kullan\u0131c\u0131s\u0131 i\u00e7in ge\u00e7erli olacakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu makaledeki ad\u0131mlar\u0131 uygulayabilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>Ubuntu 18.04 Sunucusu:<\/strong> SSH eri\u015fimi olan bir Ubuntu 18.04 sunucusu.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> <code>sudo<\/code> komutunu kullanabilen, root olmayan bir kullan\u0131c\u0131 veya do\u011frudan <code>root<\/code> kullan\u0131c\u0131s\u0131 eri\u015fimi. G\u00fcvenlik nedenleriyle <code>sudo<\/code> kullan\u0131c\u0131s\u0131 tercih edilir.<br \/>\n*   <strong>Apache Kurulumu:<\/strong> Sunucunuzda Apache web sunucusu kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmal\u0131d\u0131r. Kurulum yapmad\u0131ysan\u0131z, a\u015fa\u011f\u0131daki komutlarla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\n    sudo apt install apache2\n    sudo systemctl enable apache2\n    sudo systemctl start apache2<\/code><\/pre>\n<p>*   <strong><code>apache2-utils<\/code> Paketi:<\/strong> <code>.htpasswd<\/code> dosyas\u0131n\u0131 olu\u015fturmak ve y\u00f6netmek i\u00e7in gerekli olan <code>htpasswd<\/code> arac\u0131n\u0131 i\u00e7eren <code>apache2-utils<\/code> paketinin kurulu olmas\u0131 gerekmektedir. E\u011fer kurulu de\u011filse:<\/p>\n<pre><code class=\"language-bash\">sudo apt install apache2-utils<\/code><\/pre>\n<p>Bu \u00f6n gereksinimler sa\u011fland\u0131\u011f\u0131nda, Apache \u00fczerindeki \u015fifre kimlik do\u011frulama kurulumuna ba\u015flayabiliriz.<\/p>\n<h3>Apache Temel Kimlik Do\u011frulama Mekanizmas\u0131<\/h3>\n<p>Apache&#8217;nin temel kimlik do\u011frulama (Basic Authentication) mekanizmas\u0131, HTTP protokol\u00fcn\u00fcn bir par\u00e7as\u0131d\u0131r ve web sunucular\u0131n\u0131n istemcilerden kimlik bilgilerini talep etmesini sa\u011flar. S\u00fcre\u00e7 \u015fu ad\u0131mlarla i\u015fler:<\/p>\n<p>1.  Bir kullan\u0131c\u0131 korumal\u0131 bir kayna\u011fa eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, Apache sunucusu bir HTTP 401 Unauthorized (Yetkisiz) yan\u0131t\u0131 g\u00f6nderir ve bu yan\u0131ta bir <code>WWW-Authenticate<\/code> ba\u015fl\u0131\u011f\u0131 ekler. Bu ba\u015fl\u0131k, istemciye kimlik do\u011frulama y\u00f6ntemini (Basic) ve bir kimlik do\u011frulama alan\u0131n\u0131 (AuthName) bildirir.<br \/>\n2.  Web taray\u0131c\u0131s\u0131 bu yan\u0131t\u0131 ald\u0131\u011f\u0131nda, kullan\u0131c\u0131ya bir kullan\u0131c\u0131 ad\u0131 ve \u015fifre girmesini isteyen bir diyalog kutusu g\u00f6sterir.<br \/>\n3.  Kullan\u0131c\u0131 kimlik bilgilerini girdi\u011finde, taray\u0131c\u0131 bu bilgileri <code>kullan\u0131c\u0131ad\u0131:\u015fifre<\/code> format\u0131nda birle\u015ftirir, Base64 ile kodlar ve ard\u0131ndan bir <code>Authorization<\/code> ba\u015fl\u0131\u011f\u0131 i\u00e7inde sunucuya geri g\u00f6nderir.<br \/>\n4.  Apache sunucusu, gelen <code>Authorization<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 ayr\u0131\u015ft\u0131r\u0131r, Base64 kodunu \u00e7\u00f6zer ve elde edilen kullan\u0131c\u0131 ad\u0131 ile \u015fifreyi, yap\u0131land\u0131r\u0131lm\u0131\u015f <code>.htpasswd<\/code> dosyas\u0131ndaki bilgilerle kar\u015f\u0131la\u015ft\u0131r\u0131r.<br \/>\n5.  E\u011fer kimlik bilgileri e\u015fle\u015firse, sunucu kayna\u011fa eri\u015fime izin verir ve HTTP 200 OK yan\u0131t\u0131 g\u00f6nderir. Aksi takdirde, tekrar bir HTTP 401 Unauthorized yan\u0131t\u0131 g\u00f6nderir ve kullan\u0131c\u0131dan tekrar kimlik bilgilerini ister.<\/p>\n<p><strong>G\u00fcvenlik Notu:<\/strong> Temel kimlik do\u011frulama, kullan\u0131c\u0131 ad\u0131 ve \u015fifreyi sadece Base64 ile kodlar, \u015fifrelemez. Bu, bir a\u011f dinleyicisi taraf\u0131ndan kolayca \u00e7\u00f6z\u00fclebilece\u011fi anlam\u0131na gelir. Bu nedenle, temel kimlik do\u011frulama kullan\u0131rken her zaman <strong>SSL\/TLS (HTTPS)<\/strong> kullan\u0131lmas\u0131 \u015fiddetle tavsiye edilir. HTTPS, t\u00fcm ileti\u015fimi \u015fifreleyerek kimlik bilgilerinin ve di\u011fer verilerin a\u011f \u00fczerinde g\u00fcvenli bir \u015fekilde aktar\u0131lmas\u0131n\u0131 sa\u011flar. Bu makaledeki ad\u0131mlar\u0131 uygularken, korunan i\u00e7eri\u011fin HTTPS \u00fczerinden sunuldu\u011fundan emin olman\u0131z g\u00fcvenli\u011finiz i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>.htpasswd Dosyas\u0131 Olu\u015fturma<\/h3>\n<p><code>.htpasswd<\/code> dosyas\u0131, kullan\u0131c\u0131 adlar\u0131n\u0131 ve \u015fifrelerin \u015fifrelenmi\u015f (hashlenmi\u015f) hallerini i\u00e7eren metin tabanl\u0131 bir dosyad\u0131r. Apache, bu dosyay\u0131 kullanarak kimlik do\u011frulama denemelerini do\u011frular. Bu dosyay\u0131 olu\u015fturmak ve y\u00f6netmek i\u00e7in <code>htpasswd<\/code> komutunu kullanaca\u011f\u0131z.<\/p>\n<p>G\u00fcvenlik nedeniyle, <code>.htpasswd<\/code> dosyas\u0131n\u0131 web k\u00f6k dizininin (\u00f6rne\u011fin <code>\/var\/www\/html<\/code>) d\u0131\u015f\u0131nda bir yere yerle\u015ftirmek en iyi uygulamad\u0131r. B\u00f6ylece taray\u0131c\u0131lar taraf\u0131ndan do\u011frudan eri\u015filemez. <code>\/etc\/apache2\/.htpasswd<\/code> gibi bir konum idealdir.<\/p>\n<h4>Kullan\u0131c\u0131 Olu\u015fturma<\/h4>\n<p>\u0130lk kullan\u0131c\u0131y\u0131 olu\u015ftururken <code>-c<\/code> (create) bayra\u011f\u0131n\u0131 kullan\u0131r\u0131z. Bu bayrak, belirtilen yolda yeni bir <code>.htpasswd<\/code> dosyas\u0131 olu\u015fturur. E\u011fer dosya zaten varsa, \u00fczerine yazar ve mevcut kullan\u0131c\u0131lar\u0131 siler. Bu y\u00fczden dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p>\u00d6rnek olarak <code>admin<\/code> ad\u0131nda bir kullan\u0131c\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo htpasswd -c \/etc\/apache2\/.htpasswd admin<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, sizden <code>admin<\/code> kullan\u0131c\u0131s\u0131 i\u00e7in bir \u015fifre girmenizi ve tekrar do\u011frulaman\u0131z\u0131 isteyecektir:<\/p>\n<pre><code class=\"language-\">New password:\nRe-type new password:\nAdding password for user admin<\/code><\/pre>\n<p>Bu i\u015flemden sonra <code>\/etc\/apache2\/.htpasswd<\/code> dosyas\u0131n\u0131n i\u00e7eri\u011fini kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo cat \/etc\/apache2\/.htpasswd<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, <code>admin<\/code> kullan\u0131c\u0131 ad\u0131n\u0131 ve \u015fifresinin hashlenmi\u015f halini i\u00e7erecektir:<\/p>\n<pre><code class=\"language-\">admin:$apr1$.......<\/code><\/pre>\n<h4>Mevcut Kullan\u0131c\u0131ya \u015eifre Ekleme\/De\u011fi\u015ftirme<\/h4>\n<p>Daha sonra ek kullan\u0131c\u0131lar olu\u015fturmak veya mevcut bir kullan\u0131c\u0131n\u0131n \u015fifresini de\u011fi\u015ftirmek i\u00e7in <code>-c<\/code> bayra\u011f\u0131n\u0131 kullanmay\u0131z. <code>-c<\/code> bayra\u011f\u0131 olmadan <code>htpasswd<\/code> komutu, belirtilen dosyaya yeni bir kullan\u0131c\u0131 ekler veya mevcut bir kullan\u0131c\u0131n\u0131n \u015fifresini g\u00fcnceller.<\/p>\n<p>\u00d6rne\u011fin, <code>user1<\/code> ad\u0131nda yeni bir kullan\u0131c\u0131 ekleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo htpasswd \/etc\/apache2\/.htpasswd user1<\/code><\/pre>\n<p>Yine \u015fifre girmeniz ve do\u011frulaman\u0131z istenecektir. <code>\/etc\/apache2\/.htpasswd<\/code> dosyas\u0131n\u0131n i\u00e7eri\u011fi \u015fimdi iki kullan\u0131c\u0131y\u0131 i\u00e7erecektir:<\/p>\n<pre><code class=\"language-\">admin:$apr1$.......\nuser1:$apr1$.......<\/code><\/pre>\n<p>E\u011fer <code>admin<\/code> kullan\u0131c\u0131s\u0131n\u0131n \u015fifresini de\u011fi\u015ftirmek isterseniz, ayn\u0131 komutu kullanman\u0131z yeterlidir:<\/p>\n<pre><code class=\"language-bash\">sudo htpasswd \/etc\/apache2\/.htpasswd admin<\/code><\/pre>\n<p>Bu, <code>admin<\/code> kullan\u0131c\u0131s\u0131n\u0131n mevcut \u015fifresini g\u00fcncelleyecektir.<\/p>\n<h4>Dosya \u0130zinleri ve Sahipli\u011fi<\/h4>\n<p><code>.htpasswd<\/code> dosyas\u0131n\u0131n do\u011fru izinlere ve sahipli\u011fe sahip olmas\u0131 g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Bu dosya, Apache web sunucusu taraf\u0131ndan okunabilir olmal\u0131, ancak web taray\u0131c\u0131lar\u0131 veya di\u011fer yetkisiz kullan\u0131c\u0131lar taraf\u0131ndan do\u011frudan eri\u015filemez olmal\u0131d\u0131r.<\/p>\n<p>*   <strong>Sahiplik:<\/strong> Apache web sunucusunun \u00e7al\u0131\u015ft\u0131\u011f\u0131 kullan\u0131c\u0131 (genellikle <code>www-data<\/code> Ubuntu&#8217;da) bu dosyay\u0131 okuyabilmelidir.<br \/>\n*   <strong>\u0130zinler:<\/strong> Dosya izinleri, dosyan\u0131n sadece Apache taraf\u0131ndan okunabilmesini ve di\u011fer kullan\u0131c\u0131lar taraf\u0131ndan okunmamas\u0131n\u0131 veya yaz\u0131lmamas\u0131n\u0131 sa\u011flamal\u0131d\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki komutlarla sahipli\u011fi ve izinleri ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown www-data:www-data \/etc\/apache2\/.htpasswd\nsudo chmod 640 \/etc\/apache2\/.htpasswd<\/code><\/pre>\n<p>*   <code>sudo chown www-data:www-data \/etc\/apache2\/.htpasswd<\/code>: Dosyan\u0131n sahibini <code>www-data<\/code> kullan\u0131c\u0131s\u0131 ve grubunu <code>www-data<\/code> olarak ayarlar.<br \/>\n*   <code>sudo chmod 640 \/etc\/apache2\/.htpasswd<\/code>:<br \/>\n    *   <code>6<\/code> (sahip): Okuma ve yazma izni (rw-).<br \/>\n    *   <code>4<\/code> (grup): Sadece okuma izni (r&#8211;).<br \/>\n    *   <code>0<\/code> (di\u011ferleri): Hi\u00e7bir izin (&#8212;).<\/p>\n<p>Bu izinler, Apache&#8217;nin dosyay\u0131 okumas\u0131n\u0131 sa\u011flarken, di\u011fer kullan\u0131c\u0131lar\u0131n veya web taray\u0131c\u0131lar\u0131n\u0131n dosyaya eri\u015fmesini engeller.<\/p>\n<h3>Apache Yap\u0131land\u0131rmas\u0131n\u0131 D\u00fczenleme<\/h3>\n<p><code>.htpasswd<\/code> dosyas\u0131n\u0131 olu\u015fturduktan sonra, Apache&#8217;yi bu dosyay\u0131 kullanarak belirli bir dizini, sanal hostu veya URL konumunu korumak \u00fczere yap\u0131land\u0131rmam\u0131z gerekir. Bu yap\u0131land\u0131rmalar, Apache&#8217;nin ana yap\u0131land\u0131rma dosyalar\u0131nda veya sanal host dosyalar\u0131nda yap\u0131l\u0131r.<\/p>\n<p>Ubuntu 18.04&#8217;te Apache yap\u0131land\u0131rma dosyalar\u0131 genellikle <code>\/etc\/apache2\/<\/code> dizini alt\u0131nda bulunur. Sanal host yap\u0131land\u0131rmalar\u0131 ise <code>\/etc\/apache2\/sites-available\/<\/code> dizinindedir ve <code>sites-enabled<\/code> dizinine sembolik linklerle ba\u011flan\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rneklerde, varsay\u0131lan sanal host yap\u0131land\u0131rma dosyas\u0131 olan <code>\/etc\/apache2\/sites-available\/000-default.conf<\/code> veya SSL kullanan bir site i\u00e7in <code>\/etc\/apache2\/sites-available\/default-ssl.conf<\/code> dosyalar\u0131n\u0131 kullanaca\u011f\u0131z. Kendi sanal host yap\u0131land\u0131rma dosyan\u0131z\u0131 kullanman\u0131z gerekiyorsa, o dosyay\u0131 d\u00fczenlemelisiniz.<\/p>\n<h4>Dizin Kimlik Do\u011frulamas\u0131<\/h4>\n<p>Belirli bir dosya sistemi dizinini korumak i\u00e7in <code><Directory><\/code> y\u00f6nergesini kullan\u0131r\u0131z. \u00d6rne\u011fin, <code>\/var\/www\/html\/private<\/code> dizinini korumak isteyelim. \u00d6nce bu dizini olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/var\/www\/html\/private\nsudo echo \"Bu \u00f6zel bir aland\u0131r.\" | sudo tee \/var\/www\/html\/private\/index.html<\/code><\/pre>\n<p>\u015eimdi Apache yap\u0131land\u0131rma dosyan\u0131z\u0131 (\u00f6rne\u011fin <code>\/etc\/apache2\/sites-available\/000-default.conf<\/code>) bir metin d\u00fczenleyici ile a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n<p><code><VirtualHost *:80><\/code> blo\u011funun i\u00e7ine a\u015fa\u011f\u0131daki <code><Directory><\/code> blo\u011funu ekleyin:<\/p>\n<pre><code class=\"language-apache\"><Directory \/var\/www\/html\/private>\n    AuthType Basic\n    AuthName \"K\u0131s\u0131tl\u0131 Alan - L\u00fctfen Giri\u015f Yap\u0131n\"\n    AuthUserFile \/etc\/apache2\/.htpasswd\n    Require valid-user\n<\/Directory><\/code><\/pre>\n<p>*   <strong><code>AuthType Basic<\/code><\/strong>: Kimlik do\u011frulama tipinin temel (Basic) oldu\u011funu belirtir.<br \/>\n*   <strong><code>AuthName \"K\u0131s\u0131tl\u0131 Alan - L\u00fctfen Giri\u015f Yap\u0131n\"<\/code><\/strong>: Kullan\u0131c\u0131ya taray\u0131c\u0131da g\u00f6sterilecek kimlik do\u011frulama penceresinin ba\u015fl\u0131\u011f\u0131n\u0131 belirler. Bu, kullan\u0131c\u0131ya neden kimlik bilgilerinin istendi\u011fini a\u00e7\u0131klayan bir mesaj olmal\u0131d\u0131r.<br \/>\n*   <strong><code>AuthUserFile \/etc\/apache2\/.htpasswd<\/code><\/strong>: Kullan\u0131c\u0131 ad\u0131 ve \u015fifrelerin bulundu\u011fu <code>.htpasswd<\/code> dosyas\u0131n\u0131n tam yolunu belirtir.<br \/>\n*   <strong><code>Require valid-user<\/code><\/strong>: <code>.htpasswd<\/code> dosyas\u0131nda bulunan herhangi bir ge\u00e7erli kullan\u0131c\u0131n\u0131n eri\u015fimine izin verir. Belirli kullan\u0131c\u0131lar\u0131n eri\u015fimini k\u0131s\u0131tlamak isterseniz <code>Require user admin user1<\/code> gibi kullanabilirsiniz.<\/p>\n<h4>Sanal Host Kimlik Do\u011frulamas\u0131<\/h4>\n<p>B\u00fct\u00fcn bir sanal hostu korumak i\u00e7in, kimlik do\u011frulama y\u00f6nergelerini do\u011frudan <code><VirtualHost><\/code> blo\u011funun i\u00e7ine ekleyebilirsiniz. Bu, sanal hosta yap\u0131lan t\u00fcm isteklere kimlik do\u011frulama uygulanaca\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>\u00d6rne\u011fin, <code>\/etc\/apache2\/sites-available\/000-default.conf<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n<p>Ve <code><VirtualHost *:80><\/code> blo\u011funun i\u00e7ine a\u015fa\u011f\u0131daki y\u00f6nergeleri ekleyin:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:80>\n    # ... di\u011fer VirtualHost ayarlar\u0131 ...\n\n    AuthType Basic\n    AuthName \"T\u00fcm Site K\u0131s\u0131tl\u0131d\u0131r - Giri\u015f Yap\u0131n\"\n    AuthUserFile \/etc\/apache2\/.htpasswd\n    Require valid-user\n\n    DocumentRoot \/var\/www\/html\n    # ...\n<\/VirtualHost><\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>DocumentRoot<\/code> i\u00e7indeki t\u00fcm i\u00e7eri\u011fi koruyacakt\u0131r.<\/p>\n<h4>Belirli Bir Konum \u0130\u00e7in Kimlik Do\u011frulama<\/h4>\n<p>Belirli bir URL yolu (dosya sistemi dizini olmasa bile) i\u00e7in kimlik do\u011frulama uygulamak isterseniz, <code><Location><\/code> y\u00f6nergesini kullanabilirsiniz. Bu, \u00f6zellikle bir proxy veya uygulama yolu gibi durumlar i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>\u00d6rne\u011fin, <code>http:\/\/your_domain\/admin<\/code> URL&#8217;sine eri\u015fimi korumak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n<p><code><VirtualHost *:80><\/code> blo\u011funun i\u00e7ine a\u015fa\u011f\u0131daki <code><Location><\/code> blo\u011funu ekleyin:<\/p>\n<pre><code class=\"language-apache\"><Location \/admin>\n    AuthType Basic\n    AuthName \"Admin Paneli - Giri\u015f Gerekli\"\n    AuthUserFile \/etc\/apache2\/.htpasswd\n    Require valid-user\n<\/Location><\/code><\/pre>\n<p>Bu, <code>your_domain\/admin<\/code> ve alt\u0131ndaki t\u00fcm yollar\u0131 koruyacakt\u0131r.<\/p>\n<h3>Kimlik Do\u011frulama Mod\u00fcllerini Etkinle\u015ftirme<\/h3>\n<p>Apache&#8217;nin temel kimlik do\u011frulama mekanizmas\u0131n\u0131n \u00e7al\u0131\u015fabilmesi i\u00e7in ilgili mod\u00fcllerin etkinle\u015ftirilmesi gerekmektedir. Ubuntu&#8217;da bu, <code>a2enmod<\/code> komutu ile yap\u0131l\u0131r. Genellikle a\u015fa\u011f\u0131daki mod\u00fcllerin etkin olmas\u0131 gerekir:<\/p>\n<p>*   <code>auth_basic<\/code>: Temel kimlik do\u011frulama i\u015flevselli\u011fini sa\u011flar.<br \/>\n*   <code>authz_user<\/code>: <code>.htpasswd<\/code> dosyas\u0131ndaki kullan\u0131c\u0131lar \u00fczerinden yetkilendirme sa\u011flar.<br \/>\n*   <code>authz_core<\/code>: Apache&#8217;nin yetkilendirme kararlar\u0131n\u0131 y\u00f6neten temel mod\u00fcld\u00fcr.<br \/>\n*   <code>authz_groupfile<\/code> (iste\u011fe ba\u011fl\u0131): E\u011fer grup tabanl\u0131 kimlik do\u011frulama kullanacaksan\u0131z gereklidir.<\/p>\n<p>A\u015fa\u011f\u0131daki komutlarla bu mod\u00fclleri etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod auth_basic\nsudo a2enmod authz_user\nsudo a2enmod authz_core<\/code><\/pre>\n<p>Zaten etkin iseler, komut size bunu bildirecektir.<\/p>\n<h3>Apache Yap\u0131land\u0131rmas\u0131n\u0131 Test Etme ve Yeniden Ba\u015flatma<\/h3>\n<p>Yap\u0131land\u0131rma dosyalar\u0131nda herhangi bir de\u011fi\u015fiklik yapt\u0131ktan sonra, Apache&#8217;nin yap\u0131land\u0131rmas\u0131n\u0131 test etmek ve ard\u0131ndan sunucuyu yeniden ba\u015flatmak zorunludur. Bu, olas\u0131 s\u00f6zdizimi hatalar\u0131n\u0131 yakalar ve yeni ayarlar\u0131n etkin olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Yap\u0131land\u0131rmay\u0131 test etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo apache2ctl configtest<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131 <code>Syntax OK<\/code> ise, yap\u0131land\u0131rman\u0131zda s\u00f6zdizimi hatas\u0131 yoktur. Herhangi bir hata durumunda, hatay\u0131 d\u00fczeltmek i\u00e7in belirtilen dosyay\u0131 ve sat\u0131r\u0131 kontrol etmeniz gerekir.<\/p>\n<p>Yap\u0131land\u0131rma testi ba\u015far\u0131l\u0131 olduktan sonra Apache servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2<\/code><\/pre>\n<p>\u015eimdi web taray\u0131c\u0131n\u0131zla korudu\u011funuz dizine veya URL&#8217;ye eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda, bir kimlik do\u011frulama penceresi g\u00f6rmelisiniz. Olu\u015fturdu\u011funuz kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile giri\u015f yaparak i\u00e7eri\u011fe eri\u015febilirsiniz.<\/p>\n<h3>Geli\u015fmi\u015f Ayarlar ve En \u0130yi Uygulamalar<\/h3>\n<p>Temel kimlik do\u011frulaman\u0131n \u00f6tesinde, Apache size daha fazla kontrol ve g\u00fcvenlik sa\u011flayan \u00e7e\u015fitli geli\u015fmi\u015f se\u00e7enekler sunar.<\/p>\n<h4>.htaccess Kullan\u0131m\u0131<\/h4>\n<p>Yukar\u0131daki \u00f6rneklerde, kimlik do\u011frulama ayarlar\u0131n\u0131 do\u011frudan Apache&#8217;nin ana yap\u0131land\u0131rma dosyalar\u0131na (veya sanal host dosyalar\u0131na) ekledik. Bu, genellikle en iyi performans ve g\u00fcvenlik sa\u011flayan y\u00f6ntemdir. Ancak, baz\u0131 durumlarda (\u00f6zellikle payla\u015f\u0131ml\u0131 bar\u0131nd\u0131rma ortamlar\u0131nda) Apache yap\u0131land\u0131rma dosyalar\u0131na do\u011frudan eri\u015fiminiz olmayabilir. Bu gibi durumlarda, <code>.htaccess<\/code> dosyalar\u0131n\u0131 kullanabilirsiniz.<\/p>\n<p><code>.htaccess<\/code> dosyalar\u0131, bir dizine yerle\u015ftirildi\u011finde o dizin ve alt dizinler i\u00e7in Apache yap\u0131land\u0131rmas\u0131n\u0131 ge\u00e7ersiz k\u0131lar veya geni\u015fletir. <code>.htaccess<\/code> kullanmak i\u00e7in, Apache&#8217;nin ilgili dizin i\u00e7in <code>AllowOverride AuthConfig<\/code> veya <code>AllowOverride All<\/code> y\u00f6nergesine sahip olmas\u0131 gerekir.<\/p>\n<p>\u00d6rne\u011fin, <code>\/var\/www\/html\/private<\/code> dizini i\u00e7in <code>.htaccess<\/code> kullanmak isterseniz, sanal host yap\u0131land\u0131rma dosyan\u0131zda (\u00f6rne\u011fin <code>\/etc\/apache2\/sites-available\/000-default.conf<\/code>) a\u015fa\u011f\u0131daki gibi bir <code><Directory><\/code> blo\u011fu olmal\u0131d\u0131r:<\/p>\n<pre><code class=\"language-apache\"><Directory \/var\/www\/html\/private>\n    Options Indexes FollowSymLinks\n    AllowOverride AuthConfig\n    Require all granted\n<\/Directory><\/code><\/pre>\n<p>Ard\u0131ndan, <code>\/var\/www\/html\/private<\/code> dizini i\u00e7inde <code>.htaccess<\/code> ad\u0131nda bir dosya olu\u015fturup i\u00e7ine a\u015fa\u011f\u0131daki y\u00f6nergeleri ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-apache\"># \/var\/www\/html\/private\/.htaccess\nAuthType Basic\nAuthName \"K\u0131s\u0131tl\u0131 Alan - .htaccess ile\"\nAuthUserFile \/etc\/apache2\/.htpasswd\nRequire valid-user<\/code><\/pre>\n<p><strong>\u00d6nemli Not:<\/strong> <code>.htaccess<\/code> dosyalar\u0131 her istekte Apache taraf\u0131ndan yeniden okunur, bu da performans\u0131 d\u00fc\u015f\u00fcrebilir. M\u00fcmk\u00fcnse, kimlik do\u011frulama yap\u0131land\u0131rmas\u0131n\u0131 do\u011frudan ana Apache yap\u0131land\u0131rma dosyalar\u0131na dahil etmek tercih edilir.<\/p>\n<h4>SSL\/TLS (HTTPS) ile Kullan\u0131m<\/h4>\n<p>Yukar\u0131da da belirtildi\u011fi gibi, temel kimlik do\u011frulama, kullan\u0131c\u0131 ad\u0131 ve \u015fifreyi \u015fifrelemeden Base64 ile kodlar. Bu nedenle, kimlik bilgilerinin a\u011f \u00fczerinde g\u00fcvenli bir \u015fekilde aktar\u0131lmas\u0131n\u0131 sa\u011flamak i\u00e7in her zaman SSL\/TLS (HTTPS) kullan\u0131lmas\u0131 zorunludur.<\/p>\n<p>E\u011fer siteniz HTTPS \u00fczerinden \u00e7al\u0131\u015fm\u0131yorsa, Let&#8217;s Encrypt gibi \u00fccretsiz sertifika sa\u011flay\u0131c\u0131lar\u0131 kullanarak kolayca HTTPS kurabilirsiniz. Ubuntu 18.04&#8217;te <code>certbot<\/code> ile kurulum \u015fu \u015fekildedir:<\/p>\n<pre><code class=\"language-bash\">sudo apt install certbot python-certbot-apache\nsudo certbot --apache -d your_domain.com -d www.your_domain.com<\/code><\/pre>\n<p>Bu komutlar, Apache i\u00e7in bir SSL sertifikas\u0131 kuracak ve otomatik olarak HTTP isteklerini HTTPS&#8217;ye y\u00f6nlendirecek yap\u0131land\u0131rmay\u0131 yapacakt\u0131r. Kimlik do\u011frulama y\u00f6nergelerinizi daha sonra <code>\/etc\/apache2\/sites-available\/default-ssl.conf<\/code> veya <code>certbot<\/code> taraf\u0131ndan olu\u015fturulan yeni SSL sanal host yap\u0131land\u0131rma dosyas\u0131na eklemelisiniz.<\/p>\n<h4>Kimlik Do\u011frulama Alan\u0131 (AuthName)<\/h4>\n<p><code>AuthName<\/code> y\u00f6nergesi, kullan\u0131c\u0131ya g\u00f6sterilen kimlik do\u011frulama penceresinin ba\u015fl\u0131\u011f\u0131n\u0131 belirler. Bu, sadece bir metin dizesi gibi g\u00f6r\u00fcnse de, kullan\u0131c\u0131 deneyimi ve g\u00fcvenli\u011fi a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Kullan\u0131c\u0131ya, hangi kayna\u011fa eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131 ve neden kimlik bilgilerinin istendi\u011fi hakk\u0131nda net bir bilgi vermelidir. \u00d6rne\u011fin, &#8220;Admin Paneli &#8211; Giri\u015f Gerekli&#8221; gibi bir ba\u015fl\u0131k, kullan\u0131c\u0131n\u0131n do\u011fru yere \u015fifre girdi\u011finden emin olmas\u0131na yard\u0131mc\u0131 olur ve kimlik av\u0131 sald\u0131r\u0131lar\u0131na kar\u015f\u0131 bir miktar koruma sa\u011flar.<\/p>\n<h4>Grup Kimlik Do\u011frulamas\u0131 (AuthGroupFile)<\/h4>\n<p>E\u011fer \u00e7ok say\u0131da kullan\u0131c\u0131n\u0131z varsa ve bu kullan\u0131c\u0131lar\u0131 gruplar halinde y\u00f6netmek isterseniz, <code>AuthGroupFile<\/code> y\u00f6nergesini kullanabilirsiniz. Bu, belirli bir gruba ait kullan\u0131c\u0131lar\u0131n eri\u015fimine izin vermenizi sa\u011flar.<\/p>\n<p>\u00d6nce bir grup dosyas\u0131 olu\u015ftural\u0131m. \u00d6rne\u011fin, <code>\/etc\/apache2\/.htgroups<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/.htgroups<\/code><\/pre>\n<p>\u0130\u00e7eri\u011fine a\u015fa\u011f\u0131daki gibi gruplar ve kullan\u0131c\u0131lar ekleyin:<\/p>\n<pre><code class=\"language-\">admins: admin user1\ndevelopers: user2 user3<\/code><\/pre>\n<p>Bu dosyan\u0131n da <code>.htpasswd<\/code> gibi g\u00fcvenli izinlere sahip olmas\u0131 gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo chown www-data:www-data \/etc\/apache2\/.htgroups\nsudo chmod 640 \/etc\/apache2\/.htgroups<\/code><\/pre>\n<p>Ard\u0131ndan, Apache yap\u0131land\u0131rman\u0131zda <code>AuthGroupFile<\/code> y\u00f6nergesini kullanabilir ve <code>Require group<\/code> ile belirli bir grubun eri\u015fimine izin verebilirsiniz:<\/p>\n<pre><code class=\"language-apache\"><Directory \/var\/www\/html\/admin_panel>\n    AuthType Basic\n    AuthName \"Y\u00f6netici Grubu Eri\u015fimi\"\n    AuthUserFile \/etc\/apache2\/.htpasswd\n    AuthGroupFile \/etc\/apache2\/.htgroups\n    Require group admins\n<\/Directory><\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, sadece <code>.htgroups<\/code> dosyas\u0131nda <code>admins<\/code> grubuna dahil olan kullan\u0131c\u0131lar\u0131n (yani <code>admin<\/code> ve <code>user1<\/code>) <code>\/var\/www\/html\/admin_panel<\/code> dizinine eri\u015fmesine izin verecektir.<\/p>\n<h4>IP Adresi K\u0131s\u0131tlamalar\u0131 ile Birle\u015ftirme<\/h4>\n<p>Kimlik do\u011frulama ile birlikte IP adresi k\u0131s\u0131tlamalar\u0131n\u0131 kullanmak, ek bir g\u00fcvenlik katman\u0131 sa\u011flar. \u00d6rne\u011fin, sadece belirli bir IP adresinden gelen kullan\u0131c\u0131lar\u0131n kimlik do\u011frulamas\u0131na tabi tutulmas\u0131na veya belirli bir IP adresinden gelenlerin \u015fifreye ihtiya\u00e7 duymadan eri\u015fmesine izin verebilirsiniz.<\/p>\n<pre><code class=\"language-apache\"><Directory \/var\/www\/html\/private>\n    AuthType Basic\n    AuthName \"K\u0131s\u0131tl\u0131 Alan\"\n    AuthUserFile \/etc\/apache2\/.htpasswd\n\n    Require ip 192.168.1.100 # Bu IP adresinden gelenler \u015fifresiz eri\u015febilir\n    Require valid-user       # Di\u011ferleri i\u00e7in \u015fifre gereklidir\n<\/Directory><\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>192.168.1.100<\/code> IP adresinden gelen isteklerin \u015fifreye ihtiya\u00e7 duymadan eri\u015fmesine izin verirken, di\u011fer t\u00fcm IP adreslerinden gelen istekler i\u00e7in <code>valid-user<\/code> (ge\u00e7erli bir kullan\u0131c\u0131 ad\u0131 ve \u015fifre) gerektirir. Apache&#8217;nin <code>Require<\/code> y\u00f6nergesi, <code>Authz<\/code> mod\u00fclleri ile birlikte \u00e7al\u0131\u015farak bu t\u00fcr karma\u015f\u0131k yetkilendirme kurallar\u0131n\u0131 olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<h4>Brute-Force Sald\u0131r\u0131lar\u0131na Kar\u015f\u0131 Koruma<\/h4>\n<p>Temel kimlik do\u011frulama, brute-force sald\u0131r\u0131lar\u0131na kar\u015f\u0131 savunmas\u0131z olabilir; \u00e7\u00fcnk\u00fc sald\u0131rganlar, do\u011fru kombinasyonu bulana kadar s\u00fcrekli olarak kullan\u0131c\u0131 ad\u0131 ve \u015fifre denemeleri yapabilirler. Bu t\u00fcr sald\u0131r\u0131lara kar\u015f\u0131 korunmak i\u00e7in Fail2ban gibi ara\u00e7lar kullanabilirsiniz.<\/p>\n<p>Fail2ban, sunucu log dosyalar\u0131n\u0131 izler ve belirli bir s\u00fcre i\u00e7inde \u00e7ok say\u0131da ba\u015far\u0131s\u0131z giri\u015f denemesi yapan IP adreslerini otomatik olarak engeller. Apache i\u00e7in Fail2ban yap\u0131land\u0131rmas\u0131, genellikle <code>\/etc\/fail2ban\/jail.local<\/code> dosyas\u0131nda <code>[apache-auth]<\/code> b\u00f6l\u00fcm\u00fcnde yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-ini\">[apache-auth]\nenabled = true\nport    = http,https\nlogpath = %(apache_error_log)s\nmaxretry = 3\nbantime = 3600<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, 3 ba\u015far\u0131s\u0131z giri\u015f denemesinden sonra bir IP adresini 1 saat boyunca engelleyecektir. Fail2ban&#8217;\u0131 kurmak ve yap\u0131land\u0131rmak, bu makalenin kapsam\u0131n\u0131n \u00f6tesinde olsa da, kimlik do\u011frulama g\u00fcvenli\u011finizi art\u0131rmak i\u00e7in \u00f6nemli bir ad\u0131md\u0131r.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Apache ile \u015fifre kimlik do\u011frulama kurarken baz\u0131 yayg\u0131n sorunlarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte bunlardan baz\u0131lar\u0131 ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>&#8220;AuthUserFile not found&#8221; Hatas\u0131<\/h4>\n<p>Bu hata, <code>AuthUserFile<\/code> y\u00f6nergesinde belirtilen <code>.htpasswd<\/code> dosyas\u0131n\u0131n Apache taraf\u0131ndan bulunamad\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Dosya yolunu iki kez kontrol edin. Dosyan\u0131n ger\u00e7ekten belirtilen yolda (\u00f6rne\u011fin <code>\/etc\/apache2\/.htpasswd<\/code>) var oldu\u011fundan emin olun. <code>sudo ls -l \/etc\/apache2\/.htpasswd<\/code> komutuyla dosyan\u0131n varl\u0131\u011f\u0131n\u0131 ve izinlerini kontrol edebilirsiniz.<\/p>\n<h4>&#8220;Authorization Required&#8221; Hatas\u0131 ve Log Kontrol\u00fc<\/h4>\n<p>Taray\u0131c\u0131da kimlik do\u011frulama penceresi g\u00f6r\u00fcn\u00fcyor ancak do\u011fru \u015fifreyi girdi\u011finizde bile s\u00fcrekli olarak tekrar g\u00f6r\u00fcn\u00fcyor veya &#8220;Authorization Required&#8221; (Yetkilendirme Gerekli) hatas\u0131 al\u0131yorsan\u0131z, Apache&#8217;nin hata loglar\u0131n\u0131 kontrol etmelisiniz.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Apache&#8217;nin hata loglar\u0131 genellikle <code>\/var\/log\/apache2\/error.log<\/code> konumundad\u0131r. Bu dosyay\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/apache2\/error.log<\/code><\/pre>\n<p>    Burada, <code>user admin: authentication failure for \"\/private\/\": Password Mismatch<\/code> veya <code>user admin not found: \/private\/<\/code> gibi hatalar g\u00f6rebilirsiniz.<br \/>\n    *   <strong><code>Password Mismatch<\/code>:<\/strong> Girilen \u015fifrenin yanl\u0131\u015f oldu\u011funu g\u00f6sterir. <code>.htpasswd<\/code> dosyas\u0131ndaki \u015fifreyi <code>htpasswd<\/code> komutuyla yeniden ayarlamay\u0131 deneyin.<br \/>\n    *   <strong><code>user not found<\/code>:<\/strong> Kullan\u0131c\u0131 ad\u0131n\u0131n <code>.htpasswd<\/code> dosyas\u0131nda bulunamad\u0131\u011f\u0131n\u0131 g\u00f6sterir. Kullan\u0131c\u0131 ad\u0131n\u0131 do\u011fru girdi\u011finizden ve <code>.htpasswd<\/code> dosyas\u0131nda mevcut oldu\u011fundan emin olun.<br \/>\n    *   <strong>Dosya \u0130zinleri:<\/strong> Loglarda <code>access to \/private\/ failed, reason: verification by user id failed<\/code> gibi bir hata g\u00f6r\u00fcyorsan\u0131z, <code>.htpasswd<\/code> dosyas\u0131n\u0131n Apache taraf\u0131ndan okunabilir oldu\u011fundan emin olun. <code>sudo chown www-data:www-data \/etc\/apache2\/.htpasswd<\/code> ve <code>sudo chmod 640 \/etc\/apache2\/.htpasswd<\/code> komutlar\u0131n\u0131 tekrar \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<h4>Dosya \u0130zinleri Sorunlar\u0131<\/h4>\n<p><code>.htpasswd<\/code> veya <code>.htgroups<\/code> dosyalar\u0131n\u0131n yanl\u0131\u015f izinlere sahip olmas\u0131, Apache&#8217;nin bu dosyalar\u0131 okuyamamas\u0131na ve kimlik do\u011frulaman\u0131n ba\u015far\u0131s\u0131z olmas\u0131na neden olabilir.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Yukar\u0131da belirtilen do\u011fru izinleri ve sahipli\u011fi ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown www-data:www-data \/etc\/apache2\/.htpasswd\n    sudo chmod 640 \/etc\/apache2\/.htpasswd<\/code><\/pre>\n<p>    Apache&#8217;nin \u00e7al\u0131\u015ft\u0131\u011f\u0131 kullan\u0131c\u0131n\u0131n (genellikle <code>www-data<\/code>) bu dosyalara okuma izni olmas\u0131 kritik \u00f6neme sahiptir.<\/p>\n<h4>Mod\u00fcller Etkin De\u011fil<\/h4>\n<p><code>AuthType Basic<\/code> veya <code>Require<\/code> gibi y\u00f6nergelerle ilgili hatalar al\u0131yorsan\u0131z, gerekli Apache mod\u00fclleri etkinle\u015ftirilmemi\u015f olabilir.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>auth_basic<\/code>, <code>authz_user<\/code>, <code>authz_core<\/code> (veya <code>authz_groupfile<\/code> e\u011fer kullan\u0131yorsan\u0131z) mod\u00fcllerinin etkin oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod auth_basic\n    sudo a2enmod authz_user\n    sudo a2enmod authz_core\n    sudo systemctl restart apache2<\/code><\/pre>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Ubuntu 18.04 \u00fczerinde Apache web sunucusunda \u015fifre kimlik do\u011frulaman\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. <code>.htpasswd<\/code> dosyas\u0131n\u0131n olu\u015fturulmas\u0131ndan, Apache yap\u0131land\u0131rmas\u0131n\u0131n d\u00fczenlenmesine ve g\u00fcvenlik en iyi uygulamalar\u0131na kadar t\u00fcm s\u00fcre\u00e7 detayl\u0131 bir \u015fekilde ele al\u0131nd\u0131. Temel kimlik do\u011frulama, web sitenizin veya uygulamalar\u0131n\u0131z\u0131n belirli b\u00f6l\u00fcmlerini koruman\u0131n basit ve etkili bir yoludur.<\/p>\n<p>Ancak, her zaman unutulmamal\u0131d\u0131r ki, temel kimlik do\u011frulama tek ba\u015f\u0131na yeterli bir g\u00fcvenlik \u00f6nlemi de\u011fildir. Kimlik bilgilerinin a\u011f \u00fczerinde \u015fifrelenmeden g\u00f6nderilmesini \u00f6nlemek i\u00e7in her zaman HTTPS (SSL\/TLS) kullan\u0131lmas\u0131 kritik \u00f6neme sahiptir. Ayr\u0131ca, Fail2ban gibi ara\u00e7larla brute-force sald\u0131r\u0131lar\u0131na kar\u015f\u0131 ek koruma sa\u011flamak, sunucunuzun g\u00fcvenli\u011fini daha da art\u0131racakt\u0131r.<\/p>\n<p>Bu k\u0131lavuzu takip ederek, Apache sunucunuzdaki hassas kaynaklara yetkisiz eri\u015fimi ba\u015far\u0131yla k\u0131s\u0131tlayabilirsiniz. G\u00fcvenlik, s\u00fcrekli bir s\u00fcre\u00e7tir ve web sunucunuzu g\u00fcncel tutmak, d\u00fczenli yedeklemeler yapmak ve g\u00fcvenlik loglar\u0131n\u0131 izlemek gibi di\u011fer en iyi uygulamalar\u0131 da ihmal etmemek \u00f6nemlidir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web uygulamalar\u0131 ve sunucular, hassas","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-33199","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 ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu - 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-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web uygulamalar\u0131 ve sunucular, hassas\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-30T22:40:57+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=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu\",\"datePublished\":\"2025-10-30T22:40:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\"},\"wordCount\":3106,\"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-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\",\"name\":\"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-30T22:40:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu\"}]},{\"@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 ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu - 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-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu","og_description":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web uygulamalar\u0131 ve sunucular, hassas","og_url":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-30T22:40:57+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu","datePublished":"2025-10-30T22:40:57+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/"},"wordCount":3106,"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-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/","name":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-30T22:40:57+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-ubuntu-18-04-uzerinde-sifre-kimlik-dogrulama-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache ile Ubuntu 18.04 \u00dczerinde \u015eifre Kimlik Do\u011frulama Kurulumu"}]},{"@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\/33199","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=33199"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33199\/revisions"}],"predecessor-version":[{"id":33200,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33199\/revisions\/33200"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}