Forum

Reverse (Ters) Prox...
 
Bildirimler
Hepsini Temizle

Reverse (Ters) Proxy

11 Yazılar
3 Üyeler
0 Likes
4,230 Görüntüleme
(@SemihTUNALI)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Başka bir bilgisayara yönlendirme yapmak için ters proxy kurulacak makinede aynı zamanda site yayınlanıyorsa, sözde kod yapılandırması nasıl olmalıdır ?

Örneğin nginx kurulacak bir bilgisayarda www.başkabirdomain.com.tr domaini için bir site yayınlanıyorsa;

Sözde kod;

Port 443 için;

www.misalbirdomain.com.tr için yönlendir : 255.255.255.255

www.başkabirdomain.com.tr için yönlendir : localhost:XXXXX

gibi bir yapılandırma yeterli midir ?

 

1) Yönlendir: localhost:XXXX denilerek porta gelen istek, nginx kurulu makinada iis e mi gönderilmektedir ?

2) Sanırım porta gelen istek IIS e gitmeden önce Nginx tarafından yakalanıyor galiba, doğru mudur ?

 
Gönderildi : 23/01/2018 21:08

(@mertkibar)
Gönderiler: 855
Noble Member
 

Anladığım kadarıyla cloudflare alt yapısını çözmeye çalışıyorsunuz..

Böyle br alt yapıyı kendi bünyenizde kuracaksanız yapmanız gerekleri sıralayım.

Bir adet linux işletimi yüklü bir sunucuya ihtiyacınız olacak. Bu konuda cloudlinux işletim sistemi daha başarılıdır.

Cloudlinux işletim sistemi üzerine apache webserver kurmanız gerekiyor.

Mod_proxy apache modülünü kurmanız gerekiyor.

Bu modülü kurduktan sonra, apache virtualhost konfikasyonunu yapılandırmanız gerekiyor..

<VirtualHost *:80>

    ServerName www.cozumpark.com
    Serveralias cozumpark.com

    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog ${APACHE_LOG_DIR}/error.log

    ProxyPass / http://192.168.10.1:8080/
    ProxyPassReverse / http://192.168.10.1:8080/

</VirtualHost>

üsteki ornekte anlatıldığı gibi virtualhost config sayfasında cozumpark.com 80 portuna gelen istekler 192.168.10.1 ip sindeki 8080 portundaki web sunucuya gitmektedir..

Ayrıca apache üzerinde webcahce modülünüde aktif etmeniz gerekiyor. 192.168.10.1 ipden gelen istekler apache server üzerinde cache olarak tutulacak ve yayına çıkacaktır.

Bu işlemler bittikten sonra apache üzerine nginx serveri kurmanız gerekiyor. 

Bu işlemde apache ile diğer web server arasında proxy kuruldu.

Ayrıca hack ataklarından da korunmak isteniyorsa proxy yapılan sunucu ile internet çıkış noktasına firewall eklenerek proxy servisi aktif edilebilir. Bu sayede siteye ulaşmak isteyen birisi doğrudan sunucuya değil firewalla bağlanıp onun üzerinden erişim yapacaktır.

Cloudflare buna benzer bir alt yapıda çalışıyor.. Kısaca anlattım..

 

 
Gönderildi : 23/01/2018 23:41

(@SemihTUNALI)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Anladığım kadarıyla cloudflare alt yapısını çözmeye çalışıyorsunuz..

Böyle br alt yapıyı kendi bünyenizde kuracaksanız yapmanız gerekleri sıralayım.

Bir adet linux işletimi yüklü bir sunucuya ihtiyacınız olacak. Bu konuda cloudlinux işletim sistemi daha başarılıdır.

Cloudlinux işletim sistemi üzerine apache webserver kurmanız gerekiyor.

Mod_proxy apache modülünü kurmanız gerekiyor.

Bu modülü kurduktan sonra, apache virtualhost konfikasyonunu yapılandırmanız gerekiyor..

<VirtualHost *:80>

    ServerName www.cozumpark.com
    Serveralias cozumpark.com

    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog ${APACHE_LOG_DIR}/error.log

    ProxyPass / http://192.168.10.1:8080/
    ProxyPassReverse / http://192.168.10.1:8080/

</VirtualHost>

üsteki ornekte anlatıldığı gibi virtualhost config sayfasında cozumpark.com 80 portuna gelen istekler 192.168.10.1 ip sindeki 8080 portundaki web sunucuya gitmektedir..

Ayrıca apache üzerinde webcahce modülünüde aktif etmeniz gerekiyor. 192.168.10.1 ipden gelen istekler apache server üzerinde cache olarak tutulacak ve yayına çıkacaktır.

Bu işlemler bittikten sonra apache üzerine nginx serveri kurmanız gerekiyor. 

Bu işlemde apache ile diğer web server arasında proxy kuruldu.

Ayrıca hack ataklarından da korunmak isteniyorsa proxy yapılan sunucu ile internet çıkış noktasına firewall eklenerek proxy servisi aktif edilebilir. Bu sayede siteye ulaşmak isteyen birisi doğrudan sunucuya değil firewalla bağlanıp onun üzerinden erişim yapacaktır.

Cloudflare buna benzer bir alt yapıda çalışıyor.. Kısaca anlattım..

 

 

Selamlar Mert Bey;

aslında ben reverse proxy olarak çalışacak bilgisayara herhangi bir sertifika ve key tanıtmadan (nginx tarafında) gelen https bağlantıları yönlendirmek istedim.

port 443 dinlendiğinde, sertifika ve key yok ise, bu bağlantılar başka bir bilgisayara yönlendirilebilir mi ?

misal;

listen 443; (sözde kod)

www.falanfilantest.com.tr yönlendir : 111.111.111.111

www.başkadomain.com.tr yönlendir : localhost:1234

gibi birşey mümkün müdür ?

 

https kullanıldığında şifresiz ve şifreli yerler doğru işaretlenmiş midir ?

https://www.falanfilantest.com.tr /kategori/3455666

dolayısıyla yönlendirme yaparken, host tarafını yani www.falanfilantest.com.tr adresine göre yönlendirmek mümkün müdür ?

 
Gönderildi : 24/01/2018 02:05

(@turancoskun)
Gönderiler: 4100
Üye
 

merhaba,

reverse proxy tarafında farklı portlar belirterek, trafiği yönlendirmeniz mümkün.

https://test.local  -> webserver1 -> 443

http://test.local:5000  -> webserver1 -> 80

ngnix tarafında tecrübeniz yok ise, pfsense üzerinde squid ile reverse proxy konumlandırabilirsiniz.

referans adres fikir verecektir.

https://blogs.technet.microsoft.com/nexthop/2014/04/07/configuring-pfsense-as-a-reverse-proxy-for-lync-web-services/

****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 24/01/2018 06:06

(@SemihTUNALI)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

merhaba,

reverse proxy tarafında farklı portlar belirterek, trafiği yönlendirmeniz mümkün.

https://test.local  -> webserver1 -> 443

http://test.local:5000  -> webserver1 -> 80

ngnix tarafında tecrübeniz yok ise, pfsense üzerinde squid ile reverse proxy konumlandırabilirsiniz.

referans adres fikir verecektir.

https://blogs.technet.microsoft.com/nexthop/2014/04/07/configuring-pfsense-as-a-reverse-proxy-for-lync-web-services/

 

Turan Bey Selamlar,

aslında

A <-----------> B <---------------> C

A: Ulaşılmak istenen esas bilgisayar (misal static ip: 111.111.111.111)

B: Ters Proxy yapılandırmalı bilgisayar (kesinlikle IIS ya da Nginx tarafında SSL serfifikası tanımlı değil) (misal static ip: 222.222.222.222)

C: https (güvenli) bağlantısı ile ana bilgisayara ulaşmaya çalışan client

 

domain : www.falanfilantest.com.tr dns kaydı: 222.222.222.222

 

C bilgisayarı www.falanfilan.com.tr alan adını giriyor browser'a, 222.222.222.222 ip numaralı B bilgisayarına gidiyor.

B bilgisayarı IIS ya da nginx tarafında hiçbir sertifika tanımlı olmadığı halde, şifreli olan bir bağlantıyı aşağıdaki sözde kurala göre A bilgisayarına yönlendirebilir mi ?

Sözde kod kural;

listen 443; (güvenli bir bağlantı ama B bilgisayarında IIS ya da Nginx tarafında SSL tanımlı değil)

eğer www.falanfilan.com.tr ise 111.111.111.111 git

eğer www.falanbaşkafilan.com.tr ise localhost:XXXXXX git

eğer www.misaldomaintest.com.tr ise reddet

denilebilir mi ???

 

Bunun dışında Turan Bey, bir ölçüde bu işlemleri windows server daki netsh komutları ile yapılması mümkün müdür ?

port yönlendirmek ile birlikte (netsh komutu ile) filtreleme mümkün müdür ?

ip ye göre, (111.111.111.111 izin ver; 222.222.222.222 reddet gibi)

domaine göre, (www.falanfilantest.com.tr izin ver; www.birbaşkadomain.com.tr reddet gibi)

boyuta göre, ( istek 5 KB MAX ise izin ver gibi)

ya da süreye göre ? ( bağlantı 2 saniyeden fazla ise reddet gibi )

 

Aydınlattığınız için teşekkürler.

 
Gönderildi : 24/01/2018 20:32

(@turancoskun)
Gönderiler: 4100
Üye
 

A <-----------> B <---------------> C

A: Ulaşılmak istenen esas bilgisayar (misal static ip: 111.111.111.111)

B: Ters Proxy yapılandırmalı bilgisayar (kesinlikle IIS ya da Nginx tarafında SSL serfifikası tanımlı değil) (misal static ip: 222.222.222.222)

C: https (güvenli) bağlantısı ile ana bilgisayara ulaşmaya çalışan client

domain : www.falanfilantest.com.tr dns kaydı: 222.222.222.222

C bilgisayarı www.falanfilan.com.tr alan adını giriyor browser'a, 222.222.222.222 ip numaralı B bilgisayarına gidiyor.

B bilgisayarı IIS ya da nginx tarafında hiçbir sertifika tanımlı olmadığı halde, şifreli olan bir bağlantıyı aşağıdaki sözde kurala göre A bilgisayarına yönlendirebilir mi ?

Sözde kod kural;

listen 443; (güvenli bir bağlantı ama B bilgisayarında IIS ya da Nginx tarafında SSL tanımlı değil)

eğer www.falanfilan.com.tr ise 111.111.111.111 git

eğer www.falanbaşkafilan.com.tr ise localhost:XXXXXX git

eğer www.misaldomaintest.com.tr ise reddet

denilebilir mi ???

reverse proxylerin temel amacı trafiği istediğiniz gibi yönlendirmek olduğundan, talebinizi gerçekleştirebilirsiniz.

http://www.giuseppeurso.eu/en/redirect-from-http-to-https-and-viceversa-with-apache-proxypass/

en basit hali ile yine reverse proxylerin tercih sebeplerinden biri ssl offloading'dir, sizin düşündüğünüz mimari bu avantajı elden alıyor.

kurmak istediğiniz yapı ile neyi amaçlıyorsunuz ?

reverse proxy üzerinde tanımlı adreslere cevap verecektir, doğal olarak tanımlı olmayan bir domain için cevap alamazsınız.

 

Bunun dışında Turan Bey, bir ölçüde bu işlemleri windows server daki netsh komutları ile yapılması mümkün müdür ?

port yönlendirmek ile birlikte (netsh komutu ile) filtreleme mümkün müdür ?

ip ye göre, (111.111.111.111 izin ver; 222.222.222.222 reddet gibi)

domaine göre, (www.falanfilantest.com.tr izin ver; www.birbaşkadomain.com.tr reddet gibi)

boyuta göre, ( istek 5 KB MAX ise izin ver gibi)

ya da süreye göre ? ( bağlantı 2 saniyeden fazla ise reddet gibi ) 

 

netsh ile block/pass mümkün, ancak yönetimi zor olacaktır.

boyut, süre vb. talepleriniz için, rate limitlerde size sunulanları kullanabilirsiniz, araştırmalısınız.

yapınız uygun ise, ngnix, haproxy veya varnish'i incelemenizi öneririm.

inceleme ve karşılaştırma için referans adresler fazlası ile fikir verecektir.

https://www.scalescale.com/nginx-haproxy-varnish-comparison/

https://www.haproxy.com/blog/haproxy-and-varnish-comparison/

https://thehftguy.com/2016/05/23/system-design-combining-haproxy-nginx-varnish-and-more-into-the-big-picture/

 

 

****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 27/01/2018 04:42

(@SemihTUNALI)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

A <-----------> B <---------------> C

A: Ulaşılmak istenen esas bilgisayar (misal static ip: 111.111.111.111)

B: Ters Proxy yapılandırmalı bilgisayar (kesinlikle IIS ya da Nginx tarafında SSL serfifikası tanımlı değil) (misal static ip: 222.222.222.222)

C: https (güvenli) bağlantısı ile ana bilgisayara ulaşmaya çalışan client

domain : www.falanfilantest.com.tr dns kaydı: 222.222.222.222

C bilgisayarı www.falanfilan.com.tr alan adını giriyor browser'a, 222.222.222.222 ip numaralı B bilgisayarına gidiyor.

B bilgisayarı IIS ya da nginx tarafında hiçbir sertifika tanımlı olmadığı halde, şifreli olan bir bağlantıyı aşağıdaki sözde kurala göre A bilgisayarına yönlendirebilir mi ?

Sözde kod kural;

listen 443; (güvenli bir bağlantı ama B bilgisayarında IIS ya da Nginx tarafında SSL tanımlı değil)

eğer www.falanfilan.com.tr ise 111.111.111.111 git

eğer www.falanbaşkafilan.com.tr ise localhost:XXXXXX git

eğer www.misaldomaintest.com.tr ise reddet

denilebilir mi ???

reverse proxylerin temel amacı trafiği istediğiniz gibi yönlendirmek olduğundan, talebinizi gerçekleştirebilirsiniz.

http://www.giuseppeurso.eu/en/redirect-from-http-to-https-and-viceversa-with-apache-proxypass/

en basit hali ile yine reverse proxylerin tercih sebeplerinden biri ssl offloading'dir, sizin düşündüğünüz mimari bu avantajı elden alıyor.

kurmak istediğiniz yapı ile neyi amaçlıyorsunuz ?

reverse proxy üzerinde tanımlı adreslere cevap verecektir, doğal olarak tanımlı olmayan bir domain için cevap alamazsınız.

 

Bunun dışında Turan Bey, bir ölçüde bu işlemleri windows server daki netsh komutları ile yapılması mümkün müdür ?

port yönlendirmek ile birlikte (netsh komutu ile) filtreleme mümkün müdür ?

ip ye göre, (111.111.111.111 izin ver; 222.222.222.222 reddet gibi)

domaine göre, (www.falanfilantest.com.tr izin ver; www.birbaşkadomain.com.tr reddet gibi)

boyuta göre, ( istek 5 KB MAX ise izin ver gibi)

ya da süreye göre ? ( bağlantı 2 saniyeden fazla ise reddet gibi ) 

 

netsh ile block/pass mümkün, ancak yönetimi zor olacaktır.

boyut, süre vb. talepleriniz için, rate limitlerde size sunulanları kullanabilirsiniz, araştırmalısınız.

yapınız uygun ise, ngnix, haproxy veya varnish'i incelemenizi öneririm.

inceleme ve karşılaştırma için referans adresler fazlası ile fikir verecektir.

https://www.scalescale.com/nginx-haproxy-varnish-comparison/

https://www.haproxy.com/blog/haproxy-and-varnish-comparison/

https://thehftguy.com/2016/05/23/system-design-combining-haproxy-nginx-varnish-and-more-into-the-big-picture/

 

 

 

Merhabalar Turan Bey;

Aslında en nihayeti bir tcp yazılımı geliştirmek gerekcek sanırım.

Aslında forumda hosting konusunda bir önceki sorumda bahsettiğim üzere sadece gelen client talebini karşılayacak filtre bilgisayara ihtiyacım var.

Port yönlendirme yapacağım ve client den gelen talepleri önce bu yönlendirme görevini üstelenecek bilgisayar karşılayacak ve ip filtreleme yapacak.

İhtiyaç bundan ibaret ama asıl sorun, buna en uygun port yönlendirme olmasına rağmen client ip sini port yönlendirirken tcp header ında belirtmek gerekecek.

www.citrix.com/blogs/2016/04/25/how-to-enable-client-ip-in-tcpip-option-of-netscaler/ makalesinde bir yöntem anlatıyorlar.

Port yönlendirmede yönlendirilen verinin gönderici client ın ipsini tcp paketine nasıl eklenebilir, bu konuda bir öneri verebilir misiniz ?

Çünkü talebi alacak sunucu port yönlendiren bilgisayarın ip numarasını client ip olarak addetmekte.

 

Teşekkürler.

 
Gönderildi : 27/01/2018 04:54

(@turancoskun)
Gönderiler: 4100
Üye
 

nlb üreticilerinin farklı çözümleri mevcut, netscaler'ın çözümüde alternatif.

Mehmet hocanın konu hakkında referans alınabilecek detaylı bir yazısı mevcut, f5 örneğide talebinizi karşılar diye düşünüyorum.

https://www.mehmetince.net/yuk-dengeleyiciler-ve-gercek-ip-adresi-karmasasi/

 

****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 27/01/2018 19:58

(@SemihTUNALI)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

nlb üreticilerinin farklı çözümleri mevcut, netscaler'ın çözümüde alternatif.

Mehmet hocanın konu hakkında referans alınabilecek detaylı bir yazısı mevcut, f5 örneğide talebinizi karşılar diye düşünüyorum.

https://www.mehmetince.net/yuk-dengeleyiciler-ve-gercek-ip-adresi-karmasasi/

 

Makaledeki bu örnek SSL yüklü -http X-Forwarded-For- etiketine erişebilen load balancerlar için geçerli.

Yine de vakit ayırdığınız için teşekkür ederim.

 
Gönderildi : 27/01/2018 20:53

(@turancoskun)
Gönderiler: 4100
Üye
 

yazıda belirtilen f5 komutu için ssl zorunluluğu bulunmuyor, http requestler için kullanabilir.

ngnix tarafında benzer bir yapı için referans adresi inceleyebilirsiniz.

https://easyengine.io/tutorials/nginx/forwarding-visitors-real-ip/

****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 27/01/2018 23:14

(@SemihTUNALI)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

yazıda belirtilen f5 komutu için ssl zorunluluğu bulunmuyor, http requestler için kullanabilir.

ngnix tarafında benzer bir yapı için referans adresi inceleyebilirsiniz.

https://easyengine.io/tutorials/nginx/forwarding-visitors-real-ip/

 

Merhabalar Turan Bey,

benim bildiğim kadarıyla

domain host dışında bir http request içerisinde yer alan -tabii güvenli bir https bağlantısından bahsediyorum-

Kırmızı : şifreli

Yeşil : şifresiz

olmak üzere;

www.örnekbirdomain.com.tr/parametreler/IDler

hostname: www.örnekbirdomain.com.tr

get parametre: /parametreler/IDler

post parametre: XXX

x-forwarded-for: XXX.XXX.XXX.XXX

şeklinde. Bilmiyorum, hatalı mı biliyorum ?

Bildiğim kadarıyla x-forwarded-for etiketi değerleri de https ile şifreleniyor. Yani bu etikete değer eklemek için nginix ya da diğer programlar vasıtasıyla SSL sertifika tanımlamasına ihtiyaç duyuluyor diye söylemişlerdi.

 

x-forwarded-for: XXX.XXX.XXX.XXX değeri şifresiz midir ?

 
Gönderildi : 28/01/2018 01:03

Paylaş: