- Konu sahibi
- #1
Apache 2.4 kullanıyorsanız
Bu yapılandırmada yalnızca
Örneğin yalnızca yönetim paneline erişim vermek için
Gerçek sunucuda
İhtiyaca göre doğru yaklaşım aşağıdaki gibidir:
Tek bir IP'yi engellemek, diğer ziyaretçilerin erişimini korumak için şu yapı kullanılabilir:
Apache 2.4 sunucusunda eski
Sunucu bir ters vekil, CDN veya yük dengeleyici arkasındaysa Apache istemci yerine vekilin IP adresini görebilir. Bu durumda tüm gerçek ziyaretçileri aynı IP olarak değerlendirip yanlışlıkla engelleme veya izin verme riski vardır. Önce Apache günlüklerindeki istemci adresinin gerçekten beklediğiniz adres olduğunu kontrol edin; gerekiyorsa sunucu yöneticisi
IP filtresi, yönetici parolası ve uygulama yetkilendirmesinin yerine geçmez. Aynı NAT veya VPN çıkışını birden fazla kişi paylaşabilir; izinli IP tek başına kullanıcı kimliğini kanıtlamaz.
Kullanabilir ancak IP değiştiğinde erişim kesilir. Bu durumda sabit VPN çıkış IP'si veya ayrıca kimlik doğrulama kullanmak daha uygundur.
Evet. Tek IPv6 adresi veya CIDR ağı
.htaccess içinde erişimi sınırlandırmanın önerilen yolu Require ip yönergesidir. Belirli IP adreslerine izin vermek için aşağıdaki örneği, korumak istediğiniz dizinin .htaccess dosyasına ekleyin:
Kod:
<RequireAny>
Require ip 192.0.2.10
Require ip 198.51.100.0/24
</RequireAny>
Bu yapılandırmada yalnızca
192.0.2.10 adresi ile 198.51.100.0/24 ağına ait istemciler erişebilir. Diğer ziyaretçiler genellikle 403 Forbidden yanıtı alır.Yapılandırma nasıl çalışır?
.htaccess dosyası, bulunduğu dizin ve altındaki kaynaklar için geçerlidir. Örneğin belge kökünüz gerçekten /public_html ise dosyayı /public_html/admin/.htaccess konumuna koyarak bu dizini kısıtlayabilirsiniz. Üst dizin, alt dizin ve sunucu yapılandırmasındaki diğer yetkilendirme kuralları da sonucu etkileyebilir. Site kök dizinindeki dosya ise kapsamına göre tüm siteyi etkileyebilir.Require ip tek bir IPv4 veya IPv6 adresini, kısmi IPv4 adresini ya da CIDR ağını kabul eder. Alternatif IP veya ağlara izin vermek için <RequireAny> kullanın: Koşullardan birinin eşleşmesi yeterlidir. <RequireAll> ise tüm olumlu koşulların birlikte sağlanmasını ister; iki ayrık ağı bu kapsayıcıya koymak anlatılan izin listesini oluşturmaz ve erişimi herkese kapatabilir.Örneğin yalnızca yönetim paneline erişim vermek için
/admin/.htaccess dosyasının en küçük tam içeriği şöyledir:
Kod:
Require ip 192.0.2.10
Gerçek sunucuda
192.0.2.10 yerine ofisinizin veya VPN çıkışınızın gerçek sabit IP adresini yazın. 192.0.2.0/24 gibi bir ağ tanımlarsanız o ağdaki tüm adresleri kapsarsınız; gereğinden geniş ağ kullanmak erişim kontrolünü zayıflatır.İzin verme ve engelleme kararları
İhtiyaca göre doğru yaklaşım aşağıdaki gibidir:
| Amaç | Örnek | Sonuç |
|---|---|---|
| Yalnız belirli IP'lere izin verme | Require ip 192.0.2.10 | Diğer tüm adresler engellenir |
| Belirli bir ağı izin listesine alma | Require ip 198.51.100.0/24 | Ağdaki istemciler erişebilir |
| Herkese açık alanı tek IP'den engelleme | <RequireAll> ile Require not ip | Belirtilen IP dışındakiler erişebilir |
Kod:
<RequireAll>
Require all granted
Require not ip 192.0.2.10
</RequireAll>
Require not ip tek başına kullanılmamalıdır; olumlu bir erişim koşulu olan Require all granted ile birlikte yazılmalıdır. Birden fazla engelli adres eklemek için aynı yapı içinde ek Require not ip satırları kullanabilirsiniz.Uygulama ve test adımları
- Mevcut
.htaccessdosyasının kopyasını yerel bilgisayarınızda veya webden erişilemeyen bir konumda saklayın; site içinde açık bir .bak dosyası bırakmayın. Geri dönüş için panel/FTP erişiminizi hazır tutun. - Apache 2.4 için
Require ipkullanan yapılandırmayı dosyaya ekleyin. Dosyanın başına veya sonuna rastgele HTML ya da PHP kodu koymayın. - Dosyayı UTF-8 metin olarak kaydedin ve Apache'nin okuyabildiği izinlerle sunucuya yükleyin.
- İzin verilen IP'den ilgili URL'yi açın; kaynak normal şekilde dönmelidir.
- İzin listesinde olmayan başka bir ağdan test edin; beklenen sonuç
403 Forbiddenyanıtıdır. 500 Internal Server Erroroluşursa değişikliği geri alıp Apache hata günlüğünü okuyun; sözdizimi, mod_authz_core/mod_authz_host ve izin verilen yönergeleri kontrol edin. Kural hiç etkili değilse dizin yolunu veAllowOverride AuthConfigveya uygunAllowOverrideListiznini doğrulayın.AllowOverride NoneveAllowOverrideList Nonebirlikteyse dosya okunmaz.
Sık yapılan hatalar
Apache 2.4 sunucusunda eski
Order, Allow from ve Deny from örneklerini yeni Require yönergeleriyle karıştırmayın. Eski sözdizimi geriye dönük uyumluluk modülüne bağlıdır ve yeni yapılandırmalar için önerilmez.Sunucu bir ters vekil, CDN veya yük dengeleyici arkasındaysa Apache istemci yerine vekilin IP adresini görebilir. Bu durumda tüm gerçek ziyaretçileri aynı IP olarak değerlendirip yanlışlıkla engelleme veya izin verme riski vardır. Önce Apache günlüklerindeki istemci adresinin gerçekten beklediğiniz adres olduğunu kontrol edin; gerekiyorsa sunucu yöneticisi
mod_remoteip yapılandırmasını yalnız güvenilen proxy adresleriyle sınırlandırmalıdır. İnternetten gelen herhangi bir X-Forwarded-For başlığına doğrudan güvenmek istemci IP’sinin taklit edilmesine yol açabilir.IP filtresi, yönetici parolası ve uygulama yetkilendirmesinin yerine geçmez. Aynı NAT veya VPN çıkışını birden fazla kişi paylaşabilir; izinli IP tek başına kullanıcı kimliğini kanıtlamaz.
Sık sorulan sorular
Dinamik IP kullanan bir kullanıcı bu yöntemi kullanabilir mi?
Kullanabilir ancak IP değiştiğinde erişim kesilir. Bu durumda sabit VPN çıkış IP'si veya ayrıca kimlik doğrulama kullanmak daha uygundur.
IPv6 adresi de yazılabilir mi?
Evet. Tek IPv6 adresi veya CIDR ağı
Require ip 2001:db8:1::/64 biçiminde tanımlanabilir. IPv4 ve IPv6 istemcileriniz varsa her ikisini de izin politikanıza ekleyin.