sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa Web Sunucuları Apache Kurulumu Apache 403 Forbidden Hatası Nedir? Nasıl Çözülür?
🪶 Apache Kurulumu

Apache 403 Forbidden Hatası Nedir? Nasıl Çözülür?

Apache 403 hatası dosya izinleri veya .htaccess kısıtlamasından kaynaklanır. İzin düzeltme ve konfigürasyon adımlarıyla çözün.

📅 2 Ocak 2025 👁 55 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Apache 403 Forbidden Hatası Nedir?

Apache 403 Forbidden hatası, web sunucusunun talep edilen kaynağa erişmek için istemcinin gerekli yetkiye sahip olmadığını bildirdiği bir HTTP yanıt kodudur. 401 Unauthorized hatasından farklı olarak, 403 hatasında kimlik doğrulama bile erişimi sağlamaz; sunucu kaynağın varlığını kabul etmekte ancak erişimi kesinlikle reddetmektedir.

Bu hata son derece geniş bir yelpazeden kaynaklanabilir. Dosya sistemi izinlerinin yanlış yapılandırılması (örneğin dizin izinlerinin 700 veya dosya izinlerinin 600 olması), .htaccess dosyasındaki erişim kısıtlamaları, mod_security kurallarının tetiklenmesi, DirectoryIndex yönergesinin eksik olması, IP tabanlı kısıtlamalar veya SELinux politikaları 403 hatasına yol açabilir. Sorunu teşhis etmek için Apache hata loglarını incelemek her zaman ilk adım olmalıdır.


Olası Nedenler

  • Yanlış dosya/dizin izinleri: Dizinler en az 755, dosyalar en az 644 olmalıdır.
  • .htaccess kısıtlaması: Deny from all veya Options -Indexes direktifleri.
  • DirectoryIndex eksikliği: index.html veya index.php dizinde yok ve dizin listeleme kapalı.
  • mod_security engeli: WAF kuralları isteği kötü amaçlı olarak değerlendirdi.
  • IP kısıtlaması: Allow/Deny direktifleri veya Require ip ile belirli IP'ler engellendi.
  • SELinux context hatası: Dosyaların SELinux güvenlik etiketi yanlış ayarlanmış.

Çözüm Adımları

Apache Ortamında Hata Logu İnceleme

403 hatasının gerçek sebebini Apache error log dosyasından öğrenin.

# Ubuntu/Debian
sudo tail -50 /var/log/apache2/error.log

# CentOS/AlmaLinux
sudo tail -50 /var/log/httpd/error_log

# Belirli bir site için
sudo tail -50 /var/log/apache2/siteniz-error.log

# Gerçek zamanlı log takibi
sudo tail -f /var/log/apache2/error.log | grep 403

Dosya ve Dizin İzinlerini Düzeltme

Dosya sistemi izinleri 403 hatasının en yaygın nedenidir. Apache işlemi (www-data veya apache) dosyaları okuyabilmelidir.

# Apache kullanıcısını öğren
ps aux | grep apache | head -3
# Genellikle www-data (Debian) veya apache (CentOS)

# Web kök dizininin iznini kontrol et
ls -la /var/www/html/
ls -la /var/www/html/index.php

# Dizinleri 755 yap
find /var/www/html -type d -exec chmod 755 {} \;

# Dosyaları 644 yap
find /var/www/html -type f -exec chmod 644 {} \;

# Sahipliği www-data'ya ver
sudo chown -R www-data:www-data /var/www/html

# Belirli dosyayı kontrol et
stat /var/www/html/index.php

.htaccess Sorunlarını Giderme

.htaccess dosyasındaki yanlış direktifler 403'e neden olabilir. Dosyayı geçici olarak devre dışı bırakarak test edin.

cd /var/www/html

# .htaccess'i geçici olarak yedekle ve yeniden adlandır
sudo mv .htaccess .htaccess.bak

# Siteyi test et - 403 gittiyse .htaccess suçlu
# .htaccess içeriğini kontrol et
cat .htaccess.bak | grep -i "deny\|forbidden\|require\|order"

# Yaygın sorunlu direktifler:
# Options -Indexes  → Dizin listelemesini kapatır (sorun değil)
# Deny from all    → HERKESİ engeller (sorun!)
# Require ip 1.2.3.4 → Sadece bu IP erişebilir

# AllowOverride direktifinin açık olduğunu kontrol et
sudo grep -r "AllowOverride" /etc/apache2/

Apache VirtualHost Yapılandırması

VirtualHost konfigürasyonundaki Require ve Options direktiflerini kontrol edin.

sudo nano /etc/apache2/sites-available/siteniz.conf
<VirtualHost *:80>
    ServerName siteniz.com
    DocumentRoot /var/www/html/siteniz

    <Directory /var/www/html/siteniz>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/siteniz-error.log
    CustomLog ${APACHE_LOG_DIR}/siteniz-access.log combined
</VirtualHost>
sudo apachectl configtest
sudo systemctl reload apache2

DirectoryIndex Eksikliği

Dizinde index dosyası yoksa ve dizin listeleme kapalıysa 403 oluşur.

# Dizinde index dosyası var mı?
ls /var/www/html/

# DirectoryIndex direktifini kontrol et
grep -r "DirectoryIndex" /etc/apache2/

# Apache konfigürasyonuna ekle
sudo nano /etc/apache2/apache2.conf
# DirectoryIndex index.php index.html index.htm

# Veya VirtualHost bloğuna:
# DirectoryIndex index.php index.html

sudo systemctl restart apache2

mod_security Engel Kaldırma

WAF (Web Application Firewall) olan mod_security meşru istekleri engelliyor olabilir.

# mod_security log dosyası
sudo tail -50 /var/log/apache2/modsec_audit.log

# Belirli bir kural ID'sini devre dışı bırak (örn: 949110)
sudo nano /etc/apache2/mods-enabled/security2.conf
# SecRuleRemoveById 949110

# Tüm site için mod_security'yi geçici kapat (test için)
sudo nano /etc/apache2/sites-available/siteniz.conf
# SecRuleEngine Off

sudo systemctl restart apache2

cPanel Ortamında 403 Çözümü

cPanel hosting kullanıyorsanız dosya izinleri ve .htaccess cPanel araçlarıyla düzeltilebilir.

# cPanel > File Manager > Select All > Change Permissions
# Dizinler: 755, Dosyalar: 644

# cPanel > Error Logs > 403 hata detaylarını gör

# cPanel > ModSecurity > Engellenen IP'leri görüntüle ve kaldır

# SSH ile hızlı çözüm
chmod 755 ~/public_html
find ~/public_html -type d -exec chmod 755 {} \;
find ~/public_html -type f -exec chmod 644 {} \;

SELinux Context Düzeltme (CentOS/AlmaLinux)

SELinux aktifse dosyaların httpd_sys_content_t etiketine sahip olması gerekir.

# SELinux durumu
getenforce

# Dosyanın SELinux etiketini kontrol et
ls -lZ /var/www/html/index.php

# Doğru etiketi uygula
sudo restorecon -Rv /var/www/html/

# Veya manuel olarak
sudo chcon -R -t httpd_sys_content_t /var/www/html/

# PHP yazma izni gereken dizinler için
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content/uploads/

Özet ve Önleyici Tedbirler

  • Web uygulama dosyalarını her zaman dizinler 755, dosyalar 644 izniyle tutun.
  • .htaccess değişikliklerinden önce yedek alın; apachectl configtest ile sözdizimini doğrulayın.
  • mod_security kurallarını gerçek zamanlı izleyin; yanlış pozitif tespitlerinde kural ID'sini devre dışı bırakın.
  • CentOS/AlmaLinux'ta restorecon komutunu dosya yüklemelerinden sonra çalıştırın.
  • Apache VirtualHost konfigürasyonlarında her zaman açık Require all granted direktifini kullanın.
  • Düzenli olarak Apache hata loglarını inceleyin; olağan dışı 403 artışlarını fark edin.

İlgili Makaleler

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al
Etiketler: #apache #linux #htaccess #linux-izinler

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.