Apache Sunucu Güvenliği

Apache sunucusunun güvenliği için aşağıdaki adımları takip etmek önemlidir:

  1. Güncel Tutun: Apache sunucunuzu ve kullanılan diğer yazılımları (PHP, MySQL vb.) güncel tutun. Güncellemeler, güvenlik açıklarını düzeltir ve saldırılardan korunmanıza yardımcı olur.
  2. Güvenlik Duvarı (Firewall): Sunucunuzda güvenlik duvarı kullanın ve yalnızca gerekli portlara izin verin. Güvenlik duvarı, zararlı trafikleri engeller ve saldırılardan korur.
  3. DoS ve DDoS Saldırılarına Karşı Koruma: Apache sunucusunun DoS (Hizmet Reddi) ve DDoS (Dağıtık Hizmet Reddi) saldırılarına karşı dayanıklı olmasını sağlayın. Yüksek trafikli saldırılara karşı önlem almak için uygulamalar ve servisler kullanın.
  4. SSL Sertifikası: Web sitesini HTTPS protokolüyle çalıştırmak için SSL sertifikası kullanın. SSL, veri iletimini şifreleyerek güvenliği artırır ve kullanıcı bilgilerini korur.
  5. Güçlü Parolalar ve Erişim Kontrolleri: Sunucu, yönetici paneli ve veritabanları için güçlü parolalar kullanın. Ayrıca, erişim kontrolleriyle sadece yetkilendirilmiş kişilerin sunucuya erişmesini sağlayın.
  6. İzin Ayarları: Dosya ve klasör izinlerini uygun şekilde yapılandırın. İzinlerin gereksiz yere açık olması güvenlik açıklarına neden olabilir.
  7. Giriş Logları: Apache sunucusunun giriş loglarını düzenli olarak inceleyin. Bu loglar, olası saldırıları ve güvenlik ihlallerini tespit etmenize yardımcı olabilir.
  8. IP Engelleme: Tehdit oluşturan IP adreslerini engellemek için güvenlik duvarında IP engelleme (IP blocking) kullanın.
  9. HTTP Başlık Güvenliği: HTTP başlık güvenliği önlemleri alın. Örneğin, HTTP başlıklarında sunucu ve teknoloji bilgisi vermeyin.
  10. Kendi Kendini İmha Eden Dosyalar: Özellikle yükleme dosyaları gibi geçici dosyaların sunucuda kalmasını önleyin.

Bu adımlar, Apache sunucunuzun güvenliğini artırmaya yardımcı olacaktır. Ancak, güvenlik sürekli bir çabadır ve düzenli olarak sunucu güvenlik testleri ve denetimleri yapmak önemlidir. Ayrıca, güvenlik uzmanlarından danışmanlık almak ve güvenlik en iyi uygulamalarını takip etmek de önemlidir.

 Apache sunucu güvenliği için bazı bilgileri kullanıcılardan saklamata fayda vardır. Bunun için ilk olarak .haccess dosyası oluşturarak işe başlamak gerekir. Bu dosya ile birçok güvenlik önlemini alabilirsiniz.

.htaccess dosyasını / dizininde oluşturunuz. Dosya içeriği;

IndexIgnore *
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html
ErrorDocument 502 /error.html
ErrorDocument 503 /error.html
ErrorDocument 504 /error.html

PHP uzantısını silmek için
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

HTML uzantısını silmek için
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

Link sonundaki / işaretini silmek için
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

Şeklinde olabilir.

Apache Mod Security Yükleme

İlk olarak aşağıdaki linklerden dosya indirilir.

https://www.apachehaus.com/cgi-bin/download.plx

veya

https://www.apachelounge.com/download/

Daha sonra zip dosyası açılır. Dosya içindeki dosya mod_security2.so apache\modules klasörüne kopyalanır.

yajl.dll dosyası apache\bin klasörüne kopyalanır. Aşağıdaki satır http.conf dosyasına eklenir.

LoadModule security2_module modules/mod_security2.so
<IfModule security2_module>
    SecRuleEngine on
    ServerTokens Min
    SecServerSignature " "
</IfModule> 

Server yeniden başlatılır.

Bu modul için diğer seçenekler;

<IfModule mod_security.c>
    # Turn the filtering engine On or Off
    SecFilterEngine On
    # The audit engine works independently and
    # can be turned On of Off on the per-server or
    # on the per-directory basis
    SecAuditEngine RelevantOnly
    # Make sure that URL encoding is valid
    SecFilterCheckURLEncoding On
    # Unicode encoding check
    SecFilterCheckUnicodeEncoding On
    # Only allow bytes from this range
    SecFilterForceByteRange 1 255
    # Cookie format checks.
    SecFilterCheckCookieFormat On
    # The name of the audit log file
    SecAuditLog logs/audit_log
    # Should mod_security inspect POST payloads
    SecFilterScanPOST On
    # Default action set
    SecFilterDefaultAction "deny,log,status:406"
    # Simple example filter
    # SecFilter 111
    # Prevent path traversal (..) attacks
    # SecFilter "\.\./"
    # Weaker XSS protection but allows common HTML tags
    # SecFilter "<( |\n)*script"
    # Prevent XSS atacks (HTML/Javascript injection)
    # SecFilter "<(.|\n)+>"
    # Very crude filters to prevent SQL injection attacks
    # SecFilter "delete[[:space:]]+from"
    # SecFilter "insert[[:space:]]+into"
    # SecFilter "select.+from"
    # Require HTTP_USER_AGENT and HTTP_HOST headers
    SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"
    # Only accept request encodings we know how to handle
    # we exclude GET requests from this because some (automated)
    # clients supply "text/html" as Content-Type
    SecFilterSelective REQUEST_METHOD "!^GET$" chain
    SecFilterSelective HTTP_Content-Type "!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)"
    # Require Content-Length to be provided with
    # every POST request
    SecFilterSelective REQUEST_METHOD "^POST$" chain
    SecFilterSelective HTTP_Content-Length "^$"
    # Don't accept transfer encodings we know we don't handle
    # (and you don't need it anyway)
    SecFilterSelective HTTP_Transfer-Encoding "!^$"
</IfModule>

Http bağlantısını Https bağlantısına yönlendirme

Kullanıcıların kesinlikle 80 portundan sunucunuza gelememesi gereklidir. 80 portu güvenli olmadığı için aşağıdaki önlem alınabilir.

<VirtualHost *:80>
     ServerName adres.com
     ServerAlias *.adres.com
Redirect permanent / https://adres.com/
</VirtualHost>

<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,QSA]
</IfModule>


Google