15.03.10, 12:49 | #1 |
Linux Apache Konfigürasyonunuzu Güvenli Hale Getirmenin 20 Yolu
ApaCheyi GüvenLi HaLe Getirme - Linux ApaChe AyarLarı
İlk olarak en son yamaları geçtiğinize emin olun Eğer kapınız açık ise pencerelere kilit koymanın bir mantığı yoktur. Aynı şekilde, eğer gerekli yamaları kurmadıysanız, diğer önerilere yamaları geçtikten sonra bakın. Apache sürüm numarasını ve diğer bilgileri gizleyin Varsayılan olarak, bütün Apache kurulumları bütün dünyaya hangi Apache sürümünü, işletim sistemini çalıştırdığınızı ve hatta hangi Apache modüllerinin sunucuda kurulu olduğunu söyleyecektir. Saldırganlar bu bilgileri kullanırlar. Ayrıca varsayılan ayarları ellemediğinizi belirten bir mesaj da verilmiş olur. httpd.conf dosyasında aşağıdaki iki direktifi vermeniz gerekiyor: ServerSignature Off ServerTokens Prod ServerSignature direktifi 404 sayfaları, klasör listeleri gibi apache tarafından yaratılan sayfaların en altında bilgilerin görüntülenmesi ile ilgilidir. ServerTokens direktifi ise Apache'nin HTTP cevap başlığında Server kısmına ne yazacağını belirler. Bunu Prod'a set ederek HTTP cevabında aşağıdaki şekilde cevap verdirmek mümkün: Server: Apache Eğer fazla paranoyaksanız bunu da kaynak kodunda değişiklik yaparak veya mod_security kullanarak (aşağıda anlatılıyor) değiştirebilirsiniz. Apache'yi kendi kullanıcı hesabı ve grubunda çalıştırın Çeşitli apache kurulumları nobody kullanıcı hesabı ile çalışır. Eğer hem Apache hem de Eposta sunucunuzun da nobody kullanıcı hesabı ile çalıştırıldığını varsayarsak, Apache'ye yapılan başarılı bir saldırı sonrası eposta sunucusunun da ele geçirilmesi veya bunun tersi mümkün olabilir. User apache Group apache Web klasörünün dışındaki dosyalara erişimi engelleyin Apache'nin web ana klasörü dışındaki dosyalara erişimini istemeyiz. Bütün web sitelerinizin aynı klasör altında olduğunu varsayarsak (örnekte /web olarak geçiyor) aşağıdaki gibi bir ayar yapmalısınız: Order Deny,Allow Deny from all Options None AllowOverride None Order Allow,Deny Allow from all Not: Options None ve AllowOverride None set ettiğimiz için bu sunucunun tüm override işlemlerini kapatacaktır. Bu sebeple Option veya Override gerektiren her bir klasör için elle ekleme yapmanız gerekir. Klasör içeriği görüntülemeyi kapatın Bunu bir Directory tag'i içerisinde Options ile yapabilirsiniz. Options'ı None veya -Indexes olarak set edin: Options -Indexes Sunucu tarafı dahil etmeleri (server side include) kapatın Bu da Directory tag'i içerisinde Options ile yapılıyor. Options'ı None veya -Includes olacak şekilde ayarlayın: Options -Includes CGI çalıştırmayı kapatın Eğer CGI kullanmıyorsanız Directory tag'i içerisinde Options'da set ederek kapatın. Options'ı None veya -ExecCGI olarak set edin: Options -ExecCGI Apache'nin sembolik link'leri takip etmesine izin vermeyin Bu da Directory tag'i içerisinde Options ile yapılıyor. Options'ı None veya -FollowSymLinks olacak şekilde ayarlayın: Options -FollowSymLinks Bütün Options özelliklerinin kapatılması Bütün Options'ları kapatmak istiyorsanız, Options None olarak set edin. Birden fazla özellik kapatmak isterseniz aynı satır içerisinde boşluk vererek belirtin: Options -ExecCGI -FollowSymLinks -Indexes .htaccess dosyaları için desteğin kaldırılması Bu Directory tag'i içerisinde AllowOverride direktifi ile yapılıyor. None olacak şekilde ayarlayın: AllowOverride None Eğer Overrides'a ihtiyacınız varsa indirilemediklerinden (download) ve/veya isimlerini .htaccess'den başka bir şeye değiştirin. Örneğin .httpdoverride olarak değiştirelim ve .ht ile başlayan bütün dosyaların indirilmesini engelleyelim: AccessFileName .httpdoverride Order allow,deny Deny from all Satisfy All mod_security çalıştırın mod_security, Apache Security kitabının da yazarı olan Ivan Ristic tarafından hazırlanmış yararlı bir Apache modülüdür. mod_security ile aşağıdakileri yapabilirsiniz: * Basit filtreleme * Regular Expression tabanlı filtreleme * URL kodlama kontrolü * Unicode kodlama kontrolü * Denetim (Auditing) * Null byte saldırısı önleme * Upload hafıza sınırları * Sunucu kimliği maskeleme * Dahili chroot desteği * ve dahası Gereksiz modülleri kapatın Apache tipik olarak çeşitli modüllerle birlikte kurulmaktadır. Apache modül dokümantasyonuna göz atarak hangi modülün ne yaptığını öğrenin. Aktif durumda olan bazı modüllere ihtiyacınız olmayabilir. httpd.conf dosyasında LoadModüle içeren satırlara bakın. Bir modülü devre dışı bırakmak için basitçe satırın başına bir # işareti koyun (comment out). Modülleri aratmak için grep LoadModule httpd.conf komutunu çalıştırın. Genelde aktif olan fakat ihtiyaç duyulmayan modüllere örnek olarak, mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex verilebilir. [değiştir] Apache'nin konfigürasyon ve çalıştırılabilir dosyalarına sadece root'un okuma izni olsun Eğer Apache kurulumunuzun /usr/local/apache olduğunu varsayarsak: chown -R root:root /usr/local/apache chmod -R o-rwx /usr/local/apache Timeout değerini düşürün Timeout (zaman aşımı) süresi varsayılan olarak 300 saniyeye ayarlıdır. Servis kullanımı engelleme saldırılarının (DoS) potansiyel etkilerini azaltmak için bunu düşürebilirsiniz: Timeout 45 Büyük boyutlu isteklerin sınırlanması Apache bir http isteğinin boyutunu sınırlamanıza izin veren çeşitli direktifler sunar. Bu özellik de servis kullanımı engelleme saldırılarının etkilerini azaltmak için kullanılabilir. Başlangıç olarak LimitRequestBody direktifi kullanılabilir. Bu direktif varsayılan olarak unlimited/sınırsız olarak ayarlıdır. Eğer 1mb'ın üzerinde dosya gönderimine izin vermiyorsanız bunu: LimitRequestBody 1048576 olarak set edebilirsiniz. Eğer dosya gönderimlerine (upload) izin vermiyorsanız daha da düşük tutabilirsiniz. Bakılabilecek diğer direktifler ise LimitRequestFields, LimitRequestFieldSize ve LimitRequestLine. Bu direktifler çoğu sunucu için varsayılan olarak makul değerlere ayarlıdır fakat ihtiyaçlarınıza göre değişiklik yapabilirsiniz. Detaylı bilgi için Apache dokümanına göz atın. XML Body boyutunu sınırlamak Eğer mod_dav kullanıyorsanız bir XML isteğinin gövedesinin maksimum boyutunu sınırlamak isteyebilirsiniz. LimitXMLRequestBody sadece Apache 2'de var ve varsayılan değeri 1 milyon byte (yaklaşık 1mb). Çoğu makalede eğer WebDAV kullanıyor ve büyük dosyalar upload ediliyorsa, bu değeri 0'a set ederek boyut sınırlamasının kaldırılmasından bahsedilir. Fakat sadece kaynak (source) kontrol için kullanıyorsanız bu değeri 10mb gibi bir değerle sınırlayabilirsiniz: LimitXMLRequestBody 10485760 Aynı anda kullanım (concurrency) sınırlaması Apache aynı anda yapılan istekleri işleme ile ilgili olarak çeşitli konfigürasyon ayarları sunar. MaxClients isteklere hizmet için maksimum olarak kaç child process'in yaratılacağını belirler. Eğer sunucunuzun çok sayıda concurrent isteği karşılayacak kadar hafızası yoksa bu değeri yüksek tutmak isteyebilirsiniz. MaxSpaceServer, MaxRequestsPerChild ve Apache2 deki ThreadsPerChild, ServerLimit, ve MaxSpareThreads direktifleri de işletim sistemi ve donanımınıza uyacak şekilde ayarlanabilir. Erişimleri IP'ye göre kısıtlama Eğer sadece belirli bir ağdan veya IP adresinden erişilmesi gereken kaynaklarınız varsa bunu apache konfigürasyonunda ayarlayabilirsiniz. Örneğin intranet'inize sadece 176.16 ağından erişim yapılmasını istiyorsanız: Order Deny,Allow Deny from all Allow from 176.16.0.0/16 veya IP kısıtlaması: Order Deny,Allow Deny from all Allow from 127.0.0.1 KeepAlive ayarları Apache dokümantasyonuna göre HTTP Keep Alive özelliği istemci performansını %50 oranında artırmaktadır. Bu sebeple bu ayarları değiştirirken dikkatli olun, servis kullanımı engelleme saldırısına karşı az bir koruma sağlarken performans'dan önemli ölçüde ödün verebilirsiniz. KeepAlive varsayılan olarak aktiftir ve açık bırakabilirsiniz, fakat varsayılan olarak 100 olan MaxKeepAliveRequests değerini ve 15'e ayarlı olan KeepAliveTimeout değerini değiştirebilirsiniz.Log dosyalarınızı analiz ederek uygun değerleri bulmaya çalışın. Apache'yi chroot ortamında çalıştırın chroot programları kendi ayrıştırılmış hapishanelerinde (jail) çalıştırmanızı sağlar. Bu da bir servisin kırılma durumunda sunucudaki diğer şeyleri etkilemesini engeller. Yukarıda mod_security modülünün kendisinin chroot desteği olduğunu söylemiştim. Bu modül sayesinde aşağıdaki direktifi eklemek yeterli: SecChrootDir /chroot/apache Fakat bazı uyarılar da yapılıyor, ayrıntılı bilgi için dokümanına göz atın. ww.uydulife.tv
__________________
|
|
Bookmarks |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
Seçenekler | |
Stil | |
|
|