Ana içeriğe geç

FreeBSD 12 Apache Güvenliği ve Hardening Rehberi

Varsayılan Apache kurulumları çalışır durumda gelir ancak üretim ortamlarında yeterli güvenlik seviyesini sağlamaz.

Bu rehberde Apache sunucunuzda:

  • Sunucu sürüm bilgisini gizleme
  • Dizin listelemeyi devre dışı bırakma
  • DoS saldırı riskini azaltma
  • HTTP güvenlik başlıklarını yapılandırma
  • Çerez güvenliğini artırma

gibi temel Apache hardening adımlarını uygulamayı öğreneceksiniz.


Bu Rehberde Neler Öğreneceksiniz?

Bu dokümanda aşağıdaki konular ele alınacaktır:

  • Apache sunucu banner bilgisini gizleme
  • Directory listing kapatma
  • Timeout ayarları ile DoS riskini azaltma
  • TRACE metodunu devre dışı bırakma
  • HTTP güvenlik header yapılandırması

Ön Hazırlıklar

Bu adımları uygulamadan önce aşağıdakilerin hazır olması gerekir:

  • FreeBSD 12.0 yüklü bir sunucu
  • Yapılandırılmış bir firewall
  • Kurulu FAMP Stack (FreeBSD + Apache + MySQL + PHP)
  • Let’s Encrypt ile aktif HTTPS sertifikası

Apache Sunucu Bilgilerini Gizleme (ServerTokens)

Apache varsayılan olarak işletim sistemi ve sürüm bilgilerini dış dünyaya açık eder.
Bu bilgiler saldırganlar tarafından keşif sürecinde kullanılabilir.

Öncelikle Apache sürüm bilgisini kontrol edebilirsiniz.

sudo pkg install nmap
nmap -sV -p 80 sunucu-ip-adresiniz

Bu komut Apache’nin dış dünyaya verdiği sürüm bilgisini gösterir.

Apache yapılandırma dosyasını açın:

sudo vi /usr/local/etc/apache24/httpd.conf

Aşağıdaki ayarı ekleyin veya düzenleyin:

ServerTokens Prod

Bu ayar sayesinde Apache yalnızca “Apache” bilgisini paylaşır.

Değişiklikten sonra Apache servisini yeniden başlatın:

sudo apachectl restart

Dizin Listelemeyi Kapatma (Directory Listing)

Index dosyası olmayan dizinlerin listelenmesi güvenlik riski oluşturabilir.

Aşağıdaki ayarı uygulayın:

Options -Indexes +FollowSymLinks

Bu ayar:

Dizin içeriğinin tarayıcıda listelenmesini engeller Index dosyası olmayan dizinlerde 403 Forbidden hatası döndürür

Değişiklikten sonra Apache servisini yeniden başlatın:

sudo apachectl restart

Timeout Süresini Düşürme (DoS Riskini Azaltma)

Uzun bağlantı süreleri DoS saldırılarında kaynak tüketimini artırabilir.

Aşağıdaki dosyayı açın:

sudo vi /usr/local/etc/apache24/extra/httpd-default.conf

Timeout değerini düzenleyin:

Timeout 30

Bu ayar:

Yanıt vermeyen bağlantıların daha hızlı kapatılmasını sağlar Sunucu kaynaklarının gereksiz kullanımını azaltır

Değişiklikten sonra Apache servisini yeniden başlatın:

sudo apachectl restart

TRACE Metodunu Devre Dışı Bırakma

TRACE metodu Cross Site Tracing (XST) saldırılarında kullanılabilir.

Aşağıdaki ayarı Apache yapılandırmasına ekleyin:

TraceEnable off

Bu ayar TRACE isteklerini tamamen engeller.

İzin verilen HTTP metodlarını sınırlandırma:

<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>

Bu yapılandırma yalnızca gerekli HTTP metodlarına izin verir.

Değişikliklerden sonra Apache servisini yeniden başlatın:

sudo apachectl restart

HTTP Header ve Çerez Güvenliği

HTTP güvenlik başlıkları, tarayıcı tabanlı saldırılara karşı ek koruma sağlar.

Apache yapılandırmasına aşağıdaki ayarları ekleyin:

<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self'; upgrade-insecure-requests;"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always edit Set-Cookie (.*) "$1; HttpOnly; Secure"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin"
Header set X-Frame-Options "DENY"
</IfModule>

Bu ayarlar sayesinde:

XSS saldırıları azaltılır Clickjacking engellenir Çerez güvenliği artırılır HTTPS zorunlu hale getirilir

Değişiklikleri uygulamak için Apache servisini yeniden başlatın:

sudo apachectl restart

Sıkça Sorulan Sorular (SSS)

403 hatası alıyorum, sorun mu var?

Hayır. Index dosyası olmayan dizinlerde 403 Forbidden hatası beklenen bir davranıştır.

Timeout daha da düşürülebilir mi?

Evet, ancak çok düşük değerler kullanıcı deneyimini olumsuz etkileyebilir.

Bu ayarlar performansı düşürür mü?

Hayır. Çoğu durumda sunucu kaynaklarının daha verimli kullanılmasını sağlar.

CSP sonrası site düzgün çalışmıyorsa ne yapılmalı?

Harici kaynaklar (CDN, font vb.) Content Security Policy içine eklenmelidir.

Sonuç

Bu rehberde FreeBSD 12 üzerinde Apache HTTP Server için temel hardening ve güvenlik ayarlarını uyguladınız.

Bu yapılandırmalar sayesinde:

Sunucu sürüm bilgisi gizlenir Dizin listeleme kapatılır DoS saldırı riski azaltılır HTTP güvenlik başlıkları etkinleştirilir

FreeBSD tabanlı projelerinizde bu güvenlik yapılandırmalarını güvenle kullanabilirsiniz.

Altyapınızı hızlı şekilde kurmak için Rabisu Bulut üzerinde bir sunucu oluşturarak Apache güvenlik yapılandırmalarını dakikalar içinde uygulayabilirsiniz.