Neden Cloudflare Kullanıyoruz?
Daha önceki bir yazımda nasıl loadbalancing yaptığımızdan bahsetmiştim. Bu yazımda loadbalancing yapmanın neden sakıncalı ve yetersiz olduğundan bahsetmek istiyorum.
Loadbalancer gelen kullanıcı isteklerini uygulama sunucularını aktarmak için kullanılan bir çeşit reverse proxy. Biz aktif ve pasif olacak şekilde iki adet loadbalancer kullanıyoruz. Bu sunucuların belli bir kapasitesi var ve bu kapasite sınırına gelindiğinde, uygulama erişilemez hale gelecektir. Birden fazla loadbalanceri paralel kullanmak da mümkün değil, eğer yükü birden fazlasına dağıtabilirim diye düşünüyorsanız. Bunun için servis sunucuların kullandıkları ve network L3 seviyesinde çalışan yüksek performanslı cihazlar mevcut. Örneğin gcp ya da aws bunlar aracılığı ile sorunsuz tüm trafiği yönetebiliyorlar. Ama bunu kendiniz yapmak zorunda kaldığınızda, çünkü bulut bilişim için bütçeniz yeterli değildir ve kendi sunucularınız ile çalışmak zorundasınızdır, o taktirde tek çözüm iki sunucu ile aktif/pasif modda bir loadbalancing altyapısı kurmaktır ki bu da yük arttığında başınıza iş açacak demektir.
Böyle basit bir loadbalancing konfigürasyonu ile milyonlarca kullanıcı istediğini karşılamak mümkün. Bunun için haproxy ya da nginx reverse proxy olarak kullanılabilir. Ama asıl sorun kullanıcı istekleri değil. Asıl sorun DOS (denial of service) ve DDOS (distibuted dos) atakları. Siz sunucularınızı kullanıma açtığınız andan itibaren, doğrudan birilerinin hedefine oturma ihtimali ile yaşıyorsunuz demektir. Bu sizi sevmeyen birisi ya da piyasadaki bir rakibiniz olabilir. Çok basit araçlarla yüksek seviyede yük oluşturmak ve sunucuları işlemez hale getirmek kolay bir işlem. DDOS atakları genellikle bot ağlar tarafından yapılmakta. Yani internette sunduğunuz hizmet ile birilerinin gözüne batmaya başladığınız andan itibaren yapabileceğiniz tek şey ya gcp, azure ya da aws gibi bir yerden hosting almak ya da tüm altyapınızı cloudflare gibi bir koruma kalkanının arkasına çekmek.
Bu arada bulut bilişim fiyatları hakkında kısa bir not düşeyim. Gcp bünyesinde 32 gb hafızası olan bir dedicated sunucu aylık 300 dolar civarında. Aynı sunucuyu normal bir hosting sunucusundan aylık 50 dolara kiralayabiliyorsunuz. Örneğin gcp bünyesinde 128 gb hafızalı, multizone ve replikasyon özelliklerine sahip bir postgres sunucusu aylık 2500 dolar civarı.
Biz bir startup firma olarak başlangıçta bulut sunucuları kullanmama kararı aldık, çünkü aynı şeyi 5 katı daha ucuza kendi sunucularımızla yapmamız mümkün. Bu biraz aktif yönetim gerektiren bir mevzu, lakin başlangıçta çok para yakmamak adına atılabilecek an mantıklı adım. Startup para kazanma evresine geçtikten sonra bulut sunucularına geçeceğiz, çünkü öyle bir altyapının yönetimi ve geliştirilmesi çok daha kolay.
Tekrar neden cloudflare kullandığımız konusuna geri dönmek istiyorum. Cloudflare aslında kendi loadbalancer sunucularımızın önüne koyduğumuz kocaman bir reverse proxy, yani reverse proxy yi reverse proxy leyen bir altyapı. Bu ne işte yarıyor, bunu bir örmek ile açıklayayım:
Örneğin example.com isminde bir domain ismimizin var olduğunu düşünelim. Bu domain ismi dns üzerinden 1.2.3.4 ip adresi ile eşleştirilmiş. Kim tarayıcı üzerinden http://example.com yazarsa, aslında 1.2.3.4 ip adresine bağlanıyor. 1.2.3.4 bizim örneğimizde kullandığımız loadbalancer sunucusunun ip adresi. Reverse proxy olan loadbalancer bütün trafigi iç ağda yer alan uygulama sunucularına yönlendirerek, onlardan gelen cevabı kullanıcılara iletmektedir. Bu sebepten dolayi bir reverse proxydir.
Eğer birisi size karşı DDOS atağına başlarsa, 1.2.3.4 ip adresine sahip loabalancer ya da başka bir sunucu çok kısa bir zaman sonra devre dışı kalacak demektir. Bunun önüne DDOS ataklarına karşı koruma sağlayayan cloudflare ile geçmek mümkün. Bunun için example.com domain isminde yer alan dns sunucu kayıtlarının cloudflare dns sunucu kayıtları ile değiştirilmesi gerekiyor. Bu işlem sonunda example.com adresine gelen tüm istekler aslında cloudflare sunucularına iletilmiş oluyor. Domain ismi cloudflare dns sistemine geçtikten sonra, gelen isteklerin hangi ip adresine yönlendirilmesi gerektiği de tanımlanabilmekte. Bu durumda example.com adresine gelen isteklerin 1.2.3.4 adresine yönlendirilmesi istiyorsak, bunun için bir DNS A record oluşturabiliriz. Bu durumda example.com adresine gelen tüm istekler yine 1.2.3.4 adresine yönlendirilecektir. Cloudflare bu domain ismine bir DDOS atağı yapıldığını keşfettiğinde, bu istekleri durdurur ve sunucu gereksiz yere yük taşımak zorunda kalmaz.
Domain isminin dns server kayıtlarının cloudflare dns sunucu adresleri ile değiştirilmesinin diğer bir avantajı da artık kimsenin example.com domain ismi altındaki gerçek ip adresin ne olduğunu keşfedemeyecek olmasıdır. Bunu sadece cloudflare bilmektedir, yani hiç kimse doğrudan sizin sunucularınıza bağlanamaz. Bu işlem her daim cloudflare üzerinden yapılmak zorundadır. Bu sebepten dolayı cloudflare arkasında yer alan sunucuları gereksiz kullanıma karşı korumak kolay bir hale gelmektedir.
Bir adım daha ileri gidersek, cloudflare ve sunucular arasındaki iletişimi mevcut sunucuların sadece cloudflare den gelen isteklere cevap verecek şekilde sınırlamak mümkün. Authenticated origin pulls ismini taşıyan bir teknik ile örneğin kullandığımız nginx sunucuları sadece ve sadece cloudflare den gelen isteklere cevap vermektedir. Bunun haricinde hiç kimse bu sunuculara bağlanamamaktadır. Bunun yanı sıra firewall (örneğin iptables, ufw) sadece cloudflare sunucularından gelen istekleri kabul edecek şekilde yapılandırılabilir. Sistem bu şekilde cloudflare arkasında konuşlandırılmış bir privat networke dönüştürülebilir.
Günümüz şartlarında startuplar için aktif sunucu yönetimi yanı sıra veri ve sunucu güvenliğini sağlamak hatırı sayılır bir meşgale haline gelmiştir. Birçok startup bulut bilişim için yeterli bütçelere sahip değildirler. Bu onları daha az maliyetli ve kendilerinin yönettikleri sunucu sistemlerini kullanmaya mecbur bırakmaktadır. Lakin network ve ağ güvenliği konularındaki yetersizlikler düşünüldüğünden çok daha hızlı piyasadan silinme tehlikesi arz etmektedir. Cloudflare özellikle startuplar için ücretsiz sunduğu en alt seviye hizmeti ile bu tehlikelerin büyük bir kısmının berteraf edilmesini mümkün kılmaktadır.
EOF (End Of Fun)
Özcan Acar