Web uygulamanız kullanıcılar tarafından proxy veya yük dengeleyici üzerinden erişildiğinde IIS loglarındaki IP alanı kullanıcıların gerçek IP adresi yerine ağ cihazlarının IP adresini gösterebilir.
Bu makalemde bu senaryoda gerçek kullanıcı IP adresini nasıl loglayabileceğinizi açıklayacağım.
Gerçek kullanıcı IP adresini bulmak ve loglamak için X-Forwarded-For
başlık bilgisini kullanabilirsiniz. Bu alan IIS tarafından varsayılan olarak loglanmaz bu yüzden manuel olarak eklemeniz gerekir.
X-Forwarded-For
alanını eklemek için custom logging kullanabilirsiniz. Özel loglamanın çalışma şekli IIS sürümüne göre farklılık gösterir.
IIS logların depolandığı dizin;
- IIS 7/7.5/8: %SystemDrive%\inetpub\logs\AdvancedLogs
- IIS 8.5 ve üzeri sürümlerde : %SystemDrive%\inetpub\logs\LogFiles
IIS 7/7.5/8 Üzerinde X-Forwarded-For Kolonu Ekleme;
- IIS Manager uygulamasını çalıştırınız,
- Server, site veya uygulama düzeyinde “Advanced Logging” ‘na çift tıklayınız.
- Sağ taraftaki Action bölmesinde “Enable Advanced Logging”e tıklayınız.
- Action bölmesinde “Günlük Alanlarını Düzenle”ye tıklayınız.
- Yeni pencerede “Add Field”ye tıklayınız.
- “Add Logging Filed” penceresinde aşağıdaki alanları doldurunuz.
Field ID: X-Forwarded-For
Source type: Response Header
Source name: X-Forwarded-For
- Orta bölmede, varsayılan günlük tanımı %COMPUTERNAME%-Server‘ı seçiniz. “Edit Log Definition”ye tıklayınız.
- “Select Logging Fields” tıklatınız.
- Listeden “X-Forwarded-For”u seçin. “OK”e tıklayınız.
- Action bölmesinde “Apply“ya tıklayınız.
Bu adımlardan sonra yeni bir log dosyasının oluşturulmasını bekleyiniz. Sütun değişiklikleri yalnızca yeni bir log dosyası oluşturulduktan sonra etkili olacaktır. Mevcut log dosyasını doldurmak için biraz trafik oluşturmanız gerekebilir.
Sunucu düzeyinde X-Forwarded-For başlığını eklemek için PowerShell komutu aşağıdadır;
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/siteDefaults/logFile/customFields" -name "." -value @{logFieldName='X-Forwarded-For';sourceName='X-Forwarded-For';sourceType='RequestHeader'}
IIS 8.5 ve Üstü Sürümlerde X-Forwarded-For Kolonu Ekleme;
IIS 8.5 ile birlikte Custom Logging yapılandırması daha kolay hale geldi. Aşağıdaki adımları izleyerek IIS loglarına X-Forwarded-For kolonunu ekleyebilirsiniz.
- IIS Yöneticisi’ni (IIS Manager) Açınız. Server seviyesinde “Logging” çift tıklayınız.
- “Select Fields” üzerine tıklayınız.
- “W3C Logging Fields” penceresinde, “Add Field” tıklayınız.
- “Add Custom Field” penceresinde aşağıdaki bilgileri doldurunuz.
Field Name: X-Forwarded-For
Source type: Request Header
Source: X-Forwarded-For
- Açık olan her iki açık pencerede de “OK“a tıklayınız ve ardından Action bölmesinde “Apply“ya tıklayınız.
Günlükler klasöründe yeni bir günlük dosyasının oluşturulmasını bekleyiniz. Yeni bir dosya oluşturulduğunda sütun değişiklikleri aktif hale gelecektir.
Forwarded-For sütununda bir IP adresi yerine bir tire (“-“) görüyorsanız, bu, istemcinin herhangi bir proxy veya yük dengeleyici kullanmadığı anlamına gelir. Bu durumda, istemcinin IP adresi “c-ip” sütununda kaydedilecektir. X-Forwarded-For sütununda birden fazla IP adresi görüyorsanız, bu, istemcinin birden fazla ağ aygıtından geçtiği anlamına gelir. Her ağ aygıtı, değer zincirinin sonuna kendi IP adresini ekler. En soldaki IP adresi, gerçek istemci IP adresidir; diğerleri ise istemcinin geçtiği ağ aygıtlarının IP adresleridir.