İçeriğe geç

Apache Web Hizmetinin Güvenliği ve Optimizasyonu

Apache Web Hizmetinin Güvenliği ve Optimizasyonu ile dünya çapında en çok kullanılan web hizmetlerinden birisi olan apache için ilk adım ayarları makalemizde bulabilirsiniz. Apache dünya çapında en çok kullanılan açık kaynaklı web sunucularından biridir. Ancak, popüler olması nedeniyle saldırganların hedefi haline gelebilir. Bu yüzden, Apache sunucusunun güvenliğini sağlamak ve performansını artırmak için belirli yapılandırmalar ve optimizasyonlar gereklidir. Bu makalede, Apache web hizmetinin güvenliği ve standart bir hosting ortamında uygulanabilecek optimizasyon teknikleri hakkında bilgi vereceğiz.


1. Apache Güvenliği İçin Yapılandırma Adımları

Apache’nin güvenliğini sağlamak için aşağıdaki temel yapılandırmaları yapmak oldukça önemlidir.

1.1 Apache’nin Güncel Olduğundan Emin Olun

Apache’nin eski sürümleri güvenlik açıklarına sahip olabilir. Bu nedenle, sunucunuzu güncel tutarak en son güvenlik yamalarına sahip olduğunuzdan emin olun.

sudo apt update && sudo apt upgrade -y  # Debian/Ubuntu için
sudo yum update -y                      # CentOS için

1.2 Gereksiz Modülleri Devre Dışı Bırakın

Apache varsayılan olarak birçok modülle gelir, ancak hepsine ihtiyacınız yoktur. Kullanılmayan modülleri devre dışı bırakarak güvenliği artırabilirsiniz. Aşağıdaki komut ile bir çok modülün sıralandığını görebilirsiniz, projenizde hangilerinin bir işe yarayıp yaramadığının kararını vermekte zorlanıyorsanız, bir uzmandan yardım almanızı tavsiye ederiz. Çünkü yanlış bir şey yapmanız durumunda ilgili apache hizmetini kullanan tüm projeleriniz kesintiye uğrayabilir.

sudo a2dismod autoindex status info
sudo systemctl restart apache2
### apachectl -M  komutu ile yüklü tüm modülleri görebilirsiniz

1.3 Apache Banner Bilgilerini Gizleyin

Varsayılan Apache yapılandırması, sunucu sürüm bilgilerini açığa çıkarabilir. Bunu gizlemek için /etc/apache2/conf-enabled/security.conf dosyanızı düzenleyin:

ServerTokens Prod
ServerSignature Off

Bu ayarlar, saldırganların sürüm numaranızı görmesini engeller.

1.4 Dizin Listelemeyi Devre Dışı Bırakın

Dizin listeleme, saldırganların sunucu üzerindeki dosyaları görmesine neden olabilir. /etc/apache2/apache2.conf dosyanızda şu satırı ekleyerek dizin listelemeyi kapatın:

<Directory /var/www/html>
    Options -Indexes
</Directory>

1.5 Güvenli .htaccess Kullanımı

.htaccess dosyanızla belirli güvenlik önlemleri alabilirsiniz. Örneğin, WordPress kullanıyorsanız belirli IP’ler dışındaki herkesin wp-admin gibi kritik dizinlere erişimini engelleyebilirsiniz:

<FilesMatch "wp-login.php">
    Order deny,allow
    Deny from all
    Allow from 1.2.3.4
</FilesMatch>

Bu, yalnızca belirli bir IP adresinin erişimine izin verir.


2. Apache Performans ve Optimizasyonu

Güvenliği sağladıktan sonra, web sitenizin hızlı çalışması için optimizasyon yapmanız gerekir. İşte performansı artırmak için uygulayabileceğiniz bazı adımlar:

2.1 Gzip Sıkıştırmasını Etkinleştirin

Gzip, sayfa boyutunu küçülterek yükleme süresini azaltır. mod_deflate modülünü etkinleştirmek için aşağıdaki kodu .htaccess dosyanıza ekleyin:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css text/javascript application/javascript
</IfModule>

2.2 KeepAlive Özelliğini Açın

KeepAlive, aynı bağlantının birden fazla isteği yerine getirmesine olanak tanır ve bu da performansı artırır. /etc/apache2/apache2.conf dosyanıza şunu ekleyin:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

2.3 Cache Kontrolü Yapın

Tarayıcı önbelleğini etkinleştirmek, sitenizin hızını artırır. .htaccess dosyanıza şu kodu ekleyerek önbellekleme süresini belirleyebilirsiniz:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
</IfModule>

Bu ayarlar, tarayıcıların belirli dosyaları uzun süre önbellekte tutmasını sağlar.

2.4 PHP İşleyicisini Optimize Edin

mod_php yerine php-fpm kullanmak sunucu yükünü azaltır. Ubuntu/Debian’da aşağıdaki komutlarla php-fpm’i yükleyebilirsiniz:

sudo apt install php-fpm -y
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm
sudo systemctl restart apache2

Bu değişiklik, PHP işlenmesini daha verimli hale getirir.

2.5 CDN Kullanımı

Bir içerik dağıtım ağı (CDN), statik dosyaları daha hızlı yüklemeye yardımcı olur. Cloudflare veya AWS CloudFront gibi servisleri kullanarak sunucu yükünü azaltabilirsiniz.


Apache Modüllerinin Kısa Açıklamaları

Statik Modüller (static)

Bu modüller Apache’ye derlenmiş olup her zaman aktiftir.

  • core_module – Apache’nin temel işlevlerini sağlayan ana modüldür.
  • so_module – Dinamik olarak yüklenebilir modülleri (.so dosyalarını) yönetir.
  • watchdog_module – Apache’nin iç servisleri için zamanlanmış görevleri yönetir.
  • http_module – HTTP isteklerini işleyerek temel web sunucu işlevlerini sağlar.
  • log_config_module – Apache’nin erişim ve hata loglarını yönetir.
  • logio_module – Giden ve gelen veri miktarlarını loglara kaydetmeye yardımcı olur.
  • version_module – Apache sürüm bilgilerini görüntüleme desteği sağlar.
  • unixd_module – Apache’yi Unix/Linux sistemlerinde çalıştırmak için gerekli işlemleri yönetir.

Paylaşılan Modüller (shared)

Bu modüller dinamik olarak yüklenebilir ve Apache yapılandırma dosyası (httpd.conf) aracılığıyla etkinleştirilebilir.

  • access_compat_module – Apache 2.2 ve önceki sürümlerle uyumluluk için eski yetkilendirme kurallarını destekler.
  • actions_module – Belirli bir MIME türü veya uzantı için özel işlemleri tanımlamaya izin verir.
  • alias_module – URL yönlendirme (örneğin, /icons/ gibi sanal yollar tanımlama) işlemlerini yönetir.
  • auth_basic_module – HTTP temel kimlik doğrulama mekanizmasını sağlar.
  • authn_core_module – Kimlik doğrulama işlemleri için temel altyapıyı yönetir.
  • authn_file_module – Apache’nin kullanıcı kimlik bilgilerini bir dosyadan doğrulamasını sağlar.
  • authz_core_module – Yetkilendirme süreçlerinin çekirdek yönetimini sağlar.
  • authz_host_module – IP adresi veya alan adına dayalı erişim kontrolleri uygular.
  • authz_user_module – Kullanıcı bazlı yetkilendirme işlemlerini gerçekleştirir.
  • autoindex_module – Dizin indeksleme özelliğini sağlar, dizin içeriğini listelemeye izin verir.
  • deflate_module – GZIP sıkıştırma özelliğini etkinleştirerek bant genişliği kullanımını azaltır.
  • dir_module – Varsayılan dizin sayfalarını (index.html, index.php vb.) tanımlar.
  • env_module – Ortam değişkenlerini yönetmeye izin verir.
  • expires_module – Önbellekleme için son kullanma sürelerini belirlemeye yardımcı olur.
  • fcgid_module – FastCGI protokolü üzerinden PHP gibi dinamik dilleri çalıştırır.
  • filter_module – Apache’de içerik filtreleme işlemlerini yönetir.
  • headers_module – HTTP başlıklarını değiştirmeye veya yeni başlıklar eklemeye olanak tanır.
  • mime_module – Dosya türlerine uygun MIME türleri atayarak tarayıcıların içeriği doğru yorumlamasını sağlar.
  • mpm_event_module – Apache’nin yüksek performanslı bir şekilde çalışmasını sağlayan çok iş parçacıklı bir MPM (Multi-Processing Module).
  • negotiation_module – İçerik anlaşması sağlayarak istemcinin en uygun dil, karakter seti ve içerik türünü almasını sağlar.
  • proxy_module – Apache’yi bir ters proxy olarak kullanmaya olanak tanır.
  • proxy_fcgi_module – FCGI protokolü ile çalışan uygulamaların Apache üzerinden sunulmasını sağlar.
  • remoteip_module – Apache’nin istemcinin gerçek IP adresini doğru şekilde algılamasına yardımcı olur (örneğin, Cloudflare veya Proxy kullanırken).
  • reqtimeout_module – Çok uzun süren HTTP isteklerini zaman aşımına uğratarak sunucuyu korur.
  • rewrite_module – URL yeniden yazma işlemlerini yaparak SEO dostu veya özel URL yapıları oluşturur.
  • security2_module – ModSecurity güvenlik duvarı modülünü etkinleştirir, kötü niyetli istekleri engeller.
  • setenvif_module – HTTP başlıklarına ve belirli kurallara göre ortam değişkenleri ayarlamaya izin verir.
  • socache_shmcb_module – SSL oturumlarının hızlı önbelleklemesi için paylaşılan bellek tabanlı bir önbellek sağlar.
  • ssl_module – HTTPS desteğini etkinleştirerek SSL/TLS şifreleme sağlar.
  • status_module – Apache sunucusunun anlık durumu hakkında bilgi verir (örneğin, server-status sayfası).
  • unique_id_module – Her HTTP isteğine benzersiz bir kimlik atayarak loglama ve hata ayıklama işlemlerini kolaylaştırır.

Bu modülleri ihtiyacınıza göre etkinleştirebilir veya devre dışı bırakabilirsiniz. Apache’nin güvenli ve hızlı çalışması için gereksiz modülleri yüklememek en iyi uygulamalardan biridir.


Sonuç

Apache web sunucusunun güvenliği ve optimizasyonu, web sitenizin hem güvenli hem de hızlı olmasını sağlar. Bu yazıda, Apache’nin temel güvenlik yapılandırmalarını ve performans artırma tekniklerini ele aldık. Apache güvenliğini artırmak için gereksiz modülleri devre dışı bırakmalı, güncellemeleri yapmalı ve kritik dizinlere erişimi sınırlandırmalısınız. Performans için Gzip sıkıştırma, önbellekleme ve KeepAlive ayarlarını etkinleştirmek oldukça faydalıdır. Burada yer verilen bilgiler herkesin uygulayabileceği ilk adım konusunda size başlangıç sağlayabilir. Daha karmaşık sistemlerin optimizasyonu ve güvenliğinin sağlanması hizmetinize özel olarak ele alınmalı ve gerçekleştirilmelidir.

Bu adımları uygulayarak daha güvenli, hızlı ve SEO dostu bir web sitesi elde edebilirsiniz!

Etiketler:
Paylaşın: