Tag: Oracle

Weblogic’de Client IP adresini Görme (X-Forwarded-For)

Internet erişimlerinde bir proxy sunucusu kullanıldığı durumlarda, hedef web sunucusu orjinal isteği yapan kullanıcıya ait gerçek IP adresini göremez. Bunun yerine proxy cihazının IP adresi hedef sisteme bağlanıyor olarak gözükecektir.

Günümüz web uygulamaları birden fazla uygulama sunucusu ve veri tabanı sistemleri üzerinde çalışır. Temel anlamda tamamiyle aynı kaynak kodu paylaşan iki adet uygulama sunucusu düşünün. Kullanıcıdan gelen istekler, yük durumuna göre bu iki sunucudan herhangi birisi tarafından karşılanmak üzere hazırdır. Hangi talebin hangi uygulama sunucusuna aktarılacağının kararını, HTTP taleplerini uygulama sunucularının önünde karşılayan yük dengeleyici -load balancer- mekanizma yapar. Buda bizi, probleme sürükler. Kullanıcının gerçek IP adresi nedir ?

Proxy kelime olarak vekil sunucu anlamına gelir. Yani iki sistem arasındaki iletişimi taşımaktan sorumlu vekillerdir. Yukarıdaki resme bakıldığında da vekil(proxy) görevini load balancer’ın yüklendiği görülmektedir. Yani hem kullanıcı hemde uygulama sunucusu ile konuşan tek bir sistem mevcuttur. Ağ trafiği anlamında baktığımızda da web1 veya web2 sunucuları her zaman load balancer’ın IP adresi ile konuşmaktadır. Aynı durum kullanıcılar içinde geçerlidir pek tabi.

Proxy  sunucular  X-Forwarded-For HTTP başlığını, web isteğini yapan istemciye ait gerçek IP adresinin hedef sunucuya  iletmek için kullanmaktadırlar. Bu başlık RFC’lerde geçen bir standart olmamasına rağmen, genel kabul görmüş bir standarttır. İlk olarak Squid proxy geliştiricileri  tarafından  implemente  edilen  bu  başlık,  diğer  bir  çok  proxy  cihazında  da kullanılmaktadır. X-Forwarded-For HTTP başlığından kısaca XFF olarak da bahsedilmektedir.Bazı  cache  ve  proxy  cihazları  ise  X-Request-Client-IP,    X-Client-IP  HTTP  başlıklarını kullanmaktadırlar.

Yukarıdaki şekilde proxy sunucularının istemcilerin yaptığı web isteklerine “X-Forwarded-For: kullanıcının_ip_adresi” şeklinde bir satır eklemesinin detayı görülebilir. Bu sayede şekildeki proxy  sunucusu,  hedef  web  sunucusuna  bu  HTTP  isteğini  yapan  gerçek  istemciyi iletmektedir.X-Forwarded-For nerelerde kullanılır?X-Forwarded-For  (XFF)  HTTP  başlığı genelde log’lama amacıyla kullanılmaktadır. Bu şekilde siteyi ziyaret eden gerçek kullanıcının IP adresi log kayıtlarına aktarılmaya çalışılır. Bu kayıtlar, oluşan bir olay sonrası inceleme amaçlı kullanılabildiği gibi, web erişim log’larını analiz eden yazılımlar tarafından da kullanılabilir.

Weblogic Uygulama sunucularında X-Forwarded-For Enable Edilmesi

X-Forwarded-For ‘a değindikten sonra asıl amacımız olaran weblogic sunucularında gerçek client ip’yi nasıl görebiliriz ona odaklanalım;

Öncelikle bizim ortamda bulunan f5 tarafında yapmamız gereken bir takım değişiklikler var, yaptığımız bu değişiklik http header’ına X-Forwarded-For  diye yeni bir alan ekleyip bu alanın karşısınada gerçek kullanıcının ip’sini ekleyecektir. Bu konu f5’in konusu olduğu için bu konu ile ilgili detayları linkten görebilirsiniz.

Burada iki tane önemli gördüğüm konuda not düşmek istiyorum;

NOT 1 : Client X-Forwarded-For değeri manipule edebilir, mesela mozzilladaki bir plugin ile çok basit şekilde var olanın dışında bir ip’yi gönderebilir, bu tarz manipulasyonu önlemek için f5’e kural yazıp gelen X-Forwarded-For değerini en başta sildirip sonra source ip’sini X-Forwarded-For’a atayabiliriz. Kısaca aşağıdaki gibi bir kural;

when HTTP_REQUEST {
HTTP::header remove X-Forwarded-For    
HTTP::header insert X-Forwarded-For [IP::remote_addr]
}

NOT 2 : Genelde X-Forwarded-For konusunda sistemciler ve orta katmancılar ortak çalışırlar, sistemciler f5 gibi load balancer/proxy konfigurasyonunu halleder, orta katmancılar weblogic gibi uygulama sunucu kısmını halleder, işte bu noktada şöyle sıkıntılar olabiliyor; sistemciler ben sana X-Forwarded-For gönderdim sen yanlış konfigurasyon yapmışsın yada tam tersi orta katmancılar sen X-Forwarded-For göndermiyorsun yanlış konfigure yapmışsın gibisine sistemcileri suçlayabiliyor işte bunun önüne geçmek için X-Forwarded-For değerinin gelip gelmediğini tcpdump veya wireshark gibi bir araçla kontrol etmek işlerimizi kolaylaştıracaktır. Mesela aşağıda örnek bir sorgulama ve sonucu görebilirsiniz.

tcpdump -i bond1 -A -s 10240 | grep -v IP | egrep --line-buffered "..(GET |\.HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " |sed -r 's/..(GET |HTTP\/|POST |HEAD )/\n\n\1/g'
HTTP/1.1^M
Content-Type: application/x-www-form-urlencoded^M
Cache-Control: no-cache^M
Pragma: no-cache^M
User-Agent: Java/1.8.0_141^M
Host: sbbups.dtm.gov.tr^M
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2^M
Connection: keep-alive^M
Content-Length: 166^M
Cookie: JSESSIONID=xxxxxxxxxxxxxxxxxxxxxxxxxxx;
JSESSIONID=xxxxxxxxxxxxxxxxxxxxxxxxxxx;
X-Forwarded-For: 188.149.xxx.xxx^M

Gelelim ikinci adım olan weblogic kısmında yapacaklarımıza;

  • Admin Console’a giriş yapalım (http://server:port/console)
  • “Environment > Servers > My Server > Logging > HTTP” seçerek ilerleyelim,
  • Daha sonra “Lock & Edit” seçelim,
  • “HTTP access log file enabled” checkbox’ını seçelim,
  • “Advanced” diyerek seçenekleri genişletelim,
  • Formatı “Extended” olarak seçelim
  • Daha sonra “Extended Logging Format” kutusuna “cs(X-Forwarded-For)” parametresini ekleyelim
  • Daha sonra “Log File Buffer” seçeneğini 0 olarak ayarlayalım böylece loglar direk yazılır,
  • Sonra “Save” yapalım,
  • Sonrasında “Activate Changes” i seçeriz
  • Son olarak değişiklik yaptığmız manager serverı kapatıp açarız.

NOT : Burada “Extended Logging Format” kısmından access.log’umuza yazılacak logu istediğimiz gibi güncelleyebiliriz.Yandaki linkten bütün detayları linkten görebilirsiniz. Ben ayarı aşağıdaki yapıyorum bu arada.

 

date time cs-method cs-uri sc-status cs(user-agent) c-ip time-taken bytes cs(X-Forwarded-For)

Mustafa Bektaş Tepe
İyi Çalışmalar

Referanslar;

https://psadmin.io/2016/11/24/load-balancers-and-client-ip-addresses/
https://www.mehmetince.net/yuk-dengeleyiciler-ve-gercek-ip-adresi-karmasasi/
https://docs.oracle.com/middleware/1221/wls/CNFGD/web_server.htm#CNFGD207

Loading


Oracle SYS_CONTEXT nedir?

SYS_CONTEXT fonksiyonunu veri tabanına bağlı bulunduğumuz kullanıcı üzerinde set edilmiş sistem değişkenlerini(enviroment) toplamak için kullanabiliriz. Bu sayede kullanıcı üzerine atadığımız ya da otomatik olarak atanan tüm değerlere ulaşabiliriz.
Özellikle yazılım için de log mekanizması veya trigger larda çok fazla kullanıldığı gibi çokda iş görüyor.
Bu fonksiyon ile database üzerinden birçok veriye ulaşabiliriz. Kullanıcı bilgisi, ip bilgisi, tarih formatı, dil bilgisi vb.Örnegin; Veritabanı sid bilgisine ulaşmak için;

select sys_context('userenv','sid') from dual;

veya veritabanı ismine ulaşmak için aşagıdaki sql’den yararlanabiliriz.

select sys_context('userenv','db_name') from dual;

SYS_CONTEXT ile kullanabilecegimizparametrelerden bazıları aşagıda ki gibidir. (continue reading…)

Loading


Linux Üzerine Oracle 12c Veritabanı Kurulumu


Merhaba arkadaşlar bu yazdım da piyasaya yeni çıkmış olan ve beraberinde bir çok yenilik getiren Oracle 12c veritabanı kurulumunu yapacagız.

Ben kurulumu Oracle Enterprise Linux 6.4 üzerine yapacagım.

Oracle Veritabanı kurulumana başlamadan önce Oracle 12c’yi OTN’den indirmek için buraya,edilevery’den indirmek için buraya tıklamamız gerekir.

1.)Network arayüzünden konfigurasyon yapılmalıdır.Etherneti’mizi seçer “Edit” butonunu seçeriz.

oracle 12c database kurulum
(continue reading…)

Loading


SQL NEDİR-NE DEGİLDİR-TARİHÇESİ

   SQL‘in açılımı Structured Query Language yani Yapılandırılmış Sorgu Dili anlamındadır.

SQL verileri yönetmek ve tasarlamak için kullanılan bir veritabanı yönetim sistemidir.SQL’i programlama dilleriyle karıştırmamalıyız. SQL sadece veritabanı ortamında verileri yönetmek için kullanılan bir alt dildir.SQL ile yalnızca ilişkisel veri tabanları(Relatianol Database Management System) üzerinde işlem yapılabilir ve SQL hemen hemen tüm veritabanlarının ortak dilidir.

  • Oracle
  • Sysbase
  • Microsoft SQL Server
  • DB2
  • Informix
  • MySQL
  • Microsoft Acces

(continue reading…)

Loading


ORACLE HR USER

   Oracle HR user’ını anlatmamın sebebi de Oracle Dual tablosunda olduğu gibi örneklerimizin çogunu bu user üzerinden yapmamızdır.HR user’ı Oracle 11G Express Edition’u kurduğumuzda otomatikman veritabanımızda HR adlı bir user oluşturuyor ve içine birtakım tablolar,oracle nesneleri atıp bu nesnelerin içine de veriler ekliyor.Peki oracle neden böyle bir user oluşturup içine bir takım veriler atmakla ugraşıyo bunun sebebi Oracle’ın Oracle Express Edition versiyonu yani daha ziyade oracle’ı yeni öğrenmeye başlayanların kullandığı eğitim için olan versiyonu,oracle’ı yeni öğrenirken yapmak istediğimiz bir çok örnek için tek tek oracle nesneleri oluşturmak yerine oracle bize kendisinin oluşturduğu ve her türlü örneği üzerinde deneyebileceğimiz bir user oluşturuyor ve bizi her örnek için nesne oluşturdurmakla ugraştırdırmıyor.
NOT : Oracle’ı ilk kurduğumuzda HR adlı user’ımıza giremeyiz çünkü unlock(kilitlidir),bunu aşmak için ise SYS adlı user’dan girer HR adlı user’ımızı LOCK(açık) hale getiririz.Bunun için gereken kod parçası ;

alter user hr acoount unlock ;

Şimdi birazda HR adlı user’mızın içine bakalım; (continue reading…)

Loading


ORACLE DUAL TABLE

   Oracle’daki dual tablosunu anlatmamın sebebi bundan sonraki anlatacağım konularda örneklerimin genelini bu tabloyu kullanarak yapmamdır.Gelelim Oracle dual tablosuna oracle dual tablosunu Oracle firması sistem değişkenlerini veya ifadeleri hesaplamamız için kendisi oluşturmuştur.

  • Dual Table Oracle da Data Dictionary oluşturulurken üretilen bir tablodur.
  • Tablonun sahibi  Oracle’daki SYS kullanıcısıdır fakat her kullanıcıyada erişim hakkı verilmiştir. (Yani hangi user’dan girersek girelim dual tablosundan faydalanabiliriz)
  • Oracle dual tablosunun bir sütunu ve bir kaydı vardır. DUMMY isimli , VARCHAR2(1) veri tipinden oluşan bir sütuna sahiptir ve bu sütunun içindede de sadece x verisi vardır. (continue reading…)

Loading


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress